De forma predeterminada, el operador de AlloyDB Omni Kubernetes 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 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 un emisor administrado 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 AC raíz de confianza, puedes configurar el operador para que use un emisor 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 un emisor de certificados, primero debes crear un emisor de cert-manager de tipo ClusterIssuer o Issuer que esté asociado 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 emisores de certificados personalizados para el clúster de base de datos, el operador de AlloyDB Omni y PgBouncer.
Certificados de clúster de base de datos
Esta función requiere que el controlPlaneAgentsVersion del clúster de base de datos correspondiente en su manifiesto sea 1.6.0 o superior.
Existen dos campos de especificación del clúster de base de datos para configurar emisores de certificados:
spec.primarySpec.dataPlaneCertIssuer: Es una referencia al emisor de cert-manager que aprovisiona certificados del plano de datos. La CA del emisor es 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 al emisor de cert-manager que aprovisiona 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
Reemplaza lo siguiente:
DATA_PLANE_ISSUER_NAME: Es el nombre del emisor de cert-manager que aprovisiona certificados del plano de datos, como para el servidor de base de datos.DATA_PLANE_ISSUER_KIND: Debe serIssueroClusterIssuer.CONTROL_PLANE_ISSUER_NAME: Es el nombre del emisor de cert-manager que aprovisiona certificados del plano de control para componentes internos.CONTROL_PLANE_ISSUER_KIND: Debe serIssueroClusterIssuer.
Certificados de operador
Los pasos para configurar un emisor de cert-manager para certificados de operador dependen del método que se usó 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 la instalación de Helm 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 tienes instalado el operador y necesitas establecer el emisor de certificados, 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 del emisor de cert-manager que aprovisiona el certificado del operador, que se usa para 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 de suscripción 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 del emisor de cert-manager que aprovisiona el certificado del operador, que se usa para conexiones internas.OPERATOR_CERT_ISSUER_KIND: Debe serIssueroClusterIssuer.
Certificados de PgBouncer
Para admitir emisores personalizados, 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 la Deployment del operador sea correcta y que se establezcan las variables de entorno CERT_MANAGER_ISSUER_NAME y CERT_MANAGER_ISSUER_KIND, 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 de certificado 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 emisor personalizado.