SlideShare a Scribd company logo
How to debug
Microservices on
Kubernetes as a pros
KAI CHU CHUNG
GDGCloud co-organizer
GDE(Cloud)
“How to debug Microservices
on Kubernetes as a pros”
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
1. Debug
2. Microservice
3. Kubernetes
Agenda
Debug
1. Local
2. Container
3. Cloud Debugger
Debug
Local (Golang)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
fmt.Fprintf(w, "hello devfest 2020 tw")
})
port := os.Getenv("PORT")
if port == "" {
port = "8080"
log.Printf("Defaulting to port %s", port)
}
log.Printf("Listening on port %s", port)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
Local (Python)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello devfest 2020 tw'
if __name__ == '__main__':
app.debug = True
app.run()
Summary: Local
Containers allow you
to package your
application and its
dependencies together
into one succinct
manifest
What are Containers and their benefits | Google Cloud - https://cloud.google.com/containers
1. Dockerfile
2. buildpacks
Container
Dockerfile (Golang)
FROM golang:1.15 AS builder
WORKDIR /workspace
# Install dependencies in go.mod and go.sum
COPY go.mod go.sum ./
RUN go mod download
# Copy rest of the application source code
COPY . ./
# Compile the application to /app.
RUN go build -o /exe -v ./
FROM gcr.io/distroless/base:latest
COPY --from=builder /exe .
ENTRYPOINT ["/exe"]
Dockerfile (Golang debug)
FROM golang:1.15
# Download the dlv (delve) debugger for go
RUN go get -u -v github.com/go-delve/delve/cmd/dlv
WORKDIR /workspace
# Install dependencies in go.mod and go.sum
COPY go.mod go.sum ./
RUN go mod download
# Copy rest of the application source code
COPY . ./
RUN go build -o /exe -v ./
ENTRYPOINT ["dlv", "exec", "/app", "--continue", "--accept-multiclient", "--api-version=2",
"--headless", "--listen=:3000", "--log"]
container with known vulnerabilities
Source: The state of open source security report 2019 by snyt
44%
Google Cloud Next ’20 OnAir - https://cloud.withgoogle.com/next/sf/onair?session=SVR227#application-modernization
1. CNCF sandbox projects
2. suggest builders
a. Google
b. Heroku
c. Paketo Buildpacks
Buildpacks
Buildpacks Go Cloud Native | Heroku - https://blog.heroku.com/buildpacks-go-cloud-native
1. Open source.
2. Creates secure
container images.
3. Designed for
running on Cloud
Run, GKE, Anthos.
Buildpacks
GoogleCloudPlatform/buildpacks - https://github.com/GoogleCloudPlatform/buildpacks
● Google Cloud maintains a set of open source
buildpacks for building containers to run on
GKE, Anthos, & Cloud Run
● Cloud Build native support for buildpacks
● Cloud Run direct source deployments w/
buildpacks
● Cloud Shell has pack pre-installed. App Engine
builds via buildpacks
● Cloud Functions builds via buildpacks
● Cloud Code deploy to Cloud Run with Buildpacks
● Skaffold native support for buildpacks
Buildpacks on Google Cloud
pack build aa --builder gcr.io/buildpacks/builder:v1
dive index.docker.io/library/aa:latest
wagoodman/dive: A tool for exploring each layer in a docker image - https://github.com/wagoodman/dive
Summary: Container
debugger
debugger
one
container
one
container
Microservice
Microservices refers to an
architectural style for
developing applications.
Microservices allow a large
application to be decomposed
into independent constituent
parts, with each part having
its own realm of
responsibility
.
├── build
├── cmd
├── deployments
├── internal
│ ├── app
│ │ ├── authnsvc
│ │ ├── authzsvc
│ │ ├── docs
│ │ ├── emailsvc
│ │ ├── invitesvc
│ │ ├── mappingsvc
│ │ ├── oauthagentsvc
│ │ ├── organizationsvc
│ │ ├── person_attribute
│ │ ├── report_statistics
│ │ ├── reportsvc
│ │ ├── storesvc
│ │ ├── streamsvc
│ │ └── ws
│ └── pkg
├── pb
├── scripts
├── test
├── cloudbuild-build.yaml
├── cloudbuild-dev-deploy.yaml
├── cloudbuild-dev-meta.yaml
├── cloudbuild-helm.yaml
├── cloudbuild-release-helm.yaml
├── cloudbuild-release-meta.yaml
├── cloudbuild-test.yaml
├── cloudbuild.plantuml
├── makefile
└── skaffold.yaml
Service Language Description
frontend Go
Exposes an HTTP server to serve the website. Does
not require signup/login and generates session
IDs for all users automatically.
cartservice C#
Stores the items in the user's shopping cart in
Redis and retrieves it.
productcatalogservice Go
Provides the list of products from a JSON file and
ability to search products and get individual
products.
currencyservice Node.js
Converts one money amount to another currency.
Uses real values fetched from European Central
Bank. It's the highest QPS service.
paymentservice Node.js
Charges the given credit card info (mock) with
the given amount and returns a transaction ID.
shippingservice Go
Gives shipping cost estimates based on the
shopping cart. Ships items to the given address
(mock)
emailservice Python Sends users an order confirmation email (mock).
checkoutservice Go
Retrieves user cart, prepares order and
orchestrates the payment, shipping and the email
notification.
recommendationservice Python
Recommends other products based on what's given
in the cart.
adservice Java Provides text ads based on given context words.
loadgenerator Python/Locust
Continuously sends requests imitating realistic
user shopping flows to the frontend.
GoogleCloudPlatform/microservices-demo - https://github.com/GoogleCloudPlatform/microservices-demo
Kubernetes
Kubernetes is a portable,
extensible, open-source
platform for managing
containerized workloads and
services, that facilitates
both declarative configuration
and automation. It has a
large, rapidly growing
ecosystem. Kubernetes
services, support, and tools
are widely available.
1
2
3
4
5
6
Change code
Run docker build
Run docker push
Patch yaml
Run kubectl apply
Verify
Kubernetes Development workflow
Skaffold handles the workflow
for building, pushing and
deploying your application,
allowing you to focus on what
matters most: writing code
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
1. Go (runtime ID: go)
2. NodeJS (runtime ID: nodejs)
3. Java and JVM languages
(runtime ID: jvm)
4. Python (runtime ID: python)
5. .NET Core (runtime ID:
netcore)
Skaffold debug (beta)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Cloud Code comes with tools
to help you write, run, and
debug cloud-native
applications quickly and
easily.
Cloud Code | Google Cloud - https://cloud.google.com/code
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)
https://www.facebook.com/groups/GCPUG.TW

