RPM Orchestrator를 사용하여 GCE VM에 AlloyDB Omni 고가용성 클러스터 배포

1. 소개

이 Codelab에서는 Google Compute Engine (GCE) 가상 머신 (VM)에 AlloyDB Omni 고가용성 (HA) 클러스터를 배포하는 방법을 보여줍니다. 이 Codelab을 마치면 관리 작업을 위한 컨트롤 노드와 함께 데이터베이스 노드 3개와 HAProxy 노드 2개로 구성된 HA 참조 아키텍처를 프로비저닝합니다.

기본 요건

  • Cloud 콘솔에서 Google Cloud 프로젝트 및 Cloud Shell에 액세스할 수 있습니다.
  • Google Cloud SDK (gcloud)가 설치되고 구성되어 있어야 합니다. gcloud 설치에 대한 자세한 내용은 gcloud-install을 참고하세요.
  • Terraform v1.9.8이 설치되어 있습니다.

학습할 내용

  • AlloyDB Omni용 GCE VM을 만들고 준비하는 방법
  • AlloyDB Omni RPM Orchestrator를 설치하고 실행하는 방법
  • HA 참조 아키텍처용 AlloyDB Omni RPM을 설치하고 구성하는 방법

필요한 항목

  • AlloyDB Omni RPM 및 RPM 조정자의 URL 링크를 가져옵니다. 이를 위해서는 alloydb omni 가입 양식을 작성해야 합니다. 링크는 저장소 URL 서버의 이메일로 전송됩니다. Codelab 중에 사용할 URL을 편리하게 사용할 수 있도록 다음 환경 변수를 초기화합니다.
    export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..."
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL=....
    export ETCD_REPOSITORY_URL="..."
    
  • AlloyDB Omni 배포 스택에 액세스할 수 있는 작동 중인 터미널 이 용도로 Cloud Shell을 사용할 수 있습니다.

2. 설정 및 요구사항

프로젝트 설정

Google Cloud 프로젝트 만들기

  1. Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
  2. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

Cloud Shell 시작

Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.

Google Cloud 콘솔에서 오른쪽 상단 툴바에 있는 Cloud Shell 아이콘을 클릭합니다.

Cloud Shell 활성화 아이콘

또는 G를 누른 다음 S를 누릅니다. Google Cloud 콘솔에 있거나 이 링크를 사용하는 경우 이 시퀀스를 통해 Cloud Shell이 활성화됩니다.

환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.

환경이 연결되었음을 보여주는 Google Cloud Shell 터미널

가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 Codelab의 모든 작업은 브라우저 내에서 수행할 수 있습니다. 아무것도 설치할 필요가 없습니다.

3. Google Cloud Compute Engine 가상 머신 만들기

Terraform 스크립트 준비

  1. 프로젝트 ID와 원하는 클러스터 이름의 환경 변수를 정의합니다. 이러한 내용은 Codelab 전반에 걸쳐 사용됩니다.
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
    참고: Google Cloud 프로젝트 ID는 6~30자(영문 기준)여야 합니다. 자세한 내용은 https://docs.cloud.google.com/resource-manager/docs/creating-managing-projects#before_you_begin을 참고하세요.
  2. Google Cloud 계정 사용자로 로그인했는지 확인합니다.
    gcloud auth login
    
  3. 배포용 작업 디렉터리를 만들고 저장소 소스에서 필요한 Terraform 구성 파일을 복사합니다.
    mkdir -p ~/alloydb-omni/$PROJECT/$CLUSTER
    cd ~/alloydb-omni/$PROJECT/$CLUSTER
    gcloud storage cp gs://alloydb-omni-install/rpm-orchestrator/gce/terraform/*.tf .
    
  4. 다음 콘텐츠에 따라 참조 아키텍처에 필요한 매개변수를 지정하는 terraform.tfvars 파일을 만듭니다.
    cat > terraform.tfvars <<EOF
    # Required instance counts for reference architecture
    db_instance_count      = 3
    haproxy_instance_count = 2
    control_instance_count = 1
    
    # Optional: Customize if needed with the below variables
    # os_image             = "rocky-linux-cloud/rocky-linux-9"
    # zone                 = "us-west4-c"
    # region_1             = "us-west4"
    # db_instance_type     = "c4-highmem-4"
    # db_disk_type         = "hyperdisk-balanced"
    # db_data_size         =  "50" # GB
    # data_dir             =  "/data"
    EOF
    

