HCP Terraform の workspace と run: plan から apply までの流れと state の置き場所
ローカルの terraform コマンドから HCP Terraform の workspace を作り、plan と apply を run として実行する。run がどこで動き、承認待ちでどう止まり、state がどこに残るかを、ターミナルの出力と画面で確かめる。
ローカルの terraform コマンドから HCP Terraform の workspace を作り、plan と apply を run として実行する。run がどこで動き、承認待ちでどう止まり、state がどこに残るかを、ターミナルの出力と画面で確かめる。
HCP Terraform は、Terraform の plan と apply を HashiCorp のクラウドで実行し、state と認証情報もそこに置くサービス。HCP Terraform とは何か、何ができるか、どういう仕組みで動くかを、公式ドキュメントをもとに整理する。
Tilt で、Go で書いた API と一緒に PostgreSQL を kind のクラスタで動かす。resource_deps で DB の Pod が Ready になるのを待ってから初期データを入れ、そのあと API を起動する。初期データの投入は local_resource で行い、trigger mode を manual にして管理画面のボタンで入れ直す。tilt down で DB も含めて削除されることを確認する。
Tilt の Live Update を使い、Go で書いた API のソースの変更を、image を作り直さずに kind のクラスタで動いているコンテナへ反映する。ローカルの開発環境で go build した実行ファイルを sync でコンテナにコピーし、restart_process 拡張でプログラムを起動し直す。保存のあとも Pod の名前・RESTARTS・image のタグが変わらないことを確認する。
Tilt を使い、自作の API を kind のクラスタで動かす。Tiltfile に docker_build・k8s_yaml・k8s_resource の 3 行を書いて tilt up を実行し、ソースを 1 行変えて保存するだけで image の作成から Pod の入れ替えまでが自動で行われることを確認する。開発用と判定できないクラスタでは Tilt が止まることも、kubeconfig の名前だけを変えて確かめる。
Tilt は、ローカルの開発環境で動き、アプリのソースを保存するたびに image の作成・Kubernetes への反映・port-forward を自動でやり直すツール。Tilt とは何か、何ができるか、どういう仕組みで動くかを、公式ドキュメントをもとに整理する。
同じアプリを dev と prod の 2 つの環境に入れる。Kustomize の base と overlay で共通の YAML と環境ごとの差分を分け、Argo CD の Application を環境ごとに作る。sops で暗号化した Secret を Kustomize と同じディレクトリに置けない理由と、その回避のしかたも整理する。
Kubernetes の Secret の値を sops と age で暗号化して Git に置き、Argo CD の Config Management Plugin(sops の sidecar)で復号してクラスタに反映する。Argo CD の公式ドキュメントが推奨する方式との違い、鍵・暗号文・平文がそれぞれどこにあるかも整理する。
Argo CD の Application が指す Git のディレクトリに ConfigMap・Service・Ingress の YAML を追加し、Deployment を変更して push するだけで、Ingress Controller(Contour)経由で http://localhost/ にページが表示される状態にする。ConfigMap の内容を Git で変えたときに、Pod を入れ替えずにページが変わることも確認する。
Argo CD の Application に syncPolicy の設定を 3 つ追加し、Git に push するだけでクラスタの中身が Git の内容に合う状態にする。automated で push が自動で反映されること、selfHeal で kubectl scale した Pod の数が Git の数に戻ること、prune で Git から消したファイルの Deployment がクラスタからも消えることを確認する。