|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Cert-Manager upgraden
Rancher ist mit der API-Version cert-manager.io/v1 kompatibel und wurde zuletzt mit der cert-manager-Version v1.13.1 getestet.
Rancher verwendet cert-manager, um TLS-Zertifikate für HA-Bereitstellungen von Rancher automatisch zu generieren und zu erneuern. Ab Herbst 2019 stehen drei wichtige Änderungen an cert-manager an, auf die Sie reagieren müssen, wenn Sie eine HA-Bereitstellung von Rancher haben:
-
Cert-manager lässt das Feld certificate.spec.acme.solvers auslaufen und ersetzt es. Diese Änderung hat keinen genauen Termin.
-
Cert-manager lässt die
v1alpha1API auslaufen und ersetzt ihre API-Gruppe
Um auf diese Änderungen zu reagieren, wird dieser Leitfaden zwei Dinge tun:
-
Das Verfahren für das Upgrade von cert-manager dokumentieren
-
Die Änderungen der cert-manager API erklären und auf die offizielle Dokumentation von cert-manager verlinken, um Ihre Daten zu migrieren
|
Wichtig:
Wenn Sie cert-manager auf die neueste Version von einer Version älter als 1.5 upgraden, folgen Sie den Schritten in Option C unten. Bitte beachten Sie, dass Sie Rancher nicht neu installieren müssen, um dieses Upgrade durchzuführen. |
Upgrade Cert-Manager
Der in diesen Anweisungen verwendete Namespace hängt von dem Namespace ab, in dem cert-manager derzeit installiert ist. Wenn es im kube-system ist, verwenden Sie diesen in den folgenden Anweisungen. Sie können dies überprüfen, indem Sie kubectl get pods --all-namespaces ausführen und überprüfen, in welchem Namespace die cert-manager-* Pods aufgeführt sind. Ändern Sie nicht den Namespace, in dem cert-manager ausgeführt wird, da dies Probleme verursachen kann.
Um cert-manager zu upgraden, folgen Sie diesen Anweisungen:
Option A: Upgrade von cert-manager mit Internetzugang
Klicken Sie zum Erweitern
-
Sichern Sie vorhandene Ressourcen als Vorsichtsmaßnahme
kubectl get -o yaml --all-namespaces \ issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yamlWichtig:Wenn Sie von einer Version älter als 0.11.0 aktualisieren, aktualisieren Sie die apiVersion aller Ihrer gesicherten Ressourcen von
certmanager.k8s.io/v1alpha1aufcert-manager.io/v1alpha2. Wenn Sie in Ihren anderen Ressourcen Anmerkungen zu cert-manager verwenden, müssen Sie diese aktualisieren, um die neue API-Gruppe widerzuspiegeln. Für Details siehe die Dokumentation zu zusätzlichen Anmerkungsänderungen. -
Deinstallieren Sie die vorhandene Bereitstellung
helm uninstall cert-managerLöschen Sie die CustomResourceDefinition über den Link zur Version vX.Y.Z, die Sie installiert haben
kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml -
Installieren Sie die CustomResourceDefinition-Ressourcen separat
kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yamlWenn Sie Kubernetes v1.15 oder älter verwenden, müssen Sie das
--validate=false-Flag zu Ihrem oben genanntenkubectl apply-Befehl hinzufügen. Andernfalls erhalten Sie einen Validierungsfehler, der sich auf dasx-kubernetes-preserve-unknown-fields-Feld in den CustomResourceDefinition-Ressourcen von cert-manager bezieht. Dies ist ein harmloser Fehler und tritt aufgrund der Art und Weise auf, wie kubectl die Ressourcenvalidierung durchführt. -
Erstellen Sie den Namespace für cert-manager, falls erforderlich
kubectl create namespace cert-manager -
Fügen Sie das Jetstack Helm-Repository hinzu
helm repo add jetstack https://charts.jetstack.io -
Aktualisieren Sie den Cache Ihres lokalen Helm-Chart-Repositorys
helm repo update -
Installieren Sie die neue Version von cert-manager
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager -
Stellen Sie die gesicherten Ressourcen wieder her
kubectl apply -f cert-manager-backup.yaml
Option B: Führen Sie ein Upgrade von cert-manager in einer Air-Gapped-Umgebung durch.
Klicken Sie zum Erweitern
=== Voraussetzungen
Bevor Sie das Upgrade durchführen können, müssen Sie Ihre Air-Gapped-Umgebung vorbereiten, indem Sie die erforderlichen Container-Images zu Ihrer privaten Registry hinzufügen und die benötigten Kubernetes-Manifestdateien herunterladen oder rendern.
-
Befolgen Sie die Anleitung, um Ihre private Registry vorzubereiten mit den für das Upgrade benötigten Bildern.
-
Fügen Sie von einem mit dem Internet verbundenen System das cert-manager-Repo zu Helm hinzu.
helm repo add jetstack https://charts.jetstack.io helm repo update -
Holen Sie sich das neueste verfügbare cert-manager-Chart aus dem Helm-Chart-Repository.
helm fetch jetstack/cert-manager -
Rendern Sie die cert-manager-Vorlage mit den Optionen, die Sie verwenden möchten, um das Diagramm zu installieren. Denken Sie daran, die
image.repositoryOption festzulegen, um das Bild aus Ihrer privaten Registry abzurufen. Dies wird eincert-managerVerzeichnis mit den Kubernetes-Manifestdateien erstellen.Der Helm 3-Befehl lautet wie folgt:
helm template cert-manager ./cert-manager-v0.12.0.tgz --output-dir . \ --namespace cert-manager \ --set image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-controller --set webhook.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-webhook --set cainjector.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-cainjector -
Laden Sie die erforderliche CRD-Datei für cert-manager (alt und neu) herunter.
curl -L -o cert-manager-crd.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-0.12/deploy/manifests/00-crds.yaml curl -L -o cert-manager/cert-manager-crd-old.yaml https://raw.githubusercontent.com/cert-manager/cert-manager/release-X.Y/deploy/manifests/00-crds.yaml
=== Installieren Sie cert-manager
-
Sichern Sie vorhandene Ressourcen vorsorglich.
kubectl get -o yaml --all-namespaces \ issuer,clusterissuer,certificates,certificaterequests > cert-manager-backup.yamlWichtig:Wenn Sie von einer Version älter als 0.11.0 ein Upgrade durchführen, aktualisieren Sie die apiVersion aller Ihrer gesicherten Ressourcen von
certmanager.k8s.io/v1alpha1aufcert-manager.io/v1alpha2. Wenn Sie in Ihren anderen Ressourcen Anmerkungen zu cert-manager verwenden, müssen Sie diese aktualisieren, um die neue API-Gruppe widerzuspiegeln. Für Details siehe die Dokumentation zu zusätzlichen Anmerkungsänderungen. -
Löschen Sie die vorhandene cert-manager-Installation.
kubectl -n cert-manager \ delete deployment,sa,clusterrole,clusterrolebinding \ -l 'app=cert-manager' -l 'chart=cert-manager-v0.5.2'Löschen Sie die CustomResourceDefinition mit dem Link zur Version vX.Y, die Sie installiert haben.
kubectl delete -f cert-manager/cert-manager-crd-old.yaml -
Installieren Sie die CustomResourceDefinition-Ressourcen separat
kubectl apply -f cert-manager/cert-manager-crd.yamlWichtig:Wenn Sie Kubernetes v1.15 oder älter verwenden, müssen Sie das
--validate=false-Flag zu Ihrem oben genanntenkubectl apply-Befehl hinzufügen. Andernfalls erhalten Sie einen Validierungsfehler, der sich auf dasx-kubernetes-preserve-unknown-fields-Feld in den CustomResourceDefinition-Ressourcen von cert-manager bezieht. Dies ist ein harmloser Fehler und tritt aufgrund der Art und Weise auf, wie kubectl die Ressourcenvalidierung durchführt. -
Erstellen Sie den Namespace für cert-manager.
kubectl create namespace cert-manager -
Installieren Sie cert-manager
kubectl -n cert-manager apply -R -f ./cert-manager -
Stellen Sie die gesicherten Ressourcen wieder her
kubectl apply -f cert-manager-backup.yaml
Option C: Upgrade cert-manager von Versionen 1.5 und darunter.
Klicken Sie zum Erweitern
Früher wurde empfohlen, cert-manager von einer älteren Version durch Deinstallation und Neuinstallation von Rancher zu aktualisieren. Mit der folgenden Methode können Sie cert-manager ohne diese zusätzlichen Schritte upgraden, um Ihre Produktionsumgebung besser zu erhalten:
-
Installieren Sie
cmctl, das Kommandozeilenschnittstellen-Tool von cert-manager, mithilfe der Installationsanleitung. -
Stellen Sie sicher, dass alle cert-manager-Custom-Ressourcen, die möglicherweise in etcd in einer veralteten API-Version gespeichert wurden, auf v1 migriert werden:
cmctl upgrade migrate-api-version
Verweisen Sie auf die Dokumentation zur API-Version-Migration für weitere Informationen. Bitte sehen Sie sich auch die Dokumentation zum Upgrade von 1.5 auf 1.6 und die Dokumentation zum Upgrade von 1.6 auf 1.7 an, falls erforderlich.
-
Führen Sie ein Upgrade von cert-manager auf v1.7.1 mit einem normalen
helm upgradedurch. Sie können direkt von Version 1.5 auf 1.7 wechseln, wenn gewünscht. -
Befolgen Sie das Helm-Tutorial, um die API-Version eines Release-Manifests zu aktualisieren. Der Name des Release-Charts ist
release_name=rancherund der Namespace des Releases istrelease_namespace=cattle-system. -
Suchen Sie in der decodierten Datei nach
cert-manager.io/v1beta1und ersetzen Sie es durchcert-manager.io/v1. -
Führen Sie ein Upgrade von Rancher wie gewohnt mit
helm upgradedurch.
Überprüfen Sie die Bereitstellung
Sobald Sie cert-manager installiert haben, können Sie überprüfen, ob es korrekt bereitgestellt wurde, indem Sie den kube-system-Namespace auf laufende Pods überprüfen:
kubectl get pods --namespace cert-manager NAME READY STATUS RESTARTS AGE cert-manager-5c6866597-zw7kh 1/1 Running 0 2m cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
Änderung der Cert-Manager-API und Datenmigration
Rancher unterstützt jetzt cert-manager-Versionen 1.6.2 und 1.7.1. Wir empfehlen v1.7.x, da v1.6.x am 30. März 2022 das Ende des Supports erreicht. Um mehr zu lesen, siehe die cert-manager-Dokumentation. Für Anweisungen zum Upgrade von cert-manager von Version 1.5 auf 1.6 siehe die upstream cert-manager-Dokumentation hier. Für Anweisungen zum Upgrade von cert-manager von Version 1.6 auf 1.7 siehe die upstream cert-manager-Dokumentation hier.
Cert-manager lässt die Verwendung des certificate.spec.acme.solvers-Feldes auslaufen und wird die Unterstützung dafür in einer kommenden Version vollständig einstellen.
Laut der cert-manager-Dokumentation wurde in v0.8 ein neues Format zur Konfiguration von ACME-Zertifikatsressourcen eingeführt. Insbesondere wurde das Konfigurationsfeld für den Herausforderungs-Löser verschoben. Sowohl das alte Format als auch das neue werden ab v0.9 unterstützt, aber die Unterstützung für das alte Format wird in einer kommenden Version von cert-manager eingestellt. Die cert-manager-Dokumentation empfiehlt dringend, dass Sie nach dem Upgrade Ihre ACME-Issuer- und Zertifikatsressourcen auf das neue Format aktualisieren.
Details zu den Änderungen und Migrationsanweisungen finden Sie in den Upgrade-Anweisungen von cert-manager v0.7 auf v0.8.
Die Version v0.11 markiert die Entfernung der v1alpha1 API, die in früheren Versionen von cert-manager verwendet wurde, sowie die Änderung unserer API-Gruppe zu cert-manager.io anstelle von certmanager.k8s.io.
Wir haben auch die Unterstützung für das alte Konfigurationsformat, das in der Version v0.8 auslaufen sollte, entfernt. Das bedeutet, dass Sie vor dem Upgrade auf v0.11 auf das neue Solvers-Stil-Konfigurationsformat für Ihre ACME-Issuer umsteigen müssen. Für weitere Informationen siehe den Leitfaden zum Upgrade auf v0.8.
Details zu den Änderungen und Migrationsanweisungen finden Sie in den Upgrade-Anweisungen von cert-manager v0.10 auf v0.11.
Weitere Informationen zu Upgrade-Informationen von cert-manager.