Como usar o cert-manager personalizado

GA particular: Apigee híbrida usando o cert-manager personalizado

Este recurso é oferecido como um GA particular para a Apigee híbrida versão 1.13.

Como usar o cert-manager personalizado

Esse recurso oferece a opção de instalar um Gerenciador de certificados modificado ou personalizado para a Apigee com uma configuração modificada relacionada ao RBAC com permissões restritivas.

Procedimento

  1. Instale os CRDs usando kubectl com os seguintes comandos:
    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. Instale o componente do Cert Manager usando o gráfico do Helm
    helm install CERT_MANAGER_RELESE_NAME apigee-cert-manager/ \
    --namespace NAMESPACE
    

    Depois, quando a nova versão do gráfico estiver disponível, você poderá fazer upgrade com helm upgrade:

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

Infraestrutura como código (overrides.yaml)

O gráfico Helm oferece suporte a substituições conforme necessário, permitindo que você use um arquivo de substituições conforme necessário durante o processo de instalação ou upgrade. Para evitar confusão, recomendamos um nome de arquivo como cert-manager-overrides.yaml.

Consulte a documentação do cert-manager para conferir todas as configurações de substituição de cert-manager compatíveis.

Nos exemplos a seguir, mostramos como realizar algumas configurações comuns do gerenciador de certificados na Apigee híbrida.

Substituir imagens

Confira a seguir um exemplo de substituição de imagens com imagepullsecrets se você precisar hospedar a imagem de forma privada.

# 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 e afinidade de nó

Na instalação da Apigee híbrida, é necessário usar nós separados para pods do Cassandra e outros pods. Se quiser executar o cert-manager no pool de nós não relacionado ao Cassandra, use a afinidade do nó:

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