GA privada: usar un cert-manager personalizado con Apigee hybridEsta función se ofrece como GA privada para la versión 1.13 de Apigee hybrid. |
---|
Esta función te ofrece 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) que usa permisos restrictivos.
Antes de empezar
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
Configurar cert-manager personalizado
Para configurar un cert-manager personalizado, debes seguir estos pasos:
Instalación nueva de un cert-manager personalizado
Para realizar una instalación desde cero de un cert-manager personalizado para usarlo con Apigee hybrid, sigue estos pasos:
- Instala los CRDs con
kubectl
mediante 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 cert-manager mediante el gráfico de Helm.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Después, cuando esté disponible la nueva versión del gráfico, podrás actualizarlo con
helm upgrade
:helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
Actualizar a cert-manager personalizado
Para migrar de una instancia de cert-manager no personalizada a una versión personalizada, sigue estos pasos. Solo se puede ejecutar un cert-manager en el clúster a la vez.
- Inhabilita los webhooks que ya tengas y actualiza la implementación para que tenga 0 réplicas y así la migración sea fluida:
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 los CRDs:
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 haya completado la instalación, puedes eliminar el gestor de certificados que hayas instalado anteriormente.
Instalar o actualizar Apigee hybrid con un cert-manager personalizado
Para instalar o actualizar una configuración híbrida con un gestor de certificados personalizado, es necesario hacer 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 gestor de certificados personalizado, haz el siguiente cambio en el archivo overrides.yaml
antes de instalar los componentes de Apigee Hybrid en el paso 10: Instalar Apigee Hybrid con Helm.
Actualiza tu archivo overrides.yaml
para notificar al operador dónde se encuentran los recursos relacionados con cert-manager y permitir que el operador use el emisor de cert-manager personalizado.
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 posterior con un gestor de certificados personalizado, haz los siguientes cambios después de seguir los pasos de Preparar la actualización de los gráficos de Helm y antes de Instalar los gráficos de Helm de Apigee hybrid:
- Haz los siguientes cambios en el archivo
overrides.yaml
para indicar al operador dónde encontrar los recursos relacionados con cert-manager y permitir que el operador use el ClusterIssuer personalizado de cert-manager.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- Copia el secreto apigee-ca del espacio de nombres cert-manager en tu espacio de nombres 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 identifica el espacio de nombres 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
Revertir una actualización de Apigee Hybrid
Si necesitas restaurar una versión anterior de Apigee hybrid, sigue las instrucciones que se indican en Restaurar una versión anterior.
Deshacer la instalación y desinstalar cert-manager personalizado
Restaurar 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 cert-manager normal (no personalizado) con el método que prefieras. Asegúrate de usar la versión de CRDs correspondiente. Por ejemplo, si usas el método kubectl para instalar cert-manager, se actualizarán los CRDs a la versión correspondiente, ya que la carga útil también incluirá CRDs. Asegúrate de que el método de instalación que utilices incluya los CRDs.
Desinstalar el gestor de certificados personalizado
Para desinstalar el gestor de certificados personalizado, sigue estos pasos:
- Desinstala la versión de Helm con el siguiente comando:
helm uninstall CERT_MANAGER_RELEASE_NAME
- Elimina los 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 gráfico de Helm admite anulaciones según sea necesario, lo que te permite usar un archivo de anulaciones durante el proceso de instalación o actualización.
Para evitar confusiones, te recomendamos que uses un nombre de archivo como cert-manager-overrides.yaml
.
Consulta la documentación de cert-manager para ver todas las configuraciones de sustitución de cert-manager admitidas.
Configuraciones habituales de cert-manager
En los siguientes ejemplos se muestra cómo llevar a cabo algunas configuraciones comunes de cert-manager en Apigee hybrid.
Anular imágenes
A continuación, se muestra un ejemplo de cómo sustituir 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 independientes para los pods de Cassandra y otros pods. Si quieres ejecutar cert-manager en el grupo de nodos que no está 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: []