Terraform 스크립트 실행 및 검증

  1. 이제 VM을 프로비저닝할 수 있습니다.
    terraform init
    
  2. VM을 만들기 전에 VM 및 기타 리소스를 만드는 데 필요한 액세스 권한이 있는지 확인합니다. 요약하자면 다음 권한이 필요합니다.
    roles/compute.admin
    roles/iam.roleAdmin
    roles/compute.osAdminLogin
    roles/iam.serviceAccountCreator
    roles/iam.serviceAccountUser
    roles/artifactregistry.repoAdmin
    roles/storage.objectUser
    roles/resourcemanager.projectIamAdmin
    roles/serviceusage.serviceUsageAdmin
    
  3. 구성을 검증하고 구성을 적용하여 리소스를 프로비저닝합니다.
    terraform validate
    terraform apply --auto-approve
    
    참고: 배포 구성에서 예상하는 대로 Terraform v1.9.8을 사용하고 있는지 확인하세요.
  4. Terraform이 완료되면 gcloud를 사용하여 생성된 인스턴스를 나열하여 가상 머신이 성공적으로 생성되었는지 확인합니다.
    gcloud compute instances list --filter="name~$CLUSTER" --project=$PROJECT
    
    3개의 DB 노드, 2개의 HAProxy 노드, 제어 VM 및 해당 영역에 해당하는 인스턴스가 표시됩니다. 제어 노드의 영역을 기록합니다. 이 값은 이 Codelab의 뒷부분에서 필요합니다.
    export ZONE=$(gcloud compute instances list \
      --filter="name=$CLUSTER-control"          \
      --format="value(zone)" --project=$PROJECT)
    

4. 배포를 위해 VM 준비

제어 노드에 SSH 세션을 만들고 모든 VM (노드라고도 함)에 대한 SSH 액세스를 사용 설정하는 단계를 수행해야 합니다.

  1. 프로젝트 및 클러스터의 환경 변수가 정의되어 있는지 확인합니다.
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  2. SSH 키를 만들고 컨트롤 VM에 로그인할 때 동일한 키를 추가합니다.
    # Replace values with your specific GCP project, cluster and zone details
    ssh-keygen -t ed25519 -f $HOME/.ssh/google_compute_engine
    gcloud compute os-login ssh-keys add --key-file=$HOME/.ssh/google_compute_engine.pub --project=$PROJECT
    
  3. SSH 연결을 허용하고 VRRP 트래픽도 허용하는 방화벽 규칙을 만듭니다.
    gcloud compute config-ssh --project=$PROJECT
    gcloud compute firewall-rules create $CLUSTER-allow-ssh --network=$CLUSTER --project=$PROJECT --direction=INGRESS --action=allow --rules=tcp:22 --source-ranges="0.0.0.0/0"
    gcloud compute firewall-rules create $CLUSTER-allow-vrrp --network=$CLUSTER --project=$PROJECT --allow=112 --source-ranges="0.0.0.0/0"
    
  4. SSH를 통해 제어 VM에 연결합니다.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
  5. 사용자 이름과 동일한 이름으로 제어 노드에 Linux 그룹을 만듭니다.
    sudo groupadd $(id -un)
    sudo usermod -aG $(id -un) $(id -un)
    
  6. Terraform 설정은 클러스터 이름, 서비스 계정, 프로젝트 이름 등을 포함하는 제어 VM의 /tmp/ 디렉터리에 몇 가지 구성 스크립트를 만들고 스테이징합니다.제어 노드의 설정 스크립트를 사용하여 제어 노드에서 모든 클러스터 노드로 비밀번호 없는 SSH 액세스를 만듭니다.
    /tmp/setup-ssh-for-cluster.sh
    
    중요: service_account 사용자를 적어둡니다. 이 값은 이 Codelab의 뒷부분에서 SSH_USER로 사용됩니다.
  7. 이 Codelab에서는 모든 노드에서 SELinux를 사용 중지할 수 있습니다. Terraform 스크립트는 이 용도로 사용할 수 있는 '/tmp/run-all.sh'를 추가합니다.
    /tmp/run-all.sh sudo setenforce 0
    
  8. AlloyDB Omni에 가입하고 링크를 얻었다면 이제 해당 URL을 환경 변수에 추가할 차례입니다.
    cat >> ~/.codelab.env <<EOF
    export ORCHESTRATOR_ANSIBLE_COLLECTION_PATH="..."
    export ALLOYDB_OMNI_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL="..."
    export ALLOYDB_OMNI_COMMON_REPOSITORY_URL=....
    export ETCD_REPOSITORY_URL="..."
    EOF
    
    다음 예와 같이 terraform/variables.tf 파일의 cidr_range 입력 변수에서 환경의 가상 IP를 결정하여 다른 노드와 충돌하지 않도록 합니다.
    cat >> ~/.codelab.env <<EOF
    export VIRTUAL_IP="10.1.0.50"
    EOF
    

