Kubernetes 도구를 사용하여 PostgreSQL 서버 만들기

참고 항목

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

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

필수 조건

데이터 컨트롤러는 이미 만들어 놓은 상태일 것입니다.

Kubernetes 도구를 사용하여 PostgreSQL 서버를 만들려면 Kubernetes 도구가 설치되어 있어야 합니다. 이 문서의 예제에서는 kubectl을 사용하지만 이와 마찬가지로, 관련 도구와 Kubernetes yaml/json에 익숙하다면 Kubernetes 대시보드, oc 또는 helm 등의 다른 Kubernetes 도구를 사용할 수도 있습니다.

kubectl 도구 설치

개요

PostgreSQL 서버를 만들려면 Kubernetes 비밀을 만들어 postgres 관리자 로그인과 암호를 안전하게 저장하고 postgresqls 사용자 지정 리소스 정의에 따라 PostgreSQL 서버 사용자 지정 리소스를 저장해야 합니다.

Yaml 파일 만들기

템플릿 yaml 파일을 시작 지점으로 사용하여 고유한 사용자 지정 PostgreSQL 서버 yaml 파일을 만들 수 있습니다. 이 파일을 로컬 컴퓨터에 다운로드하여 텍스트 편집기에서 엽니다. VS Code처럼 yaml 파일에 대하여 구문 강조 표시와 린팅을 지원하는 텍스트 편집기를 사용하는 것이 좋습니다.

예제 yaml 파일:

apiVersion: v1
data:
  username: <your base64 encoded username>
  password: <your base64 encoded password>
kind: Secret
metadata:
  name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
  name: pg1
spec:
  scheduling:
    default:
      resources:
        limits:
          cpu: "4"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer # Modify service type based on your Kubernetes environment
  storage:
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

로그인 및 암호를 사용자 지정합니다.

Kubernetes 비밀은 Base64로 인코딩한 문자열로, 사용자 이름을 위하여 하나, 암호를 위하여 하나가 저장됩니다. 관리자 로그인 및 암호를 base64로 인코딩하고 data.passworddata.username의 자리 표시자 위치에 넣어야 합니다. 템플릿에서 제공하는 <> 기호는 포함하지 마세요.

원하는 사용자 이름과 암호를 Base64로 인코딩하기 위하여 온라인 도구를 사용하거나, 플랫폼에 따라 기본 제공되는 CLI 도구를 사용할 수 있습니다.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

이름 사용자 지정

이 템플릿의 이름 특성 값은 pg1입니다. 이 값을 변경할 수 있지만 변경할 값은 반드시 DNS 명명 표준을 따르는 문자여야 합니다. 이름을 변경하는 경우 일치하는 비밀의 이름을 변경합니다. 예를 들어 PostgreSQL 서버의 이름을 pg2로 변경하는 경우 비밀 이름을 pg1-login-secret에서 pg2-login-secret으로 변경해야 합니다.

리소스 요구 사항 사용자 지정

필요에 따라 RAM 및 코어 제한과 요청 등의 리소스 요구 사항을 변경할 수 있습니다.

참고 항목

Kubernetes 리소스 거버넌스에 대하여 자세히 알아볼 수 있습니다.

리소스 제한 및 요청에 대한 요구 사항:

  • 청구를 위하여 코어 제한 값은 필수입니다.
  • 리소스 요청 및 제한의 나머지 부분은 선택 사항입니다.
  • 지정하는 경우 코어 제한과 요청은 양의 정수 값이어야 합니다.
  • 지정하는 경우 코어 요청에는 최소 1코어가 필요합니다.
  • 메모리 값 형식은 Kubernetes 표기법을 따릅니다.

서비스 유형 사용자 지정

원하는 경우 서비스 유형을 NodePort로 변경할 수 있습니다. 그러면 임의의 포트 번호가 할당됩니다.

스토리지 사용자 지정

사용자 환경에 맞게 스토리지의 스토리지 클래스를 사용자 지정할 수 있습니다. 사용할 수 있는 스토리지 클래스를 잘 모르는 경우 kubectl get storageclass 명령을 실행하여 해당 스토리지 클래스를 볼 수 있습니다. 템플릿의 기본값은 default입니다. default라는 스토리지 클래스가 있다는 의미이지 기본 스토리지 클래스가 있다는 의미가 아닙니다. 필요에 따라 스토리지 크기를 변경할 수도 있습니다. 스토리지 구성에 대한 자세한 내용을 참조하세요.

PostgreSQL 서버 만들기

이제 PostgreSQL 서버 yaml 파일을 사용자 지정했으므로 다음 명령을 실행하여 PostgreSQL 서버를 만들 수 있습니다.

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml

만들기 상태 모니터링

PostgreSQL 서버를 만드는 작업은 완료하는 데 몇 분 정도 걸립니다. 다음 명령을 사용하여 다른 터미널 창에서 진행률을 모니터링할 수 있습니다.

참고 항목

아래 예제 명령에서는 pg1이라는 PostgreSQL 서버 및 arc라는 Kubernetes 네임스페이스를 만들었다고 가정합니다. 다른 네임스페이스/PostgreSQL 서버 이름을 사용한 경우 arcpg1을 해당 이름으로 바꿀 수 있습니다.

kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc

kubectl describe 명령을 실행하여 특정 Pod의 생성 상태를 확인할 수도 있습니다. describe 명령은 문제를 해결하는 데 특히 유용합니다. 예시:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/pg1-0 --namespace arc

만들기 문제 해결

만들기 관련 문제가 발생하는 경우 문제 해결 가이드를 참조하세요.