kubernetesのCI/CDについてツール多すぎてわけわからんかったのでまとめた
kubernetesのCI/CD
jenkins, circle ci, spinnaker, argo ci/cd, jenkins xなどツール多すぎて意味がわからん。
まず、CI/CDのツールから整理する。
CI
- Jenkins
CloudNativeなツールではないイメージ。使いたくはない - circleci
よく使っている - github actions
最近流行っているイメージ、一度触ってみたい - argo ci
argoが持っているCI機能, まだ開発中っぽい
CD
デプロイは個人的にはargo CDが良さそう。
GitOps
- コミット = 実インフラへのデプロイ
- 全てgitで管理して変更もログで追うという考え
- 2つのリポジトリ:1つはアプリのソースコード用、もう1つはマニフェスト用
アプリへの変更でリリースが走ることを回避する。
(CI/CDツール側でディレクトリ制御とかできないのかな) - マニフェストを管理するリポジトリの数を適切に選ぶ
- コミットする前にマニフェストをテストする
- Gitマニフェストは外部の変更により変更されるべきではない
helmやらのバージョンは固定しておくべし -
秘密の管理方法を計画する
- Bitnami Sealed Secrets
- Godaddy Kubernetes External Secrets
- Hashicorp Vault
- Helm Secrets
- Kustomize secret generator plugins
ツール
- spinnaker
GitOpsツールではない - argo CD
GitOpsのためのk8s CDツール
Git管理のhelmとかをk8sにデプロイする - flux
- Jenkins X
引用: https://argoproj.github.io/argo-cd/
Argo
プロジェクトとして複数ある模様。
- Workflow
- Events
- CD
- Rollouts
PFNの人の記事が参考になる
https://www.slideshare.net/DaisukeTaniwaki/20190725-argo-project-latest-news
spinnakerとの比較
- EC2へのデプロイが前提
- k8s特有のリソース管理が難しい
- プロジェクトのメタデータがDB保存される
- 構成がargo CDの方が簡単
引用: https://www.inovex.de/blog/spinnaker-vs-argo-cd-vs-tekton-vs-jenkins-x/
その他記事
- https://qiita.com/kajitack/items/841d196c982b2ee1fad4
https://speakerdeck.com/amaya382/how-to-manage-credentials-on-gitops 秘匿情報を扱う方法についての情報をここで得た
秘匿情報をGitリポジトリに含める場合には、helm secretsが良いのか?
Written by littlem.