구성 커넥터 설치

구성 커넥터는 Kubernetes 구성을 통해 Google Cloud 리소스를 관리할 수 있는 Kubernetes 애드온입니다. Anthos Config Management를 사용하면 Anthos 사용자는 구성 커넥터를 자동으로 설치제거할 수 있습니다.

시작하기 전에

  • Anthos Config Management를 사용하여 구성 커넥터를 설치하려면 Anthos 권한이 있어야 합니다. Anthos 권한이 없는 경우 이 주제의 지시 사항을 따르지 않고 구성 커넥터에 대체 설치 방법 중 하나를 사용해야 합니다.

  • 이 지시 사항을 따르기 전에 Anthos Config Management를 v1.1.0 이상으로 업그레이드해야 합니다.

  • 구성 커넥터가 설치되지 않은 클러스터가 있어야 합니다.

Anthos Config Management를 사용하여 구성 커넥터 설치

Anthos Config Management를 사용하여 구성 커넥터를 설치하려면 클러스터 중 하나에 구성 커넥터를 설치하도록 Anthos Config Management를 구성한 다음 cnrm-system 서비스 계정을 구성합니다.

Anthos Config Management 구성

  1. Operator 구성 파일에서 spec.configConnector.enabled 값을 true로 설정하십시오.

    # config-management.yaml
    
    apiVersion: configmanagement.gke.io/v1
    kind: ConfigManagement
    metadata:
      name: config-management
    spec:
      # Set to true to install and enable Config Connector
      configConnector:
        enabled: true
    
      # ...other fields...
      ```
    
  2. kubectl apply를 사용하여 구성을 적용합니다.

    kubectl apply -f config-management.yaml
    

pod는 생성되지만 프로젝트에서 Google Cloud 리소스를 관리하도록 cnrm-system 서비스 계정을 구성할 때까지 실행되지 않습니다.

또한 구성을 적용하면 이후 주석을 작성할 수 있는 cnrm-system 네임스페이스가 생성됩니다.

cnrm-system 서비스 계정 구성

Anthos Config Management에서 Google Cloud 리소스를 만들려면 먼저 구성 커넥터가 ID 및 액세스 관리 서비스 계정을 사용하여 인증해야 합니다.

  1. cnrm-system 서비스 계정을 만듭니다.

    gcloud iam service-accounts create cnrm-system --project [PROJECT_ID]
    
  2. 서비스 계정에는 자동으로 생성된 이메일 주소가 있습니다. 이 이메일 주소를 얻으려면 다음 명령어를 사용합니다.

    gcloud iam service-accounts list | grep cnrm-system
    

    다음 명령어에서 [SERVICE_ACCOUNT_EMAIL]이 표시되는 이 값을 사용합니다.

  3. 필요한 특정 Google Cloud 리소스를 구성하는 데 필요한 cnrm-system 서비스 계정 역할 및 권한을 부여합니다. 이 예시는 roles/owner 역할을 부여합니다.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
     --member "serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \
     --role "roles/owner"
    
  4. key.json으로 로컬로 저장된 서비스 계정의 키를 작성합니다.

    gcloud iam service-accounts keys create \
     --iam-account "[SERVICE_ACCOUNT_EMAIL]" \
     ./key.json
    
  5. 클러스터의 cnrm-system 네임스페이스에 키를 삽입합니다.

    kubectl create secret generic gcp-key \
     --from-file ./key.json \
     --namespace cnrm-system
    
  6. 중요한 데이터가 포함되어 있으므로 키의 로컬 사본을 제거합니다.

    rm ./key.json
    

구성 커넥터는 이제 저장소에 저장된 구성을 Anthos Config Management에 등록된 클러스터에 동기화하여 Google Cloud 리소스를 관리할 수 있습니다.

리소스를 만들 위치 지정

Anthos Config Management를 사용하여 리소스를 만들기 전에 리소스를 만들 위치를 구성해야 합니다. 리소스를 만들 위치를 결정하기 위해 구성 커넥터는 리소스 구성 또는 네임스페이스에 주석을 사용합니다. 자세한 내용은 리소스 구성을 참조하세요.

Google Cloud에서 리소스를 구성할 때와 동일한 방법으로 프로젝트, 폴더, 조직에서 리소스를 만들 수 있습니다.

프로젝트

특정 프로젝트에 리소스를 만들려면, 다음 명령어를 실행합니다. 여기서 [NAMESPACE_NAME]을 네임스페이스 이름으로 바꾸고 [PROJECT_ID]를 Google Cloud 프로젝트 ID로 바꿉니다.

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/project-id=[PROJECT_ID]

폴더

특정 폴더에 리소스를 만들려면, 다음 명령어를 실행합니다. 여기서 [NAMESPACE_NAME]를 네임스페이스 이름으로 바꾸고 [FOLDER_ID]를 Google Cloud 폴더 ID로 바꿉니다.

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/folder-id=[FOLDER_ID]

조직

특정 조직에 리소스를 만들려면, 다음 명령어를 실행합니다. 여기서 [NAMESPACE_NAME]을 네임스페이스 이름으로 바꾸고 [ORGANIZATION_ID]를 Google Cloud 프로젝트 ID로 바꿉니다.

kubectl annotate namespace \
[NAMESPACE_NAME] cnrm.cloud.google.com/organization-id=[ORGANIZATION_ID]

네임스페이스에 주석을 달면 구성 커넥터는 해당 프로젝트, 폴더 또는 조직에 리소스를 만듭니다. 구성 커넥터가 Kubernetes 네임스페이스를 사용하는 방법에 대한 자세한 내용은 Kubernetes 네임스페이스 및 Google Cloud 프로젝트를 참조하세요.

설치 확인

구성 커넥터가 올바르게 설치되면 해당 pod와 CRD가 클러스터에 존재합니다.

  1. 구성 커넥터 Pod가 실행 중인지 확인합니다.

    kubectl wait -n cnrm-system \
     --for=condition=Initialized pod \
     cnrm-controller-manager-0
    

    구성 커넥터가 올바르게 설치된 경우 출력은 다음과 유사합니다.

    pod/cnrm-controller-manager-0 condition met

  2. 지원되는 각 Google Cloud 리소스 유형에 대한 CRD가 클러스터에 설치되어 있는지 확인합니다.

    kubectl get crds | grep cnrm.cloud.google.com
    

    구성 커넥터가 올바르게 설치된 경우 명령어는 .cnrm.cloud.google.com으로 끝나는 리소스(예: bigquerydatasets.bigquery.cnrm.cloud.google.com)를 나열합니다.

구성 커넥터 제거

구성 커넥터를 사용 불가능하게 하고 설치 제거하려면 Anthos Config Management에 대한 구성 파일을 편집하고 spec.configConnector.enabled 값을 false로 설정합니다.

구성 커넥터 Pod가 중지 및 삭제되고 각 Google Cloud 리소스 유형의 CRD가 삭제됩니다. 기존 Google Cloud 리소스는 수정되지 않습니다.

다음 단계