Menu Close
4.4. 서비스 바인딩 시작하기
Service Binding Operator는 워크로드 및 백업 서비스의 데이터 플레인을 관리합니다. 이 가이드에서는 데이터베이스 인스턴스를 생성하고, 애플리케이션을 배포하며, Service Binding Operator를 사용하여 애플리케이션과 데이터베이스 서비스 간 바인딩 연결을 생성하는 데 도움이 되는 예제에 대한 지침을 제공합니다.
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. -
oc
CLI를 설치했습니다. -
PostgreSQL
psql
CLI를 설치했습니다. - OperatorHub에서 Service Binding Operator를 설치했습니다.
-
v5 업데이트 채널을 사용하여 OperatorHub에서 Kubernetes Operator용 Crunchy Postgres를 설치했습니다. 설치된 Operator는
my-postgresql
네임스페이스와 같은 적절한 네임스페이스에서 사용할 수 있습니다.
4.4.1. PostgreSQL 데이터베이스 인스턴스 생성
PostgreSQL 데이터베이스 인스턴스를 생성하려면 PostgresCluster
사용자 정의 리소스(CR)를 생성하고 데이터베이스를 구성해야 합니다.
프로세스
쉘에서 다음 명령을 실행하여
PostgresCluster
CR 및my-postgresql
네임스페이스를 생성합니다.$ oc apply -f - << EOD --- apiVersion: v1 kind: Namespace metadata: name: my-postgresql --- apiVersion: postgres-operator.crunchydata.com/v1beta1 kind: PostgresCluster metadata: name: hippo namespace: my-postgresql annotations: service.binding: 'path={.metadata.annotations.dbsecret},objectType=Secret' dbsecret: hippo-pguser-hippo proxy: hippo-pgbouncer type: postgresql service.binding/database: path={.metadata.name} service.binding/port: path={.spec.port} service.binding/username: path={.metadata.name} service.binding/host: path={.metadata.annotations.proxy} service.binding/type: path={.metadata.annotations.type} spec: image: registry.developers.crunchydata.com/crunchydata/crunchy-postgres-ha:centos8-13.4-0 postgresVersion: 13 instances: - name: instance1 dataVolumeClaimSpec: accessModes: - "ReadWriteOnce" resources: requests: storage: 1Gi backups: pgbackrest: image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:centos8-2.33-2 repos: - name: repo1 volume: volumeClaimSpec: accessModes: - "ReadWriteOnce" resources: requests: storage: 1Gi - name: repo2 volume: volumeClaimSpec: accessModes: - "ReadWriteOnce" resources: requests: storage: 1Gi proxy: pgBouncer: image: registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:centos8-1.15-2 EOD
이
PostgresCluster
CR에 추가된 주석은 서비스 바인딩 연결을 활성화하고 Operator 조정을 트리거하는 데 도움이 됩니다.출력에서 데이터베이스 인스턴스가 생성되었는지 확인합니다.
출력 예
namespace/my-postgresql configured postgrescluster.postgres-operator.crunchydata.com/hippo created
데이터베이스 인스턴스를 생성한 후
my-postgresql
네임스페이스의 모든 포드가 실행 중인지 확인합니다(몇 분이 걸립니다).$ oc get pods -n my-postgresql
출력에서 데이터베이스가 생성되었는지 확인합니다.
출력 예
NAME READY STATUS RESTARTS AGE hippo-backup-6th6--1-28849 0/1 Completed 0 1m hippo-instance1-sl4r-0 2/2 Running 0 2m hippo-pgbouncer-8454474bc7-lhcn9 2/2 Running 0 2m
새 데이터베이스는 이 단계에서 비어 있습니다. 스키마를 설정하고 샘플 애플리케이션과 상호 작용하도록 샘플 데이터 집합을 예상할 수 있습니다.
스키마 및 샘플 데이터를 사용하여 데이터베이스를 초기화합니다. 이 작업을 수행하려면 코드를 쉘에 복사하고 실행하여 다음 사용자 지정 쉘 스크립트를 사용합니다.
$ cat << EOD | bash #!/bin/bash export pgo_cluster_name=hippo export cluster_namespace=my-postgresql export pgo_cluster_username=hippo export PGPASSWORD=\$(oc -n "\${cluster_namespace}" get secrets \ "\${pgo_cluster_name}-pguser-\${pgo_cluster_username}" -o "jsonpath={.data['password']}" | base64 -d) nohup oc -n \${cluster_namespace} port-forward svc/hippo-pgbouncer 5432:5432 & sleep 5 curl -LO https://raw.githubusercontent.com/spring-petclinic/spring-petclinic-rest/master/src/main/resources/db/postgresql/initDB.sql psql -h localhost -U "\${pgo_cluster_username}" "\${pgo_cluster_name}" -f initDB.sql curl -LO https://raw.githubusercontent.com/spring-petclinic/spring-petclinic-rest/master/src/main/resources/db/postgresql/populateDB.sql psql -h localhost -U "\${pgo_cluster_username}" "\${pgo_cluster_name}" -f populateDB.sql EOD
터미널의 출력에 데이터베이스가 애플리케이션에 대해 구성되고 있음을 보여줍니다.
데이터베이스가 구성되면 샘플 애플리케이션을 배포하고 데이터베이스 서비스에 연결할 수 있습니다.