Kubernetes에 배포 만들기

이 문서에서는 Kubernetes에서 Spanner Omni 배포를 만드는 방법을 설명합니다. 이 배포는 암호화되지 않습니다. Spanner Omni를 평가하기 위해 테스트 또는 개념 증명 환경을 빠르게 설정하려면 mTLS 또는 기타 보안 조치를 구성할 필요가 없으므로 암호화 없이 배포를 만드는 것이 가장 빠른 시작 방법입니다. 하지만 암호화되지 않은 네트워크 트래픽 및 공개 액세스와 같은 보안 위험으로 인해 프로덕션 환경에는 이 구성이 권장되지 않습니다. 단일 서버 또는 여러 영역에 걸친 리전 배포 중에서 선택할 수 있습니다.

Spanner Omni의 미리보기 버전은 TLS 암호화를 지원하지 않습니다. TLS 암호화로 배포를 만들 수 있는 기능을 사용하려면 Google에 문의하여 Spanner Omni의 전체 버전에 대한 조기 액세스를 요청하세요.

시작하기 전에

Spanner Omni를 배포하기 전에 환경이 다음 요구사항을 충족하는지 확인합니다.

  • Kubernetes 클러스터를 만듭니다. 이 구성은 Google Kubernetes Engine (GKE) 및 Amazon Elastic Kubernetes Service (Amazon EKS)를 지원합니다. 다른 환경에서 작동하도록 구성을 맞춤설정해야 할 수 있습니다.

  • Kubernetes 클러스터가 Spanner Omni 컨테이너를 호스팅하는 Artifact Registry 아티팩트에 액세스할 수 있는지 확인합니다.

  • kubectl 명령줄 도구Helm을 설치하고 구성합니다.

  • vSphere 가상화 플랫폼 머신에 Kubernetes 환경을 설정하는 경우 가상 머신의 .vmx 구성 파일에 monitor_control.virtual_rdtsc = FALSE를 추가하여 타임스탬프 카운터 (TSC) 가상화를 사용 중지합니다. 이렇게 하면 TrueTime이 올바르게 작동합니다.

  • 환경이 Spanner Omni 시스템 요구사항을 충족하는지 확인합니다.

  • 배포의 토폴로지를 선택합니다.

Helm 구성 준비

Helm 구성을 만듭니다. 자세한 내용은 Helm 구성 만들기를 참조하세요.

배포를 만듭니다.

특정 재정의로 Helm 차트를 설치합니다. 다음은 가장 일반적인 배포의 샘플 명령어입니다.

예 1: 모니터링 스택이 포함된 GKE의 단일 서버에서 Spanner Omni 실행

모니터링 스택이 포함된 GKE의 단일 서버에서 Spanner Omni를 실행하려면 다음 명령어를 실행합니다.

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set deployment.singleServer=true \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

예 2: GKE의 여러 서버에서 Spanner Omni 실행

GKE의 단일 영역(us-central1-a)에 있는 여러 서버에서 Spanner Omni를 실행하려면 다음 명령어를 실행합니다.

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set deployment.replicasPerZone=5 \
    --set deployment.rootServersPerZone=3 \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

예 3: 고가용성 리전 배포

이 배포는 데이터 사본 3개를 유지하므로 영역에 중단이 발생하더라도 Spanner Omni가 계속 작동할 수 있습니다. 이 배포를 만들려면 다음 명령어를 실행합니다.

  kubectl create ns monitoring
  helm upgrade --install spanner-omni oci://us-central1-docker.pkg.dev/spanner-omni/helm-charts/spanner-omni --version 0.1.0 \
    --set global.platform=gke \
    --set-json 'locations=[{"name":"us-central1","zones":[{"name":"us-central1-a","shortName":"a"},{"name":"us-central1-c","shortName":"b"},{"name":"us-central1-d","shortName":"c"}]}]' \
    --set monitoring.enabled=true \
    --namespace spanner-ns \
    --create-namespace

포드 상태 확인

포드 상태를 확인하려면 다음 명령어를 실행합니다.

  kubectl get pods --watch --namespace spanner-ns

출력 예시:

  NAME          READY   STATUS    RESTARTS   AGE
  spanner-a-0   1/1     Running   0          4m
  spanner-a-1   1/1     Running   0          4m
  spanner-a-2   1/1     Running   0          4m
  spanner-a-3   1/1     Running   0          4m
  spanner-a-4   1/1     Running   0          4m
  spanner-b-0   1/1     Running   0          4m
  spanner-b-1   1/1     Running   0          4m
  spanner-b-2   1/1     Running   0          4m
  spanner-b-3   1/1     Running   0          4m
  spanner-b-4   1/1     Running   0          4m
  spanner-c-0   1/1     Running   0          4m
  spanner-c-1   1/1     Running   0          4m
  spanner-c-2   1/1     Running   0          4m
  spanner-c-3   1/1     Running   0          4m
  spanner-c-4   1/1     Running   0          4m

Spanner Omni와 상호작용

포드가 실행된 후 배포에 연결하고 Spanner Omni CLI를 사용하여 상호작용할 수 있습니다.

  1. 다음 명령어를 실행하여 서비스 주소를 가져옵니다.

    kubectl get service spanner -n spanner-ns
    

    EXTERNAL-IP:PORTDEPLOYMENT_ENDPOINT입니다.

  2. 아직 다운로드하지 않았다면 spanner-omni Cloud Storage 버킷에서 Spanner Omni CLI를 다운로드합니다.

    Spanner Omni 버킷으로 이동

  3. Spanner Omni CLI를 사용하여 GoogleSQL 또는 PostgreSQL 데이터베이스를 만들고 상호작용합니다.

    GoogleSQL

    GoogleSQL 데이터베이스를 만들고 상호작용하려면 다음을 실행합니다.

    spanner databases create DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
    spanner sql --database=DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
    

    PostgreSQL

    PostgreSQL 데이터베이스를 만들고 상호작용하려면 다음을 실행합니다.

     spanner databases create POSTGRESQL_DATABASE_NAME --database_dialect POSTGRESQL --deployment_endpoint DEPLOYMENT_ENDPOINT
     spanner sql --database=POSTGRESQL_DATABASE_NAME --deployment_endpoint DEPLOYMENT_ENDPOINT
     ```
    
    You can also interact with a PostgreSQL database by following
    the instructions in [Connect using PGAdapter](/spanner-omni/pgadapter)
    to configure PGAdapter and use PostgreSQL tools, such as
    `psql`, with your PostgreSQL-dialect databases.
    

배포 관찰 (선택사항)

monitoring.enabled=true로 Spanner Omni를 설정하여 Spanner Omni가 내보내는 측정항목을 수집하도록 Prometheus를 구성할 수 있습니다. 이렇게 하면 배포 문제를 분석하고 디버그하는 데 도움이 됩니다. 자세한 내용은 다음을 참조하세요.

서비스 세부정보를 가져오려면 다음 명령어를 실행합니다.

  # Prometheus service details. Default port is 9090.
  kubectl get service prometheus-service -n monitoring

  # Grafana service details. Default port is 3000.
  kubectl get service grafana -n monitoring

다음 단계