SlideShare a Scribd company logo
1 of 44
Download to read offline
Taipei
KAI CHU CHUNG
I/T Specialist, IBM
Skaffold 2 Deep Dive
KAI CHU CHUNG
Cloud GDE
GDG Cloud Taipei co-organizers
I/T Specialist, IBM
@CageChung
https://kaichu.io
Agenda
1. Overview
2. Pipeline Stages
3. Q & A
SKAFFOLD
Overview
“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 also provides
building blocks and describe customizations
for a CI/CD pipeline.”
2018 2019 2020 2021 2022
V2.0.0
Oct 21, 2022
V1.1.0
Dec 21, 2019
v0.1.0
Mar 6, 2018
2023
V1.39.2
Aug 17,2022
V2.0.2
Nov 15, 2022
Timeline
latest
v0.41.0
Oct 25, 2019
46 Releases
72 Releases
Installing Skaffold
Managed IDE
● CLOUD CODE
○ VSCode
○ IntellJ
● GOOGLE CLOUD SHELL
● Cloud Workstation
Quickstart - Standalone
Mac
# For macOS on x86_64 (amd64)
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-darwin-amd64 && 
sudo install skaffold /usr/local/bin/
# For macOS on ARMv8 (arm64)
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-darwin-arm64 && 
sudo install skaffold /usr/local/bin/
docker
gcloud
gcloud components install skaffold
docker run gcr.io/k8s-skaffold/skaffold:latest skaffold <command>
steps:
- name: gcr.io/k8s-skaffold/skaffold:v1.21.0
entrypoint: bash
args:
- -exc
- |
gcloud container clusters get-credentials $_CLOUDSDK_CONTAINER_CLUSTER --zone $_CLOUDSDK_COMPUTE_ZO
Quickstart - VSCode / IntellJ
Quickstart - Cloud Shell
Quickstart - Cloud Workstation
Cloud Code
Easier to create apps
in Google Cloud
Getting Started With
Your Project
Guides
skaffold dev Debugging With
Skaffold
Continuous Delivery Managing ARM
workloads [NEW]
Guides | Skaffold - https://skaffold.dev/docs/workflows/
Guides - skaffold dev
skaffold dev enables continuous local development on an application.
While in dev mode, Skaffold will watch an application’s source files,
and when it detects changes, will rebuild your images (or sync files to
your running containers), push any new images, test built images, and
redeploy the application to your cluster.
File Sync Build Test Deploy
Dev loop
Code Change ?
Yes
Guides - skaffold debug
Skaffold lets you set breakpoints and step through your application,
even when deployed to remote Kubernetes clusters, as if the code were
running locally on your machine
● Go 1.13+ (runtime ID: go) using Delve
● NodeJS (runtime ID: nodejs) using the NodeJS Inspector (Chrome
DevTools)
● Java and JVM languages (runtime ID: jvm) using JDWP
● Python 3.5+ (runtime ID: python) using debugpy (Debug Adapter
Protocol) or pydevd
● .NET Core (runtime ID: netcore) using vsdbg (only for VS Code)
Guides - skaffold debug: Go
Labels: app=square
pod-template-hash=758577b69b
Annotations: debug.cloud.google.com/config: {"square":{"artifact":"square","runtime":"go",
"workingDir":"/workspace","ports":{"dlv":56268}}}
...
Init Containers:
install-go-debug-support:
Container ID: containerd://dc45badbf94a6f3b61d8c1e3353bfe3e782ed3783990e43b8649a97aa813fe85
Image: gcr.io/k8s-skaffold/skaffold-debug-support/go
Image ID: gcr.io/k8s-skaffold/skaffold-debug-support/go@sha256:da1f2d0e00463ec8c2040eb9b8cb939de15
Port: <none>
Host Port: <none>
State: Terminated
Reason: Completed
Exit Code: 0
Started: Tue, 29 Nov 2022 17:27:49 +0800
Finished: Tue, 29 Nov 2022 17:27:49 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/dbg from debugging-support-files (rw)
Guides - skaffold debug: Go Cont.
Containers:
square:
Container ID: containerd://cdc99f343c2a129341aa8615d988d7ddc4b0c7ca9963b13e0839e9d4b9721a97
Image: gcr.io/gcp-10-mins/square:latest@sha256:53bddc80b70b9731ae56bc27e228fcf15d4f2ef9ce4a06469
Image ID: gcr.io/gcp-10-mins/square@sha256:53bddc80b70b9731ae56bc27e228fcf15d4f2ef9ce4a06469761c4c5
Port: 56268/TCP
Host Port: 0/TCP
Command:
/cnb/lifecycle/launcher
Args:
--
/dbg/go/bin/dlv
exec
--headless
--continue
--accept-multiclient
--listen=:56268
--api-version=2
/layers/google.go.build/bin/main
State: Running
Started: Tue, 29 Nov 2022 17:27:52 +0800
Ready: True
Restart Count: 0
Environment:
QS_GRPC_PORT: 10021
Guides - skaffold
debug: Go Cont. {
"version": "0.2.0",
"configurations": [
{
"name": "Skaffold Debug",
"type": "go",
"request": "attach",
"mode": "remote",
"host": "localhost",
"port": 56268,
"substitutePath": [
{
"from": "${workspaceFolder}",
"to": "/go",
},
],
}
]
}
Guides - Continuous Delivery
Skaffold provides several features and sub-command “building blocks”
that make it very useful for integrating with (or creating entirely new)
CI/CD pipelines.
● skaffold build - build, tag and push artifacts to a registry
● skaffold deploy - deploy built artifacts to a cluster
● skaffold render - export the transformed Kubernetes manifests
● skaffold apply - send hydrated Kubernetes manifests to the API
server to create resources on the target cluster
$ skaffold build -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins --file-output build.json
$ skaffold deploy --build-artifacts=./build.json
{"builds":[{"imageName":"square","tag":"gcr.io/gcp-10-mins/square:latest@sha256:665db6a58565ee192093df04470
ea86705d8b33b69c1e7f6d7a6ea07e18491f6"}]}
Guides - Continuous Delivery Cont.
Skaffold allows separating the generation of fully-hydrated Kubernetes
manifests from the actual deployment of those manifests, using the
skaffold render and skaffold apply commands.
$ skaffold render -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins > render.yaml
$ skaffold render -f skaffold-v2.yaml apply render.yaml
beta
Guides - Managing ARM workloads
Skaffold will check the active Kubernetes cluster node architecture and
provide that as an argument to the respective image builder. If the
cluster has multiple architecture nodes, then Skaffold will also create
appropriate Kubernetes affinity rules so that the Kubernetes Pods with
these images are assigned to matching architecture nodes.
New
$ skaffold run -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins --cache-artifacts=false
Generating tags...
- square -> gcr.io/gcp-10-mins/square:latest
Starting build...
Building [square]...
Target platforms: [linux/amd64]
v1: Pulling from buildpacks/builder
Digest: sha256:de4d669b82419307072df7b35c3c9a81aca35e308be2bac5ec4ca7dbcba31f24
Status: Image is up to date for gcr.io/buildpacks/builder:v1
GKE Node
Architecture and Design | Skaffold - https://skaffold.dev/docs/design/
Architecture
Architecture and Design | Skaffold - https://skaffold.dev/docs/design/
Architecture - Cloud Build / Helm
Pipeline Stages
Skaffold Pipeline Stages | Skaffold - https://skaffold.dev/docs/pipeline-stages/
Skaffold Pipeline Stages
Release v2.0.0 Release · GoogleContainerTools/skaffold - https://github.com/GoogleContainerTools/skaffold/releases/tag/v2.0.0
Highlights & New Features
● 💻 Support for deploying to ARM, X86 or Multi-Arch K8s clusters from
your x86 or ARM machine
● 👟 New Cloud Run Deployer brings the power of Skaffold to Google
Clouds serverless container runtime
● 📜 Skaffold render phase has been split from deploy phase providing
increased granularity of control for GitOps workflows
● 🚦New Skaffold verify phase enables improved testing capabilities
making Skaffold even better as a CI/CD tool
● ⚙ Tighter integration with kpt lets you more dynamically manage
large amounts of configuration and keep it in sync
Upgrading from Skaffold v1 to Skaffold v2 [NEW] | Skaffold - https://skaffold.dev/docs/upgrading/
1. skaffold deploy → skaffold render +
skaffold deploy
2. New schema version: v3alpha1
3. Few skaffold v1 features are no longer
support or require manual changes for
v2.0.0-beta3 include
4. there are currently no known other
regressions when migrating from
skaffold v1 -> v2 but areas that are
most likely to have possible
issues/incompitibility
Upgrading from Skaffold v1 to
Skaffold v2
$ cat skaffold.yaml | head -1
apiVersion: skaffold/v2beta29
$ skaffold fix
apiVersion: skaffold/v3alpha1
kind: Config
build:
artifacts:
- image: skaffold-example
manifests:
rawYaml:
- k8s-*
deploy:
kubectl: {}
Init
skaffold init helps you get
started using Skaffold by
running you through a wizard and
generating the required
skaffold.yaml file in the root
of your project directory.
The generated skaffold.yaml
defines your build and deploy
config.
apiVersion: skaffold/v4beta1
kind: Config
metadata:
name: '-'
build:
artifacts:
- image: gcr.io/gcp-10-mins/add
buildpacks:
builder: gcr.io/buildpacks/builder:v1
manifests:
helm:
flags:
upgrade:
- --install
releases:
- name: square
chartPath: deployments/square
setValues:
square.image: square
setValueTemplates:
square.env.QS_LOG_LEVEL: "{{.QS_LOG_LEVEL}}"
deploy:
helm:
{}
Build
Local Build In Cluster Build Remote on Google Cloud Build
Dockerfile Yes Yes Yes
Jib Maven and Gradle Yes - Yes
Cloud Native Buildpacks Yes - Yes
Bazel Yes - -
ko Yes - Yes
Custom Script Yes Yes -
The build section in the Skaffold configuration file, skaffold.yaml,
controls how artifacts are built. To use a specific tool for building
artifacts, add the value representing the tool and options for using
that tool to the build section.
Build - Cloud Native
Buildpacks
apiVersion: skaffold/v4beta1
kind: Config
metadata:
name: '-'
build:
artifacts:
- image: square
buildpacks:
builder: gcr.io/buildpacks/builder:v1
env:
- GOOGLE_BUILDABLE=cmd/square/main.go
- GOOGLE_RUNTIME_VERSION=1.14
dependencies:
paths:
- cmd/square/main.go
- internal/app/square/**
- internal/pkg/**
tagPolicy:
sha256: {}
local:
push: true
Gdg cloud taipei ddt meetup #53 buildpack - https://www.slideshare.net/cagechung/gdg-cloud-taipei-ddt-meetup-53-buildpack
[Skaffold 2.0 Documentation | Skaffold](https://skaffold.dev/docs/)
Build - Cloud Native Buildpacks Cont.
$ QS_LOG_LEVEL=debug skaffold run --default-repo gcr.io/gcp-10-mins -f skaffold-v2.yaml
Generating tags...
- square -> gcr.io/gcp-10-mins/square:latest
...
Target platforms: [linux/amd64]
v1: Pulling from buildpacks/builder
Digest: sha256:de4d669b82419307072df7b35c3c9a81aca35e308be2bac5ec4ca7dbcba31f24
Status: Image is up to date for gcr.io/buildpacks/builder:v1
...
===> BUILDING
[builder] === Go - Runtime (google.go.runtime@0.9.1) ===
[builder] Using runtime version from GOOGLE_RUNTIME_VERSION: 1.14
[builder] === Go - Gomod (google.go.gomod@0.9.0) ===
[builder] --------------------------------------------------------------------------------
[builder] Running "go mod download (GOPATH=/layers/google.go.gomod/gopath GO111MODULE=on)"
[builder] Done "go mod download (GOPATH=/layers/google.go.gomod/gopath GO111..." (536.9738ms)
[builder] === Go - Build (google.go.build@0.9.0) ===
[builder] --------------------------------------------------------------------------------
[builder] Running "go build -o /layers/google.go.build/bin/main cmd/square/main.go
(GOCACHE=/layers/google.go.build/gocache)"
[builder] Done "go build -o /layers/google.go.build/bin/main cmd/square/main..." (7.2431905s)
[builder] === Utils - Label Image (google.utils.label@0.0.2) ===
Cloud Run button
Deploy - Google
Cloud Run alpha
manifests must be valid Cloud
Run services, using the
serving.knative.dev/v1 schema
googleapi: Error 400: Registry
image path like
[region.]gcr.io/repo-path[:tag
and/or @digest]
apiVersion: skaffold/v4beta1
kind: Config
build:
artifacts:
- image: gokit-add-cloud-run
buildpacks:
builder: "gcr.io/buildpacks/builder:v1"
dependencies:
paths:
- cmd/add/main.go
- internal/**
env:
- GOOGLE_BUILDABLE=cmd/add/main.go
tagPolicy:
sha256: {}
local:
push: true
profiles:
- name: cloud-run
manifests:
rawYaml:
- manifests/cloud-run.yaml
deploy:
cloudrun:
projectid: gcp-10-mins
region: asia-east1
New
[Skaffold 2.0 Documentation | Skaffold](https://skaffold.dev/docs/)
Deploy - Google Cloud Run Cont.
New
$ skaffold --default-repo gcr.io/gcp-10-mins run -p cloud-run
WARN[0001] failed to detect active kubernetes cluster node platform. Specify the correct build platform in
the `skaffold.yaml` file or using the `--platform` flag subtask=-1 task=DevLoop
Generating tags...
- gokit-add-cloud-run -> gcr.io/gcp-10-mins/gokit-add-cloud-run:latest
....
Build [gokit-add-cloud-run] succeeded
Starting test...
Tags used in deployment:
- gokit-add-cloud-run ->
gcr.io/gcp-10-mins/gokit-add-cloud-run:latest@sha256:acf05cfabd250d6d576e6b0b8aaa1f18ae3fd79d99e16fa1a5a3be
473f6eecb6
Starting deploy...
Deploying Cloud Run service:
gokit-add-cloud-run
gokit-add-cloud-run: Service starting: Deploying Revision. Waiting on revision
gokit-add-cloud-run-00001-wyq.
Cloud Run Service gokit-add-cloud-run finished: Service started. 0/1 deployment(s) still pending
You can also run [skaffold run --tail] to get the logs
Deploy - Helm
Update
No more `artifactOverrides` or `imageStrategy`
Skaffold no longer requires the intricate configuring of
artifactOverrides or imageStrategy fields. See docs here on how
old artifactOverrides and imageStrategy values translate to
setValues entires in the latest Skaffold schemas (apiVersion:
skaffold/v3alpha1 or skaffold binary version v2.0.0 onwards)
Note
(manifest.helm.*) and the helm deployer (deploy.helm.*) is the
use of helm template vs helm install
Deploy - Helm Cont.
Update
deploy:
helm:
flags:
upgrade:
- --install
releases:
- name: square
chartPath: ./deployments/helm/square
artifactOverrides:
square.image: gcr.io/gcp-10-mins/square
setValues:
square.env.QS_LOG_LEVEL: info
manifests:
helm:
flags:
upgrade:
- --install
releases:
- name: square
chartPath: deployments/square
setValues:
square.image: square
setValueTemplates:
square.env.QS_LOG_LEVEL: "{{.QS_LOG_LEVEL}}"
deploy:
helm:
{}
v1 v2
Deploy - Helm Cont.
Update
$ QS_LOG_LEVEL=debug skaffold run --default-repo gcr.io/gcp-10-mins -f skaffold-v2.yaml
Generating tags...
- square -> gcr.io/gcp-10-mins/square:latest
Checking cache...
- square: Found Remotely
Starting test...
Tags used in deployment:
- square ->
gcr.io/gcp-10-mins/square:latest@sha256:36ff3a328a97a4ae13937516b697d63fc5d89621d69fba255683acaad6fa5eb0
Starting deploy...
Release "square" has been upgraded. Happy Helming!
NAME: square
LAST DEPLOYED: Tue Nov 29 08:21:19 2022
NAMESPACE: default
STATUS: deployed
REVISION: 4
TEST SUITE: None
Waiting for deployments to stabilize...
- deployment/square: creating container square
- pod/square-59ddb57855-cvt4b: creating container square
- deployment/square is ready.
Deployments stabilized in 11.323 seconds
You can also run [skaffold run --tail] to get the logs
Render
New
the Skaffold renderer renders the final Kubernetes manifests: Skaffold
replaces untagged image names in the Kubernetes manifests with the final
tagged image names. It also might go through the extra intermediate step
of expanding templates (for helm) or calculating overlays (for
kustomize)
● rawYaml - use this if you don’t currently use a rendering tool
● helm
● kpt
● kustomize
Render - Helm
New
apiVersion: v1
kind: Service
metadata:
name: square
Spec:
type: LoadBalancer
ports:
- name: http
port: 80
targetPort: 10020
- name: grpc
port: 8000
targetPort: 10021
selector:
app: square
apiVersion: apps/v1
kind: Deployment
metadata:
name: square
spec:
replicas: 1
selector:
matchLabels:
app: square
template:
metadata:
labels:
app: square
spec:
containers:
- env:
- name: QS_GRPC_PORT
value: "10021"
- name: QS_HTTP_PORT
value: "10020"
- name: QS_LOG_LEVEL
value: debug
image: gcr.io/gcp-10-mins/square:latest@sha256:ecc0ee10
name: square
$ QS_LOG_LEVEL=debug skaffold render -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins
Resources
Known issues
Cloud Code (v1.20.4, Nov 2022) not
support Skaffold 2 yet, current build-in
skaffold version is v1.39.3
DevFest 2022 - Cloud Workstation Introduction TaiChung -
https://www.slideshare.net/cagechung/devfest-2022-cloud-workstation-introduction-taichungpdf
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐 -
https://www.slideshare.net/cagechung/coscup-x-ruby-conf-tw-2021-google-cloud-buildpacks
Devfest 2021' - Artifact Registry Introduction (Taipei) -
https://www.slideshare.net/cagechung/devfest-2021-artifact-registry-introduction-taipei
Q & A

More Related Content

What's hot

Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker ComposeAjeet Singh Raina
 
Introduction to Kubernetes and Google Container Engine (GKE)
Introduction to Kubernetes and Google Container Engine (GKE)Introduction to Kubernetes and Google Container Engine (GKE)
Introduction to Kubernetes and Google Container Engine (GKE)Opsta
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 
Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignMichael Noll
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to dockerInstruqt
 
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Hao H. Zhang
 
Declarative Clients in Spring
Declarative Clients in SpringDeclarative Clients in Spring
Declarative Clients in SpringVMware Tanzu
 
Istio service mesh introduction
Istio service mesh introductionIstio service mesh introduction
Istio service mesh introductionKyohei Mizumoto
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
 
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...Vietnam Open Infrastructure User Group
 
Container Orchestration using Kubernetes
Container Orchestration using KubernetesContainer Orchestration using Kubernetes
Container Orchestration using KubernetesHesham Amin
 
KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeAcademy
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformDevOps.com
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetesKrishna-Kumar
 
Introduction to Kubernetes Workshop
Introduction to Kubernetes WorkshopIntroduction to Kubernetes Workshop
Introduction to Kubernetes WorkshopBob Killen
 
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021StreamNative
 

What's hot (20)

Introduction to Docker Compose
Introduction to Docker ComposeIntroduction to Docker Compose
Introduction to Docker Compose
 
Introduction to Kubernetes and Google Container Engine (GKE)
Introduction to Kubernetes and Google Container Engine (GKE)Introduction to Kubernetes and Google Container Engine (GKE)
Introduction to Kubernetes and Google Container Engine (GKE)
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 
Apache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - VerisignApache Kafka 0.8 basic training - Verisign
Apache Kafka 0.8 basic training - Verisign
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1Kubernetes Architecture - beyond a black box - Part 1
Kubernetes Architecture - beyond a black box - Part 1
 
Declarative Clients in Spring
Declarative Clients in SpringDeclarative Clients in Spring
Declarative Clients in Spring
 
GRPC.pptx
GRPC.pptxGRPC.pptx
GRPC.pptx
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Istio service mesh introduction
Istio service mesh introductionIstio service mesh introduction
Istio service mesh introduction
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
Room 3 - 7 - Nguyễn Như Phúc Huy - Vitastor: a fast and simple Ceph-like bloc...
 
Container Orchestration using Kubernetes
Container Orchestration using KubernetesContainer Orchestration using Kubernetes
Container Orchestration using Kubernetes
 
KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101
 
Edge architecture ieee international conference on cloud engineering
Edge architecture   ieee international conference on cloud engineeringEdge architecture   ieee international conference on cloud engineering
Edge architecture ieee international conference on cloud engineering
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with Terraform
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
 
Introduction to Kubernetes Workshop
Introduction to Kubernetes WorkshopIntroduction to Kubernetes Workshop
Introduction to Kubernetes Workshop
 
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
Apache BookKeeper State Store: A Durable Key-Value Store - Pulsar Summit NA 2021
 
Docker swarm
Docker swarmDocker swarm
Docker swarm
 

Similar to DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf

[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson LinHanLing Shen
 
Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Victor Iglesias
 
Optimizing NN inference performance on Arm NEON and Vulkan
Optimizing NN inference performance on Arm NEON and VulkanOptimizing NN inference performance on Arm NEON and Vulkan
Optimizing NN inference performance on Arm NEON and Vulkanax inc.
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - SkaffoldSuman Chakraborty
 
Serverless Container with Source2Image
Serverless Container with Source2ImageServerless Container with Source2Image
Serverless Container with Source2ImageQAware GmbH
 
Serverless containers … with source-to-image
Serverless containers  … with source-to-imageServerless containers  … with source-to-image
Serverless containers … with source-to-imageJosef Adersberger
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containersinside-BigData.com
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a prosparkfabrik
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Codemotion
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Codemotion
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - SkaffoldSuman Chakraborty
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceBen Hall
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班Philip Zheng
 
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班Paul Chao
 
Making Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with NovaMaking Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with NovaGregor Heine
 
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Codemotion
 
Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Wojciech Barczyński
 
K8s is not for App Developers
K8s is not for App DevelopersK8s is not for App Developers
K8s is not for App DevelopersQAware GmbH
 
Delivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devicesDelivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devicesAjeet Singh Raina
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developersSuraj Deshmukh
 

Similar to DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf (20)

[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin[20200720]cloud native develoment - Nelson Lin
[20200720]cloud native develoment - Nelson Lin
 
Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)
 
Optimizing NN inference performance on Arm NEON and Vulkan
Optimizing NN inference performance on Arm NEON and VulkanOptimizing NN inference performance on Arm NEON and Vulkan
Optimizing NN inference performance on Arm NEON and Vulkan
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - Skaffold
 
Serverless Container with Source2Image
Serverless Container with Source2ImageServerless Container with Source2Image
Serverless Container with Source2Image
 
Serverless containers … with source-to-image
Serverless containers  … with source-to-imageServerless containers  … with source-to-image
Serverless containers … with source-to-image
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
 
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
Jörg Schad - Hybrid Cloud (Kubernetes, Spark, HDFS, …)-as-a-Service - Codemot...
 
CI/CD Development in Kubernetes - Skaffold
CI/CD Development in Kubernetes -  SkaffoldCI/CD Development in Kubernetes -  Skaffold
CI/CD Development in Kubernetes - Skaffold
 
Scaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container ServiceScaling Docker Containers using Kubernetes and Azure Container Service
Scaling Docker Containers using Kubernetes and Azure Container Service
 
Docker 進階實務班
Docker 進階實務班Docker 進階實務班
Docker 進階實務班
 
廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班廣宣學堂: 容器進階實務 - Docker進深研究班
廣宣學堂: 容器進階實務 - Docker進深研究班
 
Making Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with NovaMaking Service Deployments to AWS a breeze with Nova
Making Service Deployments to AWS a breeze with Nova
 
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
 
Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple
 
K8s is not for App Developers
K8s is not for App DevelopersK8s is not for App Developers
K8s is not for App Developers
 
Delivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devicesDelivering Docker & K3s worloads to IoT Edge devices
Delivering Docker & K3s worloads to IoT Edge devices
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
 

More from KAI CHU CHUNG

Devfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfDevfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfKAI CHU CHUNG
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungKAI CHU CHUNG
 
Devfest 2021' - Artifact Registry Introduction (Taipei)
Devfest 2021' - Artifact Registry Introduction (Taipei)Devfest 2021' - Artifact Registry Introduction (Taipei)
Devfest 2021' - Artifact Registry Introduction (Taipei)KAI CHU CHUNG
 
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐KAI CHU CHUNG
 
Velero search &amp; practice 20210609
Velero search &amp; practice 20210609Velero search &amp; practice 20210609
Velero search &amp; practice 20210609KAI CHU CHUNG
 
Gdg cloud taipei ddt meetup #53 buildpack
Gdg cloud taipei ddt meetup #53 buildpackGdg cloud taipei ddt meetup #53 buildpack
Gdg cloud taipei ddt meetup #53 buildpackKAI CHU CHUNG
 
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API AuthorizationGDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API AuthorizationKAI CHU CHUNG
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰KAI CHU CHUNG
 
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...KAI CHU CHUNG
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: BasicKAI CHU CHUNG
 
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源KAI CHU CHUNG
 
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes  with ...GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes  with ...
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...KAI CHU CHUNG
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeKAI CHU CHUNG
 
Global GDG Leaders Summit, Google I/O 2018 經驗分享
Global GDG Leaders Summit, Google I/O 2018 經驗分享Global GDG Leaders Summit, Google I/O 2018 經驗分享
Global GDG Leaders Summit, Google I/O 2018 經驗分享KAI CHU CHUNG
 
Google apps script introduction
Google apps script introductionGoogle apps script introduction
Google apps script introductionKAI CHU CHUNG
 
Screenshot as a service
Screenshot as a serviceScreenshot as a service
Screenshot as a serviceKAI CHU CHUNG
 
Nas 也可以揀土豆
Nas 也可以揀土豆Nas 也可以揀土豆
Nas 也可以揀土豆KAI CHU CHUNG
 
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開KAI CHU CHUNG
 
Django oscar introduction
Django oscar introductionDjango oscar introduction
Django oscar introductionKAI CHU CHUNG
 
Continuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCPContinuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCPKAI CHU CHUNG
 

More from KAI CHU CHUNG (20)

Devfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdfDevfest 2023 - Service Weaver Introduction - Taipei.pdf
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
 
Devfest 2021' - Artifact Registry Introduction (Taipei)
Devfest 2021' - Artifact Registry Introduction (Taipei)Devfest 2021' - Artifact Registry Introduction (Taipei)
Devfest 2021' - Artifact Registry Introduction (Taipei)
 
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
 
Velero search &amp; practice 20210609
Velero search &amp; practice 20210609Velero search &amp; practice 20210609
Velero search &amp; practice 20210609
 
Gdg cloud taipei ddt meetup #53 buildpack
Gdg cloud taipei ddt meetup #53 buildpackGdg cloud taipei ddt meetup #53 buildpack
Gdg cloud taipei ddt meetup #53 buildpack
 
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API AuthorizationGDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
 
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
 
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes  with ...GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes  with ...
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
 
Global GDG Leaders Summit, Google I/O 2018 經驗分享
Global GDG Leaders Summit, Google I/O 2018 經驗分享Global GDG Leaders Summit, Google I/O 2018 經驗分享
Global GDG Leaders Summit, Google I/O 2018 經驗分享
 
Google apps script introduction
Google apps script introductionGoogle apps script introduction
Google apps script introduction
 
Screenshot as a service
Screenshot as a serviceScreenshot as a service
Screenshot as a service
 
Nas 也可以揀土豆
Nas 也可以揀土豆Nas 也可以揀土豆
Nas 也可以揀土豆
 
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
 
Django oscar introduction
Django oscar introductionDjango oscar introduction
Django oscar introduction
 
Continuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCPContinuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCP
 

Recently uploaded

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Recently uploaded (20)

Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf

  • 1. Taipei KAI CHU CHUNG I/T Specialist, IBM Skaffold 2 Deep Dive
  • 2. KAI CHU CHUNG Cloud GDE GDG Cloud Taipei co-organizers I/T Specialist, IBM @CageChung https://kaichu.io
  • 3. Agenda 1. Overview 2. Pipeline Stages 3. Q & A SKAFFOLD
  • 5. “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 also provides building blocks and describe customizations for a CI/CD pipeline.”
  • 6. 2018 2019 2020 2021 2022 V2.0.0 Oct 21, 2022 V1.1.0 Dec 21, 2019 v0.1.0 Mar 6, 2018 2023 V1.39.2 Aug 17,2022 V2.0.2 Nov 15, 2022 Timeline latest v0.41.0 Oct 25, 2019 46 Releases 72 Releases
  • 7. Installing Skaffold Managed IDE ● CLOUD CODE ○ VSCode ○ IntellJ ● GOOGLE CLOUD SHELL ● Cloud Workstation
  • 8. Quickstart - Standalone Mac # For macOS on x86_64 (amd64) curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-darwin-amd64 && sudo install skaffold /usr/local/bin/ # For macOS on ARMv8 (arm64) curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-darwin-arm64 && sudo install skaffold /usr/local/bin/ docker gcloud gcloud components install skaffold docker run gcr.io/k8s-skaffold/skaffold:latest skaffold <command> steps: - name: gcr.io/k8s-skaffold/skaffold:v1.21.0 entrypoint: bash args: - -exc - | gcloud container clusters get-credentials $_CLOUDSDK_CONTAINER_CLUSTER --zone $_CLOUDSDK_COMPUTE_ZO
  • 11. Quickstart - Cloud Workstation Cloud Code Easier to create apps in Google Cloud
  • 12. Getting Started With Your Project Guides skaffold dev Debugging With Skaffold Continuous Delivery Managing ARM workloads [NEW] Guides | Skaffold - https://skaffold.dev/docs/workflows/
  • 13. Guides - skaffold dev skaffold dev enables continuous local development on an application. While in dev mode, Skaffold will watch an application’s source files, and when it detects changes, will rebuild your images (or sync files to your running containers), push any new images, test built images, and redeploy the application to your cluster. File Sync Build Test Deploy Dev loop Code Change ? Yes
  • 14. Guides - skaffold debug Skaffold lets you set breakpoints and step through your application, even when deployed to remote Kubernetes clusters, as if the code were running locally on your machine ● Go 1.13+ (runtime ID: go) using Delve ● NodeJS (runtime ID: nodejs) using the NodeJS Inspector (Chrome DevTools) ● Java and JVM languages (runtime ID: jvm) using JDWP ● Python 3.5+ (runtime ID: python) using debugpy (Debug Adapter Protocol) or pydevd ● .NET Core (runtime ID: netcore) using vsdbg (only for VS Code)
  • 15. Guides - skaffold debug: Go Labels: app=square pod-template-hash=758577b69b Annotations: debug.cloud.google.com/config: {"square":{"artifact":"square","runtime":"go", "workingDir":"/workspace","ports":{"dlv":56268}}} ... Init Containers: install-go-debug-support: Container ID: containerd://dc45badbf94a6f3b61d8c1e3353bfe3e782ed3783990e43b8649a97aa813fe85 Image: gcr.io/k8s-skaffold/skaffold-debug-support/go Image ID: gcr.io/k8s-skaffold/skaffold-debug-support/go@sha256:da1f2d0e00463ec8c2040eb9b8cb939de15 Port: <none> Host Port: <none> State: Terminated Reason: Completed Exit Code: 0 Started: Tue, 29 Nov 2022 17:27:49 +0800 Finished: Tue, 29 Nov 2022 17:27:49 +0800 Ready: True Restart Count: 0 Environment: <none> Mounts: /dbg from debugging-support-files (rw)
  • 16. Guides - skaffold debug: Go Cont. Containers: square: Container ID: containerd://cdc99f343c2a129341aa8615d988d7ddc4b0c7ca9963b13e0839e9d4b9721a97 Image: gcr.io/gcp-10-mins/square:latest@sha256:53bddc80b70b9731ae56bc27e228fcf15d4f2ef9ce4a06469 Image ID: gcr.io/gcp-10-mins/square@sha256:53bddc80b70b9731ae56bc27e228fcf15d4f2ef9ce4a06469761c4c5 Port: 56268/TCP Host Port: 0/TCP Command: /cnb/lifecycle/launcher Args: -- /dbg/go/bin/dlv exec --headless --continue --accept-multiclient --listen=:56268 --api-version=2 /layers/google.go.build/bin/main State: Running Started: Tue, 29 Nov 2022 17:27:52 +0800 Ready: True Restart Count: 0 Environment: QS_GRPC_PORT: 10021
  • 17. Guides - skaffold debug: Go Cont. { "version": "0.2.0", "configurations": [ { "name": "Skaffold Debug", "type": "go", "request": "attach", "mode": "remote", "host": "localhost", "port": 56268, "substitutePath": [ { "from": "${workspaceFolder}", "to": "/go", }, ], } ] }
  • 18. Guides - Continuous Delivery Skaffold provides several features and sub-command “building blocks” that make it very useful for integrating with (or creating entirely new) CI/CD pipelines. ● skaffold build - build, tag and push artifacts to a registry ● skaffold deploy - deploy built artifacts to a cluster ● skaffold render - export the transformed Kubernetes manifests ● skaffold apply - send hydrated Kubernetes manifests to the API server to create resources on the target cluster $ skaffold build -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins --file-output build.json $ skaffold deploy --build-artifacts=./build.json {"builds":[{"imageName":"square","tag":"gcr.io/gcp-10-mins/square:latest@sha256:665db6a58565ee192093df04470 ea86705d8b33b69c1e7f6d7a6ea07e18491f6"}]}
  • 19. Guides - Continuous Delivery Cont. Skaffold allows separating the generation of fully-hydrated Kubernetes manifests from the actual deployment of those manifests, using the skaffold render and skaffold apply commands. $ skaffold render -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins > render.yaml $ skaffold render -f skaffold-v2.yaml apply render.yaml beta
  • 20. Guides - Managing ARM workloads Skaffold will check the active Kubernetes cluster node architecture and provide that as an argument to the respective image builder. If the cluster has multiple architecture nodes, then Skaffold will also create appropriate Kubernetes affinity rules so that the Kubernetes Pods with these images are assigned to matching architecture nodes. New $ skaffold run -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins --cache-artifacts=false Generating tags... - square -> gcr.io/gcp-10-mins/square:latest Starting build... Building [square]... Target platforms: [linux/amd64] v1: Pulling from buildpacks/builder Digest: sha256:de4d669b82419307072df7b35c3c9a81aca35e308be2bac5ec4ca7dbcba31f24 Status: Image is up to date for gcr.io/buildpacks/builder:v1 GKE Node
  • 21. Architecture and Design | Skaffold - https://skaffold.dev/docs/design/ Architecture
  • 22. Architecture and Design | Skaffold - https://skaffold.dev/docs/design/ Architecture - Cloud Build / Helm
  • 24. Skaffold Pipeline Stages | Skaffold - https://skaffold.dev/docs/pipeline-stages/ Skaffold Pipeline Stages
  • 25. Release v2.0.0 Release · GoogleContainerTools/skaffold - https://github.com/GoogleContainerTools/skaffold/releases/tag/v2.0.0 Highlights & New Features ● 💻 Support for deploying to ARM, X86 or Multi-Arch K8s clusters from your x86 or ARM machine ● 👟 New Cloud Run Deployer brings the power of Skaffold to Google Clouds serverless container runtime ● 📜 Skaffold render phase has been split from deploy phase providing increased granularity of control for GitOps workflows ● 🚦New Skaffold verify phase enables improved testing capabilities making Skaffold even better as a CI/CD tool ● ⚙ Tighter integration with kpt lets you more dynamically manage large amounts of configuration and keep it in sync
  • 26. Upgrading from Skaffold v1 to Skaffold v2 [NEW] | Skaffold - https://skaffold.dev/docs/upgrading/ 1. skaffold deploy → skaffold render + skaffold deploy 2. New schema version: v3alpha1 3. Few skaffold v1 features are no longer support or require manual changes for v2.0.0-beta3 include 4. there are currently no known other regressions when migrating from skaffold v1 -> v2 but areas that are most likely to have possible issues/incompitibility Upgrading from Skaffold v1 to Skaffold v2 $ cat skaffold.yaml | head -1 apiVersion: skaffold/v2beta29 $ skaffold fix apiVersion: skaffold/v3alpha1 kind: Config build: artifacts: - image: skaffold-example manifests: rawYaml: - k8s-* deploy: kubectl: {}
  • 27. Init skaffold init helps you get started using Skaffold by running you through a wizard and generating the required skaffold.yaml file in the root of your project directory. The generated skaffold.yaml defines your build and deploy config. apiVersion: skaffold/v4beta1 kind: Config metadata: name: '-' build: artifacts: - image: gcr.io/gcp-10-mins/add buildpacks: builder: gcr.io/buildpacks/builder:v1 manifests: helm: flags: upgrade: - --install releases: - name: square chartPath: deployments/square setValues: square.image: square setValueTemplates: square.env.QS_LOG_LEVEL: "{{.QS_LOG_LEVEL}}" deploy: helm: {}
  • 28. Build Local Build In Cluster Build Remote on Google Cloud Build Dockerfile Yes Yes Yes Jib Maven and Gradle Yes - Yes Cloud Native Buildpacks Yes - Yes Bazel Yes - - ko Yes - Yes Custom Script Yes Yes - The build section in the Skaffold configuration file, skaffold.yaml, controls how artifacts are built. To use a specific tool for building artifacts, add the value representing the tool and options for using that tool to the build section.
  • 29. Build - Cloud Native Buildpacks apiVersion: skaffold/v4beta1 kind: Config metadata: name: '-' build: artifacts: - image: square buildpacks: builder: gcr.io/buildpacks/builder:v1 env: - GOOGLE_BUILDABLE=cmd/square/main.go - GOOGLE_RUNTIME_VERSION=1.14 dependencies: paths: - cmd/square/main.go - internal/app/square/** - internal/pkg/** tagPolicy: sha256: {} local: push: true Gdg cloud taipei ddt meetup #53 buildpack - https://www.slideshare.net/cagechung/gdg-cloud-taipei-ddt-meetup-53-buildpack
  • 30. [Skaffold 2.0 Documentation | Skaffold](https://skaffold.dev/docs/) Build - Cloud Native Buildpacks Cont. $ QS_LOG_LEVEL=debug skaffold run --default-repo gcr.io/gcp-10-mins -f skaffold-v2.yaml Generating tags... - square -> gcr.io/gcp-10-mins/square:latest ... Target platforms: [linux/amd64] v1: Pulling from buildpacks/builder Digest: sha256:de4d669b82419307072df7b35c3c9a81aca35e308be2bac5ec4ca7dbcba31f24 Status: Image is up to date for gcr.io/buildpacks/builder:v1 ... ===> BUILDING [builder] === Go - Runtime (google.go.runtime@0.9.1) === [builder] Using runtime version from GOOGLE_RUNTIME_VERSION: 1.14 [builder] === Go - Gomod (google.go.gomod@0.9.0) === [builder] -------------------------------------------------------------------------------- [builder] Running "go mod download (GOPATH=/layers/google.go.gomod/gopath GO111MODULE=on)" [builder] Done "go mod download (GOPATH=/layers/google.go.gomod/gopath GO111..." (536.9738ms) [builder] === Go - Build (google.go.build@0.9.0) === [builder] -------------------------------------------------------------------------------- [builder] Running "go build -o /layers/google.go.build/bin/main cmd/square/main.go (GOCACHE=/layers/google.go.build/gocache)" [builder] Done "go build -o /layers/google.go.build/bin/main cmd/square/main..." (7.2431905s) [builder] === Utils - Label Image (google.utils.label@0.0.2) ===
  • 32. Deploy - Google Cloud Run alpha manifests must be valid Cloud Run services, using the serving.knative.dev/v1 schema googleapi: Error 400: Registry image path like [region.]gcr.io/repo-path[:tag and/or @digest] apiVersion: skaffold/v4beta1 kind: Config build: artifacts: - image: gokit-add-cloud-run buildpacks: builder: "gcr.io/buildpacks/builder:v1" dependencies: paths: - cmd/add/main.go - internal/** env: - GOOGLE_BUILDABLE=cmd/add/main.go tagPolicy: sha256: {} local: push: true profiles: - name: cloud-run manifests: rawYaml: - manifests/cloud-run.yaml deploy: cloudrun: projectid: gcp-10-mins region: asia-east1 New
  • 33. [Skaffold 2.0 Documentation | Skaffold](https://skaffold.dev/docs/) Deploy - Google Cloud Run Cont. New $ skaffold --default-repo gcr.io/gcp-10-mins run -p cloud-run WARN[0001] failed to detect active kubernetes cluster node platform. Specify the correct build platform in the `skaffold.yaml` file or using the `--platform` flag subtask=-1 task=DevLoop Generating tags... - gokit-add-cloud-run -> gcr.io/gcp-10-mins/gokit-add-cloud-run:latest .... Build [gokit-add-cloud-run] succeeded Starting test... Tags used in deployment: - gokit-add-cloud-run -> gcr.io/gcp-10-mins/gokit-add-cloud-run:latest@sha256:acf05cfabd250d6d576e6b0b8aaa1f18ae3fd79d99e16fa1a5a3be 473f6eecb6 Starting deploy... Deploying Cloud Run service: gokit-add-cloud-run gokit-add-cloud-run: Service starting: Deploying Revision. Waiting on revision gokit-add-cloud-run-00001-wyq. Cloud Run Service gokit-add-cloud-run finished: Service started. 0/1 deployment(s) still pending You can also run [skaffold run --tail] to get the logs
  • 34. Deploy - Helm Update No more `artifactOverrides` or `imageStrategy` Skaffold no longer requires the intricate configuring of artifactOverrides or imageStrategy fields. See docs here on how old artifactOverrides and imageStrategy values translate to setValues entires in the latest Skaffold schemas (apiVersion: skaffold/v3alpha1 or skaffold binary version v2.0.0 onwards) Note (manifest.helm.*) and the helm deployer (deploy.helm.*) is the use of helm template vs helm install
  • 35. Deploy - Helm Cont. Update deploy: helm: flags: upgrade: - --install releases: - name: square chartPath: ./deployments/helm/square artifactOverrides: square.image: gcr.io/gcp-10-mins/square setValues: square.env.QS_LOG_LEVEL: info manifests: helm: flags: upgrade: - --install releases: - name: square chartPath: deployments/square setValues: square.image: square setValueTemplates: square.env.QS_LOG_LEVEL: "{{.QS_LOG_LEVEL}}" deploy: helm: {} v1 v2
  • 36. Deploy - Helm Cont. Update $ QS_LOG_LEVEL=debug skaffold run --default-repo gcr.io/gcp-10-mins -f skaffold-v2.yaml Generating tags... - square -> gcr.io/gcp-10-mins/square:latest Checking cache... - square: Found Remotely Starting test... Tags used in deployment: - square -> gcr.io/gcp-10-mins/square:latest@sha256:36ff3a328a97a4ae13937516b697d63fc5d89621d69fba255683acaad6fa5eb0 Starting deploy... Release "square" has been upgraded. Happy Helming! NAME: square LAST DEPLOYED: Tue Nov 29 08:21:19 2022 NAMESPACE: default STATUS: deployed REVISION: 4 TEST SUITE: None Waiting for deployments to stabilize... - deployment/square: creating container square - pod/square-59ddb57855-cvt4b: creating container square - deployment/square is ready. Deployments stabilized in 11.323 seconds You can also run [skaffold run --tail] to get the logs
  • 37. Render New the Skaffold renderer renders the final Kubernetes manifests: Skaffold replaces untagged image names in the Kubernetes manifests with the final tagged image names. It also might go through the extra intermediate step of expanding templates (for helm) or calculating overlays (for kustomize) ● rawYaml - use this if you don’t currently use a rendering tool ● helm ● kpt ● kustomize
  • 38. Render - Helm New apiVersion: v1 kind: Service metadata: name: square Spec: type: LoadBalancer ports: - name: http port: 80 targetPort: 10020 - name: grpc port: 8000 targetPort: 10021 selector: app: square apiVersion: apps/v1 kind: Deployment metadata: name: square spec: replicas: 1 selector: matchLabels: app: square template: metadata: labels: app: square spec: containers: - env: - name: QS_GRPC_PORT value: "10021" - name: QS_HTTP_PORT value: "10020" - name: QS_LOG_LEVEL value: debug image: gcr.io/gcp-10-mins/square:latest@sha256:ecc0ee10 name: square $ QS_LOG_LEVEL=debug skaffold render -f skaffold-v2.yaml --default-repo gcr.io/gcp-10-mins
  • 40. Known issues Cloud Code (v1.20.4, Nov 2022) not support Skaffold 2 yet, current build-in skaffold version is v1.39.3
  • 41. DevFest 2022 - Cloud Workstation Introduction TaiChung - https://www.slideshare.net/cagechung/devfest-2022-cloud-workstation-introduction-taichungpdf
  • 42. Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐 - https://www.slideshare.net/cagechung/coscup-x-ruby-conf-tw-2021-google-cloud-buildpacks
  • 43. Devfest 2021' - Artifact Registry Introduction (Taipei) - https://www.slideshare.net/cagechung/devfest-2021-artifact-registry-introduction-taipei
  • 44. Q & A