Benutzerdefinierten Cert-Manager verwenden

Private GA: Benutzerdefinierten Cert-Manager mit Apigee Hybrid verwenden

Dieses 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-charts
export CERT_MANAGER_VERSION=v1.14.5
helm pull $CHART_REPO/apigee-cert-manager --version $CERT_MANAGER_VERSION --untar

Benutzerdefinierten Cert-Manager einrichten

So richten Sie einen benutzerdefinierten Cert-Manager ein:

  1. Neuinstallation eines benutzerdefinierten Cert-Managers
  2. Auf den benutzerdefinierten Cert-Manager umstellen

Neuinstallation eines benutzerdefinierten Cert-Managers

So führen Sie eine Neuinstallation eines benutzerdefinierten Cert-Managers für die Verwendung mit Apigee Hybrid durch:

  1. Installieren Sie die CRDs mithilfe von kubectl mit den folgenden Befehlen:
    export CERT_MANAGER_VERSION=v1.14.5
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml
    
  2. 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 upgrade aktualisieren:

    helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE

Auf den benutzerdefinierten Cert-Manager umstellen

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.

  1. 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-webhook
      kubectl delete mutatingwebhookconfiguration cert-manager-webhook
    
        # set the replicas to 0
    
      kubectl scale deployment cert-manager -n cert-manager --replicas=0
      kubectl scale deployment cert-manager-cainjector -n cert-manager --replicas=0
      kubectl scale deployment cert-manager-webhook -n cert-manager --replicas=0
  2. Installieren Sie die CRDs:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
  3. Installieren Sie den benutzerdefinierten Cert-Manager:
    helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \
      --namespace APIGEE_NAMESPACE
  4. Nach Abschluss der Installation können Sie den zuvor installierten Cert-manager löschen.

Apigee Hybrid mit einem benutzerdefinierten Cert-Manager installieren oder aktualisieren

Für die Installation oder das Upgrade von Hybrid mit einem benutzerdefinierten Cert-Manager sind die folgenden Änderungen an den Installations- oder Upgradeverfahren erforderlich.

Änderungen an der Installation von Apigee Hybrid

Wenn Sie Apigee Hybrid v1.13 oder höher mit einem benutzerdefinierten Cert-Manager installieren, nehmen Sie die folgende Änderung an der overrides.yaml-Datei vor, bevor Sie die Apigee Hybrid-Komponenten in Schritt 10: Apigee Hybrid über Helm installieren installieren.

Aktualisieren Sie die Datei overrides.yaml, um den Betreiber darüber zu informieren, wo er die mit dem Cert-Manager verknüpften Ressourcen findet, und ihm die Möglichkeit zu geben, den Aussteller des benutzerdefinierten Cert-Managers zu verwenden.

certManager:
  namespace: APIGEE_NAMESPACE

ao:
  certManagerCAIssuerEnabled: true

Änderungen am Upgradeprozess für Apigee Hybrid

Wenn Sie Apigee Hybrid mit einem benutzerdefinierten Cert-Cert-Manager auf Version 1.13 oder höher aktualisieren, nehmen Sie die folgenden Änderungen nach den Schritten unter Vorbereitung auf das Upgrade der Helm-Diagramme und vor Apigee Hybrid-Helm-Diagramme installieren vor:

  1. Nehmen Sie die folgenden Änderungen an der Datei overrides.yaml vor, um den Betreiber darüber zu informieren, wo er die mit cert-manager verknüpften Ressourcen findet, und ihm die Verwendung des ClusterIssuers des benutzerdefinierten cert-managers zu ermöglichen.
    certManager:
      namespace: APIGEE_NAMESPACE
    
    ao:
      certManagerCAIssuerEnabled: true
    
  2. Kopieren Sie das vorhandene Secret „apigee-ca“ aus dem Namespace „cert-manager“ in Ihren Apigee-Namespace:
    kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
    
  3. Bearbeiten Sie die Datei apigee-ca.yaml, um den Namespaceparameter zu entfernen, der den Namespace als cert-manager identifiziert.
  4. Wenden Sie das apigee-ca-Secret mit kubectl apply auf Ihren Apigee-Namespace an:
    kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml

Rollback für Apigee Hybrid-Upgrade durchführen

Wenn Sie ein Rollback auf eine vorherige Version von Apigee Hybrid durchführen müssen, folgen Sie der Anleitung unter Rollback auf eine vorherige Version.

Rollback für den benutzerdefinierten Cert-Manager durchführen und ihn deinstallieren

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:

  1. Deinstallieren Sie die Helm-Version mit dem folgenden Befehl:
    helm uninstall CERT_MANAGER_RELEASE_NAME
  2. 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:

  1. Deinstallieren Sie die Helm-Version mit dem folgenden Befehl:
    helm uninstall CERT_MANAGER_RELEASE_NAME
  2. Löschen Sie die CRDs mit den folgenden Befehlen:
    export CERT_MANAGER_VERSION=v1.14.5
    kubectl 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: []