이 페이지에서는 OCI 이미지 또는 Helm 저장소에 구성 동기화를 인증하는 방법을 설명합니다. 구성 동기화는 구성을 읽고, 클러스터에 적용하고, 동기화 상태를 유지할 수 있도록 정보 소스에 대한 읽기 전용 액세스 권한이 필요합니다.
인증 방식 선택
사용하는 인증 방법은 소스 유형에 지원되는 방법에 따라 다릅니다.
다음 표에는 구성 동기화와 함께 사용할 수 있는 인증 방법이 요약되어 있습니다.
메서드 | 지원되는 소스 | 설명 | 제한사항 |
---|---|---|---|
인증 없음 | Git, OCI, Helm | 추가 설정이 필요하지 않습니다. | 정보 소스가 공개 상태인 경우에만 작동합니다. |
SSH 키 쌍 | Git | 대부분의 Git 제공업체에서 지원합니다. | 키 관리가 필요합니다. OCI 또는 Helm에서는 지원되지 않습니다. |
토큰 | Git, Helm | 대부분의 Git 제공업체에서 지원합니다. 조직에서 SSH 키 사용을 허용하지 않는 경우 좋은 대안입니다. Helm의 사용자 이름과 비밀번호를 지원합니다. | 토큰 관리가 필요합니다. 토큰은 만료될 수 있습니다. OCI에서는 지원되지 않습니다. |
Kubernetes 서비스 계정 | OCI, Helm | IAM을 사용하여 Kubernetes 서비스 계정에 Artifact Registry 액세스 권한을 직접 부여합니다. 클러스터에 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있어야 합니다. | Git에서는 지원되지 않습니다. |
Google 서비스 계정 | Git | Kubernetes 보안 비밀에 사용자 인증 정보를 저장하지 않는 IAM을 사용합니다. Secure Source Manager 및 Cloud Source Repositories에 권장됩니다. 클러스터에 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있어야 합니다. | 클러스터에 구성 동기화를 설치하기 전후에 구성이 필요합니다. Secure Source Manager 또는 Cloud Source Repositories 외부에서 호스팅되는 저장소에는 지원되지 않습니다. |
GitHub 앱 | Git | GitHub와 직접 통합 세분화된 권한을 허용합니다. | GitHub에 호스팅된 저장소에서만 지원됩니다. 구성 동기화 버전 1.19.1 이상에서만 지원됩니다. |
구성 동기화는 다음 인증 방법도 지원하지만, 앞의 표에 나열된 옵션 중 하나를 사용할 수 없는 경우에만 이러한 방법을 사용하는 것이 좋습니다.
- cookiefile:은 일부 Git 제공업체에서 지원되지 않을 수 있습니다. OCI 또는 Helm에서는 지원되지 않습니다.
- Compute Engine 기본 서비스 계정 (
gcenode
): GKE용 워크로드 아이덴티티 제휴가 사용 중지된 경우에만 작동하므로 권장되지 않습니다. Git, OCI, Helm에서 지원됩니다. - Helm 및 OCI용 Google 서비스 계정: 지원되지만 Kubernetes 서비스 계정 메서드는 구성이 덜 필요하므로 권장되지 않습니다.
시작하기 전에
구성 동기화에 정보 소스에 대한 읽기 전용 액세스 권한을 부여하기 전에 다음 작업을 완료하세요.
구성 동기화가 동기화할 구성 파일을 저장하는 OCI 이미지 또는 Helm 저장소를 준비하거나 액세스합니다. 자세한 내용은 다음 리소스를 참조하세요.
- 정보 소스에 구성 추가: 구성에 관한 개념 정보입니다.
- GitOps 권장사항: 저장소를 정리하고 관리하기 위한 도움말과 일반 권장사항입니다.
- 구조화되지 않은 저장소 사용: 구조화되지 않은 저장소를 사용하고 정리하기 위한 권장사항입니다.
GKE 클러스터를 만들거나 이에 대한 액세스 권한을 갖습니다. 클러스터를 만들기 전에 구성 동기화의 클러스터 구성 요구사항 및 권장사항을 검토하세요.
OCI 이미지에 대한 액세스 권한 부여
이 섹션에서는 지원되는 인증 방법을 사용하여 구성 동기화에 OCI 이미지에 대한 읽기 전용 액세스 권한을 부여하는 방법을 설명합니다.
구성 동기화를 인증하려면 Artifact Registry에 OCI 이미지를 저장해야 합니다.
Kubernetes 서비스 계정 사용
Kubernetes 서비스 계정으로 인증하려면 클러스터에 GKE용 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴가 사용 설정되어 있어야 합니다.
Kubernetes 서비스 계정을 사용하여 구성 동기화에 OCI 이미지에 대한 읽기 전용 액세스 권한을 부여하려면 다음 단계를 완료하세요.
-
정책 바인딩을 만드는 데 필요한 권한을 얻으려면 관리자에게 서비스 계정에 대한 서비스 계정 관리자 (
roles/iam.serviceAccountAdmin
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요. GKE용 워크로드 아이덴티티 제휴 풀이 포함된 Kubernetes 서비스 계정에 Artifact Registry 리더 (
roles/artifactregistry.reader
) IAM 역할을 부여합니다.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 프로젝트 ID와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 클러스터가 등록된 Fleet의 프로젝트 ID입니다.REPOSITORY
: 이미지의 ID입니다.LOCATION
: 저장소의 리전 또는 멀티 리전 위치입니다.
구성 동기화를 설치할 때 Kubernetes 서비스 계정 (k8sserviceaccount
)을 인증 유형으로 사용합니다.
Compute Engine 기본 서비스 계정 사용
Google 서비스 계정 대신 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있지 않은 경우 Compute Engine 서비스 계정을 사용하여 인증할 수 있습니다.
Compute Engine 기본 서비스 계정을 사용하여 저장소에 대한 읽기 전용 액세스를 구성 동기화에 부여하려면 Compute Engine 서비스 계정에 Artifact Registry에 대한 읽기 권한을 부여하세요.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/artifactregistry.reader
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 ID입니다.PROJECT_NUMBER
: 프로젝트 번호
구성 동기화를 설치할 때 Compute Engine 서비스 계정 (gcenode
)을 인증 유형으로 사용합니다.
Helm 저장소에 대한 액세스 권한 부여
이 섹션에서는 저장소에 저장된 Helm 차트에 구성 동기화 읽기 전용 액세스 권한을 부여하는 방법을 설명합니다.
토큰 사용
토큰을 사용하여 구성 동기화에 Helm 저장소에 대한 읽기 전용 액세스 권한을 부여하려면 Helm 저장소 사용자 이름과 비밀번호를 사용하는 보안 비밀을 만드세요.
kubectl create secret generic SECRET_NAME \
--namespace=config-management-system \
--from-literal=username=USERNAME \
--from-literal=password=PASSWORD
다음을 바꿉니다.
SECRET_NAME
: 보안 비밀의 이름USERNAME
: Helm 저장소 사용자 이름입니다.PASSWORD
: Helm 저장소 비밀번호입니다.
구성 동기화를 설치할 때 토큰 (token
)을 인증 유형으로 사용합니다.
spec.helm.secretRef.name
필드에 보안 비밀 이름도 지정해야 합니다.
Kubernetes 서비스 계정 사용
Kubernetes 서비스 계정을 사용하여 인증하려면 다음 요구사항을 충족해야 합니다.
- 저장소가 Artifact Registry에 있습니다.
- 클러스터에 GKE용 워크로드 아이덴티티 제휴 또는 GKE용 Fleet 워크로드 아이덴티티 제휴가 사용 설정되어 있습니다.
Kubernetes 서비스 계정을 사용하여 구성 동기화에 Helm 저장소에 대한 읽기 전용 액세스 권한을 부여하려면 다음 단계를 완료하세요.
-
정책 바인딩을 만드는 데 필요한 권한을 얻으려면 관리자에게 서비스 계정에 대한 서비스 계정 관리자 (
roles/iam.serviceAccountAdmin
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요. Kubernetes 서비스 계정을 사용하여 Helm 저장소에 Config Sync 읽기 전용 액세스 권한을 부여하려면 GKE용 워크로드 아이덴티티 제휴 풀이 포함된 Kubernetes 서비스 계정에 Artifact Registry 리더 (
roles/artifactregistry.reader
) IAM 역할을 부여하세요.프로젝트의 모든 저장소에 동일한 권한이 적용되는 경우 프로젝트 전체 권한을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]"
서비스 계정이 프로젝트의 저장소마다 다른 수준의 액세스 권한을 갖도록 하려면 저장소별 권한을 부여합니다.
gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=LOCATION \ --role=roles/artifactregistry.reader \ --member="serviceAccount:FLEET_HOST_PROJECT_ID.svc.id.goog[config-management-system/KSA_NAME]" \ --project=PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 ID입니다.FLEET_HOST_PROJECT_ID
: GKE용 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 프로젝트 ID와 동일합니다. GKE용 Fleet 워크로드 아이덴티티 제휴를 사용하는 경우 이 값은 클러스터가 등록된 Fleet의 프로젝트 ID입니다.REPOSITORY
: 이미지의 ID입니다.LOCATION
: 저장소의 리전 또는 멀티 리전 위치입니다.
구성 동기화를 설치할 때 Kubernetes 서비스 계정 (k8sserviceaccount
)을 인증 유형으로 사용합니다.
Compute Engine 기본 서비스 계정 사용
Google 서비스 계정 대신 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있지 않은 경우 Compute Engine 서비스 계정을 사용하여 인증할 수 있습니다.
Compute Engine 기본 서비스 계정을 사용하여 저장소에 대한 읽기 전용 액세스를 구성 동기화에 부여하려면 Compute Engine 서비스 계정에 Artifact Registry에 대한 읽기 권한을 부여하세요.
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--role=roles/artifactregistry.reader
다음을 바꿉니다.
PROJECT_ID
: 프로젝트 ID입니다.PROJECT_NUMBER
: 프로젝트 번호
구성 동기화를 설치할 때 Compute Engine 서비스 계정 (gcenode
)을 인증 유형으로 사용합니다.