Let's Encrypt証明書の使用を許可するためにstable/cert-manager
helmチャートがインストールされている本番AKSクラスターがあります。現在インストールされているバージョンは、cert-manager-v0.6.0
名前空間のkube-system
です。
Let's Encryptは、2019年11月1日から、cert-manager 8.0より前のバージョンからのトラフィックのサポートを停止します。
アップグレードしたいのですが、最新のstable
チャートバージョンはv0.6.7
です。移動する方法はjetstack/cert-manager
に切り替えることです。
これに最もよく対処するにはどうすればよいですか?現在のstable/cert-manager
チャートをアンインストールし、jetstack/cert-manager
を使用して最初からインストールしますか?本番環境でダウンタイムを発生させることなくこれに対処する方法についてのあらゆるリソースをいただければ幸いです。詳細を教えてください。
同じ質問をする人のために、私はテストクラスターでクリーンインストールを実行しようとしましたが、これはかなりスムーズに動作するように見えました。ヘルムリリースの名前はhelm list
を実行してわかりました
次に、次の手順を実行しました。
1.Backup:
kubectl get -o yaml \
--all-namespaces \
issuer,clusterissuer,certificates,orders,challenges > cert-manager-backup.yaml
2.Delete:
# Uninstall the Helm chart
helm delete --purge <your release name here>
# Ensure the cert-manager CustomResourceDefinition resources do not exist:
kubectl delete crd \
certificates.certmanager.k8s.io \
issuers.certmanager.k8s.io \
clusterissuers.certmanager.k8s.io
手順2で説明 ここ
3。新しいjetstackバージョンをインストールします:
# Install the CustomResourceDefinition resources separately
kubectl apply -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.9/deploy/manifests/00-crds.yaml
# Create the namespace for cert-manager
kubectl create namespace cert-manager
# Label the cert-manager namespace to disable resource validation
kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
# Add the Jetstack Helm repository
helm repo add jetstack https://charts.jetstack.io
# Update your local Helm chart repository cache
helm repo update
# Install the cert-manager Helm chart
helm install --name <your release name here> --namespace cert-manager --version v0.9.1 jetstack/cert-manager
説明 ここ
4。復元:
走ってみた
kubectl apply -f cert-manager-backup.yaml
説明したように here ですが、この手順は実際には完全には機能しませんでした。発行者は作成されましたが(自己署名およびCA)、Certificates
およびClusterIssuer
を再作成できませんでした。これらは私が受け取ったエラーでした:
Error from server (InternalError): Internal error occurred: failed calling webhook "clusterissuers.admission.certmanager.k8s.io": the server is currently unable to handle the request
Error from server (InternalError): Internal error occurred: failed calling webhook "certificates.admission.certmanager.k8s.io": the server is currently unable to handle the request
私は元のyaml
ファイルを持っていて、それらを適用することでClusterIssuer
とCertificate
を作成することができました
上記で動作することが確認できました。 (@RVidの回答)
しかし、私は0.5.0を0.9.1にアップグレードし、「ダウンタイムなし」のアップグレードを行うには別の名前空間を作成する必要がありました。
#1 delete old CRDs
kubectl delete crd \
certificates.certmanager.k8s.io \
issuers.certmanager.k8s.io \
clusterissuers.certmanager.k8s.io
#2 create SEPARATE namespace
$ kubectl create namespace cert-manager-new
#3 install new CRDs that corresponds to the new version of cert-manager
$ kubectl apply \
-f https://raw.githubusercontent.com/jetstack/cert-manager/<VERSION>/deploy/manifests/00-crds.yaml
#4 ensure the NEW namespace has an additional label on it in order for the deployment to succeed
$ kubectl label namespace cert-manager-new certmanager.k8s.io/disable-validation="true"
#5 copy secrets to cert-manager-new namespace (For DNS, HTTP and Let's Encrypt account)
## Install the cert-manager helm chart
# jetstack/cert-manager
$ helm install --name cert-manager-new --namespace cert-manager-new jetstack/cert-manager --values <your values file>
#6 apply ClusterIssuer with kubectl apply -f <file.yaml>
Use config from: https://docs.cert-manager.io/en/latest/reference/issuers.html
証明書マネージャの新しいインスタンスは、秘密を破壊することなく、所有しているすべての証明書の同期を開始します。最終的に、すべての証明書は新しいcert-managerで更新されます。
乾杯。