์ด ํ์ด์ง์์๋ AlloyDB Omni Kubernetes ์ฐ์ฐ์์ ๊ฐ์์ ์ด๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes ํด๋ฌ์คํฐ์ AlloyDB Omni๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ํ์ด์ง์์๋ Kubernetes ์์ ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ง์์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
ํ์ค Linux ํ๊ฒฝ์ AlloyDB Omni๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ์๋ด๋ AlloyDB Omni ์ค์น๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ฐ์
Kubernetes ํด๋ฌ์คํฐ์ AlloyDB Omni๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด Google์์ ์ ๊ณตํ๋ Kubernetes API ํ์ฅ ํ๋ก๊ทธ๋จ์ธ AlloyDB Omni ์ฐ์ฐ์๋ฅผ ์ค์นํฉ๋๋ค.
๋ค๋ฅธ Kubernetes ๊ธฐ๋ฐ ๋ฐฐํฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ์ธ์ ๋งค๋ํ์คํธ ํ์ผ์ kubectl
์ ํธ๋ฆฌํฐ์ ํ์ด๋งํ์ฌ Kubernetes ๊ธฐ๋ฐ AlloyDB Omni ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ ์ดํฉ๋๋ค. Kubernetes ํด๋ฌ์คํฐ๊ฐ ์๋ ๊ฐ๋ณ Linux ๋จธ์ ์ ๋ฐฐํฌํ๊ธฐ ์ํ AlloyDB Omni CLI๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
AlloyDB Omni ์ฐ์ฐ์ 1.1.0 ํธํ์ฑ
AlloyDB Omni ๋ฒ์ 15.5.3 ๋ฐ 15.5.4์ AlloyDB Omni ์ฐ์ฐ์ ๋ฒ์ 1.1.0์ ํธํ๋์ง ์์ต๋๋ค. ์ด๋ฌํ ๋ฒ์ ์ AlloyDB Omni๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ์ ์ฌํ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3
์์ํ๊ธฐ ์ ์
๋ค์์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ํ์ํฉ๋๋ค.
- ๋ค์ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ Kubernetes ํด๋ฌ์คํฐ
- Kubernetes ๋ฒ์ 1.21 ์ด์
-
cert-manager
์๋น์ค
-
kubectl
์ ํธ๋ฆฌํฐ -
helm
ํจํค์ง ๊ด๋ฆฌ์ - Google Cloud CLI gcloud CLI๋ฅผ ์ค์นํ ํ์๋
gcloud auth login
์ ์คํํ์ฌ Google Cloud ๊ณ์ ์ ์ธ์ฆํด์ผ ํฉ๋๋ค.
Kubernetes ํด๋ฌ์คํฐ์ ๊ฐ ๋ ธ๋์๋ ๋ค์์ด ์์ด์ผ ํฉ๋๋ค.
- x86 ๋๋ AMD64 CPU 2๊ฐ ์ด์
- 8GB ์ด์์ RAM
- Linux ์ปค๋ ๋ฒ์ 4.18 ์ด์
- Control group v2(cgroup v2) ์ฌ์ฉ ์ค์
AlloyDB Omni ์ฐ์ฐ์ ์ค์น
AlloyDB Omni ์ฐ์ฐ์๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฌ๋ฌ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.
export GCS_BUCKET=alloydb-omni-operator
export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
export OPERATOR_VERSION="${HELM_PATH%%/*}"
AlloyDB Omni ์ฐ์ฐ์๋ฅผ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
AlloyDB Omni ์ฐ์ฐ์๋ฅผ ์ค์นํฉ๋๋ค.
helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \ --create-namespace \ --namespace alloydb-omni-system \ --atomic \ --timeout 5m
์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค.
NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 1 TEST SUITE: None
๋ค์ด๋ก๋ํ AlloyDB Omni ์ฐ์ฐ์ ์ค์น ํ์ผ์ ์ญ์ ํ์ฌ ์ ๋ฆฌํฉ๋๋ค. ์ด ํ์ผ์ ์ด๋ฆ์
alloydbomni-operator-VERSION_NUMBER.tgz
์ด๋ฉฐ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ์ ์์ต๋๋ค.
GDC connected ์คํ ๋ฆฌ์ง ๊ตฌ์ฑ
GDC connected์ AlloyDB Omni ์ฐ์ฐ์๋ฅผ ์ค์นํ๋ ค๋ฉด GDC ์ฐ๊ฒฐ ํด๋ฌ์คํฐ๊ฐ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ํด๋์ค๋ฅผ ์ค์ ํ์ง ์์ผ๋ฏ๋ก ์คํ ๋ฆฌ์ง๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ์ถ๊ฐ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ์ผ ํฉ๋๋ค. AlloyDB Omni ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ํด๋์ค๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
Symcloud Storage๋ฅผ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ํด๋์ค๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์ Symcloud Storage๋ฅผ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง ํด๋์ค๋ก ์ค์ ์ ์ฐธ๊ณ ํ์ธ์.
๋ค๋ฅธ ๋ชจ๋ ์คํ ๋ฆฌ์ง ํด๋์ค์ ๊ธฐ๋ณธ๊ฐ ๋ณ๊ฒฝ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๊ธฐ๋ณธ StorageClass ๋ณ๊ฒฝ์ ์ฐธ๊ณ ํ์ธ์.
Red Hat OpenShift ์กฐ์ ๋จ๊ณ
Red Hat OpenShift 4.12 ์ด์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ AlloyDB Omni ์ฐ์ฐ์๋ฅผ ์ค์นํ ํ Kubernetes ํด๋ฌ์คํฐ์์ AlloyDB Omni ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ฃํด์ผ ํฉ๋๋ค. ๋๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ์ด๋ ๋ฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด
system:controller:statefulset-controller
ํด๋ฌ์คํฐ ์ญํ ์ ์์ ํ์ฌ AlloyDB Omni ์ธ์คํด์ค ์ต์ข ์ฒ๋ฆฌ์๋ฅผ ์ ๋ฐ์ดํธํ ๊ถํ์ ์ถ๊ฐํฉ๋๋ค.kubectl edit clusterrole system:controller:statefulset-controller
ํ ์คํธ ํธ์ง๊ธฐ์์ ํด๋ฌ์คํฐ ์ญํ ๋์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.
- apiGroups: - alloydbomni.internal.dbadmin.goog resources: - instances/finalizers verbs: - update - apiGroups: - alloydbomni.internal.dbadmin.goog resources: - backuprepositories/finalizers verbs: - update
Red Hat OpenShift์ OwnerReferencesPermissionEnforcement๊ฐ ์ฌ์ฉ ์ค์ ๋์ด ์์ผ๋ฏ๋ก StatefulSet ์ปจํธ๋กค๋ฌ๋ ํด๋ฌ์คํฐ ์ญํ ์ ์ถ๊ฐ๋ ์ธ์คํด์ค ์ต์ข ์ฒ๋ฆฌ์๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ ์ถ๊ฐ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์ธ์คํด์ค ์ต์ข ์ฒ๋ฆฌ์๋ฅผ ์ ๋ฐ์ดํธํ ๊ถํ์ด ์์ผ๋ฉด StatefulSet ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๊ตฌ ๋ณผ๋ฅจ ์ ์ฒญ(PVC)์ ๋ง๋ค์ง ๋ชปํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค StatefulSet ์ด๋ฒคํธ์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
Warning FailedCreate [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
fleet-manager-role
ํด๋ฌ์คํฐ ์ญํ ์ ์์ ํ์ฌ AlloyDB Omni DBInstance ์ต์ข ์ฒ๋ฆฌ์๋ฅผ ์ ๋ฐ์ดํธํ ๊ถํ์ ์ถ๊ฐํฉ๋๋ค.kubectl edit clusterrole fleet-manager-role
ํ ์คํธ ํธ์ง๊ธฐ์์ ํด๋ฌ์คํฐ ์ญํ ๋์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.
- apiGroups: - alloydbomni.dbadmin.goog resources: - dbinstances/finalizers verbs: - update
๋ค์๊ณผ ๊ฐ์ด Red Hat OpenShift ํ๋ก์ ํธ์
default
์๋น์ค ๊ณ์ ์anyuid
๋ณด์ ์ปจํ ์คํธ ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํฉ๋๋ค.oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default
๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๋ ๋ด์์ init ์ปจํ ์ด๋๋ ๋ฃจํธ๋ก ์คํ๋๊ณ ๋ค๋ฅธ ์ปจํ ์ด๋๋ ํน์ ์ฌ์ฉ์ ID๋ก ์คํ๋๋ฏ๋ก
default
์๋น์ค ๊ณ์ ์ดanyuid
๋ณด์ ์ปจํ ์คํธ ์ ์ฝ ์กฐ๊ฑด์ ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉํด์ผ ํฉ๋๋ค.anyuid
๋ฅผ ์ฌ์ฉํ ๊ถํ์ด ์์ผ๋ฉด StatefulSet ์ปจํธ๋กค๋ฌ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค PVC๋ฅผ ๋ง๋ค์ง ๋ชปํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค StatefulSet ์ด๋ฒคํธ์ ๋ค์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.Warning FailedCreate [...] unable to validate against any security context constraint
๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ๋ง๋ค๊ธฐ
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: "15.7.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 ๋งค๋ํ์คํธ ๋ฐ ์ ์ฉ ๋ฐฉ๋ฒ์ ๊ดํ ์์ธํ ๋ด์ฉ์ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.