이 페이지에서는 자체 머신에 설치하거나 Kubernetes 클러스터에 배포한 후 AlloyDB Omni를 실행하고 연결하는 방법을 설명합니다.
이 페이지의 Kubernetes 관련 안내는 Kubernetes 운영에 대한 기본적인 지식이 있다고 가정합니다.
AlloyDB Omni 실행
AlloyDB Omni를 실행하는 데 사용하는 절차는 단일 서버의 컨테이너에서 AlloyDB Omni를 실행하는지 또는 Kubernetes 클러스터에서 실행하는지에 따라 다릅니다. 이 섹션에서는 이러한 배포 스타일 간에 안내를 나눕니다.
AlloyDB Omni 시작
단일 서버
중지된 AlloyDB Omni 컨테이너를 시작하려면 docker container start
명령어 또는 podman container start
명령어를 실행합니다.
Docker
docker container start CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.
Podman
podman container start CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.
Kubernetes
매니페스트 정의에서 isStopped
를 false
로 설정하여 중지된 데이터베이스 클러스터를 시작합니다.
명령줄에서 kubectl
를 사용하여 이 작업을 실행할 수 있습니다.
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
-p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge
DB_CLUSTER_NAME
을 이 데이터베이스 클러스터의 이름으로 바꿉니다(예: my-db-cluster
).
AlloyDB Omni 상태 확인
단일 서버
실행 중인 모든 컨테이너의 상태를 확인하려면 docker container ls
명령어 또는 podman container ls
명령어를 실행합니다.
Docker
docker container ls
Podman
podman container ls
AlloyDB Omni 컨테이너가 실행 중인 경우 이름이 출력 테이블의 NAMES
열에 표시됩니다. 해당 행에는 컨테이너의 상태가 요약되어 있습니다.
컨테이너 이름이 NAMES
열에 표시되지 않으면 AlloyDB Omni이 실행되고 있지 않은 것입니다.
Kubernetes
kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME
DB_CLUSTER_NAME
을 데이터베이스 클러스터 이름으로 바꿉니다.
AlloyDB Omni 중지
단일 서버
AlloyDB Omni 컨테이너를 중지하려면 docker container stop
명령어 또는 podman container stop
명령어를 실행합니다.
Docker
docker container stop CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.
Podman
podman container stop CONTAINER_NAME
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.
Kubernetes
데이터베이스 클러스터를 중지하려면 매니페스트 정의에서 isStopped
를 true
로 설정합니다.
명령줄에서 kubectl
를 사용하여 이 작업을 실행할 수 있습니다.
kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge
DB_CLUSTER_NAME
을 이 데이터베이스 클러스터의 이름으로 바꿉니다(예: my-db-cluster
).
단일 서버에서 실행되는 AlloyDB Omni에 연결
AlloyDB Omni 컨테이너에는 데이터베이스 서버로 대화형 SQL 셸 세션을 열 수 있는 자체 psql
사본이 포함되어 있습니다.
원하는 PostgreSQL 호환 소프트웨어를 사용하여 컨테이너 외부에서 AlloyDB Omni에 연결할 수도 있습니다.
Kubernetes 클러스터에서 실행되는 AlloyDB Omni 데이터베이스 클러스터에 연결하는 방법에 관한 자세한 내용은 Kubernetes에서 실행되는 AlloyDB Omni에 연결을 참고하세요.
컨테이너화된 psql
를 사용하여 연결
자체 컨테이너화된 psql
사본을 사용하여 AlloyDB Omni 데이터베이스 서버에 연결하려면 다음 명령어를 실행합니다.
Docker
docker exec -it CONTAINER_NAME psql -U postgres
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.
Podman
podman exec -it CONTAINER_NAME psql -U postgres
CONTAINER_NAME
을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.
이 명령어는 postgres
사용자 역할로 서버에 연결하고 postgres=#
명령 프롬프트를 표시합니다. 이제 psql
명령어와 SQL 쿼리를 실행할 수 있습니다.
psql
를 종료하려면 \q
명령어를 실행합니다.
자체 애플리케이션을 사용하여 연결
PostgreSQL에서 작동하는 모든 애플리케이션은 수정 없이 AlloyDB Omni에서도 작동할 수 있습니다.
AlloyDB Omni 데이터베이스 서버에 연결하려면 AlloyDB Omni를 시작할 때 docker run
또는 podman run
명령어에 --network=host
또는 -p 5432:5432
를 추가하여 AlloyDB Omni 도커 컨테이너의 네트워킹을 호스트 머신에 노출합니다.
맞춤 포트 번호를 선택하려면 AlloyDB Omni를 시작할 때 -p [HOST_PORT]:5432
를 사용하세요. 그런 다음 PostgreSQL 호환 클라이언트 또는 코드 라이브러리를 사용하여 포트 5432
또는 지정한 맞춤 포트 번호에 연결합니다.
데이터베이스 서버에 연결한 후 표준 PostgreSQL 통신 프로토콜을 사용하여 DML 및 SQL 쿼리를 사용하여 데이터베이스를 정의, 쿼리, 수정할 수 있습니다.
AlloyDB Omni는 자체 환경 내에서 실행되므로 AlloyDB Omni에 연결하는 방법을 제어할 수 있습니다. 여기에는 일반 PostgreSQL 서버에서와 마찬가지로 애플리케이션의 요구사항에 따라 이 서비스에 대한 네트워크 액세스를 허용하거나 제한하는 것이 포함됩니다.
Kubernetes에서 실행되는 AlloyDB Omni에 연결
AlloyDB Omni Kubernetes 연산자는 인증을 위해 인증서를 선택적으로 사용하여 동일한 Kubernetes 클러스터 내에서 데이터베이스 클러스터에 연결할 수 있도록 허용합니다.
사전 설치된 psql
를 사용하여 연결
데이터베이스를 실행하는 팟에 이미 설치된 psql
클라이언트를 사용하여 테스트 연결을 설정할 수 있습니다.
이렇게 하려면 다음 명령어를 실행합니다.
export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -c database -- psql -h localhost -U postgres
DB_CLUSTER_NAME
을 데이터베이스 클러스터 이름으로 바꿉니다. 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
명령어를 입력하면 데이터베이스 서버에서 비밀번호를 묻는 메시지가 표시됩니다.
데이터베이스 클러스터를 만들 때 base64로 인코딩된 버전을 Kubernetes 보안 비밀로 제공한 비밀번호를 입력합니다. 예를 들어 Q2hhbmdlTWUxMjM=
보안 비밀로 데이터베이스 클러스터를 만들었다면 여기에서 사용할 로그인 비밀번호는 ChangeMe123
입니다.
AlloyDB Omni Operator는 postgres
사용자 역할로 사용자를 서버에 연결하고 postgres=#
명령어 프롬프트를 표시합니다. 이제 psql
명령어와 SQL 쿼리를 실행할 수 있습니다.
psql
를 종료하려면 \q
명령어를 실행합니다.
동일한 클러스터의 별도 포드에서 연결
AlloyDB Omni 데이터베이스 클러스터를 실행하는 포드는 기본적으로 동일한 Kubernetes 클러스터 내에서의 연결을 허용합니다. TLS를 사용하여 데이터베이스 클러스터에 대한 모든 연결을 보호하는 것이 좋습니다.
자체 서버 TLS 인증서를 제공하려면 데이터베이스 클러스터를 구성할 때 인증서 비밀을 지정합니다. 인증서 비밀을 지정하지 않으면 AlloyDB Omni Kubernetes Operator가 자체 서명 인증 기관에서 서명한 인증서를 기반으로 TLS 인증서 비밀을 만듭니다. 두 경우 모두 데이터베이스 클라이언트 포드에 모든 연결에서 인증서 유효성 검사를 요구하도록 요구하여 TLS 보안을 보장할 수 있습니다.
TLS를 사용하여 보안 데이터베이스 연결을 설정하려면 다음 작업을 실행합니다.
클라이언트 연결을 만드는 Pod를 정의하는 매니페스트에서 TLS 인증서 비밀을 지정합니다. 다음 중 하나일 수 있습니다.
Kubernetes 클러스터에서 이미 만든 TLS 인증서 보안 비밀입니다. Kubernetes에서 TLS 인증서 보안 비밀을 사용하는 방법에 관한 자세한 내용은 TLS 보안 비밀을 참고하세요.
데이터베이스 클러스터 매니페스트의 일부로 TLS 보안 비밀을 지정하지 않으면 AlloyDB Omni Kubernetes Operator가 자동으로 생성하는 기본 인증서 보안 비밀로, 이름은
DB_CLUSTER_NAME-ca-cert
입니다.
클라이언트 포드가 데이터베이스 클러스터에 연결할 때마다 연결을 설정하기 전에 다음 환경 변수를 정의해야 합니다.
PGSSLMODE
을"verify-ca"
로 설정합니다.PGSSLROOTCERT
를 클라이언트 포드의 파일 시스템에 있는 관련ca.crt
파일의 절대 경로로 설정합니다.
다음 매니페스트 예는 psql
명령줄 클라이언트가 포함된 공식 PostgreSQL 이미지를 설치하는 pod를 구성하는 방법을 보여줍니다. 이 예에서는 데이터베이스 클러스터를 정의하는 매니페스트에 TLS 비밀 구성을 지정하지 않는다고 가정합니다. 따라서 AlloyDB Omni Kubernetes 운영자는 dbs-al-cert-DB_CLUSTER_NAME
라는 기본 TLS 보안 비밀을 사용합니다.
apiVersion: v1
kind: Pod
metadata:
name: postgres
spec:
containers:
- image: "docker.io/library/postgres:latest"
command:
- "sleep"
- "604800"
imagePullPolicy: IfNotPresent
name: db-client
volumeMounts:
- name: ca-cert
mountPath: "/DB_CLUSTER_NAME-ca-cert"
readOnly: true
volumes:
- name: ca-cert
secret:
secretName: dbs-al-cert-DB_CLUSTER_NAME
restartPolicy: Always
DB_CLUSTER_NAME
을 데이터베이스 클러스터 이름으로 바꿉니다. 이는 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
이제 다음 단계에 따라 포드를 사용하여 데이터베이스 클러스터에 안전하게 연결할 수 있습니다.
데이터베이스 클러스터의 내부 IP 주소를 확인합니다.
kubectl get dbclusters.alloydbomni.dbadmin.goog
다음과 유사한 결과가 출력됩니다.
NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE DB_CLUSTER_NAME IP_ADDRESS Ready DBClusterReady
IP_ADDRESS
를 기록하고 다음 단계에서 사용합니다.psql
를 사용하여 클라이언트 포드에서 클러스터에 연결하고 TLS 인증서 확인을 사용 설정하고 요구하는 환경 변수를 설정합니다.kubectl exec -it postgres -- bash
PGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgres
IP_ADDRESS
를 이전 단계에서 결정한 내부 IP 주소로 바꿉니다.