Helm
Helmによるインストール
cert-managerは、KubernetesとOpenShiftの両方へのインストール方法として、Helmチャートを提供しています。
cert-managerを他のHelmチャートのサブチャートとして埋め込まないでください。cert-managerはクラスタ内の名前空間を持たないリソースを管理するため、正確に一度だけインストールされるように注意する必要があります。
前提条件
- Helmバージョン3以降をインストールしてください。.
- サポートされているバージョンのKubernetesまたはOpenShiftをインストールしてください。
- クラウドプラットフォームでKubernetesを使用している場合は、Kubernetesプラットフォームプロバイダーとの互換性を参照してください。
cert-managerのインストール
1. Helmリポジトリの追加
このリポジトリは、cert-managerチャートの唯一のサポート対象ソースです。インターネット上には他のミラーやコピーがありますが、それらは完全に非公式であり、セキュリティリスクとなる可能性があります。
特に、「Helm stableリポジトリ」バージョンのcert-managerは非推奨であり、使用しないでください。
helm repo add jetstack https://charts.jetstack.io --force-update
2. cert-managerのインストール
cert-manager Helmチャートをインストールするには、以下に説明されているようにHelm installコマンドを使用します。
helm install \cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--version v1.16.1 \--set crds.enabled=true
3. (オプション) インストールの検証
cert-managerをデプロイしたら、インストールを確認できます。
インストールオプション
使用可能なHelm値の完全なリストは、cert-managerのArtifactHubページにあります。
以下の例は、デフォルトのHelm値を上書きすることでcert-managerのインストールを調整する方法を示しています。
helm install \cert-manager jetstack/cert-manager \--namespace cert-manager \--create-namespace \--version v1.16.1 \--set crds.enabled=true \--set prometheus.enabled=false \ # Example: disabling prometheus using a Helm parameter--set webhook.timeoutSeconds=4 # Example: changing the webhook timeout using a Helm parameter
サブチャートとしてのcert-managerのインストール
cert-managerをサブチャートとして設定した場合、cert-managerのすべてのコンポーネントは、インストールしているHelmリリースの名前空間にインストールされます。
cert-managerをインストールする名前空間を、包括的なチャートの名前空間とは異なる空間に指定したい場合があります。
これは、Helmとサブチャートに関する既知の問題であり、サブチャートの名前空間を指定できず、ほとんどの公開チャートでは値ファイルを使用して名前空間を設定することで解決されていますが、メンテナンス担当者によってチャートに追加する必要があります。
この機能は、cert-managerチャートで利用可能になり、値ファイルまたは--set
スイッチのいずれかで設定できます。
使用例
以下は、cert-managerをサブチャートとして含むChart.yaml
の例です。
apiVersion: v2name: example_chartdescription: A Helm chart with cert-manager as subcharttype: applicationversion: 0.1.0appVersion: "0.1.0"dependencies:- name: cert-managerversion: v1.16.1repository: https://charts.jetstack.ioalias: cert-managercondition: cert-manager.enabled
名前空間は2つの方法で上書きできます。
Values.yaml
ファイル内
cert-manager: #defined by either the name or alias of your dependency in Chart.yamlnamespace: security
--set
を使用したhelmコマンド内
helm install example example_chart \--namespace example \--create-namespace \--set cert-manager.namespace=security
上記の例では、cert-managerはsecurity名前空間にインストールされます。
出力YAML
Helmを使用してcert-managerを直接インストールする代わりに、Helm templateコマンドを使用して静的YAMLマニフェストを作成できます。この静的マニフェストは、デフォルトのHelm値を上書きするフラグを提供することで調整できます。
helm template \cert-manager jetstack/cert-manager \--namespace cert-manager \--version v1.16.1 \--set crds.enabled=true \# --set prometheus.enabled=false \ # Example: disabling prometheus using a Helm parameter> cert-manager.custom.yaml
ℹ️
helm template
コマンドはNamespaceリソースを出力せず、--create-namespace
フラグを無視します。生成されたYAMLをデプロイする名前空間が存在することを確認する必要があります。
アンインストール
警告: cert-managerをアンインストールするには、常にインストールと同じプロセスを逆順で使用してください。静的マニフェストまたはHelmからcert-managerをインストールしたかどうかにかかわらず、以下のプロセスから逸脱すると、問題が発生し、状態が壊れる可能性があります。この発生を防ぐために、アンインストール時には以下の手順に従ってください。
続行する前に、ユーザーによって作成されたすべてのcert-managerリソースが削除されていることを確認してください。次のコマンドを使用して、既存のリソースを確認できます。
kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges --all-namespaces
これらのすべてのリソースが削除されたら、インストール方法に応じて手順を使用してcert-managerをアンインストールする準備が整います。
Helmによるアンインストール
helm
インストールからのcert-managerのアンインストールは、インストールプロセスを逆順に実行し、kubectl
とhelm
の両方で削除コマンドを実行することです。
$ helm uninstall cert-manager -n cert-managerThese resources were kept due to the resource policy:[CustomResourceDefinition] certificaterequests.cert-manager.io[CustomResourceDefinition] certificates.cert-manager.io[CustomResourceDefinition] challenges.acme.cert-manager.io[CustomResourceDefinition] clusterissuers.cert-manager.io[CustomResourceDefinition] issuers.cert-manager.io[CustomResourceDefinition] orders.acme.cert-manager.iorelease "cert-manager" uninstalled
出力に示されているように、Issuers
、ClusterIssuers
、Certificates
、CertificateRequests
、Orders
、およびChallenges
のCustomResourceDefinition
は、Helmアンインストールコマンドによって削除されません。これは、CustomResourceDefinition
を削除すると、それらのリソースのすべてのインスタンスも削除されるため、データ損失を防ぐためです。
☢️ これにより、クラスタからすべての
Issuers
、ClusterIssuers
、Certificates
、CertificateRequests
、Orders
、およびChallenges
リソースが削除されます。kubectl delete crd \issuers.cert-manager.io \clusterissuers.cert-manager.io \certificates.cert-manager.io \certificaterequests.cert-manager.io \orders.acme.cert-manager.io \challenges.acme.cert-manager.io
⚠️
v1.15.0
より前の cert-manager バージョンでは、アンインストール時にCustomResourceDefinition
が保持されず、すべてのIssuer
、ClusterIssuer
、Certificate
、CertificateRequest
、Order
、およびChallenge
リソースがクラスタから削除されます。v1.15.0
より前のバージョンを使用している場合は、cert-manager のアンインストール前に cert-manager リソースのバックアップを作成してください。v1.15.0
にアップグレードしてからアンインストールすることもできます。
名前空間が終了状態のままになる
cert-manager のインストールを先に削除せずに名前空間の削除がマークされている場合、名前空間は終了状態のままになる可能性があります。これは通常、APIService
リソースはまだ存在するが、webhook が実行されていないため到達不能になっていることが原因です。これを解決するには、上記の commands が正しく実行されていることを確認し、問題が解決しない場合は、以下を実行してください。
kubectl delete apiservice v1beta1.webhook.cert-manager.io
Flux Helm コントローラーの使用
cert-manager Helm チャートは、Flux Helm コントローラーによってインストールおよびアップグレードできます。
📖 詳細はこちらをご覧ください。 継続的デプロイメント:Flux Helm コントローラーの使用