GitLab이 관리하는 클러스터 리소스 추적 (사용 중지됨)

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
caution
이 기능은 GitLab 16.2에서 사용이 중지되었습니다. GitOps로 클러스터 리소스를 관리하려면 Flux 통합을 사용해야 합니다.

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입니다.
caution
default_namespace 매개변수를 변경하거나 매니페스트를 다른 프로젝트로 이동하는 경우 에이전트는 기존 인벤토리 객체를 찾을 수 없습니다.

인벤토리 객체의 위치 변경

인벤토리 객체의 네임스페이스 및 이름을 구성할 수 있습니다. 이 작업은 클러스터 내 객체의 위치를 변경합니다.

  1. 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
    
  2. namespacename을 지정합니다. name이 다른 인벤토리 객체와 충돌하지 않도록 고유해야 합니다.
  3. cli-utils.sigs.k8s.io/inventory-id 값이 고유해야 합니다. 이 값은 이 인벤토리 객체에 의해 추적되는 객체에 사용됩니다. 그들의 config.k8s.io/owning-inventory 주석은 이 값으로 설정됩니다.

    값이 name과 일치할 필요는 없지만 동일한 값을 설정하는 것이 편리합니다.

  4. 매니페스트 파일을 단일 논리적 그룹으로 저장합니다.

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 모드로 돌려놓으세요.