이 개요에서는 Kubernetes 클러스터에 배포된 AlloyDB Omni 데이터베이스의 중요한 연결 및 액세스 구성을 설명하고 유연하고 안전한 연결을 설정하는 방법을 자세히 설명합니다. 연결에는 다음 영역이 포함됩니다.
- 네트워킹: Kubernetes
ClusterIP서비스를 사용한 내부 액세스 또는LoadBalancer을 사용한 외부 액세스를 위해 AlloyDB Omni 데이터베이스 클러스터를 구성하는 방법을 알아봅니다. 여기에는 소스 클래스 없는 도메인 간 라우팅 (CIDR) 범위를 사용하여 외부 트래픽을 제한하는 방법이 포함됩니다. - 연결 풀링:
PgBouncer맞춤 리소스를 사용하여 효율적인 연결 관리와 데이터베이스 인스턴스의 부하 감소를 위한 연결 풀링을 구현합니다. - 인증 및 승인: 비밀번호 기반 및 Active Directory/Kerberos 통합과 같은 지원되는 방법을 사용하여 안전하게 액세스하고 Kubernetes 네트워크 정책 및 PostgreSQL 역할을 통해 세부적인 제어를 구현합니다.
네트워킹
DBCluster 커스텀 리소스에서 관리하는 AlloyDB Omni 데이터베이스 클러스터를 내부 또는 외부 액세스용으로 구성할 수 있습니다.
DBCluster 네트워킹 옵션에 관한 자세한 내용은 DBCluster CRD 참조를 참고하세요.
내부 연결
기본적으로 AlloyDB Omni 인스턴스는 Kubernetes ClusterIP 서비스를 사용하여 노출됩니다. 이렇게 하면 동일한 Kubernetes 클러스터에서 실행되는 다른 애플리케이션만 인스턴스에 액세스할 수 있습니다. 기본 인스턴스의 엔드포인트는 DBCluster 상태에서 확인할 수 있습니다.
외부 연결
Kubernetes 클러스터 외부에서 연결을 허용하려면 DBCluster 사양을 업데이트하세요.
- 외부 트래픽 사용 설정: 일반적으로
LoadBalancer서비스를 프로비저닝하는spec.allowExternalIncomingTraffic: true를 설정합니다. - 세분화된 제어 구현:
spec.primarySpec.dbLoadBalancerOptions사용 예를 들어 Google Cloud에서gcp.loadBalancerType: "External"를 설정하여 공개 인터넷에서 액세스할 수 있는 IP 주소를 가져옵니다.
액세스 제한
외부 연결을 보호하려면 spec.primarySpec.sourceCidrRanges를 사용하여 허용된 CIDR 범위 목록을 정의하세요. 시스템은 이러한 범위 밖의 IP 주소에서 시작되는 연결을 차단합니다.
PgBouncer를 사용한 연결 풀링
연결을 효율적으로 관리하고 인스턴스 부하를 줄이려면 PgBouncer를 사용하세요. AlloyDB Omni 연산자는 이 작업을 간소화하기 위해 PgBouncer 커스텀 리소스 (CR)를 제공합니다.
PgBouncer 구성에 관한 자세한 내용은 PgBouncer CRD 참조를 참고하세요.
배포 및 구성
PgBouncer 리소스를 만들고 spec.dbclusterRef에서 데이터베이스 클러스터를 참조합니다. spec.parameters의 주요 매개변수는 다음과 같습니다.
pool_mode: 연결이 재사용되는 시점을 결정합니다 (session,transaction또는statement).default_pool_size: 사용자 및 데이터베이스당 서버 연결 수입니다.max_client_conn: 허용되는 최대 클라이언트 연결 수입니다.max_db_connections: AlloyDB Omni 인스턴스에 열린 최대 연결 수입니다.
PgBouncer 노출
spec.serviceOptions.type을 사용하여 공개 상태를 제어합니다.
ClusterIP: 내부 클러스터 액세스만 허용됩니다.LoadBalancer: 외부 액세스 CIDR 블록을 사용하여spec.serviceOptions.loadBalancerSourceRanges로 이를 제한할 수 있습니다.
인증 및 승인
AlloyDB Omni는 ID를 확인하고 액세스를 제어하는 여러 방법을 지원합니다.
인증 방식
- 비밀번호 기반: 표준 PostgreSQL 사용자 이름 및 비밀번호 인증입니다. 관리자 비밀번호는 일반적으로 전체 DBCluster 샘플에 표시된 대로 Kubernetes 보안 비밀을 사용하여 제공됩니다.
Active Directory 및 Kerberos:
UserDefinedAuthenticationCR을 사용하여 관리됩니다. 이를 통해 다음을 사용하여 GSSAPI 및 LDAP 그룹 동기화를 지원합니다.spec.keytabSecretRef: Kerberos keytab의 경우spec.ldapConfiguration: 그룹 매핑 및 LDAP 설정spec.pgHbaEntries:pg_hba.conf규칙을 구성합니다(예:gss또는ldap).
자세한 내용은 UserDefinedAuthentication CRD 참조를 참고하세요.
인증서 기반 (계획됨): 비밀번호 없는 TLS 인증서 인증은 향후 출시에서 지원될 예정입니다.
승인 및 액세스 제어
- Kubernetes 네트워크 정책: 애플리케이션과 AlloyDB Omni 또는
PgBouncer포드 간 트래픽을 보호하기 위한 포드 수준 규칙을 정의합니다. - 소스 CIDR 범위:
LoadBalancer수준에서 트래픽을 제한합니다. - PostgreSQL 역할: 사용자가 인증된 후 표준 데이터베이스 역할과 권한을 사용하여 사용자 권한을 관리합니다.
다음 단계
- 모든 구성 옵션은 DBCluster CRD 참조를 검토하세요.
- PgBouncer CRD 참조를 사용하여 연결 풀링을 배포하는 방법을 알아보세요.
- UserDefinedAuthentication CRD 참조에서 Active Directory 통합을 이해합니다.
- 전체 DBCluster 샘플에서 전체 예시를 확인하세요.
- 네트워크 정책에 관한 Kubernetes 문서를 참고하세요.