Git 저장소에 구성 추가

구성 동기화는 다수의 클러스터를 관리하는 클러스터 운영자용으로 설계되었습니다. 구성 동기화가 제품군에서 네임스페이스, Role, RoleBinding, ResourceQuota, 기타 중요 Kubernetes 객체를 관리하도록 하면 클러스터가 비즈니스 및 규정 준수 표준을 충족할 수 있습니다.

Config Sync는 이러한 리소스를 관리할 때 등록된 클러스터를 구성을 사용하여 동기화 상태로 유지합니다. 구성은 Git 저장소에 저장된 YAML 또는 JSON 파일입니다. 구성에는 kubectl apply 명령어를 사용하여 클러스터에 수동으로 적용할 수 있는 동일한 유형의 구성 세부정보가 포함됩니다. 클러스터에 있을 수 있는 모든 Kubernetes 객체에 구성을 만들 수 있습니다. 보안 비밀 등의 일부 Kubernetes 객체에는 Git 저장소에 저장하기에 부적절한 민감한 정보가 있습니다. 자체 판단에 따라 이러한 유형의 객체를 구성 동기화로 관리할지 여부를 결정합니다.

또한 구성 동기화를 구성 커넥터와 함께 사용하여 Google Cloud 리소스에 대한 구성을 동기화할 수 있습니다. 구성 커넥터 작업에 대한 자세한 내용은 구성 커넥터를 사용하여 Google Cloud 리소스 관리를 참조하세요. 구성 컨트롤러를 설정하여 구성 동기화와 구성 커넥터 설치를 간소화할 수 있습니다.

이 페이지에서는 저장소에 구성을 추가하는 방법을 보여줍니다. 구성을 만드는 방법은 구성 만들기를 참조하세요.

구성 방법 선택

구성 동기화는 구성 저장 및 버전 제어에 Git 저장소를 사용합니다. 저장소에 대해 선택할 수 있는 두 가지 형식은 구조화되지 않음계층적입니다.

구조화되지 않은 소스 형식을 사용하면 가장 편리한 방식으로 저장소의 구성을 조직화할 수 있습니다. 이 형식은 Kustomize, kpt 또는 Helm과 같은 도구를 사용하여 구성을 정리하거나 생성할 때 특히 유용합니다. 구성 방법 예시는 구조화되지 않은 저장소의 예시 형식을 참조하세요.

계층적 또는 구조화된 소스 형식은 구성을 고유 카테고리로 구분하므로 구성을 쉽게 구성할 수 있습니다. 카테고리는 시스템 구성, 클러스터 메타데이터, 클러스터 수준 구성, 네임스페이스 구성입니다. 계층적 저장소 구조에 대한 자세한 내용은 계층적 저장소 구조를 참조하세요.

구조화되지 않은 형식은 대부분의 사용자에게 권장됩니다. 또한 네임스페이스 저장소는 구조화되지 않은 저장소 형식을 사용해야 합니다.

구조화되지 않은/계층적 저장소에 대해 지원되는 기능

다음 표에서는 구조화되지 않은 형식과 계층 구조 형식 간의 차이점을 보여줍니다.

특성 구조화되지 않은 형식(권장) 계층 구조 형식
루트 저장소의 형식으로 사용 지원됨 지원됨
네임스페이스 저장소의 형식으로 사용 지원됨 지원되지 않음
계층 구조 컨트롤러와 함께 사용 지원됨 권장하지 않음
클러스터 선택기 지원됨 지원됨
네임스페이스 선택기 지원됨 지원됨
nomos hydrate 명령어 --source-format=unstructured 플래그와 함께 지원됨 지원됨
nomos init 명령어 지원되지 않음 지원됨
nomos vet 명령어 --source-format=unstructured 플래그와 함께 지원됨 지원됨
다른 모든 nomos 명령어 지원됨 지원됨
추상 네임스페이스 지원되지 않음 지원됨
Repo 객체 지원되지 않음 지원됨
HierarchyConfig 객체 지원되지 않음 지원됨
계층 구조 컨트롤러의 계층적 네임스페이스 지원됨 지원되지 않음

저장소에 구성 추가

구조화되지 않은 저장소를 만드는 경우 저장소가 생성되는 즉시 구성을 추가할 수 있습니다. 계층적 저장소를 만드는 경우 nomos init 명령어를 사용하여 저장소를 초기화하거나 직접 디렉터리 구조를 만듭니다.

빈 디렉터리는 Git 저장소에 커밋할 수 없으므로 구성 동기화를 구성하기 전에 구성을 만들고 저장소에 추가하세요.

저장소를 만들고 구성을 추가한 후 nomos vet 명령어를 사용하여 저장소의 구조를 확인하고 구성의 구문 및 유효성을 검사합니다.

저장소에서 읽도록 구성 동기화 구성

저장소를 만들고 구성을 지정한 후에는 저장소에서 읽을 수 있도록 구성 동기화를 구성할 수 있습니다. 이 단계를 완료하면 구성 동기화가 저장소의 구성을 클러스터에 동기화합니다.

구성 동기화를 설치할 때 저장소 위치를 구성하고 나중에 구성 동기화의 구성을 수정할 수 있습니다. Git 저장소에 구성 이외의 콘텐츠가 있는 경우 저장소 위치 외에도 감시할 Git 분기와 하위 디렉터리를 지정할 수 있습니다.

계층적 저장소를 사용 중이고 kubectl로 구성 동기화를 수동으로 설치하는 경우 연산자의 구성을 system/ 디렉터리나 cluster/ 또는 namespaces/와 같은 다른 예약된 디렉터리에 배치하지 마세요. 구성을 예약된 디렉터리 중 하나에 배치하면 nomos vet이 실패하고 KNV1033: IllegalSystemResourcePlacementError, KNV1038: IllegalKindInNamespacesError 또는 KNV1039: IllegalKindInClusterError와 같은 오류가 로깅됩니다.

특정 제품팀의 배포 저장소에 대한 액세스 권한을 다른 사용자에게 부여할 수 있습니다. 하지만 사용자에게 배포 저장소에 대한 액세스 권한을 부여하면 이 사용자에게 해당 저장소에 대해 실행되는 조정자와 동일한 RBAC도 부여됩니다.

구성 동기화와 저장소 간의 인증 및 승인을 구성하려면 git-creds 보안 비밀 구성에 관한 설치 단계를 참조하세요.

객체 변형 무시

구성 동기화가 존재한 이후 클러스터에서 객체 상태를 유지하길 원하지 않는 경우, 구성 동기화로 변형을 무시하려는 객체에 client.lifecycle.config.k8s.io/mutation: ignore 주석을 추가할 수 있습니다. 주석을 사용하려면 여러 저장소에서 동기화를 사용 설정하고 1.7.0 이상을 사용해야 합니다. Google Cloud Console 또는 Google Cloud CLI를 사용하여 버전이 1.7.0 이상인 구성 동기화를 설치한 경우 여러 저장소에서의 동기화는 기본적으로 사용 설정됩니다. kubectl을 사용하여 구성 동기화를 설치한 경우 ConfigManagement 객체에서 spec.enableMultiRepotrue로 설정하세요.

다음 예시에서는 객체에 주석을 추가하는 방법을 보여줍니다.

metadata:
  annotations:
    client.lifecycle.config.k8s.io/mutation: ignore 

클러스터의 관리 객체에서 이 주석을 수동으로 수정할 수 없습니다.

다음 단계