More Related Content

PDF
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
PDF
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
PDF
Gdg cloud taipei ddt meetup #53 buildpack
PDF
Google App Engine: Basic
PDF
Devfest 2021' - Artifact Registry Introduction (Taipei)
PDF
容器化後,持續交付不可缺的敲門磚 - Helm
PDF
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
PDF
Velero search & practice 20210609
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Gdg cloud taipei ddt meetup #53 buildpack
Google App Engine: Basic
Devfest 2021' - Artifact Registry Introduction (Taipei)
容器化後,持續交付不可缺的敲門磚 - Helm
COSCUP 2020 Google 技術 x 公共參與 x 開源 口罩地圖技術開源
Velero search & practice 20210609

What's hot (20)

PDF
Hiveminder - Everything but the Secret Sauce
PDF
PuppetConf 2016: Running Puppet Software in Docker Containers – Gareth Rushgr...
PDF
Rest, sockets em golang
PDF
Ship your Scala code often and easy with Docker
PDF
Continuous Integration & Continuous Delivery with GCP
PDF
GraphQL IN Golang
PDF
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
PDF
CI : the first_step: Auto Testing with CircleCI - (MOSG)
PDF
PuppetConf 2016: Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deep...
PDF
開放運算&GPU技術研究班
PDF
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
PDF
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
PDF
Gradle Introduction
PDF
Introduction to Tekton
PDF
Google App Engine (GAE) 演進史
PPTX
Android presentation - Gradle ++
PDF
Managing dependencies with gradle
PPTX
Fabricio - Docker deploy automation
PDF
Continous delivery with sbt
PDF
Microservices on Kubernetes - The simple way
Hiveminder - Everything but the Secret Sauce
PuppetConf 2016: Running Puppet Software in Docker Containers – Gareth Rushgr...
Rest, sockets em golang
Ship your Scala code often and easy with Docker
Continuous Integration & Continuous Delivery with GCP
GraphQL IN Golang
[Image Results] Java Build Tools: Part 2 - A Decision Maker's Guide Compariso...
CI : the first_step: Auto Testing with CircleCI - (MOSG)
PuppetConf 2016: Docker, Mesos, Kubernetes and...Puppet? Don't Panic! – Deep...
開放運算&GPU技術研究班
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
Gradle build tool that rocks with DSL JavaOne India 4th May 2012
Gradle Introduction
Introduction to Tekton
Google App Engine (GAE) 演進史
Android presentation - Gradle ++
Managing dependencies with gradle
Fabricio - Docker deploy automation
Continous delivery with sbt
Microservices on Kubernetes - The simple way
Ad