5. 모든 VM에 필수 소프트웨어 구성요소 설치

다음 단계는 VM에 필수 SW 구성요소를 설치하는 것입니다. 이는 제어 노드에서 조정할 수 있습니다. 다음 명령어는 모두 제어 노드에서 실행해야 합니다.

  1. 아직 제어 노드에 있지 않은 경우 SSH를 통해 제어 VM에 연결합니다.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    제어 VM ssh 프롬프트에 있으면 소스 환경 파일을 가져옵니다.
    source ~/.codelab.env
    
  2. 제어 노드에서 Ansible과 필요한 Python 라이브러리를 설치합니다.
    sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
    sudo dnf install -y ansible
    sudo dnf install -y python3-grpcio python3-protobuf python3-googleapis-common-protos python3-grpcio-status
    
  3. 그런 다음 RPM Orchestrator Ansible 컬렉션 tar 파일을 다운로드하고 설치합니다.
    gcloud storage cp "gs://${ORCHESTRATOR_ANSIBLE_COLLECTION_PATH#https://storage.googleapis.com/}google-alloydbomni_orchestrator-*.tar.gz" .
    ansible-galaxy collection install google-alloydbomni_orchestrator-0.1.0-6.tar.gz
    ansible-galaxy collection list | grep alloydbomni_orchestrator
    
    참고: ORCHESTRATOR_ANSIBLE_COLLECTION_PATH 변수 끝에 '/'가 있어야 합니다.
  4. 오케스트레이터는 Ansible 인벤토리 형식의 배포 사양 파일을 사용하여 클러스터 토폴로지를 파악합니다. 제어 노드에 노드 세부정보가 포함된 deployment_spec.yaml이라는 파일을 만듭니다.
    cat > deployment_spec.yaml <<EOF
    alloydbomni:
      vars:
        cluster_manager:
          name: "$CLUSTER"
        etcd:
          setup: true
          config_forcewrite: true
        alloydbomni:
          major_version: "18"
          repo_url: $ALLOYDB_OMNI_REPOSITORY_URL
        alloydbomni_monitor:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
        alloydbomni_cluster_manager:
          repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL
        alloydbomni_node_manager:
          repo_url: $ALLOYDB_OMNI_ORCHESTRATOR_REPOSITORY_URL
        pgbouncer:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
        pgbackrest:
          repo_url: $ALLOYDB_OMNI_COMMON_REPOSITORY_URL
    
      children:
        primary_instance_nodes:
          hosts:
            $CLUSTER-db1:
            $CLUSTER-db2:
            $CLUSTER-db3:
        load_balancer_nodes:
          hosts:
            $CLUSTER-haproxy1:
            $CLUSTER-haproxy2:
    EOF
    
    참고: 생성된 파일을 검토하여 유효한 값을 참조하는지 확인합니다.
  5. 오케스트레이터 컬렉션의 설치 역할을 참조하는 install.yaml이라는 플레이북을 만듭니다.
    cat > install.yaml <<EOF
    - name: Install AlloyDB Omni cluster components
      hosts: all
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
        - role: google.alloydbomni_orchestrator.install
    EOF
    
    참고: 생성된 파일을 검토하여 유효한 값을 참조하는지 확인합니다.
  6. 인벤토리 파일을 사용하여 플레이북을 실행하여 지정된 모든 노드에 RPM을 다운로드하고 설치합니다.
    ansible-playbook -i deployment_spec.yaml install.yaml
    

