멀티 테넌시


Red Hat OpenShift GitOps 1.15

GitOps의 멀티 테넌시 지원 이해

Red Hat OpenShift Documentation Team

초록

이 문서에서는 GitOps의 멀티 테넌시 지원에 대해 설명합니다. 또한 Argo CD 인스턴스 범위와 특정 모드를 선택할 시기를 설명합니다.

1장. GitOps의 멀티 테넌시 지원

멀티 테넌시는 단일 소프트웨어 인스턴스가 여러 개별 사용자 그룹 또는 테넌트를 제공하는 소프트웨어 아키텍처입니다. 멀티 테넌시를 사용하면 단일 Argo CD 인스턴스를 공유하여 사용자 간에 격리를 유지하면서 리소스를 배포할 수 있습니다. 이 섹션에서는 클러스터 관리자가 Argo CD 인스턴스 범위 및 특정 모드를 선택할 시기를 이해하는 데 도움이 됩니다.

OpenShift Container Platform의 Red Hat OpenShift GitOps Operator를 사용하여 클러스터 관리자는 애플리케이션 제공 팀(테넌트)을 위해 클러스터에 대한 다중 테넌트 액세스 권한을 제공할 수 있습니다. 테넌트가 관리 권한 없이 사용자 정의 네임스페이스에서 전용 Argo CD 인스턴스를 생성하고 관리할 수 있도록 허용할 수 있습니다. 테넌트에는 완전한 자율성이 있으며 다른 테넌트를 방해하지 않고 이 인스턴스를 요구 사항 및 요구 사항에 맞게 조정할 수 있습니다.

참고

다중 테넌트 클러스터의 경우 Argo CD 인스턴스를 관리하는 사람이 클러스터 및 해당 사용자를 관리하는 사람이 아닐 수 있습니다. 따라서 Argo CD 애플리케이션 컨트롤러(argocd-application-controller 구성 요소)를 클러스터의 슈퍼유저로 사용할 수 없습니다.

Argo CD 애플리케이션 컨트롤러는 관리 클러스터의 리소스를 조정합니다. 따라서 사용 사례, 테넌트 및 요구 사항에 따라 GitOps Operator에서 멀티 테넌시를 사용하려면 특정 작업을 수행하기 위해 Argo CD 인스턴스, 애플리케이션 및 원격 클러스터에 명시적으로 특정 권한을 구성, 부여, 확장 또는 제한해야 합니다.

1.1. Argo CD 인스턴스 범위

Red Hat OpenShift GitOps Operator는 멀티 테넌시를 지원하는 다음 모드로 광범위하게 분류할 수 있는 인스턴스를 생성합니다.

  • 네임스페이스 범위 인스턴스(애플리케이션 제공 인스턴스)
  • 클러스터 범위 인스턴스
  • 기본 클러스터 범위 인스턴스

1.1.1. 네임스페이스 범위 인스턴스(애플리케이션 제공 인스턴스)

네임스페이스 중 하나에서 Argo CD CR(사용자 정의 리소스)을 생성한 후 GitOps Operator는 이 네임스페이스에서 Argo CD를 시작하여 애플리케이션 전달에 사용할 수 있습니다. 초기 상태에서 이 인스턴스에는 설치된 동일한 네임스페이스에만 리소스를 배포할 수 있는 권한이 있습니다. 그러나 특정 요구 사항을 충족하도록 인스턴스를 구성해야 할 수도 있습니다.

GitOps Operator를 사용하면 Argo CD 인스턴스의 권한을 확장하여 Argo CD 애플리케이션 컨트롤러에서 리소스를 설치된 위치와 별도로 다른 네임스페이스에 배포할 수 있습니다.

참고

네임스페이스의 GitOps Operator가 생성하는 역할은 네임스페이스 범위이며 네임스페이스 리소스에 대한 액세스 권한만 있습니다. Operator는 관리하는 네임스페이스 외부에서 모든 작업을 수행할 수 없습니다.

이 방법은 어떻게 작동합니까?

GitOps Operator를 사용하면 네임스페이스의 argoproj.io/v1alpha1 또는 argoproj.io/v1beta1 API에서 Argo CD 리소스를 생성할 수 있는 권한이 있는 경우 네임스페이스에서 Argo CD 인스턴스를 인스턴스화할 수 있습니다. 현재 네임스페이스 범위 인스턴스에는 관리하는 네임스페이스 또는 여러 네임스페이스에 대한 전체 관리 권한이 있으며, 해당 네임스페이스 내의 모든 리소스에 대한 모든 동사를 허용하는 것과 유사합니다.

Argo CD 애플리케이션 컨트롤러가 리소스를 다른 네임스페이스에 배포하려면 라벨을 지정하려면 Kubernetes 역할 및 역할 바인딩이 필요하며 네임스페이스 범위 인스턴스에서 관리할 네임스페이스를 지정합니다. GitOps Operator는 argocd.argoproj.io/managed-by 레이블을 사용하여 이러한 역할 및 역할 바인딩을 자동으로 생성할 수 있습니다. 이 레이블을 사용하고 값을 설정하여 관리되는 네임스페이스를 나타냅니다. 그런 다음 argocd.argoproj.io/managed-by 레이블을 사용하면 네임스페이스 범위 인스턴스 모드에서 GitOps Operator를 배포할 때 인스턴스에서 관리하는 모든 네임스페이스에 역할 및 역할 바인딩 세트가 생성됩니다.