Similar to Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008) (20)

PDF
Kubernetes for the PHP developer
PPTX
Docker Container As A Service - March 2016
PPTX
Containers as a Service with Docker
PDF
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
PDF
Import golang; struct microservice
PDF
Microservices DevOps on Google Cloud Platform
PDF
Build Your Own CaaS (Container as a Service)
PDF
Excelian hyperledger walkthrough-feb17
PPTX
Docker Container As A Service - Mix-IT 2016
ZIP
Building Web Apps Sanely - EclipseCon 2010
PPTX
NuGet beyond Hello World - DotNext Piter 2017
PDF
Introduction to Kubernetes and GKE
PPTX
Native client
PPTX
Introduction to Kubernetes
PDF
Codetainer: a Docker-based browser code 'sandbox'
PDF
Physical Computing Using Go and Arduino
PDF
A DevOps guide to Kubernetes
ZIP
Google Developer Fest 2010
PPTX
Developing your first application using FIWARE
KEY
JBoss World 2010
Kubernetes for the PHP developer
Docker Container As A Service - March 2016
Containers as a Service with Docker
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
Import golang; struct microservice
Microservices DevOps on Google Cloud Platform
Build Your Own CaaS (Container as a Service)
Excelian hyperledger walkthrough-feb17
Docker Container As A Service - Mix-IT 2016
Building Web Apps Sanely - EclipseCon 2010
NuGet beyond Hello World - DotNext Piter 2017
Introduction to Kubernetes and GKE
Native client
Introduction to Kubernetes
Codetainer: a Docker-based browser code 'sandbox'
Physical Computing Using Go and Arduino
A DevOps guide to Kubernetes
Google Developer Fest 2010
Developing your first application using FIWARE
JBoss World 2010
Ad

More from KAI CHU CHUNG (17)

PDF
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
PDF
DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf
PDF
DevFest 2022 - Cloud Workstation Introduction TaiChung
PDF
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
PDF
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
PDF
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
PDF
Global GDG Leaders Summit, Google I/O 2018 經驗分享
PDF
Google apps script introduction
PDF
Screenshot as a service
PDF
Nas 也可以揀土豆
PDF
Django oscar introduction
PDF
Google apps script introduction
PDF
Gae managed vm introduction
PDF
Google app engine (gae) 演進史
PDF
痞客趴趴走 Waldo
PDF
Waldo-gcp
PDF
Introduction to chrome extension development
Devfest 2023 - Service Weaver Introduction - Taipei.pdf
DevFest 2022 - Skaffold 2 Deep Dive Taipei.pdf
DevFest 2022 - Cloud Workstation Introduction TaiChung
GDG Cloud Taipei: Meetup #52 - Istio Security: API Authorization
GDG Cloud Taipei meetup #50 - Build go kit microservices at kubernetes with ...
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
Global GDG Leaders Summit, Google I/O 2018 經驗分享
Google apps script introduction
Screenshot as a service
Nas 也可以揀土豆
Django oscar introduction
Google apps script introduction
Gae managed vm introduction
Google app engine (gae) 演進史
痞客趴趴走 Waldo
Waldo-gcp
Introduction to chrome extension development

