De forma predeterminada, el operador de Kubernetes de AlloyDB Omni usa cert-manager para aprovisionar un conjunto de certificados TLS para cada clúster de bases de datos. Además del certificado del servidor de la base de datos, el operador también crea certificados para los componentes del plano de control para garantizar que las conexiones internas también sean seguras. De forma predeterminada, cada certificado está firmado por una entidad emisora administrada por el operador.
A partir de la versión 1.6.0 del operador de AlloyDB Omni, si prefieres que todos los certificados, incluidos los de los componentes del plano de control, se encadenen a tu propia CA raíz de confianza, puedes configurar el operador para que use una entidad emisora de tu elección. Esto te permite encadenar todos los certificados a tu propia infraestructura de clave pública (PKI), incluidos los certificados que se usan para la funcionalidad del plano de control, sin exponer los detalles de implementación de cada entidad interna.
Antes de comenzar
Para configurar una entidad emisora de certificados, primero debes crear una entidad emisora de cert-manager de tipo ClusterIssuer o Issuer que esté asociada con la CA que deseas que firme tus certificados. El operador de AlloyDB Omni hace referencia a este emisor cuando crea certificados.
Configura emisores personalizados
Puedes configurar entidades emisoras de certificados personalizadas para el clúster de base de datos, el operador de AlloyDB Omni y PgBouncer.
Certificados de clúster de la base de datos
Esta función requiere que el controlPlaneAgentsVersion del clúster de la base de datos pertinente en su manifiesto sea 1.6.0 o superior.
Existen dos campos de especificación del clúster de base de datos para configurar las entidades emisoras de certificados:
spec.primarySpec.dataPlaneCertIssuer: Es una referencia a la entidad emisora de cert-manager que aprovisiona certificados del plano de datos. La AC emisora es aquella en la que el cliente de la base de datos puede confiar para verificar la base de datos durante una conexión TLS.spec.primarySpec.controlPlaneAgentsCertIssuer: Es una referencia a la entidad emisora de cert-manager que aprovisiona certificados del plano de control. Estos certificados se usan para las conexiones internas.
spec:
primarySpec:
tls:
dataPlaneCertIssuer:
name: DATA_PLANE_ISSUER_NAME
kind: DATA_PLANE_ISSUER_KIND
controlPlaneAgentsCertIssuer:
name: CONTROL_PLANE_ISSUER_NAME
kind: CONTROL_PLANE_ISSUER_KIND
Reemplaza lo siguiente:
DATA_PLANE_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona certificados del plano de datos, como para el servidor de la base de datos.DATA_PLANE_ISSUER_KIND: Debe serIssueroClusterIssuer.CONTROL_PLANE_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona certificados del plano de control para los componentes internos.CONTROL_PLANE_ISSUER_KIND: Debe serIssueroClusterIssuer.
Certificados de operador
Los pasos para configurar una entidad emisora de cert-manager para los certificados del operador dependen del método que se use para instalar AlloyDB Omni.
Configura con Helm
Si instalas el operador de AlloyDB Omni versión 1.6.0 o posterior por primera vez, usa Helm install y establece los valores adecuados. Esto supone que sigues las instrucciones de instalación.
helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m
Si ya instalaste el operador y necesitas establecer la entidad emisora del certificado, usa helm upgrade para establecer los valores adecuados:
helm upgrade alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
--create-namespace \
--namespace alloydb-omni-system \
--set operatorCertIssuer.certManagerIssuerName="OPERATOR_CERT_ISSUER_NAME" \
--set operatorCertIssuer.certManagerIssuerKind="OPERATOR_CERT_ISSUER_KIND" \
--atomic \
--timeout 5m
Reemplaza lo siguiente:
OPERATOR_CERT_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona el certificado del operador, que se usa para las conexiones internas.OPERATOR_CERT_ISSUER_KIND: Debe serIssueroClusterIssuer.
Configura con Operator Lifecycle Manager
Si usaste Operator Lifecycle Manager (OLM) para instalar el operador de AlloyDB Omni, puedes modificar el campo spec.config.env del recurso Subscription para establecer las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND de la Deployment del operador.
spec:
config:
env:
- name: CERT_MANAGER_ISSUER_NAME
value: OPERATOR_CERT_ISSUER_NAME
- name: CERT_MANAGER_ISSUER_KIND
value: OPERATOR_CERT_ISSUER_KIND
Reemplaza lo siguiente:
OPERATOR_CERT_ISSUER_NAME: Es el nombre de la entidad emisora de cert-manager que aprovisiona el certificado del operador, que se usa para las conexiones internas.OPERATOR_CERT_ISSUER_KIND: Debe serIssueroClusterIssuer.
Certificados de PgBouncer
Para admitir entidades emisoras personalizadas, el controlador de PgBouncer puede verificar el campo spec.primarySpec.tls.dataPlaneCertIssuer de DBCluster y usarlo para aprovisionar el certificado de PgBouncer. Esto garantiza que PgBouncer use un certificado de la misma CA que la base de datos.
Verificar
Para verificar que el Deployment del operador esté en buen estado y que las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND estén configuradas, ejecuta el siguiente comando:
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
Para verificar que se use el emisor correcto, inspecciona los objetos Certificate de la siguiente manera:
kubectl get certificate -n NAMESPACE
Verifica el campo issuerRef en el resultado de cada certificado para confirmar que coincida con tu entidad emisora personalizada.