Disponibilidade geral privada: usar um gerenciador de certificados personalizado com a Apigee híbridaEste recurso é oferecido como um GA particular para a Apigee híbrida versão 1.13. |
---|
Esse recurso oferece a opção de instalar um gerenciador de certificados personalizado para o Apigee híbrido com uma configuração modificada relacionada ao controle de acesso baseado em função (RBAC) usando permissões restritivas.
Antes de começar
Antes de prosseguir com as etapas de instalação, faça o download do gráfico do Helm usando os seguintes comandos:
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
Como configurar o cert-manager personalizado
A configuração de um cert-manager personalizado requer as seguintes etapas:
Instalação nova de um cert-manager personalizado
Para realizar uma nova instalação de um gerenciador de certificados personalizado para uso com a Apigee híbrida, siga estas etapas:
- Instale os CRDs usando
kubectl
com os seguintes comandos: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
- Instale o componente do cert-manager usando o gráfico do Helm
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Depois, quando a nova versão do gráfico estiver disponível, você poderá fazer upgrade com
helm upgrade
:helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Fazer upgrade para o cert-manager personalizado
Para migrar de um gerenciador de certificados não personalizado para uma versão personalizada, siga as etapas abaixo. Apenas um cert-manager pode ser executado no cluster em um determinado momento.
- Desative os webhooks atuais e atualize a implantação para que não haja réplicas para uma migração perfeita:
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
- Instale os CRDs:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
- Instale o gerenciador de certificados personalizado:
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- Quando a instalação terminar, exclua o cert-manager instalado anteriormente.
Como instalar ou fazer upgrade da Apigee híbrida com um cert-manager personalizado
A instalação ou o upgrade híbrido com um gerenciador de certificados personalizado requer as seguintes alterações nos procedimentos de instalação ou atualização.
Mudanças na instalação da Apigee híbrida
Ao instalar a Apigee híbrida v1.13 ou mais recente com um cert-manager personalizado, faça a seguinte alteração no arquivo overrides.yaml
antes de instalar os componentes da Apigee híbrida na Etapa 10: instalar a Apigee híbrida usando o Helm.
Atualize o arquivo overrides.yaml
para informar ao operador onde encontrar os recursos relacionados ao cert-manager e permitir que ele use o emissor do cert-manager personalizado.
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Mudanças no processo de upgrade da Apigee híbrida
Ao fazer upgrade da Apigee híbrida para a v1.13 ou mais recente com um cert-manager personalizado, faça as seguintes mudanças após as etapas em Preparar para o upgrade dos gráficos do Helm e antes Instalar os gráficos do Helm da Apigee híbrida:
- Faça as seguintes mudanças no arquivo
overrides.yaml
para notificar o operador sobre onde encontrar os recursos relacionados ao cert-manager e permitir que ele use o ClusterIssuer do gerenciador de certificados personalizado.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Copie o secret apigee-ca atual do namespace cert-manager para seu namespace da Apigee:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- Edite o arquivo
apigee-ca.yaml
para remover o parâmetro de namespace que identifica o namespace comocert-manager
. - Aplique o secret
apigee-ca
ao namespace da Apigee comkubectl apply
:kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
Como reverter um upgrade da Apigee híbrida
Se você precisar reverter para uma versão anterior da Apigee híbrida, siga as instruções em Como reverter para uma versão anterior.
Como reverter e desinstalar o cert-manager personalizado
Reverter o cert-manager personalizado
Para reverter o cert-manager personalizado, siga estas etapas:
- Desinstale a versão do Helm usando o seguinte comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Instale o gerenciador de certificados normal (não personalizado) usando seu método preferido. Use a versão correspondente dos CRDs. Por exemplo, se você estiver usando o método kubectl para instalar o cert-manager, ele vai atualizar os CRDs para uma versão correspondente, já que o payload também inclui CRDs. Confirme se o método de instalação que você usa inclui os CRDs.
Desinstalar o gerenciador de certificados personalizado
Para desinstalar o cert-manager personalizado, siga estas etapas:
- Desinstale a versão do Helm usando o seguinte comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Exclua as CRDs com os seguintes comandos:
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
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 usar 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.
Configurações comuns do gerenciador de certificados
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 startupapicheck: image: # without a tag repository: quay.io/jetstack/cert-manager-startupapicheck
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: 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
Tolerâncias
Também é possível fornecer tolerâncias, conforme mostrado no exemplo a seguir:
# 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: []