Recently uploaded (20)

PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Encapsulation theory and applications.pdf
PDF
KodekX | Application Modernization Development
PDF
Spectral efficient network and resource selection model in 5G networks
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Approach and Philosophy of On baking technology
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
cuic standard and advanced reporting.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Big Data Technologies - Introduction.pptx
Encapsulation theory and applications.pdf
KodekX | Application Modernization Development
Spectral efficient network and resource selection model in 5G networks
“AI and Expert System Decision Support & Business Intelligence Systems”
Approach and Philosophy of On baking technology
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Chapter 3 Spatial Domain Image Processing.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
cuic standard and advanced reporting.pdf
Network Security Unit 5.pdf for BCA BBA.
Programs and apps: productivity, graphics, security and other tools
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Agricultural_Statistics_at_a_Glance_2022_0.pdf
sap open course for s4hana steps from ECC to s4
Advanced methodologies resolving dimensionality complications for autism neur...

Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (https://youtu.be/eseo0hcRaQI?t=11008)

  • 1. How to debug Microservices on Kubernetes as a pros KAI CHU CHUNG GDGCloud co-organizer GDE(Cloud)
  • 2. “How to debug Microservices on Kubernetes as a pros”
  • 5. 1. Debug 2. Microservice 3. Kubernetes Agenda
  • 7. 1. Local 2. Container 3. Cloud Debugger Debug
  • 8. Local (Golang) func main() { http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.Fprintf(w, "hello devfest 2020 tw") }) port := os.Getenv("PORT") if port == "" { port = "8080" log.Printf("Defaulting to port %s", port) } log.Printf("Listening on port %s", port) log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil)) }
  • 9. Local (Python) from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello devfest 2020 tw' if __name__ == '__main__': app.debug = True app.run()
  • 11. Containers allow you to package your application and its dependencies together into one succinct manifest What are Containers and their benefits | Google Cloud - https://cloud.google.com/containers
  • 13. Dockerfile (Golang) FROM golang:1.15 AS builder WORKDIR /workspace # Install dependencies in go.mod and go.sum COPY go.mod go.sum ./ RUN go mod download # Copy rest of the application source code COPY . ./ # Compile the application to /app. RUN go build -o /exe -v ./ FROM gcr.io/distroless/base:latest COPY --from=builder /exe . ENTRYPOINT ["/exe"]
  • 14. Dockerfile (Golang debug) FROM golang:1.15 # Download the dlv (delve) debugger for go RUN go get -u -v github.com/go-delve/delve/cmd/dlv WORKDIR /workspace # Install dependencies in go.mod and go.sum COPY go.mod go.sum ./ RUN go mod download # Copy rest of the application source code COPY . ./ RUN go build -o /exe -v ./ ENTRYPOINT ["dlv", "exec", "/app", "--continue", "--accept-multiclient", "--api-version=2", "--headless", "--listen=:3000", "--log"]
  • 15. container with known vulnerabilities Source: The state of open source security report 2019 by snyt 44% Google Cloud Next ’20 OnAir - https://cloud.withgoogle.com/next/sf/onair?session=SVR227#application-modernization
  • 16. 1. CNCF sandbox projects 2. suggest builders a. Google b. Heroku c. Paketo Buildpacks Buildpacks
  • 17. Buildpacks Go Cloud Native | Heroku - https://blog.heroku.com/buildpacks-go-cloud-native
  • 18. 1. Open source. 2. Creates secure container images. 3. Designed for running on Cloud Run, GKE, Anthos. Buildpacks GoogleCloudPlatform/buildpacks - https://github.com/GoogleCloudPlatform/buildpacks
  • 19. ● Google Cloud maintains a set of open source buildpacks for building containers to run on GKE, Anthos, & Cloud Run ● Cloud Build native support for buildpacks ● Cloud Run direct source deployments w/ buildpacks ● Cloud Shell has pack pre-installed. App Engine builds via buildpacks ● Cloud Functions builds via buildpacks ● Cloud Code deploy to Cloud Run with Buildpacks ● Skaffold native support for buildpacks Buildpacks on Google Cloud
  • 20. pack build aa --builder gcr.io/buildpacks/builder:v1
  • 21. dive index.docker.io/library/aa:latest wagoodman/dive: A tool for exploring each layer in a docker image - https://github.com/wagoodman/dive
  • 24. Microservices refers to an architectural style for developing applications. Microservices allow a large application to be decomposed into independent constituent parts, with each part having its own realm of responsibility
  • 25. . ├── build ├── cmd ├── deployments ├── internal │ ├── app │ │ ├── authnsvc │ │ ├── authzsvc │ │ ├── docs │ │ ├── emailsvc │ │ ├── invitesvc │ │ ├── mappingsvc │ │ ├── oauthagentsvc │ │ ├── organizationsvc │ │ ├── person_attribute │ │ ├── report_statistics │ │ ├── reportsvc │ │ ├── storesvc │ │ ├── streamsvc │ │ └── ws │ └── pkg ├── pb ├── scripts ├── test ├── cloudbuild-build.yaml ├── cloudbuild-dev-deploy.yaml ├── cloudbuild-dev-meta.yaml ├── cloudbuild-helm.yaml ├── cloudbuild-release-helm.yaml ├── cloudbuild-release-meta.yaml ├── cloudbuild-test.yaml ├── cloudbuild.plantuml ├── makefile └── skaffold.yaml
  • 26. Service Language Description frontend Go Exposes an HTTP server to serve the website. Does not require signup/login and generates session IDs for all users automatically. cartservice C# Stores the items in the user's shopping cart in Redis and retrieves it. productcatalogservice Go Provides the list of products from a JSON file and ability to search products and get individual products. currencyservice Node.js Converts one money amount to another currency. Uses real values fetched from European Central Bank. It's the highest QPS service. paymentservice Node.js Charges the given credit card info (mock) with the given amount and returns a transaction ID. shippingservice Go Gives shipping cost estimates based on the shopping cart. Ships items to the given address (mock) emailservice Python Sends users an order confirmation email (mock). checkoutservice Go Retrieves user cart, prepares order and orchestrates the payment, shipping and the email notification. recommendationservice Python Recommends other products based on what's given in the cart. adservice Java Provides text ads based on given context words. loadgenerator Python/Locust Continuously sends requests imitating realistic user shopping flows to the frontend. GoogleCloudPlatform/microservices-demo - https://github.com/GoogleCloudPlatform/microservices-demo
  • 28. Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
  • 29. 1 2 3 4 5 6 Change code Run docker build Run docker push Patch yaml Run kubectl apply Verify Kubernetes Development workflow
  • 30. Skaffold handles the workflow for building, pushing and deploying your application, allowing you to focus on what matters most: writing code
  • 32. 1. Go (runtime ID: go) 2. NodeJS (runtime ID: nodejs) 3. Java and JVM languages (runtime ID: jvm) 4. Python (runtime ID: python) 5. .NET Core (runtime ID: netcore) Skaffold debug (beta)
  • 34. Cloud Code comes with tools to help you write, run, and debug cloud-native applications quickly and easily.
  • 35. Cloud Code | Google Cloud - https://cloud.google.com/code