1.4. 애플리케이션 리소스 관리
콘솔에서 Git 리포지토리, Helm 리포지토리 및 오브젝트 스토리지 리포지토리를 사용하여 애플리케이션을 생성할 수 있습니다.
중요: Git 채널은 Helm, 오브젝트 스토리지 및 기타 Git 네임스페이스와 다른 모든 채널 유형과 네임스페이스를 공유할 수 있습니다.
앱 관리를 시작하려면 다음 항목을 참조하십시오.
1.4.1. Git 리포지토리를 사용하여 앱 관리
애플리케이션을 사용하여 Kubernetes 리소스를 배포할 때 리소스는 특정 리포지토리에 있습니다. 다음 절차에서 Git 리포지토리에서 리소스를 배포하는 방법을 알아봅니다. 애플리케이션 모델 및 정의에서 애플리케이션 모델에 대해 자세히 알아보십시오.
사용자 필수 액세스: 애플리케이션을 생성할 수 있는 사용자 역할입니다. 역할이 할당된 작업만 수행할 수 있습니다. 역할 기반 액세스 제어 설명서에서 액세스 요구 사항에 대해 알아봅니다.
- 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
- 선택 사항: 생성할 애플리케이션 종류를 선택한 후 YAML 을 선택하여 애플리케이션을 생성하고 편집할 때 콘솔에서 YAML을 볼 수 있습니다. 주제의 뒷부분에 있는 YAML 샘플을 참조하십시오.
사용할 수 있는 리포지토리 목록에서 Git 을 선택하고 올바른 필드에 값을 입력합니다. 콘솔의 지침에 따라 입력에 따라 YAML 편집기 변경 값을 확인합니다.
참고:
- 기존 Git 리포지토리 경로를 선택하는 경우 개인 리포지토리인 경우 연결 정보를 지정할 필요가 없습니다. 연결 정보는 미리 설정되어 있으므로 이러한 값을 볼 필요가 없습니다.
- 새 Git 리포지토리 경로를 입력하면 개인 Git 리포지토리인 경우 Git 연결 정보를 선택적으로 입력할 수 있습니다.
-
조정 옵션을 확인합니다.
merge
옵션은 기본 선택이며, 이는 새 필드가 추가되고 리소스에서 기존 필드가 업데이트됨을 의미합니다.교체
하도록 선택할 수 있습니다.replace
옵션을 사용하면 기존 리소스가 Git 소스로 교체됩니다. 서브스크립션 조정 비율이낮게
설정되면 서브스크립션된 애플리케이션 리소스를 조정하는 데 최대 1시간이 걸릴 수 있습니다. 단일 애플리케이션 뷰의 카드에서 동기화 를 클릭하여 수동으로 조정합니다.off
로 설정하면 조정되지 않습니다.
-
선택적 사전 배포 및 배포 후 작업을 설정합니다. 서브스크립션 이전 또는 이후에 실행할 Ansible Automation Platform 작업이 있는 경우 Ansible Automation Platform 시크릿을 설정합니다. 작업을 정의하는 Ansible Automation Platform 작업은 이 리포지토리의
prehook
및posthook
폴더 내에 배치해야 합니다. - 콘솔을 사용하여 인증 정보를 추가해야 하는 경우 인증 정보 추가 를 클릭할 수 있습니다. 콘솔의 지침을 따르십시오. 인증 정보 관리 개요 에서 자세한 내용을 참조하십시오.
- 생성을 클릭합니다.
- 세부 정보 및 토폴로지를 볼 수 있는 개요 페이지로 리디렉션됩니다.
1.4.1.1. 더 많은 예
-
root-subscription/
의 예는application-subscribe-all
을 참조하십시오. -
동일한 리포지토리의 다른 폴더를 가리키는 서브스크립션의 예는
subscribe-all
을 참조하십시오. -
nginx-apps
리포지토리에서 애플리케이션 아티팩트가 있는common-managed
폴더의 예를 참조하십시오. - 정책 컬렉션의 정책 예제를 참조하십시오.
1.4.1.2. Git을 사용하여 서브스크립션을 삭제한 후 배포된 리소스 유지
Git 리포지토리를 사용하여 서브스크립션을 생성할 때 do-not-delete
주석을 추가하여 서브스크립션을 삭제한 후 특정 배포된 리소스를 유지할 수 있습니다. do-not-delete
주석은 최상위 배포 리소스에서만 작동합니다. do-not-delete
주석을 추가하려면 다음 단계를 완료합니다.
- 하나 이상의 리소스를 배포하는 서브스크립션을 생성합니다.
서브스크립션을 삭제한 후에도 유지하려는 리소스 또는 리소스에 다음 주석을 추가합니다.
apps.open-cluster-management.io/do-not-delete: 'true'
다음 예제를 참조하십시오.
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: apps.open-cluster-management.io/do-not-delete: 'true' apps.open-cluster-management.io/hosting-subscription: sub-ns/subscription-example apps.open-cluster-management.io/reconcile-option: merge pv.kubernetes.io/bind-completed: "yes"
서브스크립션을 삭제한 후에도 다른 리소스가 삭제되는 동안 do-not-delete
주석이 있는 리소스가 여전히 존재합니다.
참고: 네임스페이스에 바인딩되는 do-not-delete
주석을 사용하여 배포된 리소스입니다. 따라서 나머지 리소스를 제거할 때까지 네임스페이스를 삭제할 수 없습니다.
1.4.2. Helm 리포지터리를 사용하여 앱 관리
애플리케이션을 사용하여 Kubernetes 리소스를 배포할 때 리소스는 특정 리포지토리에 있습니다. 다음 절차에서 Helm 리포지토리에서 리소스를 배포하는 방법을 알아봅니다. 애플리케이션 모델 및 정의에서 애플리케이션 모델에 대해 자세히 알아보십시오.
사용자 필수 액세스: 애플리케이션을 생성할 수 있는 사용자 역할입니다. 역할이 할당된 작업만 수행할 수 있습니다. 역할 기반 액세스 제어 설명서에서 액세스 요구 사항에 대해 알아봅니다.
- 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
- 선택 사항: 생성할 애플리케이션 종류를 선택한 후 YAML 을 선택하여 애플리케이션을 생성하고 편집할 때 콘솔에서 YAML을 볼 수 있습니다. 주제의 뒷부분에 있는 YAML 샘플을 참조하십시오.
- 사용할 수 있는 리포지토리 목록에서 Helm 을 선택하고 올바른 필드의 값을 입력합니다. 콘솔의 지침에 따라 입력에 따라 YAML 편집기 변경 값을 확인합니다.
- 생성을 클릭합니다.
- 세부 정보 및 토폴로지를 볼 수 있는 개요 페이지로 리디렉션됩니다.
1.4.2.1. 샘플 YAML
다음 예제 채널 정의는 Helm 리포지터리를 채널로 추상화합니다.
참고: Helm 차트에 포함된 모든 Kubernetes 리소스에 레이블 릴리스가 있어야 합니다. 애플리케이션 토폴로지가 올바르게 표시되도록 {{ .release.Name }}'
입니다.
apiVersion: v1 kind: Namespace metadata: name: hub-repo --- apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: helm namespace: hub-repo spec: pathname: [https://kubernetes-charts.storage.googleapis.com/] # URL points to a valid chart URL. type: HelmRepo
다음 채널 정의에서는 Helm 리포지터리 채널의 또 다른 예를 보여줍니다.
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: predev-ch namespace: ns-ch labels: app: nginx-app-details spec: type: HelmRepo pathname: https://kubernetes-charts.storage.googleapis.com/
참고: REST API를 보려면 API를 사용하십시오.
1.4.2.2. Helm을 사용하여 서브스크립션을 삭제한 후 배포된 리소스 유지
Helm은 서브스크립션을 삭제한 후 특정 배포된 리소스를 유지하기 위한 주석을 제공합니다. 자세한 내용은 리소스를 설치 제거하지 않으려면 Tell Helm Not To Uninstall a Resource 를 참조하십시오.
참고: 주석은 Helm 차트에 있어야 합니다.
1.4.3. 오브젝트 스토리지 리포지토리를 사용하여 앱 관리
애플리케이션을 사용하여 Kubernetes 리소스를 배포할 때 리소스는 특정 리포지토리에 있습니다. 애플리케이션 모델 및 정의에서 애플리케이션 모델에 대해 자세히 알아보십시오.
사용자 필수 액세스: 애플리케이션을 생성할 수 있는 사용자 역할입니다. 역할이 할당된 작업만 수행할 수 있습니다. 역할 기반 액세스 제어 설명서에서 액세스 요구 사항에 대해 알아봅니다.
- 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
- 선택 사항: 생성할 애플리케이션 종류를 선택한 후 YAML 을 선택하여 애플리케이션을 생성하고 편집할 때 콘솔에서 YAML을 볼 수 있습니다. 주제의 뒷부분에 있는 YAML 샘플을 참조하십시오.
- 사용할 수 있는 리포지토리 목록에서 오브젝트 저장소를 선택하고 올바른 필드의 값을 입력합니다. 콘솔의 지침에 따라 입력에 따라 YAML 편집기 변경 값을 확인합니다.
- 생성을 클릭합니다.
- 세부 정보 및 토폴로지를 볼 수 있는 개요 페이지로 리디렉션됩니다.
1.4.3.1. 샘플 YAML
다음 예제 채널 정의는 오브젝트 스토리지를 채널로 추상화합니다.
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: dev namespace: ch-obj spec: type: Object storage pathname: [http://sample-ip:#####/dev] # URL is appended with the valid bucket name, which matches the channel name. secretRef: name: miniosecret gates: annotations: dev-ready: true
참고: REST API를 보려면 API를 사용하십시오.
1.4.3.2. AWS(Amazon Web Services) S3 오브젝트 스토리지 버킷 생성
Amazon Simple Storage Service(Amazon S3) 오브젝트 스토리지 서비스에 정의된 리소스를 서브스크립션하기 위해 서브스크립션을 설정할 수 있습니다. 다음 절차를 참조하십시오.
- AWS 계정, 사용자 이름 및 암호를 사용하여 AWS 콘솔에 로그인합니다.
- Amazon S3 > Buckets 로 이동합니다. 버킷 홈 페이지로 이동합니다.
- 버킷 생성 을 클릭하여 버킷을 생성합니다.
- AWS S3 오브젝트 버킷 연결에 필요한 AWS 리전 을 선택합니다.
- 버킷 액세스 토큰을 생성합니다.
- 탐색 모음에서 사용자 이름으로 이동한 다음 드롭다운 메뉴에서 내 보안 자격 증명을 선택합니다.
- AWS IAM 인증 정보 탭에서 CLI, SDK 및 API 액세스에 대한 액세스 키로 이동하여 액세스 키 생성 을 클릭합니다.
- 액세스 키 ID , 시크릿 액세스 키를 저장합니다.
- 오브젝트 YAML 파일을 버킷에 업로드합니다.
1.4.3.3. AWS 버킷의 오브젝트 구독
- 시크릿이 있는 오브젝트 버킷 유형 채널을 생성하여 AWS 버킷 연결을 위한 AccessKeyID,SecretAccessKey 및 리전 을 지정합니다. 세 개의 필드는 AWS 버킷이 생성될 때 생성됩니다.
URL을 추가합니다. URL에 s3
:// 또는
버킷의 채널을 식별합니다. 예를 들어 다음 버킷 URL에 AWS s3 버킷 식별자가 있는지 확인합니다.s
3 및 aws 키워드가 포함된 경우 URL은 AWS S3https://s3.console.aws.amazon.com/s3/buckets/sample-bucket-1 s3://sample-bucket-1/ https://sample-bucket-1.s3.amazonaws.com/
참고: AWS S3 오브젝트 버킷 URL은 버킷을 AWS S3 API와 연결하는 데 필요하지 않습니다.
1.4.3.4. 샘플 AWS 서브스크립션
다음 전체 AWS S3 오브젝트 버킷 채널 샘플 YAML 파일을 참조하십시오.
apiVersion: apps.open-cluster-management.io/v1 kind: Channel metadata: name: object-dev namespace: ch-object-dev spec: type: ObjectBucket pathname: https://s3.console.aws.amazon.com/s3/buckets/sample-bucket-1 secretRef: name: secret-dev --- apiVersion: v1 kind: Secret metadata: name: secret-dev namespace: ch-object-dev stringData: AccessKeyID: <your AWS bucket access key id> SecretAccessKey: <your AWS bucket secret access key> Region: <your AWS bucket region> type: Opaque
더 이상 사용되지 않음: kind: PlacementRule
및 kind: Subscription
이 추가된 다음 샘플 YAML에서 볼 수 있듯이 다른 AWS 서브스크립션 및 배치 규칙 오브젝트를 계속 생성할 수 있습니다.
apiVersion: apps.open-cluster-management.io/v1 kind: PlacementRule metadata: name: towhichcluster namespace: obj-sub-ns spec: clusterSelector: {} --- apiVersion: apps.open-cluster-management.io/v1 kind: Subscription metadata: name: obj-sub namespace: obj-sub-ns spec: channel: ch-object-dev/object-dev placement: placementRef: kind: PlacementRule name: towhichcluster
오브젝트 버킷의 특정 하위 폴더 내의 오브젝트를 구독할 수도 있습니다. 서브스크립션에 subfolder
주석을 추가하여 오브젝트 버킷 서브스크립션이 하위 경로의 모든 리소스만 적용하도록 강제 적용합니다.
subfolder-1
이 있는 주석을 bucket-path
로 참조하십시오.
annotations: apps.open-cluster-management.io/bucket-path: <subfolder-1>
하위 폴더는 다음 전체 샘플을 참조하십시오.
apiVersion: apps.open-cluster-management.io/v1 kind: Subscription metadata: annotations: apps.open-cluster-management.io/bucket-path: subfolder1 name: obj-sub namespace: obj-sub-ns labels: name: obj-sub spec: channel: ch-object-dev/object-dev placement: placementRef: kind: PlacementRule name: towhichcluster
1.4.3.5. 오브젝트 스토리지를 사용하여 서브스크립션을 삭제한 후 배포된 리소스 유지
오브젝트 스토리지 리포지터리를 사용하여 서브스크립션을 생성할 때 do-not-delete
주석을 추가하여 서브스크립션을 삭제한 후 특정 배포된 리소스를 유지할 수 있습니다. do-not-delete
주석은 최상위 배포 리소스에서만 작동합니다. do-not-delete
주석을 추가하려면 다음 단계를 완료합니다.
- 하나 이상의 리소스를 배포하는 서브스크립션을 생성합니다.
서브스크립션을 삭제한 후에도 유지하려는 리소스 또는 리소스에 다음 주석을 추가합니다.
apps.open-cluster-management.io/do-not-delete: 'true'
다음 예제를 참조하십시오.
apiVersion: v1 kind: PersistentVolumeClaim metadata: annotations: apps.open-cluster-management.io/do-not-delete: 'true' apps.open-cluster-management.io/hosting-subscription: sub-ns/subscription-example apps.open-cluster-management.io/reconcile-option: merge pv.kubernetes.io/bind-completed: "yes"
서브스크립션을 삭제한 후에도 다른 리소스가 삭제되는 동안 do-not-delete
주석이 있는 리소스가 여전히 존재합니다.
참고: 네임스페이스에 바인딩되는 do-not-delete
주석을 사용하여 배포된 리소스입니다. 따라서 나머지 리소스를 제거할 때까지 네임스페이스를 삭제할 수 없습니다.