기본적으로 AlloyDB Omni Kubernetes 연산자는 cert-manager를 사용하여 각 데이터베이스 클러스터에 TLS 인증서 집합을 프로비저닝합니다. 데이터베이스 서버 인증서 외에도 운영자는 내부 연결도 안전하게 보호하기 위해 컨트롤 플레인 구성요소의 인증서도 만듭니다. 기본적으로 각 인증서는 운영자가 관리하는 발급자에 의해 서명됩니다.
AlloyDB Omni 연산자 버전 1.6.0부터는 제어 영역 구성요소의 인증서를 비롯한 모든 인증서가 신뢰할 수 있는 자체 루트 CA로 다시 연결되도록 하려면 원하는 발급자를 사용하도록 연산자를 구성하면 됩니다. 이렇게 하면 각 내부 엔티티의 구현 세부정보를 노출하지 않고 컨트롤 플레인 기능에 사용되는 인증서를 포함한 모든 인증서를 자체 공개 키 인프라 (PKI)에 연결할 수 있습니다.
시작하기 전에
인증서 발급자를 구성하려면 먼저 인증서에 서명할 CA와 연결된 ClusterIssuer 또는 Issuer 유형의 cert-manager 발급자를 만들어야 합니다. AlloyDB Omni 연산자는 인증서를 만들 때 이 발급자를 참조합니다.
커스텀 발급자 구성
데이터베이스 클러스터, AlloyDB Omni 연산자, PgBouncer의 맞춤 인증서 발급자를 구성할 수 있습니다.
데이터베이스 클러스터 인증서
이 기능을 사용하려면 관련 데이터베이스 클러스터의 매니페스트에 있는 controlPlaneAgentsVersion가 1.6.0 이상이어야 합니다.
인증서 발급자를 구성하는 데이터베이스 클러스터 사양 필드는 두 가지가 있습니다.
spec.primarySpec.dataPlaneCertIssuer: 데이터 플레인 인증서를 프로비저닝하는 cert-manager 발급자에 대한 참조입니다. 발급자 CA는 TLS 연결 중에 데이터베이스를 확인하기 위해 데이터베이스 클라이언트가 신뢰할 수 있는 CA입니다.spec.primarySpec.controlPlaneAgentsCertIssuer: 컨트롤 플레인 인증서를 프로비저닝하는 cert-manager 발급자에 대한 참조입니다. 이러한 인증서는 내부 연결에 사용됩니다.
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
다음을 바꿉니다.
DATA_PLANE_ISSUER_NAME: 데이터 영역 인증서(예: 데이터베이스 서버용)를 프로비저닝하는 cert-manager 발급자의 이름입니다.DATA_PLANE_ISSUER_KIND:Issuer또는ClusterIssuer중 하나여야 합니다.CONTROL_PLANE_ISSUER_NAME: 내부 구성요소의 제어 영역 인증서를 프로비저닝하는 cert-manager 발급자의 이름입니다.CONTROL_PLANE_ISSUER_KIND:Issuer또는ClusterIssuer중 하나여야 합니다.
운영자 인증서
연산자 인증서용 cert-manager 발급자를 구성하는 단계는 AlloyDB Omni를 설치하는 데 사용된 방법에 따라 다릅니다.
Helm을 사용하여 구성
AlloyDB Omni 연산자 버전 1.6.0 이상을 처음 설치하는 경우 Helm install을 사용하고 적절한 값을 설정합니다. 이는 설치 안내를 따른다고 가정합니다.
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
이미 연산자가 설치되어 있고 인증서 발급자를 설정해야 하는 경우 helm upgrade를 사용하여 적절한 값을 설정합니다.
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
다음을 바꿉니다.
OPERATOR_CERT_ISSUER_NAME: 내부 연결에 사용되는 운영자 인증서를 프로비저닝하는 cert-manager 발급자의 이름입니다.OPERATOR_CERT_ISSUER_KIND:Issuer또는ClusterIssuer중 하나여야 합니다.
Operator Lifecycle Manager를 사용하여 구성
Operator Lifecycle Manager (OLM)를 사용하여 AlloyDB Omni 연산자를 설치한 경우 구독 리소스 spec.config.env 필드를 수정하여 연산자 배포의 CERT_MANAGER_ISSUER_NAME 및 CERT_MANAGER_ISSUER_KIND 환경 변수를 설정할 수 있습니다.
spec:
config:
env:
- name: CERT_MANAGER_ISSUER_NAME
value: OPERATOR_CERT_ISSUER_NAME
- name: CERT_MANAGER_ISSUER_KIND
value: OPERATOR_CERT_ISSUER_KIND
다음을 바꿉니다.
OPERATOR_CERT_ISSUER_NAME: 내부 연결에 사용되는 운영자 인증서를 프로비저닝하는 cert-manager 발급자의 이름입니다.OPERATOR_CERT_ISSUER_KIND:Issuer또는ClusterIssuer중 하나여야 합니다.
PgBouncer 인증서
맞춤 발급자를 지원하기 위해 PgBouncer 컨트롤러는 DBCluster spec.primarySpec.tls.dataPlaneCertIssuer 필드를 확인하고 이를 사용하여 PgBouncer 인증서를 프로비저닝할 수 있습니다. 이렇게 하면 PgBouncer가 데이터베이스와 동일한 CA의 인증서를 사용합니다.
확인
운영자 배포가 정상이고 환경 변수 CERT_MANAGER_ISSUER_NAME 및 CERT_MANAGER_ISSUER_KIND가 설정되었는지 확인하려면 다음 명령어를 실행합니다.
kubectl get deployments local-controller-manager -n alloydb-omni-system -o yaml
올바른 발급자가 사용되었는지 확인하려면 다음과 같이 인증서 객체를 검사하세요.
kubectl get certificate -n NAMESPACE
각 인증서의 출력에서 issuerRef 필드를 확인하여 맞춤 발급자와 일치하는지 확인합니다.