GitLab이 관리하는 클러스터 리소스 추적 (사용 중지됨)
GitLab은 인벤토리 객체를 사용하여 클러스터에 배포하는 리소스를 추적합니다.
인벤토리 객체는 제어되는 객체 디렉터리을 포함하는 ConfigMap
입니다.
관리되는 리소스는 cli-utils.sigs.k8s.io/inventory-id
주석을 사용합니다.
인벤토리 객체의 기본 위치
에이전트 구성 파일에서 프로젝트 디렉터리을 지정합니다. 예:
gitops:
manifest_projects:
- id: gitlab-org/cluster-integration/gitlab-agent
default_namespace: my-ns
에이전트는 manifest_projects
디렉터리의 각 항목에 대해 인벤토리 객체를 생성합니다.
인벤토리 객체는 default_namespace
로 지정한 네임스페이스에 저장됩니다.
인벤토리 객체의 이름과 위치는 다음을 기반으로 합니다:
-
default_namespace
. 이 매개변수를 지정하지 않으면 인벤토리 객체가default
네임스페이스에 저장됩니다. -
name
, 이는 매니페스트가 있는 프로젝트의 ID 및 에이전트의 ID입니다.
default_namespace
매개변수를 변경하거나 매니페스트를 다른 프로젝트로 이동하는 경우
에이전트는 기존 인벤토리 객체를 찾을 수 없습니다.인벤토리 객체의 위치 변경
인벤토리 객체의 네임스페이스 및 이름을 구성할 수 있습니다. 이 작업은 클러스터 내 객체의 위치를 변경합니다.
-
ConfigMap
객체인 인벤토리 객체 템플릿을 생성합니다. 예:apiVersion: v1 kind: ConfigMap metadata: name: unique-name-for-the-inventory namespace: my-project-namespace labels: cli-utils.sigs.k8s.io/inventory-id: unique-name-for-the-inventory
-
namespace
및name
을 지정합니다.name
이 다른 인벤토리 객체와 충돌하지 않도록 고유해야 합니다. -
cli-utils.sigs.k8s.io/inventory-id
값이 고유해야 합니다. 이 값은 이 인벤토리 객체에 의해 추적되는 객체에 사용됩니다. 그들의config.k8s.io/owning-inventory
주석은 이 값으로 설정됩니다.값이
name
과 일치할 필요는 없지만 동일한 값을 설정하는 것이 편리합니다. - 매니페스트 파일을 단일 논리적 그룹으로 저장합니다.
inventory_policy
옵션
때로는 매니페스트 변경이 GitLab 인벤토리 객체가 추적하지 않은 리소스에 영향을 미칩니다.
에이전트가 기존 및 이전에 추적되지 않은 리소스를 덮어쓸 때 에이전트의 동작 방식을 변경하려면 inventory_policy
값을 수정합니다.
inventory_policy 값
| 설명 |
---|---|
must_match
| 기본 정책. 업데이트를 하려면 라이브 객체는 config.k8s.io/owning-inventory 주석을 해당 인벤토리 객체의 cli-utils.sigs.k8s.io/inventory-id 라벨과 동일한 값으로 설정해야 합니다. 값이 일치하지 않거나 객체에 주석이 없는 경우, 객체는 업데이트되지 않으며 오류가 보고됩니다.
|
adopt_if_no_inventory
|
config.k8s.io/owning-inventory 주석이 없는 경우 객체를 채택합니다. GitOps 기능을 사용하여 기존 객체를 관리하려면 이 모드를 사용합니다. 예상치 못한 채택을 피하려면 모든 객체가 채택된 후 설정을 기본 must_match 모드로 돌려놓으세요.
|
adopt_all
|
config.k8s.io/owning-inventory 주석이 다른 값으로 설정되어 있더라도 객체를 채택합니다. 이 모드를 사용하여 한 에이전트에서 다른 에이전트로 또는 다른 도구에서 에이전트로 객체 집합을 마이그레이션하려는 경우에 사용합니다. 예상치 못한 채택을 피하려면 모든 객체가 채택된 후 설정을 기본 must_match 모드로 돌려놓으세요.
|