6. AlloyDB Omni 클러스터 부트스트랩

이 단계에서는 모든 노드에 필요한 구성요소를 모두 설치했습니다. AlloyDB Omni 클러스터를 부트스트랩할 준비가 되었습니다.

  1. 아직 제어 노드에 있지 않은 경우 SSH를 통해 제어 VM에 연결합니다.
    gcloud compute ssh "$CLUSTER-control" --zone=$ZONE --project=$PROJECT
    
    제어 VM ssh 프롬프트에 있으면 소스 환경 파일을 가져옵니다.
    source ~/.codelab.env
    
  2. 비밀번호의 해시를 생성하고 이를 기록합니다.
    encoded_password=$(echo -n "your unique password" | base64)
    
  3. 클러스터를 만들려면 AlloyDB Omni가 클러스터를 구성하는 방법을 알아야 합니다. DB 클러스터 사양의 파일 이름 dbcluster.yaml을 만듭니다.
    cat > dbcluster.yaml <<EOF
    Secret:
      metadata:
        name: db-pw-$CLUSTER
      spec:
        type: Opaque
        data:
          $CLUSTER: $encoded_password
    ---
    DBCluster:
      metadata:
        name: $CLUSTER
      spec:
        databaseVersion: 18.1.0
        mode: ""
        availability:
          numberOfStandbys: 2
          enableAutoFailover: true
          enableAutoHeal: true
          autoFailoverTriggerThreshold: 2
          autoHealTriggerThreshold: 2
          healthcheckPeriodSeconds: 5
          replayReplicationSlotsOnStandbys: false
        primarySpec:
          adminUser:
            passwordRef:
              name: db-pw-$CLUSTER
          resources:
            cpu: 4
            memory: 32Gi
            disks:
            - name: DataDisk
              path: $PGDATA
          dbLoadBalancerOptions:
            gcp:
              loadBalancerIP: "$VIRTUAL_IP"
              loadBalancerType: "internal"
              loadBalancerInterface: "eth0"
    EOF
    
  4. AlloyDB Omni 클러스터를 만들기 위한 부트스트랩 Ansible 역할을 참조하는 bootstrap.yaml이라는 플레이북을 만듭니다.
    cat > bootstrap.yaml <<EOF
    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    EOF
    
  5. 플레이북을 실행하여 클러스터 만들기
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=dbcluster.yaml
    

7. (선택사항) PgBouncer 연결 풀러 구성

AlloyDB Omni는 PgBouncer를 사용한 경량 연결 풀링을 지원합니다. 클러스터가 프로비저닝된 직후 PgBouncer를 구성하고 부트스트랩할 수 있습니다.

  1. 연결 풀러를 데이터베이스 클러스터와 연결하는 pgbouncer.yaml이라는 리소스 사양 파일을 만듭니다.
    cat > pgbouncer.yaml <<EOF
    PgBouncer:
      metadata:
        name: pgbouncer-pooler
      spec:
        dbclusterRef: $CLUSTER
        allowSuperUserAccess: true
        accessMode: "rw"
        port: 6432
    EOF
    
  2. 앞서 만든 동일한 bootstrap.yaml 플레이북을 사용하여 PgBouncer 풀러를 부트스트랩하고 새 사양 파일을 전달합니다.
    ansible-playbook bootstrap.yaml -i deployment_spec.yaml -e resource_spec=pgbouncer.yaml
    

