littlem-nooblog

エンジニア王に、俺はなるっ!!

Statistics, CloudNative, Backend, etc..

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で管理して変更もログで追うという考え

GitOpsベストプラクティス

  1. 2つのリポジトリ:1つはアプリのソースコード用、もう1つはマニフェスト用 アプリへの変更でリリースが走ることを回避する。
    (CI/CDツール側でディレクトリ制御とかできないのかな)
  2. マニフェストを管理するリポジトリの数を適切に選ぶ
  3. コミットする前にマニフェストをテストする
  4. Gitマニフェストは外部の変更により変更されるべきではない
    helmやらのバージョンは固定しておくべし
  5. 秘密の管理方法を計画する

    • 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/

その他記事


littlem

Written by littlem.