Utiliser cert-manager personnalisé

DG privée : Apigee hybrid avec cert-manager personnalisé

Cette fonctionnalité est proposée en disponibilité générale privée pour la version 1.13 d'Apigee hybrid.

Utiliser cert-manager personnalisé

Cette fonctionnalité vous permet d'installer un cert-manager modifié ou personnalisé pour Apigee avec une configuration liée à RBAC modifiée contenant des autorisations restrictives.

Procédure

  1. Installez les CRD à l'aide de kubectl à l'aide des commandes suivantes :
    export CERT_MANAGER_VERION=v1.14.5
    
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
    
  2. Installez le composant cert-manager à l'aide du chart Helm.
    helm install CERT_MANAGER_RELESE_NAME apigee-cert-manager/ \
    --namespace NAMESPACE
    

    Par la suite, lorsque la nouvelle version du chart sera disponible, vous pouvez la mettre à niveau avec helm upgrade :

    helm upgrade CERT_MANAGER_RELESE_NAME apigee-cert-manager/ \
    --namespace NAMESPACE
    

Infrastructure as Code (overrides.yaml)

Le chart Helm est compatible avec les remplacements nécessaires, ce qui vous permet d'utiliser un fichier de remplacement si nécessaire lors du processus d'installation ou de mise à niveau. Pour éviter toute confusion, nous vous recommandons un nom de fichier tel que cert-manager-overrides.yaml.

Consultez la documentation cert-manager pour connaître toutes les configurations de remplacement cert-manager acceptées.

Les exemples suivants montrent comment effectuer certaines configurations courantes de cert-manager dans Apigee hybrid.

Images ignorées

Voici un exemple de remplacement d'images avec imagepullsecrets si vous devez héberger l'image en mode privé.

# 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

NodeSelector et affinité de nœud

Lors de l'installation d'Apigee Hybrid, vous devez utiliser des nœuds distincts pour les pods Cassandra et les autres pods. Si vous souhaitez exécuter cert-manager dans le pool de nœuds non lié à Cassandra, vous pouvez utiliser l'affinité de nœuds :

# 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: foo.bar.com/role
#            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


Tolerations:
Similarly, one can provide tolerations as below
# 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: foo.bar.com/role
#     operator: Equal
#     value: master
#     effect: NoSchedule
tolerations: []

webhook:
  tolerations: []

cainjector:
  tolerations: []