인증서 관리

문서 버전을 선택합니다.

이 페이지에서는 커스텀 인증서 발급자를 사용하여 Kubernetes 기반 AlloyDB Omni 데이터베이스 클러스터에서 전송 계층 보안 (TLS) 인증서를 관리하는 방법을 설명합니다.

기본적으로 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_NAMECERT_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_NAMECERT_MANAGER_ISSUER_KIND가 설정되었는지 확인하려면 다음 명령어를 실행합니다.

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

올바른 발급자가 사용되었는지 확인하려면 다음과 같이 인증서 객체를 검사하세요.

kubectl get certificate -n NAMESPACE

각 인증서의 출력에서 issuerRef 필드를 확인하여 맞춤 발급자와 일치하는지 확인합니다.