8. AlloyDB Omni 클러스터 확인

클러스터가 올바르게 작동하고 부하 분산기를 사용하여 액세스할 수 있는지 확인하려면 제어 노드에서 표준 PostgreSQL 클라이언트를 사용하여 클러스터에 연결하면 됩니다.

  1. 제어 노드에 PostgreSQL 18 클라이언트 저장소 및 패키지를 설치합니다.
    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    sudo dnf install -y postgresql18
    
  2. 이전에 예약한 가상 IP를 사용하여 클러스터에 연결합니다. dbcluster.yaml에 인코딩한 비밀번호를 입력하라는 메시지가 표시됩니다.
    /usr/pgsql-18/bin/psql -h $VIRTUAL_IP -U postgres -W
    
  3. 연결되면 기본 SQL 쿼리를 실행하여 클러스터 상태를 확인할 수 있습니다(예: 데이터베이스 버전 확인).
    postgres=# SELECT version();
    
    AlloyDB Omni로 실행되는 PostgreSQL 18을 나타내는 출력이 표시됩니다. \q를 입력하여 프롬프트를 종료합니다.

9. (선택사항) pgBackRest를 사용하여 데이터 백업

AlloyDB Omni는 pgBackRest와 통합되어 Cloud Storage에 직접 백업을 관리합니다. 백업 계획을 구성하고 Terraform 설정으로 만든 GCS 버킷에 주문형 백업을 트리거할 수 있습니다.

  1. 프로비저닝된 GCS 버킷을 가리키는 backup_plan.yaml이라는 백업 계획 사양 파일을 만듭니다.
    cat > backup_plan.yaml <<EOF
    BackupPlan:
      metadata:
        name: pgb-plan
      spec:
        dbclusterRef: $CLUSTER
        backupLocation:
          type: GCS
          gcsOptions:
            bucket: $CLUSTER-gcs-backups
            key: /backups
    EOF
    
  2. 백업 관리 역할을 참조하는 backup.yaml이라는 Ansible 플레이북을 만듭니다.
    cat > backup.yaml <<EOF
    - name: Manage AlloyDB Omni Backups
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
        - role: google.alloydbomni_orchestrator.backup
    EOF
    
  3. backup.yaml 플레이북을 사용하여 백업 계획을 적용합니다.
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=backup_plan.yaml
    
  4. 계획이 성공적으로 설정되면 create_backup.yaml이라는 주문형 백업 리소스 파일을 만듭니다.
    cat > create_backup.yaml <<EOF
    Backup:
      metadata:
        name: on-demand-backup
      spec:
        backupPlanRef: pgb-plan
        dbclusterRef: $CLUSTER
    EOF
    
  5. 플레이북을 실행하여 백업을 시작합니다.
    ansible-playbook backup.yaml -i deployment_spec.yaml -e resource_spec=create_backup.yaml
    
  6. 백업 상태를 확인하려면 status.yaml 플레이북을 만드세요.
- name: Fetch AlloyDB Omni Resource Status
hosts: localhost
vars:
  ansible_become: true
  ansible_user: $SSH_USER
  ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
roles:
  - role: google.alloydbomni_orchestrator.status
EOF
  1. 플레이북을 실행하여 모든 백업을 나열합니다.
ansible-playbook status.yaml -i deployment_spec.yaml -e resource_type=Backup
  1. 또는 이전에 생성된 특정 백업에 관한 자세한 정보를 가져오려면 -e resource_name=on-demand-backup를 전달하세요.
ansible-playbook status.yaml -i deployment_spec.yaml \
  -e resource_type=Backup \
  -e resource_name=on-demand-backup

10. 리소스 정리

