DG privada: Usa un cert-manager personalizado con Apigee HybridEsta función se ofrece como una DG privada para la versión híbrida 1.13 de Apigee. |
---|
Esta función te brinda la opción de instalar un cert-manager personalizado para Apigee Hybrid con una configuración modificada relacionada con el control de acceso basado en roles (RBAC) a través de permisos restringidos.
Antes de comenzar
Antes de continuar con los pasos de instalación, descarga el gráfico de Helm con los siguientes 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
Configura el cert-manager personalizado
Para configurar un cert-manager personalizado, sigue estos pasos:
Instalación nueva de un cert-manager personalizado
Para realizar una instalación nueva de un cert-manager personalizado para usarlo con Apigee Hybrid, sigue estos pasos:
- Instala las CRDs usando
kubectl
con los siguientes 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
- Instala el componente de cert-manager con el gráfico de Helm.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Luego, cuando esté disponible la versión nueva del gráfico, puedes actualizarlo con
helm upgrade
:helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Actualiza a cert-manager personalizado
Para migrar de un cert-manager existente no personalizado a una versión personalizada, sigue estos pasos. Solo puede ejecutarse un cert-manager en el clúster a la vez.
- Inhabilita los webhooks existentes y actualiza la implementación para que tenga 0 réplicas y realizar una migración sin problemas:
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
- Instala las CRD:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
- Instala el cert-manager personalizado:
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- Una vez que se complete la instalación, puedes borrar el cert-manager instalado anteriormente.
Instala o actualiza Apigee Hybrid con un cert-manager personalizado
La instalación o actualización de hybrid con un cert-manager personalizado requiere los siguientes cambios en los procedimientos de instalación o actualización.
Cambios en la instalación de Apigee Hybrid
Cuando instales Apigee Hybrid v1.13 o una versión posterior con un administrador de certificados personalizado, realiza el siguiente cambio en tu archivo overrides.yaml
antes de instalar los componentes de Apigee Hybrid en el Paso 10: Instala Apigee Hybrid con Helm.
Actualiza tu archivo overrides.yaml
para notificarle al operador dónde encontrar los recursos relacionados con cert-manager y habilitarlo para que use la entidad emisora personalizada de cert-manager.
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Cambios en el proceso de actualización de Apigee Hybrid
Cuando actualices Apigee Hybrid a la versión 1.13 o una posterior con un administrador de certificados personalizado, realiza los siguientes cambios después de los pasos que se indican en Prepárate para la actualización de los gráficos de Helm y antes de instalar los gráficos de Helm de Apigee Hybrid:
- Realiza los siguientes cambios en tu archivo
overrides.yaml
para notificarle al operador dónde encontrar los recursos relacionados con cert-manager y permitir que el operador use el ClusterIssuer de cert-manager personalizado.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Copia el secreto apigee-ca existente del espacio de nombres de cert-manager a tu espacio de nombres de Apigee:
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
- Edita el archivo
apigee-ca.yaml
para quitar el parámetro de espacio de nombres que lo identifica comocert-manager
. - Aplica el secreto
apigee-ca
a tu espacio de nombres de Apigee conkubectl apply
:kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
Cómo revertir una actualización de Apigee Hybrid
Si necesitas revertir a una versión anterior de Apigee Hybrid, sigue las instrucciones que se indican en Cómo revertir a una versión anterior.
Revierte y desinstala cert-manager personalizado
Revierte el cert-manager personalizado
Para revertir el cert-manager personalizado, sigue estos pasos:
- Desinstala la versión de Helm con el siguiente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Instala el cert-manager normal (no personalizado) con tu método preferido. Asegúrate de usar la versión correspondiente de las CRD. Por ejemplo, si usas el método de kubectl para instalar cert-manager, se actualizarán las CRD a una versión correspondiente, ya que la carga útil también incluirá CRD. Asegúrate de que el método de instalación que uses incluya las CRD.
Desinstala el cert-manager personalizado
Para desinstalar el cert-manager personalizado, sigue estos pasos:
- Desinstala la versión de Helm con el siguiente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Borra las CRDs con los siguientes 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
Infraestructura como código (overrides.yaml)
El chart de Helm admite anulaciones según sea necesario, lo que te permite usar un archivo de anulaciones cuando lo necesites durante el proceso de instalación o actualización.
Para evitar confusiones, te recomendamos que utilices un nombre de archivo como cert-manager-overrides.yaml
.
Consulta la documentación de cert-manager para ver todas las configuraciones de anulación de cert-manager compatibles.
Configuraciones comunes de cert-manager
En los siguientes ejemplos, se muestra cómo realizar algunas configuraciones comunes de cert-manager en Apigee Hybrid.
Anula imágenes
El siguiente es un ejemplo de anulación de imágenes junto con imagepullsecrets
si necesitas alojar la imagen 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 y afinidad de nodos
En la instalación de Apigee Hybrid, debes usar nodos separados para los Pods de Cassandra y otros Pods. Si deseas ejecutar el cert-manager en el grupo de nodos no relacionado con Cassandra, puedes usar la afinidad de nodos:
# 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
Tolerancias
También puedes proporcionar tolerancias, como se muestra en el siguiente ejemplo:
# 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: []