- v1.16 (última)
- v1.15
- v1.14
- Lista de versiones admitidas
- v1.13
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
En esta página, se explica el certificado de autoridad de certificación raíz de Apigee Hybrid que firma los certificados internos que usan los componentes híbridos para comunicarse entre sí y se describe cómo rotarlo antes de que venza. A partir de Apigee Hybrid v1.17, puedes rotar esta CA raíz por tu cuenta.
Acerca del certificado de la AC raíz
Cada instalación de Apigee Hybrid tiene una sola CA raíz, que se almacena como un Certificate de cert-manager llamado apigee-ca en el espacio de nombres cert-manager. Es una AC autofirmada (isCA: true, nombre común apigee-hybrid) que actúa como raíz de confianza para los certificados internos que emite Hybrid, tanto la TLS mutua (mTLS) entre componentes como la TLS unidireccional (del servidor) que protege los webhook de admisión y la conversión de recursos personalizados. Si esta CA vence, se interrumpirá la comunicación interna entre los componentes híbridos.
Por qué se rota el certificado de la AC raíz
La CA raíz que genera el gráfico híbrido tiene un período de validez de 10 años. Se debe rotar antes de que venza para que los certificados internos que firma se puedan seguir renovando y la comunicación entre componentes nunca se interrumpa. La rotación está diseñada para no tener tiempo de inactividad: durante la transición, tus componentes confían tanto en la CA raíz anterior como en la nueva, por lo que los certificados firmados por cualquiera de ellas siguen siendo válidos hasta que se quita la CA anterior.
Cómo funciona la rotación
Para rotar la CA raíz, debes avanzar tu clúster por cuatro fases, en orden. Solo pasarás a la siguiente fase después de que se complete la fase actual en cada componente. Cada fase se basa en un solo campo de anulaciones, certRotation.phase, aplicado con un helm upgrade del gráfico del operador de Apigee (apigee-operator).
Fase (certRotation.phase) |
Qué ocurre | Es posible revertir la versión |
|---|---|---|
1. CREATE_NEW_CA |
Se crea una nueva AC raíz (apigee-ca-2) y se agrega al almacén de certificados de confianza de cada componente híbrido. Los componentes aún tienen certificados firmados por la CA anterior, por lo que aún no se cambió nada. |
Sí |
2. CREATE_NEW_LEAF |
Se emiten nuevos certificados de entidad final firmados por la nueva CA raíz. Tanto la CA raíz anterior como la nueva son de confianza, por lo que el tráfico continúa sin interrupciones. | Sí |
3. HIDE_OLD_CA |
Se quita la CA raíz anterior de la configuración de confianza activa. Solo la nueva CA raíz permanece en uso. La reversión aún está disponible en esta fase. | Sí |
4. CLEANUP |
Se quitan la CA raíz anterior y sus emisores, y la nueva CA raíz se promociona como la CA raíz del clúster. Esta fase es irreversible. | No. |
Antes de comenzar
- Instala las herramientas de línea de comandos de
kubectlyhelm, y asegúrate de que tu contexto dekubectlapunte al clúster que estás rotando. - Asegúrate de que el clúster esté en buen estado. Cada
helm upgradevalida que cadaApigeeDeploymentesté en el estadorunningy que la fase que solicitas sea la actual, la siguiente o la de reversión. Si el clúster no está en buen estado o intentas omitir una fase, se rechazará la actualización. - Si ejecutas una implementación multirregional, lee esa sección antes de comenzar, ya que todas las regiones deben converger en la misma CA raíz nueva.
Rota la CA raíz
Realiza los siguientes pasos para cada fase que se indica en Cómo funciona la rotación, en orden: aplica la fase y, luego, confirma que se completó antes de pasar a la siguiente. En una implementación multirregional, realiza estos pasos en cada región.
Paso 1: Establece la fase y aplícala
Agrega o actualiza la estrofa certRotation en tu archivo de anulaciones y establece phase en la fase que estás aplicando. Por ejemplo, para iniciar la rotación, haz lo siguiente:
certRotation: phase: CREATE_NEW_CA
Prueba el cambio con una ejecución de prueba primero:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml \ --dry-run=server
Luego, aplica el cambio:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
Paso 2: Confirma que se completó la fase
El clúster registra el progreso de la rotación en el ConfigMap cert-info en el espacio de nombres híbrido. Lee su valor de currentPhase:
kubectl get configmap cert-info -n APIGEE_NAMESPACE \
-o jsonpath='{.data.currentPhase}'
Una fase solo se completa cuando currentPhase es igual a la fase que acabas de aplicar. currentPhase avanza solo después de que cada componente se haya conciliado con la fase solicitada, por lo que no debes continuar hasta que coincida.
Cuando currentPhase coincide, lee la siguiente fase para aplicar desde el mismo ConfigMap:
kubectl get configmap cert-info -n APIGEE_NAMESPACE \
-o jsonpath='{.data.readyForNextPhase}'
Establece certRotation.phase en ese valor y repite los pasos 1 y 2. Continúa hasta que completes la fase CLEANUP.
Implementaciones multirregionales
En una implementación multirregional, cada clúster tiene su propio ConfigMap cert-info, su propio operador y sus propios almacenes de confianza, y todas las regiones deben terminar confiando en la misma CA raíz nueva. El gráfico genera una nueva CA raíz solo cuando el secreto apigee-ca-2 aún no existe, por lo que creas la nueva CA una vez en una región principal y la copias en las otras regiones antes de rotarlas.
Realiza la rotación en el siguiente orden. Confirma currentPhase en una región (consulta el paso 2: Confirma que se completó la fase) antes de pasar esa región a la siguiente fase.
- Ejecuta
CREATE_NEW_CAen tu región principal. El gráfico genera la nueva CA raíz y la almacena en el secretoapigee-ca-2. - Copia el Secret
apigee-ca-2del espacio de nombrescert-managerde la región principal en el espacio de nombrescert-managerde todas las demás regiones antes de ejecutarCREATE_NEW_CAen esas regiones. Este es el mismo patrón de copia secreta que usas cuando te expandes a una región nueva. Consulta Implementaciones multirregionales. - Ejecuta
CREATE_NEW_CAen cada una de las otras regiones, una región a la vez. Como el secreto deapigee-ca-2ya está presente, el gráfico omite la emisión de una nueva CA y vincula la región a la compartida. - Ejecuta
CREATE_NEW_LEAFen cada región. - Ejecuta
HIDE_OLD_CAen cada región. - Ejecuta
CLEANUPen cada región. - Quita la estrofa
certRotationdel archivo de anulaciones de cada región para ordenar tu configuración.
A través de CREATE_NEW_CA, CREATE_NEW_LEAF y HIDE_OLD_CA, cada región confía en la AC raíz anterior y la nueva, por lo que las regiones pueden estar en diferentes fases durante este período sin interrumpir el tráfico entre ellas.
Usa tu propia CA
Si deseas usar tu propia CA raíz en lugar de una generada por el gráfico, crea previamente el nuevo secreto de la CA antes de iniciar la rotación. Dado que el gráfico genera una CA solo cuando el secreto de destino está ausente, se usa un secreto existente tal como está.
Los nombres de las CA raíz no son de formato libre. Hybrid espera cada generación de la CA con un nombre fijo: apigee-ca, luego apigee-ca-2, apigee-ca-3, etcétera. El gráfico busca la siguiente CA con exactamente ese nombre. Cuando traes tu propia CA, debes crear el secreto con el siguiente nombre exacto (apigee-ca-2 para la primera rotación); el gráfico no detecta una CA creada con ningún otro nombre. Para encontrar el nombre secreto actual y el siguiente nombre que se usará, enumera los certificados de CA y los secretos que los respaldan:
kubectl get certificate -n cert-manager \ -o custom-columns=CERTIFICATE:.metadata.name,SECRET:.spec.secretName
Consulta Realiza un seguimiento del vencimiento de la CA raíz para obtener más formas de inspeccionar la generación en la que se encuentra tu clúster.
- Antes de ejecutar
CREATE_NEW_CA, crea un Secret con el siguiente nombre de la CA (apigee-ca-2para la primera rotación) en el espacio de nombrescert-manager, que contenga tu certificado de la AC y tu clave privada. El secreto debe ser del tipokubernetes.io/tlsy contener tres claves:tls.crt,tls.keyyca.crt. Comokubectl create secret tlsno puede establecer la claveca.crt, usa la forma genérica:kubectl create secret generic apigee-ca-2 \ --namespace cert-manager \ --type=kubernetes.io/tls \ --from-file=tls.crt=CERT_FILE \ --from-file=tls.key=KEY_FILE \ --from-file=ca.crt=CA_FILE
- Ejecuta la rotación como se describe en
Rota la AC raíz. Durante
CREATE_NEW_CA, el gráfico detecta tu secreto deapigee-ca-2, omite la generación de una CA y vincula el nuevo emisor (apigee-ca-issuer-2) a tu CA. Todas las demás fases permanecen sin cambios.
Cuando traes tu propia CA, su vida útil es la que lleva tu certificado, no los 10 años predeterminados del gráfico.
Cómo revertir una rotación
Todas las fases anteriores a CLEANUP se pueden revertir. Para revertir la actualización, establece certRotation.phase en el valor que el clúster informa como el objetivo de reversión y aplícalo con helm upgrade, exactamente como aplicas una fase de avance.
Lee el destino de reversión del ConfigMap cert-info:
kubectl get configmap cert-info -n APIGEE_NAMESPACE \
-o jsonpath='{.data.readyForRollbackPhase}'
Los objetivos de avance y reversión para cada fase son los siguientes:
| Fase actual | Próxima fase | Fase de reversión |
|---|---|---|
PHASE_UNSPECIFIED (no iniciado) |
CREATE_NEW_CA |
PHASE_UNSPECIFIED |
CREATE_NEW_CA |
CREATE_NEW_LEAF |
PHASE_UNSPECIFIED |
CREATE_NEW_LEAF |
HIDE_OLD_CA |
CREATE_NEW_CA |
HIDE_OLD_CA |
CLEANUP |
CREATE_NEW_LEAF |
CLEANUP |
— (rotación completada) | — (ninguno; irreversible) |
Seguimiento del vencimiento de la CA raíz
Debido a que la rotación de Apigee hybrid se basa en el cliente, eres responsable de rotar la CA raíz antes de que venza. Haz un seguimiento del vencimiento del certificado apigee-ca y planifica la rotación antes de esa fecha para tener tiempo de completar las cuatro fases en cada región.
Para verificar cuándo vence la CA raíz, enumera los certificados de CA en el espacio de nombres cert-manager y, luego, lee la fecha de vencimiento de la generación que usas actualmente:
kubectl get certificate -n cert-manager
kubectl get certificate apigee-ca -n cert-manager \
-o jsonpath='{.status.notAfter}'
El primer comando enumera cada generación de la CA raíz (apigee-ca, apigee-ca-2, etcétera). El segundo imprime la fecha de vencimiento del certificado con nombre; ejecútalo en la generación que se usa actualmente.
Apigee Hybrid Automated issue surfacing informa los problemas del clúster que detecta como recursos ApigeeIssue, que puedes enumerar con kubectl get apigeeissues. Verifica si hay problemas en la superficie como parte de tu supervisión habitual.
¿Qué sigue?
- Revisa las implementaciones multirregionales para saber cómo se comparten los certificados y los secretos entre las regiones.
- Revisa Configura TLS y mTLS en la puerta de enlace de entrada para comprender el certificado de entrada independiente proporcionado por el cliente.
- Revisa la Presentación automática de problemas para supervisar tu clúster en busca de problemas detectados.