표준 Linux 환경에 AlloyDB Omni를 설치하는 방법에 관한 안내는 AlloyDB Omni 설치를 참고하세요.
개요
Kubernetes 클러스터에 AlloyDB Omni를 배포하려면 Google에서 제공하는 Kubernetes API 확장 프로그램인 AlloyDB Omni Kubernetes 오퍼레이터를 설치합니다.
다른 Kubernetes 기반 배포와 마찬가지로 선언적 매니페스트 파일을 kubectl 유틸리티와 페어링하여 Kubernetes 기반 AlloyDB Omni 데이터베이스 클러스터를 구성하고 제어합니다. Kubernetes 클러스터가 아닌 개별 Linux 머신에 배포하기 위한 AlloyDB Omni CLI를 사용하지 않습니다.
기본 이미지
버전 1.5.0부터 AlloyDB Omni 오퍼레이터 Kubernetes 이미지는 Red Hat의 UBI (Universal Base Image) 9를 기반으로 빌드됩니다. 이 전환은 배포의 보안, 일관성, 규정 준수를 개선합니다.
SHA 다이제스트 이미지 참조
공급망 공격을 방지하고 OpenShift 인증 요구사항을 충족하기 위해 AlloyDB Omni 오퍼레이터는 모든 컨테이너 이미지 참조에 버전 태그 대신 SHA-256 다이제스트를 사용합니다.
자동 업그레이드: AlloyDB Omni 오퍼레이터는 내부 ImageCatalog를 사용하여 이러한 다이제스트를 관리하고 업그레이드 실패 시 안정적인 데이터 영역 롤백을 보장합니다.
사용 설정: OpenShift 인증 패키지의 경우 기본적으로 사용 설정되어 있지만 OLM 또는 Helm 패키지 사용자는
ENABLE_DIGEST_IMAGE_REFS환경 변수를true로 설정하여 OLM의 구독 구성 또는 Helm 차트의enableDigestImageRefs값을 사용하여 다이제스트 참조를 수동으로 사용 설정할 수 있습니다.
시작하기 전에
AlloyDB Omni 오퍼레이터를 사용하여 Kubernetes 클러스터에 AlloyDB Omni를 설치하기 전에 다음 요구사항을 충족해야 합니다.
다운로드 또는 설치 옵션 선택
일반 Kubernetes 클러스터에서 워크로드를 관리할 때는 Helm 또는 OLM을 사용할 수 있습니다. Helm은 Helm 차트를 사용하여 모든 Kubernetes 변형에서 오퍼레이터를 비롯한 모든 워크로드를 설치하는 범용 패키지 관리자입니다. OLM(OpenShift 플랫폼의 표준 기본 선택사항)은 특수 OLM 번들로 오퍼레이터 수명 주기를 관리합니다.
환경 및 도구에 따라 다음 배포 방법 중 하나를 선택합니다.
| 미디어 | 다운로드 위치 및 설치 가이드 | 배포 대상 |
|---|---|---|
| Helm 차트가 포함된 AlloyDB Omni 오퍼레이터 | Kubernetes에 AlloyDB Omni 설치 | 자체 Kubernetes 컨테이너 환경(예:
온프레미스, 퍼블릭 클라우드, GKE, Amazon EKS,
Azure AKS) 도움말: CD (지속적 배포) 도구가 Helm과 통합된 경우 이 옵션을 사용합니다. |
| OLM 번들이 포함된 AlloyDB Omni 오퍼레이터 | OperatorHub.io | 자체 Kubernetes 컨테이너 환경(예:
온프레미스, 퍼블릭 클라우드, Google Kubernetes Engine, Amazon EKS, Azure
AKS) OLM 번들을 사용하려면 오퍼레이터를 설치하기 전에 Kubernetes 클러스터에 OLM을 설치합니다. 자세한 내용은 olm.operatorframework.io를 참고하세요. 도움말: CD (지속적 배포) 도구가 이미 OLM을 사용하는 경우 이 옵션을 선택합니다. |
| OLM 번들이 포함된 OpenShift 오퍼레이터 | Openshift Container Platform 웹 콘솔 | OpenShift 환경 Kubernetes의 변형인 OpenShift는 OLM을 오퍼레이터 패키징 및 배포를 위한 표준 기본 제공 방법으로 사용합니다. |
인증 액세스 확인
다음에 액세스할 수 있는지 확인합니다.
다음 소프트웨어를 실행하는 Kubernetes 클러스터
- Kubernetes 버전 1.21 이상
- Helm을 사용하여 설치된
cert-manager서비스
cert-manager의 알려진 경합 상태로 인해 인증서 발급이 실패할 수 있습니다. 이 문제의 가능성을 줄이려면 권장 설정으로cert-manager컨트롤러를 구성합니다. 자세한 내용은 cert-manager에서 인증서 발급 실패 해결을 참고하세요.
하드웨어 및 소프트웨어 요구사항 충족
Kubernetes 클러스터의 각 노드에는 다음이 있어야 합니다.
- x86 또는 AMD64 CPU 2개 이상
- 8GB 이상의 RAM
- Linux 커널 버전 4.18 이상
- Control group(cgroup) v2가 사용 설정됨
AlloyDB Omni 오퍼레이터 설치
프로덕션 환경에 AlloyDB Omni를 배포하려면 프로덕션에서 AlloyDB Omni 실행을 참고하세요.
Helm, OLM (Operator Lifecycle Manager)을 포함한 다양한 방법을 사용하여 AlloyDB Omni 오퍼레이터를 설치할 수 있습니다.
Helm
AlloyDB Omni 오퍼레이터를 설치하려면 다음 단계를 따르세요.
- OCI 레지스트리에서 AlloyDB Omni 오퍼레이터를 설치합니다.
helm install alloydbomni-operator oci://gcr.io/alloydb-omni/alloydbomni-operator \ --version 1.9.0 \ --create-namespace \ --namespace alloydb-omni-system \ $(helm install --help | grep -q -- '--rollback-on-failure' && echo '--rollback-on-failure' || echo '--atomic') \ --timeout 5m
설치가 완료되면 다음과 같은 출력이 표시됩니다.
NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 1 TEST SUITE: None
OLM
Operator Lifecycle Manager를 사용하여 AlloyDB Omni 오퍼레이터를 설치하려면 다음 단계를 수행합니다.
AlloyDB Omni 오퍼레이터 페이지로 이동합니다.
설치 를 클릭합니다. 아직 설치하지 않은 경우 안내에 따라 OLM 오퍼레이터 및 OperatorHub.io 카탈로그만 설치합니다.
alloydb-omni-system네임스페이스가 아직 없는 경우 만듭니다.kubectl create ns alloydb-omni-system
오퍼레이터가 클러스터 범위에 있는지 확인하도록 OLM
OperatorGroup을 설정합니다.kubectl apply -f - <<EOF apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: operator-sdk-og namespace: alloydb-omni-system spec: upgradeStrategy: Default EOF
OLM 구독 리소스를 사용하여 오퍼레이터를 설치합니다.
kubectl apply -f - <<EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: my-alloydb-omni-operator namespace: alloydb-omni-system spec: channel: stable name: alloydb-omni-operator source: operatorhubio-catalog sourceNamespace: olm EOF
기본 인증서
ClusterIssuer를 설치합니다. 커스텀 인증서 발급기관을 사용하는 경우 이 단계는 선택사항입니다.kubectl apply -f - <<EOF apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: alloydbomni-selfsigned-cluster-issuer spec: selfSigned: {} EOF
OLM
OLM을 사용하여 Red Hat OpenShift 환경에 AlloyDB Omni 오퍼레이터를 설치하려면 다음 단계를 수행합니다.
- Red Hat OpenShift 웹 콘솔에 로그인합니다.
- 오프라인 또는 연결이 끊긴 사용자의 경우 SHA
다이제스트를 보존하는 도구(예:
oc image mirror)를 사용하여 필요한 이미지를 비공개 레지스트리에 수동으로 미러링해야 합니다. 공개gcr.io저장소에서 비공개 레지스트리로 이미지 가져오기를 리디렉션하도록ImageDigestMirrorSet을 구성해야 합니다. 이렇게 하면 AlloyDB Omni 오퍼레이터 가 변경 불가능한 SHA256 다이제스트를 사용하여 필요한 이미지를 가져올 수 있습니다. OpenShift 웹 콘솔에서 오퍼레이터 > OperatorHub 로 이동합니다. AlloyDB Omni 오퍼레이터 가 인증됨 및 커뮤니티 카탈로그에 나열됩니다.
AlloyDB Omni 오퍼레이터 창에서 설치 를 클릭합니다.
다음 명령어를 실행하여 기본 인증서
ClusterIssuer를 설치합니다. 커스텀 인증서 발급기관을 사용하는 경우 이 단계는 선택사항입니다.kubectl apply -f - <<EOF apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: alloydbomni-selfsigned-cluster-issuer spec: selfSigned: {} EOF
GDC connected 스토리지 구성
GDC connected에 AlloyDB Omni 오퍼레이터를 설치하려면 GDC 연결 클러스터가 기본 스토리지 클래스를 설정하지 않으므로 스토리지를 구성하기 위한 추가 단계를 따라야 합니다. AlloyDB Omni 데이터베이스 클러스터를 만들기 전에 기본 스토리지 클래스를 설정해야 합니다.
Symcloud Storage를 기본 스토리지 클래스로 설정하는 방법은 Symcloud Storage를 기본 스토리지 클래스로 설정을 참고하세요.
다른 모든 스토리지 클래스의 기본값 변경에 관한 자세한 내용은 기본 StorageClass 변경을 참고하세요.
데이터베이스 클러스터 만들기
AlloyDB Omni 데이터베이스 클러스터 에는 기본 서버, 모든 복제본, 모든 데이터를 비롯하여 AlloyDB Omni 서버를 실행하는 데 필요한 모든 스토리지 및 컴퓨팅 리소스가 포함되어 있습니다.
Kubernetes 클러스터에 AlloyDB Omni 오퍼레이터를 설치한 후 다음과 유사한 매니페스트를 적용하여 Kubernetes 클러스터에 AlloyDB Omni 데이터베이스 클러스터를 만들 수 있습니다.
apiVersion: v1
kind: Secret
metadata:
name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "18.4.0"
primarySpec:
adminUser:
passwordRef:
name: db-pw-DB_CLUSTER_NAME
resources:
cpu: CPU_COUNT
memory: MEMORY_SIZE
disks:
- name: DataDisk
size: DISK_SIZE
다음을 바꿉니다.
DB_CLUSTER_NAME: 이 데이터베이스 클러스터의 이름(예:my-db-cluster)ENCODED_PASSWORD: 기본postgres사용자 역할의 데이터베이스 로그인 비밀번호로, base64 문자열로 인코딩됩니다(예:ChangeMe123의 경우Q2hhbmdlTWUxMjM=).CPU_COUNT: 이 데이터베이스 클러스터의 각 데이터베이스 인스턴스에서 사용할 수 있는 CPU 수MEMORY_SIZE: 이 데이터베이스 클러스터의 데이터베이스 인스턴스당 메모리 양. CPU당 8GB로 설정하는 것이 좋습니다. 예를 들어 이 매니페스트에서 이전에cpu를2로 설정한 경우memory를16Gi로 설정하는 것이 좋습니다.DISK_SIZE: 데이터베이스 인스턴스당 디스크 크기(예:10Gi)
이 매니페스트를 적용하면 Kubernetes 클러스터에 지정된 메모리, CPU, 스토리지 구성이 포함된 AlloyDB Omni 데이터베이스 클러스터가 포함됩니다. 새
데이터베이스 클러스터와 테스트 연결을 설정하려면 사전 설치된 psql을 사용하여 연결을 참고하세요.
Kubernetes 매니페스트 및 적용 방법에 관한 자세한 내용은 리소스 관리를 참고하세요.
이미지 가져오기 보안 비밀
컨테이너 이미지에 비공개 레지스트리를 사용하는 경우 데이터베이스 클러스터의 이미지 가져오기 보안 비밀을 지정할 수 있습니다. AlloyDB Omni 오퍼레이터는 이미지
가져오기 보안 비밀을 데이터베이스 클러스터의 서비스 계정에 전파합니다. 이름은
DB_CLUSTER_NAME-sa입니다.
이미지 가져오기 보안 비밀을 구성하려면 데이터베이스 클러스터 사양에서 보안 비밀 이름을 제공합니다. 보안 비밀은 데이터베이스 클러스터와 동일한 네임스페이스에 있어야 합니다.
spec:
primarySpec:
serviceAccount:
imagePullSecrets:
- name: PULL_SECRET_NAME
PULL_SECRET_NAME을 이미지 가져오기 보안 비밀의 이름으로 바꿉니다.
데이터베이스 클러스터 확장
데이터베이스 클러스터의 컴퓨팅 리소스를 확장하려면 db-cluster.yaml 매니페스트에서 cpu 및 memory 값을 업데이트하고 변경사항을 적용합니다. 확장 프로세스는 일반 확장 작업을 선택하는지 아니면 다운타임이 적은 확장 작업을 선택하는지에 따라 다릅니다.
일반 확장
확장 사양을 업데이트하고 추가 구성 없이 매니페스트를 적용하면 데이터베이스 포드가 즉시 다시 시작됩니다. 이렇게 하면 새 리소스 할당이 적용되는 동안 기본 및 대기 인스턴스에서 짧은 다운타임이 발생합니다.
다운타임이 적은 확장
대기 인스턴스가 하나 이상 있는 고가용성 (HA) 클러스터의 경우 다운타임이 적은 유지보수 (LDTM) 준비 및 전환 전략을 사용하여 확장 중에 다운타임을 최소화할 수 있습니다. 이 전략은 먼저 대기 인스턴스에 확장 변경사항을 적용하고, 빠른 전환을 실행한 후, 원래 기본 인스턴스에 변경사항을 적용합니다. LDTM 전략을 사용하여 확장하거나 축소할 수 있습니다.
다운타임이 적은 확장을 사용 설정하고 모니터링하려면 다음 단계를 따르세요.
다운타임이 적은 확장을 사용 설정합니다. 데이터베이스 클러스터에
enableLDTM주석을 추가합니다.kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME dbcluster.dbadmin.goog/enableLDTM=true
DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다.업데이트된 확장 사양을 적용합니다. 매니페스트의
primarySpec.resources에서cpu및memory값을 업데이트하고 변경사항을 적용합니다.kubectl apply -f db-cluster.yaml
확장 프로세스를 모니터링합니다.
LDTMScalingInProgress상태 조건을 확인하여 작업을 모니터링합니다.kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "LDTMScalingInProgress")'
DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다.프로세스가 진행되는 동안은 상태가
true입니다. 확장이 완료되면 조건 상태가false로 변경됩니다.
제한사항
- LDTM 확장은 대기 인스턴스가 하나 이상 있는 HA 클러스터에서만 지원됩니다.
- 두 개의 LDTM 작업을 동시에 실행할 수는 없습니다. 예를 들어 LDTM을 사용하여 데이터베이스 클러스터를 확장하거나 마이너 버전 업그레이드를 실행할 수 있지만 동시에 둘 다 실행할 수는 없습니다.
- LDTM 확장 작업이 실패한 후에는 수동으로 롤백해야 합니다.
다음 단계
- 스토리지 및 PVC 크기를 계획합니다.
- AlloyDB Omni 실행 및 연결
- AlloyDB Omni 관리.
- Kubernetes에서 고가용성 관리.
- TDE 지원 클러스터를 만듭니다.