Private GA: Benutzerdefinierten Cert-Manager mit Apigee Hybrid verwendenDieses Feature wird als privates GA für Apigee Hybrid-Version 1.13 angeboten. |
|---|
Mit dieser Funktion können Sie einen benutzerdefinierten Cert-Manager für Apigee Hybrid mit einer geänderten rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) mit restriktiven Berechtigungen installieren.
Vorbereitung
Bevor Sie mit den Installationsschritten fortfahren, laden Sie das Helm-Diagramm mit den folgenden Befehlen herunter:
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CERT_MANAGER_VERSION=v1.14.5helm pull $CHART_REPO/apigee-cert-manager --version $CERT_MANAGER_VERSION --untar
Benutzerdefinierten Cert-Manager einrichten
So richten Sie einen benutzerdefinierten Cert-Manager ein:
- Neuinstallation eines benutzerdefinierten Cert-Managers
- Auf den benutzerdefinierten Cert-Manager upgraden
Neuinstallation eines benutzerdefinierten Cert-Managers
So führen Sie eine Neuinstallation eines benutzerdefinierten Cert-Managers für die Verwendung mit Apigee Hybrid durch:
- Installieren Sie die CRDs mithilfe von
kubectlmit den folgenden Befehlen:export CERT_MANAGER_VERSION=v1.14.5kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml - Installieren Sie die Cert-manager-Komponente mithilfe des Helm-Diagramms.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Wenn die neue Diagrammversion verfügbar ist, können Sie sie mithilfe von
helm upgradeaktualisieren:helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Upgrade auf den benutzerdefinierten Cert-Manager durchführen
Führen Sie die folgenden Schritte aus, um von einem vorhandenen nicht benutzerdefinierten Cert-Manager zu einer benutzerdefinierten Version zu migrieren. Im Cluster kann jeweils nur ein Cert-Manager ausgeführt werden.
- Deaktivieren Sie vorhandene Webhooks und aktualisieren Sie das Deployment so, dass für eine nahtlose Migration 0 Replikate vorhanden sind:
kubectl delete validatingwebhookconfiguration cert-manager-webhookkubectl delete mutatingwebhookconfiguration cert-manager-webhook# set the replicas to 0kubectl scale deployment cert-manager -n cert-manager --replicas=0kubectl scale deployment cert-manager-cainjector -n cert-manager --replicas=0kubectl scale deployment cert-manager-webhook -n cert-manager --replicas=0 - Installieren Sie die CRDs:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml - Installieren Sie den benutzerdefinierten Cert-Manager:
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- Nach Abschluss der Installation können Sie den zuvor installierten Cert-manager löschen.
Apigee Hybrid mit einem benutzerdefinierten Cert-Manager installieren oder aktualisieren
Wenn Sie Hybrid mit einem benutzerdefinierten Cert-Manager installieren oder upgraden, sind die folgenden Änderungen an den Installations- oder Upgradeverfahren erforderlich.
Änderungen an der Apigee Hybrid-Installation
Wenn Sie Apigee Hybrid v1.13 oder höher mit einem benutzerdefinierten Cert-Manager installieren, nehmen Sie die folgende Änderung in Ihrer overrides.yaml-Datei vor, bevor Sie die Apigee Hybrid-Komponenten in Schritt 10: Apigee Hybrid über Helm-Diagramme installieren installieren.
Aktualisieren Sie die Datei overrides.yaml, um den Operator darüber zu informieren, wo die cert-manager-bezogenen Ressourcen zu finden sind, und dem Operator zu ermöglichen, den benutzerdefinierten Issuer von cert-manager zu verwenden.
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Änderungen am Apigee Hybrid-Upgradeprozess
Wenn Sie ein Upgrade von Apigee Hybrid auf Version 1.13 oder höher mit einem benutzerdefinierten cert-cert-Manager durchführen, nehmen Sie die folgenden Änderungen nach den Schritten unter Upgrade der Helm-Diagramme vorbereiten und vor Apigee Hybrid-Helm-Diagramme installieren vor:
- Nehmen Sie die folgenden Änderungen an der Datei
overrides.yamlvor, um den Operator darüber zu informieren, wo die cert-manager-bezogenen Ressourcen zu finden sind, und dem Operator zu ermöglichen, den benutzerdefinierten ClusterIssuer von cert-manager zu verwenden.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Kopieren Sie das vorhandene Secret „apigee-ca“ aus dem cert-manager-Namespace in Ihren Apigee-Namespace:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- Bearbeiten Sie die Datei
apigee-ca.yaml, um den Namespace-Parameter zu entfernen, der den Namespace alscert-manageridentifiziert. - Wenden Sie das Secret
apigee-camitkubectl applyauf Ihren Apigee-Namespace an:kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
Rollback für ein Apigee Hybrid-Upgrade durchführen
Wenn Sie ein Rollback zu einer vorherigen Version von Apigee Hybrid durchführen müssen, folgen Sie der Anleitung unter Rollback zu einer vorherigen Version.
Rollback und Deinstallation des benutzerdefinierten Cert-Managers
Rollback für den benutzerdefinierten Cert-Manager durchführen
Führen Sie die folgenden Schritte aus, um den benutzerdefinierten Cert-Manager rückgängig zu machen:
- Deinstallieren Sie die Helm-Version mit dem folgenden Befehl:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Installieren Sie den regulären (nicht benutzerdefinierten) Cert-Manager mit Ihrer bevorzugten Methode. Verwenden Sie die entsprechende CRD-Version. Wenn Sie beispielsweise den Cert-Manager mit der kubectl-Methode installieren, werden die CRDs auf eine entsprechende Version aktualisiert, da die Nutzlast auch CRDs enthält. Achten Sie darauf, dass die von Ihnen verwendete Installationsmethode die CRDs enthält.
Benutzerdefinierten Cert-Manager deinstallieren
So deinstallieren Sie den benutzerdefinierten Cert-manager:
- Deinstallieren Sie die Helm-Version mit dem folgenden Befehl:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Löschen Sie die CRDs mit den folgenden Befehlen:
export CERT_MANAGER_VERSION=v1.14.5kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml
Infrastructure as Code (overrides.yaml)
Helm-Diagramme unterstützen Überschreibungen nach Bedarf, sodass Sie während der Installation oder des Upgrades eine Überschreibungsdatei nach Bedarf verwenden können.
Um Verwechslungen zu vermeiden, empfehlen wir einen Dateinamen wie cert-manager-overrides.yaml.
Informationen zu allen unterstützten Cert-manager-Überschreibungskonfigurationen finden Sie in der Dokumentation zu dem Cert-Manager.
Gängige Cert-manager-Konfigurationen
In den folgenden Beispielen wird gezeigt, wie Sie einige gängige Cert-manager-Konfigurationen in Apigee Hybrid ausführen.
Images überschreiben
Das folgende Beispiel zeigt das Überschreiben von Images zusammen mit imagepullsecrets, wenn Sie das Image privat hosten müssen.
# cert-manager-overrides.yaml
global:
# Reference to one or more secrets to be used when pulling images
# ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
#
# For example:
# imagePullSecrets:
# - name: "image-pull-secret"
imagePullSecrets: []
image:
# Override the image tag to deploy by setting this variable.
# If no value is set, the chart's appVersion will be used.
repository: quay.io/jetstack/cert-manager-controller
webhook:
image:
# without a tag
repository: quay.io/jetstack/cert-manager-webhook
cainjector:
image:
# without a tag
repository: quay.io/jetstack/cert-manager-cainjector
startupapicheck:
image:
# without a tag
repository: quay.io/jetstack/cert-manager-startupapicheck
NodeSelector und Knotenaffinität
In der Apigee Hybrid-Installation müssen Sie separate Knoten für Cassandra-Pods und andere Pods verwenden. Wenn Sie cert-manager in einem Knotenpool ausführen möchten, der nicht mit Cassandra zusammenhängt, können Sie die Knotenaffinität verwenden:
# A Kubernetes Affinity, if required; see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core
#
# For example:
# affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: cloud.google.com/gke-nodepool
# operator: In
# values:
# - master
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY
operator: In
values:
- value for the non-C* node pool
webhook:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY
operator: In
values:
- value for the non-C* node pool
cainjector:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: KEY
operator: In
values:
- value for the non C* node pool
Toleranzen
Sie können auch Toleranzen angeben, wie im folgenden Beispiel gezeigt:
# A list of Kubernetes Tolerations, if required; see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core # # For example: # tolerations: # - key: node.kubernetes.io/not-ready # operator: Equal # value: master # effect: NoSchedule tolerations: [] webhook: tolerations: [] cainjector: tolerations: [] startupapicheck: tolerations: []