CNE Kubernetes Ready: Argo CD による GitOps
Kubernetes Readyデプロイメントでは、GitOpsを使用して、Gitリポジトリを通じてHelmの値、Kubernetesマニフェスト、および環境構成を管理します。 kubectl を使用して手動で変更を適用したり、ワークステーションから Helm コマンドを実行したりする代わりに、GitOps コントローラーが目的の状態をクラスターに統合します。
liferay-default Helm チャートは、すべての入力が宣言的であるため、このモデルに適合します。Helm 値、ConfigMaps、Secrets、およびマウントされた構成ファイルです。
Kubernetes Readyは、Argo CDやFluxなどのコントローラーを通じてGitOpsワークフローをサポートします。
リポジトリ構造
標準的なGitOpsリポジトリ構造では、共有設定と環境固有の値が分離されています。
このレイアウトは、標準的なリポジトリ構造を示しています。
gitops/
├── base
│ ├── liferay-values.yaml
│ ├── search-config.yaml
│ └── storage-config.yaml
├── environments
│ ├── dev
│ │ └── values.yaml
│ ├── staging
│ │ └── values.yaml
│ └── production
│ └── values.yaml
└── applications
└── liferay-application.yaml
Helmリリースの管理
Kubernetes Ready デプロイメントは、Argo CD を介して liferay-default チャートを調整します。
デプロイメントワークフローは、Helmの値とチャートのバージョンをGitに保存しながら、構成を継続的にクラスターに統合します。
このマニフェストを argocd 名前空間に適用します。 Argo CDはOCIレジストリからHelmチャートを取得し、リポジトリ内の値ファイルと照合します。
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: liferay
namespace: argocd
spec:
destination:
namespace: liferay
server: https://kubernetes.default.svc
sources:
- repoURL: us-central1-docker.pkg.dev/liferay-artifact-registry/liferay-helm-chart
chart: liferay-default
targetRevision: 0.6.0
helm:
valueFiles:
- $values/environments/production/values.yaml
- repoURL: https://git.example.com/platform/gitops.git
targetRevision: main
ref: values
syncPolicy:
automated:
prune: true
selfHeal: true
GitOpsワークフローにおけるシークレットの参照
GitOpsリポジトリは、平文の認証情報をGitに直接保存してはなりません。
代わりに、外部のシークレット管理システムから Kubernetes Secrets を同期し、 customEnvFrom や mounted Secrets などの Kubernetes Ready 構成パターンを介して参照する必要があります。
環境構成
GitOpsリポジトリは、環境ごとに設定を分離します。
環境特有の差異には以下が含まれる。
- データベースエンドポイント
- Ingressホスト名
- レプリカ数
- リソース要求と制限
- 検索エンドポイント
- ストレージ構成
ロールバックとドリフト管理
GitOpsコントローラーは、稼働中のクラスタの状態を、Gitに保存されている望ましい状態と継続的に比較します。
差異が生じた場合、コントローラーは自動的にドリフトを調整し、リソースをコミットされたデプロイメント状態に復元します。
デプロイメントをロールバックするには、Gitで管理されている構成を元に戻し、コントローラーが以前の状態に自動的に戻せるようにします。