Par défaut, l'opérateur Kubernetes AlloyDB Omni utilise cert-manager pour provisionner un ensemble de certificats TLS pour chaque cluster de bases de données. En plus du certificat du serveur de base de données, l'opérateur crée également des certificats pour les composants du plan de contrôle afin de garantir la sécurité des connexions internes. Par défaut, chaque certificat est signé par un émetteur géré par l'opérateur.
À partir de la version 1.6.0 de l'opérateur AlloyDB Omni, si vous préférez que tous les certificats, y compris ceux des composants du plan de contrôle, soient chaînés à votre propre autorité de certification racine de confiance, vous pouvez configurer l'opérateur pour qu'il utilise un émetteur de votre choix. Cela vous permet d'enchaîner tous les certificats à votre propre infrastructure à clé publique (PKI), y compris les certificats utilisés pour la fonctionnalité du plan de contrôle, sans exposer les détails d'implémentation de chaque entité interne.
Avant de commencer
Pour configurer un émetteur de certificats, vous devez d'abord créer un émetteur cert-manager de type ClusterIssuer ou Issuer associé à l'autorité de certification avec laquelle vous souhaitez signer vos certificats. L'opérateur AlloyDB Omni référence cet émetteur lors de la création de certificats.
Configurer des émetteurs personnalisés
Vous pouvez configurer des émetteurs de certificats personnalisés pour le cluster de bases de données, l'opérateur AlloyDB Omni et PgBouncer.
Certificats de cluster de bases de données
Cette fonctionnalité nécessite que le controlPlaneAgentsVersion du cluster de base de données concerné dans son fichier manifeste soit défini sur 1.6.0 ou une version ultérieure.
Vous devez configurer les émetteurs de certificats dans deux champs de spécification du cluster de bases de données :
spec.primarySpec.dataPlaneCertIssuer: référence à l'émetteur cert-manager qui provisionne les certificats du plan de données. L'autorité de certification de l'émetteur est celle à laquelle le client de base de données peut faire confiance pour valider la base de données lors d'une connexion TLS.spec.primarySpec.controlPlaneAgentsCertIssuer: référence à l'émetteur cert-manager qui provisionne les certificats du plan de contrôle. Ces certificats sont utilisés pour les connexions internes.
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
Remplacez les éléments suivants :
DATA_PLANE_ISSUER_NAME: nom de l'émetteur cert-manager qui provisionne les certificats du plan de données, par exemple pour le serveur de base de données.DATA_PLANE_ISSUER_KIND: doit être défini surIssuerouClusterIssuer.CONTROL_PLANE_ISSUER_NAME: nom de l'émetteur cert-manager qui provisionne les certificats du plan de contrôle pour les composants internes.CONTROL_PLANE_ISSUER_KIND: doit être défini surIssuerouClusterIssuer.
Certificats d'opérateur
La procédure de configuration d'un émetteur cert-manager pour les certificats d'opérateur dépend de la méthode utilisée pour installer AlloyDB Omni.
Configurer à l'aide de Helm
Si vous installez l'opérateur AlloyDB Omni version 1.6.0 ou ultérieure pour la première fois, utilisez Helm install et définissez les valeurs appropriées. Cela suppose que vous suivez les instructions d'installation.
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 l'opérateur est déjà installé et que vous devez définir l'émetteur du certificat, utilisez helm upgrade pour définir les valeurs appropriées :
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
Remplacez les éléments suivants :
OPERATOR_CERT_ISSUER_NAME: nom de l'émetteur cert-manager qui provisionne le certificat de l'opérateur, utilisé pour les connexions internes.OPERATOR_CERT_ISSUER_KIND: doit être défini surIssuerouClusterIssuer.
Configurer à l'aide d'Operator Lifecycle Manager
Si vous avez utilisé Operator Lifecycle Manager (OLM) pour installer l'opérateur AlloyDB Omni, vous pouvez modifier le champ spec.config.env de la ressource Subscription pour définir les variables d'environnement CERT_MANAGER_ISSUER_NAME et CERT_MANAGER_ISSUER_KIND du déploiement de l'opérateur.
spec:
config:
env:
- name: CERT_MANAGER_ISSUER_NAME
value: OPERATOR_CERT_ISSUER_NAME
- name: CERT_MANAGER_ISSUER_KIND
value: OPERATOR_CERT_ISSUER_KIND
Remplacez les éléments suivants :
OPERATOR_CERT_ISSUER_NAME: nom de l'émetteur cert-manager qui provisionne le certificat de l'opérateur, utilisé pour les connexions internes.OPERATOR_CERT_ISSUER_KIND: doit être défini surIssuerouClusterIssuer.
Certificats PgBouncer
Pour prendre en charge les émetteurs personnalisés, le contrôleur PgBouncer peut vérifier le champ spec.primarySpec.tls.dataPlaneCertIssuer DBCluster et l'utiliser pour provisionner le certificat PgBouncer. Cela garantit que PgBouncer utilise un certificat de la même autorité de certification que la base de données.
Valider
Pour vérifier que le déploiement de l'opérateur est sain et que les variables d'environnement CERT_MANAGER_ISSUER_NAME et CERT_MANAGER_ISSUER_KIND sont définies, exécutez la commande suivante :
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
Pour vérifier que le bon émetteur est utilisé, inspectez les objets Certificate comme suit :
kubectl get certificate -n NAMESPACE
Vérifiez le champ issuerRef dans le résultat de chaque certificat pour confirmer qu'il correspond à votre émetteur personnalisé.