Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction of Cloud Native CI/CD on Kubernetes

0f5f81b602e9ad7f24e7ebe9b994d04c?s=47 kyo
August 30, 2019

Introduction of Cloud Native CI/CD on Kubernetes

Slides for in-house study meeting.



August 30, 2019


  1. Introduction of Cloud Native CI/CD on Kubernetes

  2. Trail Map https://github.com/cncf/trailmap

  3. CI/CD From the trail map: Setup Continuous Integration/Continuous Delivery (CI/CD)

    so that changes to your source code automatically result in a new container being built, tested, and deployed to staging and eventually, perhaps, to production
  4. Landscape https://github.com/cncf/landscape

  5. Landscape

  6. CI/CD on Kubernetes

  7. Pipeline-based CI tool Configuration as Code Fancy Visualization Management using

    CLI tool Concourse CI https://concourse-ci.org/
  8. Get Started https://github.com/helm/charts/tree/master/stable/concourse TL;DR; $ helm install stable/concourse Need to

    set externalUrl to access from outside Install the fly CLI tool for concourse management $ fly -h
  9. Pipeline https://github.com/starkandwayne/concourse-tutorial/blob/master/tutorials/basic/job- inputs/pipeline.yml resources: - name: resource-tutorial type: git source:

    uri: https://github.com/starkandwayne/concourse-tutorial.git branch: develop - name: resource-app type: git source: uri: https://github.com/cloudfoundry-community/simple-go-web-app.git jobs: - name: job-test-app public: true plan: - get: resource-tutorial - get: resource-app trigger: true - task: web-app-tests file: resource-tutorial/tutorials/basic/job-inputs/task_run_tests.yml
  10. Pipeline

  11. Declarative, GitOps CD tool Automated deployment of desired application states

    Support for config management tools (Kustomize, Helm etc) Argo CD https://argoproj.github.io/argo-cd/
  12. Get Started Quick start $ kubectl create namespace argocd $

    kubectl apply -n argocd -f \ https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml Access the endpoint by browser & Login Get admin password $ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server \ -o name | cut -d'/' -f 2
  13. Application

  14. Application Manifest apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: concourse namespace:

    argocd spec: project: default source: repoURL: https://github.com/helm/charts.git targetRevision: a7816917c50bc31471793f54036a7eaf0eeeb701 path: stable/concourse helm: parameters: - name: "web.service.type" value: "LoadBalancer" - name: "concourse.web.bindPort" value: "80" - name: "concourse.web.externalUrl" value: ${URL} releaseName: concourse destination: server: https://kubernetes.default.svc namespace: default
  15. CI/CD Architecture In my self-study project:

  16. Demo

  17. Thank you!