CLI에서 Azure Arc 지원 PostgreSQL 서버 만들기

이 문서에서는 Azure Arc에서 PostgreSQL 서버를 만들고 연결하는 단계를 설명합니다.

필수 조건

이 문서의 작업을 진행하려면 다음 도구가 필요합니다. 모든 배포에는 다음 도구가 필요합니다.

  • Azure Data Studio

  • Azure Data Studio용 Azure Arc 확장

  • Azure CLI(az)

  • Azure CLI용 arcdata 확장

  • kubectl

    환경에 따라 추가 클라이언트 도구가 필요할 수 있습니다. 보다 포괄적인 목록은 클라이언트 도구를 참조하세요.

필요한 도구 외에도 작업을 완료하려면 Azure Arc 데이터 컨트롤러가 필요합니다.

참고 항목

미리 보기 기능으로, 이 문서에 제시된 기술에는 Microsoft Azure 미리 보기에 대한 보충 사용 약관이 적용됩니다.

최신 업데이트는 릴리스 정보에서 확인할 수 있습니다.

시작하기

아래 토픽에 이미 익숙하다면 이 단락을 건너뛸 수 있습니다. 만들기를 진행하기 전에 읽어야 할 중요한 토픽이 있습니다.

전체 환경을 직접 프로비전하지 않고 작업을 시도하려면 AKS(Azure Kubernetes Service), AWS Elastic Kubernetes Service(EKS), Google Cloud Kubernetes Engine(GKE) 또는 Azure VM에서 Azure Arc 빠른 시작을 사용하여 빠르게 시작하세요.

OpenShift 사용자만을 위한 임시 예비 단계

다음 단계로 이동하기 전에 이 단계를 구현합니다. PostgreSQL 서버를 기본 프로젝트가 아닌 프로젝트의 Red Hat OpenShift에 배포하려면, 클러스터에 대해 다음 명령을 실행하여 보안 제약 조건을 업데이트해야 합니다. 이 명령은 PostgreSQL 서버를 실행할 서비스 계정에 필요한 권한을 부여합니다. SCC(보안 컨텍스트 제약 조건) arc-data-scc는 Azure Arc 데이터 컨트롤러를 배포할 때 추가한 제약 조건입니다.

oc adm policy add-scc-to-user arc-data-scc -z <server-name> -n <namespace-name>

Server-name은 다음 단계에서 만드는 서버의 이름입니다.

OpenShift의 SCC에 대한 자세한 내용은 OpenShift 설명서를 참조하세요. 다음 단계를 진행합니다.

Azure Arc 지원 PostgreSQL 서버 만들기

Arc 데이터 컨트롤러에서 Azure Arc 지원 PostgreSQL 서버를 만들려면 az postgres server-arc create 명령을 사용하고 여러 매개 변수를 전달합니다.

만들 때 설정할 수 있는 모든 매개 변수에 대한 자세한 내용은 다음 명령의 출력을 검토합니다.

az postgres server-arc create --help

고려해야 할 주요 매개 변수는 다음과 같습니다.

  • 배포할 서버의 이름. --name 또는 -n 뒤에 길이가 11자를 초과하지 않는 이름을 지정합니다.

  • 서버에서 사용하려는 스토리지 클래스. 배포 후에는 이 설정을 변경할 수 없으므로 서버를 배포할 때 바로 스토리지 클래스를 설정하는 것이 중요합니다. 데이터, 로그 및 백업에 사용할 스토리지 클래스를 지정할 수 있습니다. 기본적으로 스토리지 클래스를 지정하지 않으면 데이터 컨트롤러의 스토리지 클래스가 사용됩니다.

    • 백업에 대한 스토리지 클래스를 설정하려면 매개 변수 --storage-class-backups 뒤에 스토리지 클래스 이름을 지정합니다. 이 매개 변수를 제외하면 자동화된 백업이 비활성화됩니다.
    • 데이터에 대한 스토리지 클래스를 설정하려면 매개 변수 --storage-class-data 뒤에 스토리지 클래스 이름을 지정합니다.
    • 로그에 대한 스토리지 클래스를 설정하려면 매개 변수 --storage-class-logs 뒤에 스토리지 클래스 이름을 지정합니다.

    Important

    배포 후 스토리지 클래스를 변경하려면 데이터를 추출하고, 서버를 삭제하고, 새 서버를 만들고, 데이터를 가져와야 합니다.

create 명령을 실행할 때 관리 사용자의 사용자 이름 및 암호를 입력하라는 메시지가 표시됩니다. create 명령을 실행하기 전에 AZDATA_USERNAMEAZDATA_PASSWORD 세션 환경 변수를 설정하여 대화형 프롬프트를 건너뛸 수 있습니다.

예제

데이터 컨트롤러와 동일한 스토리지 클래스를 사용하는 postgres01이라는 PostgreSQL 서버를 배포하려면 다음 명령을 실행합니다.

az postgres server-arc create -n postgres01 --k8s-namespace <namespace> --use-k8s

