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 base 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 asegurarse de que las conexiones internas también sean seguras. De forma predeterminada, cada certificado está firmado por una entidad emisora gestionada por el operador.
A partir de la versión 1.6.0 del operador 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 un emisor de tu elección. De esta forma, puedes encadenar todos los certificados a tu propia infraestructura de clave pública (PKI), incluidos los certificados que se utilizan para la funcionalidad del plano de control, sin exponer los detalles de implementación de cada entidad interna.
Antes de empezar
Para configurar una entidad emisora de certificados, primero debes crear una entidad emisora de cert-manager de tipo ClusterIssuer o Issuer asociada a la AC con la que quieras firmar tus certificados. El operador de AlloyDB Omni hace referencia a este emisor al crear certificados.
Configurar emisores personalizados
Puedes configurar emisores de certificados personalizados para el clúster de base de datos, el operador de AlloyDB Omni y PgBouncer.
Certificados de clúster de bases de datos
Para usar esta función, el controlPlaneAgentsVersion del clúster de bases de datos correspondiente en su manifiesto debe ser 1.6.0 o una versión posterior.
Hay dos campos de especificación de clúster de base de datos para configurar emisores de certificados:
spec.primarySpec.dataPlaneCertIssuer: referencia al emisor de cert-manager que proporciona certificados del plano de datos. La AC emisora es aquella en la que puede confiar el cliente de la base de datos para verificar la base de datos durante una conexión TLS.spec.primarySpec.controlPlaneAgentsCertIssuer: referencia al emisor de cert-manager que proporciona certificados del plano de control. Estos certificados se usan para 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
Haz los cambios siguientes:
DATA_PLANE_ISSUER_NAME: nombre del emisor de cert-manager que proporciona certificados del plano de datos, como los del servidor de la base de datos.DATA_PLANE_ISSUER_KIND: debe serIssueroClusterIssuer.CONTROL_PLANE_ISSUER_NAME: nombre del emisor de cert-manager que aprovisiona los certificados del plano de control para los componentes internos.CONTROL_PLANE_ISSUER_KIND: debe serIssueroClusterIssuer.
Certificados de operador
Los pasos para configurar un emisor de cert-manager para los certificados de operador dependen del método utilizado para instalar AlloyDB Omni.
Configurar con Helm
Si instalas el operador de AlloyDB Omni por primera vez, usa Helm para instalarlo y define los valores adecuados. Se presupone 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 has instalado el operador y necesitas definir la entidad emisora del certificado, usa helm upgrade para definir 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
Haz los cambios siguientes:
OPERATOR_CERT_ISSUER_NAME: nombre del emisor de cert-manager que proporciona el certificado del operador, que se usa para las conexiones internas.OPERATOR_CERT_ISSUER_KIND: debe serIssueroClusterIssuer.
Configurar con Operator Lifecycle Manager
Si has usado Operator Lifecycle Manager (OLM) para instalar el operador de AlloyDB Omni, puedes modificar el campo spec.config.env del recurso Subscription para definir las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND de la implementación 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
Haz los cambios siguientes:
OPERATOR_CERT_ISSUER_NAME: nombre del emisor de cert-manager que proporciona el certificado del operador, que se usa para las conexiones internas.OPERATOR_CERT_ISSUER_KIND: debe serIssueroClusterIssuer.
Certificados de PgBouncer
Para admitir emisores personalizados, el controlador de PgBouncer puede comprobar el campo spec.primarySpec.tls.dataPlaneCertIssuer de DBCluster y usarlo para aprovisionar el certificado de PgBouncer. De esta forma, PgBouncer usa un certificado de la misma AC que la base de datos.
Verificar
Para verificar que la implementación del operador está en buen estado y que las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND están definidas, ejecuta el siguiente comando:
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
Para verificar que se usa la entidad emisora correcta, inspecciona los objetos Certificate de la siguiente manera:
kubectl get certificate -n NAMESPACE
Comprueba el campo issuerRef en el resultado de cada certificado para confirmar que coincide con tu emisor personalizado.