Ritolabo
  1. Home

Argo CD と Kustomize で dev と prod 環境を作る

  • ArgoCD
Argo CD と Kustomize で dev と prod 環境を作る

同じアプリを dev と prod の 2 つの環境に入れる。Kustomize の base と overlay で共通の YAML と環境ごとの差分を分け、Argo CD の Application を環境ごとに作る。sops で暗号化した Secret を Kustomize と同じディレクトリに置けない理由と、その回避のしかたも整理する。

Argo CD で Secret を暗号化して反映する

  • ArgoCD
Argo CD で Secret を暗号化して反映する

Kubernetes の Secret の値を sops と age で暗号化して Git に置き、Argo CD の Config Management Plugin(sops の sidecar)で復号してクラスタに反映する。Argo CD の公式ドキュメントが推奨する方式との違い、鍵・暗号文・平文がそれぞれどこにあるかも整理する。

Argo CD で Kubernetes 上のアプリを公開する

  • ArgoCD
Argo CD で Kubernetes 上のアプリを公開する

Argo CD の Application が指す Git のディレクトリに ConfigMap・Service・Ingress の YAML を追加し、Deployment を変更して push するだけで、Ingress Controller(Contour)経由で http://localhost/ にページが表示される状態にする。ConfigMap の内容を Git で変えたときに、Pod を入れ替えずにページが変わることも確認する。

Argo CD の自動同期: automated・selfHeal・prune

  • ArgoCD
Argo CD の自動同期: automated・selfHeal・prune

Argo CD の Application に syncPolicy の設定を 3 つ追加し、Git に push するだけでクラスタの中身が Git の内容に合う状態にする。automated で push が自動で反映されること、selfHeal で kubectl scale した Pod の数が Git の数に戻ること、prune で Git から消したファイルの Deployment がクラスタからも消えることを確認する。

Argo CD のインストールから Git の YAML を反映するまで

  • ArgoCD
Argo CD のインストールから Git の YAML を反映するまで

Argo CD を kind のクラスタにインストールし、ブラウザの画面にログインする。GitHub の private リポジトリに置いた Deployment の YAML を、Application という定義を 1 つ書いて Argo CD に読ませ、kubectl apply を打たずにクラスタに入れる。画面の OutOfSync / Synced、Missing / Healthy が何を表しているかを確認する。

Argo CD の概要と仕組み

  • ArgoCD
Argo CD の概要と仕組み

Argo CD は、クラスタの中で動き、Git リポジトリにある YAML を Kubernetes に反映し続けるプログラム。自分で kubectl apply を打つ運用で何に困るか、Argo CD を使うと何が変わるか、何ができて何ではないか、どこで何が動くかを、公式ドキュメントをもとに整理する。

Author

rito

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級