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

CI/CD Pipeline for Minimalist

pannpers
October 24, 2019

CI/CD Pipeline for Minimalist

『Kubernetes Meetup Tokyo #24』でのLT。
https://k8sjp.connpass.com/event/149872/

pannpers

October 24, 2019
Tweet

Other Decks in Programming

Transcript

  1. hello! I am Yoshimasa Hamada I am Web Developer and

    work for Zeals. You can find me at @panchan9 or @pannpers. 2
  2. Hard Way to introduce CD Tool in Initial Phase ✘

    CDツールの選択肢が多過ぎる ✘ そして、どれも多機能なので比較検討のコストが高い ✘ というかKubernetesだけでも、導入コスト高い
  3. • zeals-dev • zeals-stg • zeals-prd • zeals-cr (container registry)

    Docker Imageを一元管理するProject 2. GCP Project Layout
  4. CI Ops like GitOps !! 3. Workflow For more details

    about GitOps, Kubernetes anti-patterns: Let's do GitOps, not CIOps!
  5. Point 1 ✘ PushされたFeatureブランチ専用のNamespaceを 作成し、デプロイする ✘ ローカルからport-forwardし、動作検証を行う ◦ cert-managerでTLS証明書を自動作成し、 外部からのエンドポイントも自動で用意したい

    ✘ CircleCIでは『ブランチの削除』をHookできないため、 毎回のジョブ実行時に存在するブランチと k8sのNamespaceを照合し、無ければ削除している
  6. Point 3 ✘ StagingのジョブでPushしたDocker ImageをPull ✘ masterブランチへのGitタグ(v0.1.2)を Docker Imageのタグに付与してPushする ◦

    docker tag zeals/hoge:98sie82 zeals/hoge:v0.1.2 ◦ docker push zeals/hoge:v0.1.2 ✘ ImageのビルドはSkipするために、Skaffoldは run ではなく、 deploy コマンドを使う ◦ skaffold deploy -p ${ENV} --images=zeals/hoge:v0.1.2
  7. Conclusion ✘ k8s導入の初期フェーズは使い慣れたCIツールでも、 わりといい感じのCI/CD Pipelineを作れる ✘ ただ、本格運用に必要な機能は不足 ◦ カナリアリリース ◦

    障害時のロールバック ◦ Git上のk8s Manifestと実際の値の変更検知 ✘ ある程度、k8s運用に慣れたタイミングで より高機能なCD専用ツールを導入しよう