중요

argocd.argoproj.io/managed-by 레이블은 GitOps Operator와 동일한 클러스터의 네임스페이스에 대해서만 작동합니다. 원격 클러스터의 경우 권한을 수동으로 정의해야 합니다.

기본적으로 managed-by 레이블을 사용하여 네임스페이스에 레이블을 지정할 때 GitOps Operator는 레이블이 지정된 네임스페이스의 Kubernetes 기본 admin 클러스터 역할과 동일한 Argo CD Application Controller 권한을 부여합니다. 그러나 Operator의 Subscription 리소스에서 각각 CONTROLLER_CLUSTER_ROLECONTROLLER_SERVER_ROLE 환경 변수를 사용하여 컨트롤러 및 서버 구성 요소에 사용되는 대체 클러스터 역할을 정의할 수 있습니다. 이러한 변수를 제공할 때 Operator는 네임스페이스에 기본 역할을 생성하지 않고 해당 클러스터 역할의 네임스페이스에 역할 바인딩만 생성합니다. 관리자는 권한을 완전히 제어할 수 있는 클러스터 역할을 생성할 수 있습니다.

참고
  • 역할을 정의할 때 Argo CD는 모든 리소스와 상호 작용을 시도합니다. 따라서 사용자 정의 클러스터 역할의 모든 리소스를 보고 ,가져오고, 조사할 수 있는 권한을 제공하거나, 역할에 정의된 resourceInclusions 또는 resourceExclusions 필드를 통해 특정 리소스를 포함하거나 제외하도록 Argo CD CR을 구성해야 합니다.
  • 네임스페이스, CRD(사용자 정의 리소스 정의) 또는 네임스페이스 범위 인스턴스를 사용하여 클러스터 범위 리소스를 관리할 수 없습니다.

1.1.2. 클러스터 범위 인스턴스

클러스터 범위 인스턴스는 클러스터 전체에 리소스를 배포하고 관리하기 위한 것입니다.

참고

네임스페이스 기능에서 애플리케이션을 사용하려면 Argo CD 인스턴스 범위의 모드를 클러스터 범위 인스턴스로 선택합니다.

클러스터 범위 인스턴스는 클러스터 수준 리소스에 액세스할 수 있으므로 일반적으로 클러스터 구성에 사용되는 것은 아닙니다. 특정 네임스페이스 범위의 Argo CD 인스턴스를 클러스터 범위가 되도록 선택할 수 있습니다. 인스턴스를 준비하려면 GitOps Operator의 Subscription 리소스를 수정해야 합니다.

중요
  • 인스턴스를 확장하는 동안 신중하게 고려해야 합니다.
  • 애플리케이션 제공 팀에서 자체 관리하는 인스턴스를 설정하지 마십시오. 이 작업을 수행하면 사용자가 자체 관리 인스턴스 클러스터 관리자가 되고 권한을 완전히 제어할 수 있으므로 이러한 인스턴스가 클러스터에 심각한 보안 위험이 발생할 수 있습니다.

Argo CD 내에서 멀티 테넌시 구성을 설정할 때 많은 주의를 기울여야 합니다. 예를 들어 클러스터 관리자가 여러 애플리케이션 제공 팀 간에 공유되고 클러스터 관리자가 관리하는 Argo CD 인스턴스를 설정하려는 사용 사례에서 사용자 지정 클러스터 범위 인스턴스가 필요할 수 있습니다.

이 방법은 어떻게 작동합니까?

사용자가 cluster-admin 권한을 사용하여 Argo CD 인스턴스를 배포하지 못하도록 하려면 Subscription 리소스에서 ARGOCD_CLUSTER_CONFIG_NAMESPACES 환경 변수를 사용하여 클러스터 권한으로 네임스페이스를 식별해야 합니다.

비 클러스터 관리자는 서브스크립션 리소스에 액세스할 수 없으므로 인스턴스의 권한을 승격하고 클러스터 보안을 우회할 수 없습니다.

인스턴스가 클러스터 범위로 지정되면 Operator는 해당 네임스페이스에서 Argo CD Application Controller 및 서버 서비스 계정에 대한 클러스터 역할 및 클러스터 역할 바인딩 세트를 자동으로 생성합니다. 이 기본 역할은 표준 cluster-admin 역할과 동등하지 않습니다. 훨씬 더 작은 권한 세트가 제공됩니다. 이러한 권한은 필요에 따라 추가 클러스터 역할 또는 클러스터 역할 바인딩을 생성하여 확장할 수 있습니다.

1.1.3. 기본 클러스터 범위 인스턴스