참고 항목

  • 동일한 터미널 세션에서 AZDATA_USERNAMEAZDATA_PASSWORD 세션 환경 변수를 사용하여 데이터 컨트롤러를 배포한 경우 AZDATA_PASSWORD의 값이 PostgreSQL 서버를 배포하는 데에도 사용됩니다. 다른 암호를 사용하려면 (1) AZDATA_USERNAMEAZDATA_PASSWORD의 값을 업데이트하거나 (2) AZDATA_USERNAMEAZDATA_PASSWORD 환경 변수를 삭제하거나 (3) 서버를 만들 때 대화형으로 암호를 입력하라는 메시지가 표시되도록 해당 값을 삭제합니다.
  • PostgreSQL 서버를 만들면 Azure에 리소스가 즉시 등록되지 않습니다. 리소스 인벤토리 또는 사용 데이터를 Azure에 업로드하는 프로세스의 일부로 리소스가 Azure에서 만들어지고 Azure Portal에서 리소스를 볼 수 있게 됩니다.

Arc 데이터 컨트롤러에 배포된 PostgreSQL 서버 나열

Arc 데이터 컨트롤러에 배포된 PostgreSQL 서버를 나열하려면 다음 명령을 실행합니다.

az postgres server-arc list --k8s-namespace <namespace> --use-k8s
  {
    "name": "postgres01",
    "state": "Ready"
  }

Azure Arc 지원 PostgreSQL 서버에 연결할 엔드포인트 가져오기

PostgreSQL 서버의 엔드포인트를 보려면 다음 명령을 실행합니다.

az postgres server-arc endpoint list -n <server name> --k8s-namespace <namespace> --use-k8s

예시:

{
  "instances": [
    {
      "endpoints": [
        {
          "description": "PostgreSQL Instance",
          "endpoint": "postgresql://postgres:<replace with password>@123.456.78.912:5432"
        },
        {
          "description": "Log Search Dashboard",
        },
        {
          "description": "Metrics Dashboard",
          "endpoint": "https://98.765.432.11:3000/d/postgres-metrics?var-Namespace=arc&var-Name=postgres01"
        }
      ],
      "engine": "PostgreSql",
      "name": "postgres01"
    }
  ],
  "namespace": "arc"
}

PostgreSQL 인스턴스 엔드포인트를 사용하여 선호하는 도구(Azure Data Studio, pgcli psql, pgAdmin 등)에서 PostgreSQL 서버에 연결할 수 있습니다.

이때 Azure Data Studio의 내부자 빌드를 사용합니다.

Azure 가상 머신 배포에 대한 특별 메모

Azure 가상 머신을 사용하는 경우 엔드포인트 IP 주소는 공용 IP 주소를 표시하지 않습니다. 공용 IP 주소를 찾으려면 다음 명령을 사용합니다.

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

그러면 공용 IP 주소와 포트를 결합하여 연결을 만들 수 있습니다.

NSG(네트워크 보안 게이트웨이)를 통해 PostgreSQL 서버의 포트를 노출해야 할 수도 있습니다. NSG를 통한 트래픽을 허용하려면 규칙을 설정합니다. 규칙을 설정하려면 NSG의 이름을 알아야 합니다. 아래 명령을 사용하여 NSG를 결정합니다.

az network nsg list -g azurearcvm-rg --query "[].{NSGName:name}" -o table

NSG의 이름을 보유한 경우 다음 명령을 사용하여 방화벽 규칙을 추가할 수 있습니다. 이 예제 값에서는 포트 30655에 대한 NSG 규칙을 만들고 모든 원본 IP 주소에서 연결할 수 있도록 허용합니다.

Warning

원본 IP 주소에서 연결을 허용하도록 규칙을 설정하지 않는 것이 좋습니다. 팀 또는 조직의 IP 주소를 포함하는 IP 주소 범위 또는 클라이언트 IP 주소와 관련된 -source-address-prefixes 값을 지정하면 더 잘 잠글 수 있습니다.

아래의 --destination-port-ranges 매개변수 값을 위의 az postgres server-arc list 명령에서 얻은 포트 번호로 바꿉니다.

az network nsg rule create -n db_port --destination-port-ranges 30655 --source-address-prefixes '*' --nsg-name azurearcvmNSG --priority 500 -g azurearcvm-rg --access Allow --description 'Allow port through for db access' --destination-address-prefixes '*' --direction Inbound --protocol Tcp --source-port-ranges '*'

Azure Data Studio를 사용하여 연결

Azure Data Studio를 열고 위의 외부 엔드포인트 IP 주소 및 포트 번호와 인스턴스를 만들 때 지정한 암호를 사용하여 인스턴스에 연결합니다. 연결 유형 드롭다운에서 PostgreSQL을 사용할 수 없는 경우 확장 탭에서 PostgreSQL를 검색하여 PostgreSQL 확장을 설치할 수 있습니다.

참고 항목

포트 번호를 입력하려면 연결 패널에서 [고급] 단추를 클릭해야 합니다.

Azure VM을 사용하는 경우 다음 명령을 통해 액세스할 수 있는 공용 IP 주소가 필요합니다.

az network public-ip list -g azurearcvm-rg --query "[].{PublicIP:ipAddress}" -o table

psql을 사용하여 연결

PostgreSQL 서버에 액세스하려면 위에서 검색한 PostgreSQL 서버의 외부 엔드포인트를 전달합니다.

이제 psql을 연결할 수 있습니다.

psql postgresql://postgres:<EnterYourPassword>@10.0.0.4:30655