계층적 저장소 개요

이 페이지에서는 구성 동기화가 계층적 저장소에서 구성을 읽어 클러스터에 자동으로 결과 구성을 적용하는 방법을 설명합니다.

구조 유연성을 더 많이 원하는 경우(예: 리소스의 하위 폴더를 만들려는 경우) 구조화되지 않은 저장소를 만들면 됩니다. 구조화되지 않은 저장소는 대부분의 사용자에게 권장되며 계층적 컨트롤러와 조합하면 계층적 저장소에서 제공하는 네임스페이스와 비슷한 네임스페이스를 상속할 수 있습니다.

구성 동기화가 계층적 저장소를 사용하는 방법을 이해하려면 Git 저장소와 git 명령줄 인터페이스를 잘 알고 있는 것이 도움이 됩니다.

계층적 저장소 구조

계층적 저장소의 경우 Config Sync는 Git의 파일 시스템과 같은 구조를 활용하며 관련된 클러스터 또는 네임스페이스 구성이 무엇인지 결정합니다.

namespaces/

namespaces/ 디렉터리에는 네임스페이스 및 네임스페이스 범위 객체의 구성이 포함되어 있습니다. namespaces/ 내 구조는 네임스페이스 상속을 유도하는 메커니즘입니다. NamespaceSelector를 사용하면 구성을 상속할 수 있는 네임스페이스를 제한할 수 있습니다.

cluster/

cluster/ 디렉터리에는 네임스페이스가 아닌 전체 클러스터에 적용되는 구성이 포함됩니다. 기본적으로 cluster/ 디렉터리의 모든 구성은 구성 동기화에 등록된 모든 클러스터에 적용됩니다. ClusterSelector를 사용하면 구성이 영향을 줄 수 있는 클러스터를 제한할 수 있습니다.

clusterregistry/

clusterregistry/ 디렉터리는 선택사항이며, 여기에는 ClusterSelector 구성이 포함됩니다. ClusterSelector는 구성이 적용되는 클러스터를 제한하며, cluster/namespaces/ 디렉터리에 있는 구성에서 참조됩니다.

system/

system/ 디렉터리에는 Operator 구성이 포함됩니다. 구성 동기화 구성에 대한 자세한 내용은 구성 동기화 설치를 참조하세요.

계층적 저장소 예시

다음 디렉터리 구조는 구성 동기화 계층적 저장소를 사용하여 team-1team-2라는 두 팀에서 공유하는 Kubernetes 클러스터를 구성하는 방법을 보여줍니다.

  • 팀마다 자체 Kubernetes 네임스페이스, Kubernetes 서비스 계정, 리소스 할당량, 네트워크 정책, rolebinding이 있습니다.
  • 클러스터 관리자는 namespaces/limit-range.yaml에서 정책을 설정하여 두 네임스페이스의 리소스 할당(pod 또는 컨테이너)을 제한합니다.
  • 또한 클러스터 관리자는 ClusterRole 및 ClusterRoleBinidng을 설정합니다.

유효한 구성 동기화 계층적 저장소에는 cluster/, namespaces/, system/ 등 하위 디렉터리가 3개 있어야 합니다.

cluster/ 디렉터리에는 네임스페이스가 아닌 전체 클러스터(예: ClusterRole, ClusterRoleBinding)에 적용되는 구성이 포함됩니다.

namespaces/ 디렉터리에는 네임스페이스 객체의 구성과 네임스페이스 범위 객체의 구성이 포함됩니다. namespaces/ 아래의 하위 디렉터리마다 네임스페이스 객체의 구성과 네임스페이스 아래의 모든 네임스페이스 범위 객체의 구성이 포함됩니다. 하위 디렉터리 이름은 네임스페이스 객체 이름과 동일해야 합니다. 네임스페이스마다 객체를 만들어야 하는 네임스페이스 범위 객체를 namespaces/(예: namespaces/limit-range.yaml) 아래에 직접 넣을 수 있습니다.

system/ 디렉터리에는 Config Management Operator 구성이 포함됩니다.

├── cluster
│   ├── clusterrolebinding-namespace-reader.yaml
│   ├── clusterrole-namespace-reader.yaml
│   ├── clusterrole-secret-admin.yaml
│   └── clusterrole-secret-reader.yaml
├── namespaces
│   ├── limit-range.yaml
│   ├── team-1
│   │   ├── namespace.yaml
│   │   ├── network-policy-default-deny-egress.yaml
│   │   ├── resource-quota-pvc.yaml
│   │   ├── rolebinding-secret-reader.yaml
│   │   └── sa.yaml
│   └── team-2
│       ├── namespace.yaml
│       ├── network-policy-default-deny-all.yaml
│       ├── resource-quota-pvc.yaml
│       ├── rolebinding-secret-admin.yaml
│       └── sa.yaml
├── README.md
└── system
    └── repo.yaml

다음 단계