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 upgraden

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

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.

  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

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:

  1. Nehmen Sie die folgenden Änderungen an der Datei overrides.yaml vor, 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
    
  2. 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
    
  3. Bearbeiten Sie die Datei apigee-ca.yaml, um den Namespace-Parameter zu entfernen, der den Namespace als cert-manager identifiziert.
  4. Wenden Sie das Secret apigee-ca mit kubectl apply auf 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:

  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: []