Config Connector 권장사항


이 페이지에서는 구성 커넥터를 사용할 때 고려해야 하는 권장사항을 설명합니다.

API 할당량 한도 관리

API 할당량 한도를 초과했음을 나타내는 오류가 발생하면 같은 할당량 프로젝트 아래에 동일한 종류의 구성 커넥터 리소스를 너무 많이 만들었을 수 있습니다. 리소스를 많이 만들면 구성 커넥터가 사용하는 조정 전략으로 인해 이러한 리소스가 동일한 API 엔드포인트에 너무 많은 API 요청을 생성할 수 있습니다.

이 문제를 해결하는 한 가지 방법은 할당량 증가를 요청하는 것입니다. 할당량 증가 외에 구성 커넥터 리소스에서 관리하는 Google Cloud 리소스에 대한 GET 요청으로 인해 할당량 오류가 발생한다는 것을 확인했다면 다음 옵션 중 하나를 고려할 수 있습니다.

조정 간격 늘리기

API 할당량에 도달하지 않도록 구성 커넥터가 리소스를 조정하는 간격을 늘릴 수 있습니다. 권장사항은 조정 간격을 1시간으로 설정하는 것입니다.

조정 간격을 늘리려면 조정 간격 구성의 단계를 수행합니다.

여러 프로젝트로 리소스 분할

이 접근 방식은 구성 커넥터 리소스를 여러 프로젝트에 분산합니다. 이 방식은 새 리소스를 추가할 때 효과적이지만 기존 리소스를 삭제하고 다른 프로젝트에서 다시 만들어야 하므로 기존 리소스를 분할할 위험이 있습니다. 리소스를 삭제하면 SpannerInstance 또는 BigtableTable 리소스와 같은 일부 리소스 유형에서 데이터가 손실될 수 있습니다. 데이터를 삭제하기 전에 백업해야 합니다.

기존 구성 커넥터 리소스를 여러 프로젝트로 분할하려면 다음 단계를 완료하세요.

  1. 다른 프로젝트로 이동할 구성 커넥터 리소스를 결정합니다.
  2. 구성 커넥터 리소스를 삭제합니다. cnrm.cloud.google.com/deletion-policy 주석이 abandon으로 설정되지 않았는지 확인합니다.
  3. 새 프로젝트로 이동할 구성 커넥터 리소스의 YAML 구성에서 spec.projectRef 필드 또는 cnrm.cloud.google.com/project-id 주석을 업데이트합니다.
  4. 구성 커넥터에서 사용되는 IAM 서비스 계정에 새 프로젝트에 대한 적절한 권한을 부여합니다.
  5. 업데이트된 YAML 구성을 적용하여 구성 커넥터 리소스를 만듭니다.

네임스페이스 모드로 전환

구성 커넥터가 네임스페이스 모드로 설치된 다른 네임스페이스에 서로 다른 Google Cloud 프로젝트 소유의 다른 IAM 서비스 계정을 바인딩하고 리소스를 서로 다른 네임스페이스로 분할할 수 있습니다. 이렇게 하려면 다음 단계를 완료합니다.

  1. 네임스페이스 모드에서 실행되도록 구성 커넥터를 구성합니다. 다른 프로젝트에서 새 IAM 서비스 계정을 만들고 각 프로젝트의 구성 커넥터 구성 안내에 따라 다른 네임스페이스에 바인딩합니다.

  2. 새 IAM 서비스 계정에 리소스가 포함된 프로젝트에 대한 적절한 권한을 부여합니다.

  3. 다른 네임스페이스로 이동할 구성 커넥터 리소스를 결정합니다.

  4. 구성 커넥터 리소스의 YAML 구성을 업데이트하고 cnrm.cloud.google.com/deletion-policy 주석을 abandon으로 설정합니다.

  5. 업데이트된 YAML 구성을 적용하여 구성 커넥터 리소스의 삭제 정책을 업데이트합니다.

  6. 구성 커넥터 리소스를 폐기합니다.

  7. 다른 네임스페이스로 이동하려는 구성 커넥터 리소스의 YAML 구성에서 metadata.namespace 필드를 업데이트합니다.

  8. 업데이트된 YAML 구성을 적용하여 폐기된 리소스를 가져옵니다.

GKE 클러스터에서 노드 풀 관리

구성 커넥터의 ContainerCluster 리소스를 적용하여 클러스터를 생성한 후 업데이트된 ContainerCluster 구성을 적용하여 nodeConfig 또는 다른 노드 관련 필드를 업데이트하려고 할 때 오류가 발생할 수 있습니다. 이러한 오류는 nodeConfig, nodeConfig.labels, nodeConfig.taint와 같이 변경할 수 없는 필드로 인한 것으로, 이는 기본 Google Cloud API의 기술적 한계입니다.

이러한 필드를 업데이트해야 하는 경우 ContainerNodePool 리소스를 사용하여 해당 필드를 변경할 수 없는 노드 풀을 관리할 수 있습니다. ContainerNodePool 리소스를 사용하여 노드 풀을 관리하려면 cnrm.cloud.google.com/remove-default-node-pool: "true" 주석을 지정해야 합니다. 이 주석은 클러스터를 만드는 동안 생성되는 기본 노드 풀을 삭제합니다. 그런 다음 별도의 노드 풀을 만들려면 ContainerCluster 대신 ContainerNodePoolnodeConfig 필드를 지정합니다. 자세한 내용은 ContainerNodePool 리소스 예시를 참조하세요.

ContainerClusterContainerNodePool 리소스 모두에 주석 cnrm.cloud.google.com/state-into-spec: absent를 설정해야 합니다. 이 주석은 구성 커넥터 컨트롤러와 기본 API 간의 상호작용 중에 잠재적인 조정 오류를 방지합니다.

다음 예시에서는 이러한 주석이 설정된 ContainerClusterContainerNodePool 구성을 보여줍니다.

apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerCluster
metadata:
  name: containercluster-sample
  annotations:
    cnrm.cloud.google.com/remove-default-node-pool: "true"
    cnrm.cloud.google.com/state-into-spec: absent
spec:
  description: A sample cluster.
  location: us-west1
  initialNodeCount: 1
apiVersion: container.cnrm.cloud.google.com/v1beta1
kind: ContainerNodePool
metadata:
  labels:
    label-one: "value-one"
  name: containernodepool-sample
  annotations:
    cnrm.cloud.google.com/state-into-spec: absent
spec:
  location: us-west1
  autoscaling:
    minNodeCount: 1
    maxNodeCount: 3
  nodeConfig:
    machineType: n1-standard-1
    preemptible: false
    oauthScopes:
      - "https://www.googleapis.com/auth/logging.write"
      - "https://www.googleapis.com/auth/monitoring"
  clusterRef:
    name: containercluster-sample