Slide 1

Slide 1 text

Continuous Development for Kubernetes Skaffold for Java github.com/GoogleContainerTools/skaffol d

Slide 2

Slide 2 text

Skaffold github.com/GoogleContainerTools/skaffold

Slide 3

Slide 3 text

Cloud Tools for Java Appu Goundan @loosebazooka Qingyang “Q” Chen @coollog

Slide 4

Slide 4 text

Skaffold is a command line tool that facilitates continuous development for Kubernetes applications. You can iterate on your application source code locally then deploy to local or remote Kubernetes clusters. Skaffold handles the workflow for building, pushing and deploying your application. It can also be used in an automated context such as a CI/CD pipeline to leverage the same workflow and tooling when moving applications to production. github.com/GoogleContainerTools/skaffold official website

Slide 5

Slide 5 text

"Dev"

Slide 6

Slide 6 text

Build $ ./gradlew assemble

Slide 7

Slide 7 text

Containerize $ ./gradlew assemble $ docker build . -t gcr.io/co-repo/co-app:v9

Slide 8

Slide 8 text

Push $ ./gradlew assemble $ docker build . -t gcr.io/co-repo/co-app:v9 $ docker push gcr.io/co-repo/co-app:v9

Slide 9

Slide 9 text

Deploy $ ./gradlew assemble $ docker build . -t gcr.io/co-repo/co-app:v9 $ docker push gcr.io/co-repo/co-app:v9 $ vi co-deployment.yaml $ kubectl apply -f co-deployment.yaml

Slide 10

Slide 10 text

Connect $ ./gradlew assemble $ docker build . -t gcr.io/co-repo/co-app:v9 $ docker push gcr.io/co-repo/co-app:v9 $ vi co-deployment.yaml $ kubectl apply -f co-deployment.yaml $ kubectl get pods $ kubectl port-forward co-pod-qx54dw 8080:8080 $ kubectl logs -f co-pod-qx54dw

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

code build push Development Process deploy application connect k8s config update Things I care about Things I wish would just happen

Slide 13

Slide 13 text

Skaffold $ skaffold dev

Slide 14

Slide 14 text

skaffold code Development Process application k8s config

Slide 15

Slide 15 text

Demo

Slide 16

Slide 16 text

Skaffold Workflow

Slide 17

Slide 17 text

apiVersion: skaffold/v1alpha4 kind: Config build: artifacts: - image: gcr.io/appu-learn/skaffold-talk context: app deploy: kubectl: manifests: - k8s-* Simple Skaffold Config kind: Deployment ... spec: template: spec: containers: - image: gcr.io/appu-learn/skaffold-talk ports: - containerPort: 8080 skaffold.yaml k8s-deployment.yaml

Slide 18

Slide 18 text

Pluggable

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Demo

Slide 23

Slide 23 text

What about Java? What about Jib?

Slide 24

Slide 24 text

github.com/GoogleContainerTools/jib 1. Apply the plugin. 1. Apply the plugin. 2. gradle jib Steps: (or mvn jib:build)

Slide 25

Slide 25 text

Jib ❤ Skaffold

Slide 26

Slide 26 text

Jib

Slide 27

Slide 27 text

apiVersion: skaffold/v1alpha4 kind: Config build: artifacts: - imageName: gcr.io/appu-learn/skaffold-talk jibGradle: {} deploy: kubectl: manifests: - k8s-* Simple skaffold.yaml (powered up with Jib) apiVersion: skaffold/v1alpha4 kind: Config build: artifacts: - imageName: gcr.io/appu-learn/skaffold-talk jibMaven: {} deploy: kubectl: manifests: - k8s-*

Slide 28

Slide 28 text

apiVersion: skaffold/v1alpha4 kind: Config build: artifacts: - imageName: gcr.io/appu-learn/skaffold-talk jibGradle: project: subproject deploy: kubectl: manifests: - k8s-* apiVersion: skaffold/v1alpha4 kind: Config build: artifacts: - imageName: gcr.io/appu-learn/skaffold-talk jibMaven: profile: skaffold module: submodule deploy: kubectl: manifests: - k8s-* Simple skaffold.yaml (powered up with Jib)

Slide 29

Slide 29 text

Lets see this in action!

Slide 30

Slide 30 text

Survey App frontend-service Groovy/Micronaut/Gradle / cast votes vote-service Java/Spring/Gradle /results view results notification-service NodeJS

Slide 31

Slide 31 text

apiVersion: skaffold/v1alpha4 kind: Config build: artifacts: - image: gcr.io/qingyangc-sandbox/codeone-frontend jibGradle: {} context: frontend-service - image: gcr.io/qingyangc-sandbox/codeone-vote jibGradle: {} context: vote-service - image: gcr.io/qingyangc-sandbox/codeone-notification context: notification-service skaffold.yaml

Slide 32

Slide 32 text

skaffold dev github.com/coollog/skaffold-code.one

Slide 33

Slide 33 text

skaffold-code.one github.com/coollog/skaffold-code.one

Slide 34

Slide 34 text

Other features - skaffold run - skaffold build - remote file sync - --trigger=manual Future features - Debugger - Test phase - IDE support - skaffold init with Jib - Beta

Slide 35

Slide 35 text

github.com/GoogleContainerTools/skaffold github.com/GoogleContainerTools/jib github.com/coollog/skaffold-code.one