Gestisci certificati

Seleziona una versione della documentazione:

Questa pagina descrive come utilizzare gli emittenti di certificati personalizzati per gestire i certificati Transport Layer Security (TLS) nel cluster di database AlloyDB Omni basato su Kubernetes.

Per impostazione predefinita, l'operatore Kubernetes di AlloyDB Omni utilizza cert-manager per eseguire il provisioning di un insieme di certificati TLS per ogni cluster di database. Oltre al certificato del server di database, l'operatore crea anche certificati per i componenti del control plane per garantire che anche le connessioni interne siano sicure. Per impostazione predefinita, ogni certificato è firmato da un emittente gestito dall'operatore.

A partire dalla versione 1.6.0 dell'operatore AlloyDB Omni, se preferisci che tutti i certificati, inclusi quelli per i componenti del control plane, siano concatenati alla tua CA radice attendibile, puoi configurare l'operatore in modo che utilizzi un emittente a tua scelta. In questo modo puoi concatenare tutti i certificati alla tua infrastruttura a chiave pubblica (PKI), inclusi i certificati utilizzati per la funzionalità del control plane, senza esporre i dettagli di implementazione di ogni entità interna.

Prima di iniziare

Per configurare un emittente di certificati, devi prima creare un emittente cert-manager di tipo ClusterIssuer o Issuer associato alla CA con cui vuoi firmare i certificati. L'operatore AlloyDB Omni fa riferimento a questo emittente durante la creazione dei certificati.

Configurare emittenti personalizzati

Puoi configurare emittenti di certificati personalizzati per il cluster di database, l'operatore AlloyDB Omni e PgBouncer.

Certificati del cluster di database

Questa funzionalità richiede che controlPlaneAgentsVersion nel manifest del cluster di database pertinente sia 1.6.0 o versioni successive.

Esistono due campi delle specifiche del cluster di database per configurare gli emittenti di certificati:

  • spec.primarySpec.dataPlaneCertIssuer: riferimento all'emittente cert-manager che esegue il provisioning dei certificati del piano dati. La CA emittente è quella di cui il client di database può fidarsi per verificare il database durante una connessione TLS.

  • spec.primarySpec.controlPlaneAgentsCertIssuer: riferimento all'emittente cert-manager che esegue il provisioning dei certificati del control plane. Questi certificati vengono utilizzati per le connessioni interne.

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

Sostituisci quanto segue:

  • DATA_PLANE_ISSUER_NAME: il nome dell'emittente cert-manager che esegue il provisioning dei certificati del piano dati, ad esempio per il server di database.

  • DATA_PLANE_ISSUER_KIND: deve essere Issuer o ClusterIssuer.

  • CONTROL_PLANE_ISSUER_NAME: il nome dell'emittente cert-manager che esegue il provisioning dei certificati del control plane per i componenti interni.

  • CONTROL_PLANE_ISSUER_KIND: deve essere Issuer o ClusterIssuer.

Certificati operatore

I passaggi per configurare un emittente cert-manager per i certificati dell'operatore dipendono dal metodo utilizzato per installare AlloyDB Omni.

Configurare utilizzando Helm

Se installi l'operatore AlloyDB Omni versione 1.6.0 o successive per la prima volta, utilizza Helm install e imposta i valori appropriati. Ciò presuppone che tu segua le istruzioni di installazione.

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

Se hai già installato l'operatore e devi impostare l'emittente del certificato, utilizza helm upgrade per impostare i valori appropriati:

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

Sostituisci quanto segue:

  • OPERATOR_CERT_ISSUER_NAME: il nome dell'emittente cert-manager che esegue il provisioning del certificato dell'operatore, utilizzato per le connessioni interne.

  • OPERATOR_CERT_ISSUER_KIND: deve essere Issuer o ClusterIssuer.

Configurare utilizzando Operator Lifecycle Manager

Se hai utilizzato Operator Lifecycle Manager (OLM) per installare l'operatore AlloyDB Omni, puoi modificare il campo spec.config.env della risorsa Subscription per impostare le variabili di ambiente CERT_MANAGER_ISSUER_NAME e CERT_MANAGER_ISSUER_KIND del deployment dell'operatore.

spec:
  config:
    env:
    - name: CERT_MANAGER_ISSUER_NAME
      value: OPERATOR_CERT_ISSUER_NAME
    - name: CERT_MANAGER_ISSUER_KIND
      value: OPERATOR_CERT_ISSUER_KIND

Sostituisci quanto segue:

  • OPERATOR_CERT_ISSUER_NAME: il nome dell'emittente cert-manager che esegue il provisioning del certificato dell'operatore, utilizzato per le connessioni interne.

  • OPERATOR_CERT_ISSUER_KIND: deve essere Issuer o ClusterIssuer.

Certificati PgBouncer

Per supportare gli emittenti personalizzati, il controller PgBouncer può controllare il campo DBCluster spec.primarySpec.tls.dataPlaneCertIssuer e utilizzarlo per eseguire il provisioning del certificato PgBouncer. In questo modo, PgBouncer utilizza un certificato della stessa CA del database.

Verifica

Per verificare che il deployment dell'operatore sia integro e che le variabili di ambiente CERT_MANAGER_ISSUER_NAME e CERT_MANAGER_ISSUER_KIND siano impostate, esegui questo comando:

kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml

Per verificare che venga utilizzato l'emittente corretto, esamina gli oggetti certificato nel seguente modo:

kubectl get certificate -n NAMESPACE

Controlla il campo issuerRef nell'output di ogni certificato per verificare che corrisponda all'emittente personalizzata.