継続的デプロイメント
Flux や Argo CD などのツールを使用して cert-manager のインストールを自動化する方法を学びます。
概要
cert-manager Helm チャートを Flux、ArgoCD、Anthos などのツールで直接使用できます。また、helm template を使用して YAML を出力し、カスタマイズされた cert-manager インストールマニフェストを生成することもできます。これにより、好みのデプロイツールにパイプで渡すことができます。
このページには、これらのツールの一部を使用して cert-manager をインストールする方法に関するメモが含まれています。
📢 一般的な GitOps および継続的デプロイメントツールでの cert-manager の使用に関するメモや簡単なチュートリアルを提供して、このページの改善にご協力ください。
Flux Helm Controller の使用
cert-manager Helm チャートは、Flux Helm Controller によってインストールできます。
最初に、cert-manager Helm リポジトリの URL で構成されたHelmRepository
リソースを作成します。次に、目的の cert-manager チャート値とリリースで構成されたHelmRelease
リソースを作成します。
以下は、cert-manager 1.12 リリースの最新パッチバージョンをインストールし、次に 1.13 リリースの最新パッチバージョンにアップグレードする例です。
⚠️ これは、本番環境での使用には適さない可能性がある簡単な例です。また、cert-manager が完全に統合された公式の Flux 例のリポジトリも参照してください。ここでは、cert-manager CRD とコントローラーがインストールされた後、ClusterIssuer リソースを適切な順序でデプロイする方法を示しています。
前提条件
flux
CLI と、Flux がインストールされた Kubernetes クラスターが必要です。
以下は、Kind クラスターに Flux をすばやくインストールする方法です。
kind create clusterflux check --preflux installflux check
HelmRepository
リソースを作成する
flux create source helm cert-manager --url https://charts.jetstack.io
HelmRelease
リソースを作成する
Helm チャートの値を values.yaml
ファイルに入れます。Flux が CRD リソースをインストールおよびアップグレードできるように、crds.enabled
値を使用します。
# values.yamlcrds:enabled: true
flux create helmrelease cert-manager \--chart cert-manager \--source HelmRepository/cert-manager.flux-system \--release-name cert-manager \--target-namespace cert-manager \--create-target-namespace \--values values.yaml \--chart-version 1.12.x
更新とアップグレード
そして、cert-manager 1.13 リリースにアップグレードする場合は、チャートバージョンの部分的なセマンティックバージョンを更新するだけです。
flux create helmrelease cert-manager \--chart cert-manager \--source HelmRepository/cert-manager.flux-system \--release-name cert-manager \--target-namespace cert-manager \--create-target-namespace \--values values.yaml \--chart-version 1.13.x
トラブルシューティング
警告とエラーについて Flux イベントとログを確認します。
flux eventsflux logs
cmctl
を使用して、cert-manager webhook または CRD の問題をチェックします。
cmctl check apicmctl version -o yaml
警告とエラーについて cert-manager のログを確認します。
kubectl logs -n cert-manager -l app.kubernetes.io/instance=cert-manager --prefix --all-containers