배포가 완료되면 프로비저닝된 리소스를 삭제하여 요금이 청구되지 않도록 할 수 있습니다.

  1. teardown.yaml이라는 플레이북을 만듭니다.
    cat > teardown.yaml <<EOF
    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: $SSH_USER
        ansible_ssh_private_key_file: $HOME/ssh-key-cluster-sa
      roles:
      - role: google.alloydbomni_orchestrator.delete
    EOF
    
  2. ansible-playbook을 사용하여 플레이북을 실행합니다. 백업을 구성한 경우 먼저 Backup 및 BackupPlan 리소스를 삭제합니다.
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=Backup" -e "resource_name=on-demand-backup"
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=BackupPlan" -e "resource_name=pgb-plan"
    
    PgBouncer를 구성한 경우 다음으로 연결 풀러 리소스를 삭제합니다.
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=PgBouncer" -e "resource_name=pgbouncer-pooler"
    
    그런 다음 resource_type을 DBCluster로 지정하고 데이터베이스 클러스터 자체를 삭제합니다.
    ansible-playbook teardown.yaml -i deployment_spec.yaml  -e "resource_type=DBCluster" -e "resource_name=$CLUSTER"
    
  3. 클러스터가 삭제되면 컨트롤 노드에서 로그아웃하고 터미널로 다시 전환하여 Terraform 작업 디렉터리로 이동합니다.
    참고: Cloud Shell에 새로 로그인한 경우 다음을 설정해야 합니다.
    export PROJECT="your-project-id"
    export CLUSTER="your-cluster-name"
    
  4. VRRP 방화벽 규칙을 삭제하고 Terraform에서 관리하는 리소스를 폐기합니다.
    gcloud compute firewall-rules delete -q "$CLUSTER-allow-vrrp" --project="$PROJECT"
    gcloud compute firewall-rules delete -q "$CLUSTER-allow-ssh" --project="$PROJECT"
    terraform destroy
    
  5. 메시지가 표시되면 폐기를 확인합니다. 지속되는 네트워크 리소스 또는 경로로 인해 완전히 해체되지 않는 경우가 있으므로 다음 안전한 정리 명령어를 실행하여 연결된 모든 방화벽 규칙, NAT 게이트웨이, 라우터, 경로, 서브넷, 네트워크가 완전히 삭제되도록 합니다. REGION을 특정 배포 리전(예: 'us-central1')으로 바꿉니다.
    # Delete any remaining firewall rules associated with the cluster
    gcloud compute firewall-rules list --project=$PROJECT 2> /dev/null | grep ^$CLUSTER- | cut -f1 -d' ' | \
      while read rule; do gcloud compute firewall-rules delete --project=$PROJECT --quiet $rule; done
    
    # Delete the Cloud NAT gateway and router if they still exist
    gcloud compute routers nats describe $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute routers nats delete $CLUSTER-nat-gw --router=$CLUSTER-router --region=REGION --project=$PROJECT --quiet
    
    gcloud compute routers describe $CLUSTER-router --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute routers delete $CLUSTER-router --region=REGION --project=$PROJECT --quiet
    
    # Delete any remaining custom routes
    gcloud compute routes list --project=$PROJECT --filter="network:$CLUSTER" --format="value(name)" 2>/dev/null | \
      while read route; do gcloud compute routes delete --project=$PROJECT --quiet $route 2>/dev/null || true; done
    
    # Delete the subnet and network if they still exist
    gcloud compute networks subnets describe $CLUSTER --region=REGION --project=$PROJECT 2>/dev/null \
      && gcloud compute networks subnets delete $CLUSTER --region=REGION --project=$PROJECT --quiet
    
    gcloud compute networks describe $CLUSTER --project $PROJECT 2> /dev/null \
      && gcloud compute networks delete $CLUSTER --project $PROJECT --quiet
    

11. 축하합니다

축하합니다. Codelab을 완료했습니다.

학습한 내용

  • AlloyDB Omni용 GCE VM을 만들고 준비하는 방법
  • AlloyDB Omni RPM Orchestrator를 설치하고 실행하는 방법
  • HA 참조 아키텍처용 AlloyDB Omni RPM을 설치하고 구성하는 방법

AlloyDB Omni에 관한 자세한 내용은 문서를 참고하세요.

12. 설문조사

본 튜토리얼을 어떻게 사용하실 계획인가요?

읽기만 할 계획입니다. 읽은 다음 연습 활동을 완료할 계획입니다.