GitOps Operator를 설치한 후 기본적으로 openshift-gitops 네임스페이스에서 클러스터 범위 인스턴스를 인스턴스화합니다. 이 인스턴스는 매우 신중하게 설정되며 클러스터 관리자가 특정 클러스터 구성 리소스를 관리할 수 있도록 하기 위한 것입니다.

중요
  • 애플리케이션 제공과 같은 다른 용도로 기본 클러스터 범위 인스턴스를 사용하지 마십시오.
  • 기본 클러스터 범위 인스턴스에 액세스할 수 있는 cluster-admin 역할이 없는 사용자에게 권한을 부여하지 마십시오.

기본 인스턴스에는 전체 cluster-admin 권한이 없습니다. 클러스터의 모든 리소스에 대한 읽기 액세스 권한이 있지만 제한된 리소스 세트만 배포할 수 있습니다.

참고

클러스터 구성에 있는 openshift-gitops 네임스페이스에서 기본 Argo CD 인스턴스를 사용하고 테넌트 사용 사례를 다른 네임스페이스의 하나 이상의 개별 인스턴스에 위임합니다.

1.2. 멀티 테넌시 모델을 채택할 때 중요한 고려 사항

다중 테넌트 클러스터 관리 권한을 부여하면 테넌트에서 Argo CD에서 애플리케이션에 부여된 권한을 사용하여 권한을 승격할 수 있으므로 멀티 테넌시 작업 및 권한 제한을 우회할 수 있습니다. 이러한 상황을 방지하려면 Red Hat OpenShift GitOps Operator를 통해 설치된 Argo CD의 권한 모델과 애플리케이션 제공을 위해 OpenShift GitOps를 성공적으로 사용하는 방법을 이해해야 합니다.

1.2.1. Argo CD 역할 기반 액세스 제어(RBAC)

Red Hat OpenShift GitOps의 액세스 제어는 다음과 같이 두 가지 수준으로 관리합니다.

  • Kubernetes 수준에서 GitOps Argo CD 애플리케이션 컨트롤러는 하나 이상의 클러스터와 상호 작용하여 클러스터당 단일 Kubernetes 서비스 계정을 사용하여 다양한 리소스를 배포합니다. 이 서비스 계정에는 Argo CD의 이 인스턴스에서 관리하는 모든 테넌트 및 사용 사례에 대한 리소스를 배포할 수 있는 충분한 권한이 있어야 합니다.
  • Argo CD 수준에서 GitOps Argo CD 애플리케이션 컨트롤러에는 Kubernetes와 독립적인 자체 RBAC 권한 모델이 포함되어 있습니다. 사용자 수준 액세스를 관리하려면 기본 Kubernetes 권한과 독립적으로 이 RBAC 모델을 사용할 수 있습니다. 이 기능을 사용하여 사용자가 순수 Kubernetes 관점에서 액세스할 수 없는 Argo CD 애플리케이션에 대한 액세스 권한을 제공할 수 있습니다.

이 두 액세스 제어와 구성 요소 간의 상호 작용은 고유하고 분리되어 있기 때문에 Argo CD로 다중 테넌트 솔루션을 설계할 때 권한 상승이 우려됩니다. 권한 에스컬레이션은 테넌트에서 애플리케이션 컨트롤러 서비스 계정의 증가된 권한을 활용하여 일반적으로 수행할 수 없는 작업을 수행할 수 있는 경우입니다. Argo CD RBAC 또는 Argo CD의 별도의 인스턴스를 사용하여 Argo CD 인스턴스에서 권한 에스컬레이션을 완화할 수 있습니다.

1.2.2. Argo CD 프로젝트

OpenShift Container Platform 프로젝트와 혼동되지 않도록 Argo CD 프로젝트는 애플리케이션을 그룹화하는 방법을 제공합니다. Argo CD 프로젝트를 사용하면 배포할 수 있는 리소스와 배포할 수 있는 위치와 관련하여 애플리케이션에 대한 제한을 지정할 수 있습니다. 또한 Argo CD CR(사용자 정의 리소스)의 글로벌 수준 대비 프로젝트 수준에서 보다 세밀하게 정의하여 Argo CD 역할 기반 액세스 제어(RBAC) 규칙 및 권한을 활성화할 수 있습니다.

Operator의 Argo CD CR에서 테넌트 RBAC를 전역적으로 정의할 수는 있지만 AppProject CR의 제한과 함께 테넌트 RBAC를 정의해야 합니다.

테넌트 수가 많은 경우 글로벌 RBAC를 사용하여 모든 테넌트를 관리하려고 하면 많은 반복이 발생할 수 있습니다.

테넌트의 여러 인스턴스가 있는 경우 테넌트 프로젝트에서 일부 프로젝트 구성이 일반적일 수 있습니다. 중복을 줄이고 유지 관리를 최소화하려면 공통 구성에 글로벌 프로젝트를 사용하고 테넌트 프로젝트에서 상속합니다.

참고

항상 프로젝트를 정의하고 Operator에서 Argo CD 설치로 생성된 기본 프로젝트를 사용하지 마십시오.

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동