Standardmäßig verwendet der AlloyDB Omni Kubernetes-Operator cert-manager, um eine Reihe von TLS-Zertifikaten für jeden Datenbankcluster bereitzustellen. Neben dem Datenbankserverzertifikat erstellt der Operator auch Zertifikate für Komponenten der Steuerungsebene, um sicherzustellen, dass auch interne Verbindungen sicher sind. Standardmäßig wird jedes Zertifikat von einem vom Betreiber verwalteten Aussteller signiert.
Ab Version 1.6.0 des AlloyDB Omni-Operators können Sie den Operator so konfigurieren, dass er einen Aussteller Ihrer Wahl verwendet, wenn Sie möchten, dass alle Zertifikate, einschließlich der Zertifikate für Control-Plane-Komponenten, auf Ihre eigene vertrauenswürdige Root-Zertifizierungsstelle zurückgeführt werden. So können Sie alle Zertifikate an Ihre eigene Public-Key-Infrastruktur (PKI) anhängen, einschließlich der Zertifikate, die für die Funktionen der Steuerungsebene verwendet werden, ohne die Implementierungsdetails der einzelnen internen Einheiten offenzulegen.
Hinweise
Wenn Sie einen Zertifikataussteller konfigurieren möchten, müssen Sie zuerst einen cert-manager-Aussteller vom Typ ClusterIssuer oder Issuer erstellen, der der Zertifizierungsstelle zugeordnet ist, mit der Sie Ihre Zertifikate signieren möchten. Der AlloyDB Omni-Operator verweist beim Erstellen von Zertifikaten auf diesen Aussteller.
Benutzerdefinierte Aussteller konfigurieren
Sie können benutzerdefinierte Zertifikataussteller für den Datenbankcluster, den AlloyDB Omni-Operator und PgBouncer konfigurieren.
Datenbankclusterzertifikate
Für diese Funktion muss die controlPlaneAgentsVersion des entsprechenden Datenbankclusters im Manifest mindestens 1.6.0 sein.
Es gibt zwei Felder für die Spezifikation von Datenbankclustern, mit denen Sie Zertifikataussteller konfigurieren können:
spec.primarySpec.dataPlaneCertIssuer: Verweis auf den cert-manager-Aussteller, der Zertifikate für die Datenebene bereitstellt. Die Aussteller-Zertifizierungsstelle ist diejenige, der der Datenbankclient vertrauen kann, um die Datenbank während einer TLS-Verbindung zu überprüfen.spec.primarySpec.controlPlaneAgentsCertIssuer: Verweis auf den cert-manager-Aussteller, der Steuerungsebenenzertifikate bereitstellt. Diese Zertifikate werden für interne Verbindungen verwendet.
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
Ersetzen Sie Folgendes:
DATA_PLANE_ISSUER_NAME: Name des cert-manager-Ausstellers, der Zertifikate für die Datenebene bereitstellt, z. B. für den Datenbankserver.DATA_PLANE_ISSUER_KIND: muss entwederIssueroderClusterIssuersein.CONTROL_PLANE_ISSUER_NAME: Der Name des cert-manager-Ausstellers, der Steuerungsebenenzertifikate für interne Komponenten bereitstellt.CONTROL_PLANE_ISSUER_KIND: muss entwederIssueroderClusterIssuersein.
Betriebserlaubnisse
Die Schritte zum Konfigurieren eines cert-manager-Ausstellers für Operatorzertifikate hängen von der Methode ab, mit der AlloyDB Omni installiert wurde.
Mit Helm konfigurieren
Wenn Sie den AlloyDB Omni-Operator in Version 1.6.0 oder höher zum ersten Mal installieren, verwenden Sie die Helm-Installation und legen Sie die entsprechenden Werte fest. Dabei wird davon ausgegangen, dass Sie der Installationsanleitung folgen.
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
Wenn Sie den Operator bereits installiert haben und den Zertifikataussteller festlegen müssen, verwenden Sie helm upgrade, um die entsprechenden Werte festzulegen:
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
Ersetzen Sie Folgendes:
OPERATOR_CERT_ISSUER_NAME: Name des cert-manager-Ausstellers, der das Operatorzertifikat bereitstellt, das für interne Verbindungen verwendet wird.OPERATOR_CERT_ISSUER_KIND: muss entwederIssueroderClusterIssuersein.
Mit Operator Lifecycle Manager konfigurieren
Wenn Sie den AlloyDB Omni-Operator mit Operator Lifecycle Manager (OLM) installiert haben, können Sie das Feld spec.config.env der Abo-Ressource ändern, um die Umgebungsvariablen CERT_MANAGER_ISSUER_NAME und CERT_MANAGER_ISSUER_KIND der Operatorbereitstellung festzulegen.
spec:
config:
env:
- name: CERT_MANAGER_ISSUER_NAME
value: OPERATOR_CERT_ISSUER_NAME
- name: CERT_MANAGER_ISSUER_KIND
value: OPERATOR_CERT_ISSUER_KIND
Ersetzen Sie Folgendes:
OPERATOR_CERT_ISSUER_NAME: Name des cert-manager-Ausstellers, der das Operatorzertifikat bereitstellt, das für interne Verbindungen verwendet wird.OPERATOR_CERT_ISSUER_KIND: muss entwederIssueroderClusterIssuersein.
PgBouncer-Zertifikate
Zur Unterstützung benutzerdefinierter Aussteller kann der PgBouncer-Controller das Feld spec.primarySpec.tls.dataPlaneCertIssuer des DBCluster prüfen und damit das PgBouncer-Zertifikat bereitstellen. So wird sichergestellt, dass PgBouncer ein Zertifikat von derselben Zertifizierungsstelle wie die Datenbank verwendet.
Bestätigen
Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Operatorbereitstellung fehlerfrei ist und die Umgebungsvariablen CERT_MANAGER_ISSUER_NAME und CERT_MANAGER_ISSUER_KIND festgelegt sind:
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
So prüfen Sie, ob der richtige Aussteller verwendet wird:
kubectl get certificate -n NAMESPACE
Prüfen Sie das Feld issuerRef in der Ausgabe für jedes Zertifikat, um zu bestätigen, dass es mit Ihrem benutzerdefinierten Aussteller übereinstimmt.