검색

1.4. 애플리케이션 리소스 관리

download PDF

콘솔에서 Git 리포지토리, Helm 리포지토리 및 오브젝트 스토리지 리포지토리를 사용하여 애플리케이션을 생성할 수 있습니다.

중요: Git 채널은 Helm, 오브젝트 스토리지 및 기타 Git 네임스페이스와 다른 모든 채널 유형과 네임스페이스를 공유할 수 있습니다.

앱 관리를 시작하려면 다음 항목을 참조하십시오.

1.4.1. Git 리포지토리를 사용하여 앱 관리

애플리케이션을 사용하여 Kubernetes 리소스를 배포할 때 리소스는 특정 리포지토리에 있습니다. 다음 절차에서 Git 리포지토리에서 리소스를 배포하는 방법을 알아봅니다. 애플리케이션 모델 및 정의에서 애플리케이션 모델에 대해 자세히 알아보십시오.

사용자 필수 액세스: 애플리케이션을 생성할 수 있는 사용자 역할입니다. 역할이 할당된 작업만 수행할 수 있습니다. 역할 기반 액세스 제어 설명서에서 액세스 요구 사항에 대해 알아봅니다.

  1. 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
  2. 선택 사항: 생성할 애플리케이션 종류를 선택한 후 YAML 을 선택하여 애플리케이션을 생성하고 편집할 때 콘솔에서 YAML을 볼 수 있습니다. 주제의 뒷부분에 있는 YAML 샘플을 참조하십시오.
  3. 사용할 수 있는 리포지토리 목록에서 Git 을 선택하고 올바른 필드에 값을 입력합니다. 콘솔의 지침에 따라 입력에 따라 YAML 편집기 변경 값을 확인합니다.

    참고:

    • 기존 Git 리포지토리 경로를 선택하는 경우 개인 리포지토리인 경우 연결 정보를 지정할 필요가 없습니다. 연결 정보는 미리 설정되어 있으므로 이러한 값을 볼 필요가 없습니다.
    • 새 Git 리포지토리 경로를 입력하면 개인 Git 리포지토리인 경우 Git 연결 정보를 선택적으로 입력할 수 있습니다.
    • 조정 옵션을 확인합니다. merge 옵션은 기본 선택이며, 이는 새 필드가 추가되고 리소스에서 기존 필드가 업데이트됨을 의미합니다. 교체 하도록 선택할 수 있습니다. replace 옵션을 사용하면 기존 리소스가 Git 소스로 교체됩니다. 서브스크립션 조정 비율이 낮게 설정되면 서브스크립션된 애플리케이션 리소스를 조정하는 데 최대 1시간이 걸릴 수 있습니다. 단일 애플리케이션 뷰의 카드에서 동기화 를 클릭하여 수동으로 조정합니다. off 로 설정하면 조정되지 않습니다.
  4. 선택적 사전 배포 및 배포 후 작업을 설정합니다. 서브스크립션 이전 또는 이후에 실행할 Ansible Automation Platform 작업이 있는 경우 Ansible Automation Platform 시크릿을 설정합니다. 작업을 정의하는 Ansible Automation Platform 작업은 이 리포지토리의 prehookposthook 폴더 내에 배치해야 합니다.
  5. 콘솔을 사용하여 인증 정보를 추가해야 하는 경우 인증 정보 추가 를 클릭할 수 있습니다. 콘솔의 지침을 따르십시오. 인증 정보 관리 개요 에서 자세한 내용을 참조하십시오.
  6. 생성을 클릭합니다.
  7. 세부 정보 및 토폴로지를 볼 수 있는 개요 페이지로 리디렉션됩니다.

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 주석을 추가하려면 다음 단계를 완료합니다.

  1. 하나 이상의 리소스를 배포하는 서브스크립션을 생성합니다.
  2. 서브스크립션을 삭제한 후에도 유지하려는 리소스 또는 리소스에 다음 주석을 추가합니다.

    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 리포지토리에서 리소스를 배포하는 방법을 알아봅니다. 애플리케이션 모델 및 정의에서 애플리케이션 모델에 대해 자세히 알아보십시오.

사용자 필수 액세스: 애플리케이션을 생성할 수 있는 사용자 역할입니다. 역할이 할당된 작업만 수행할 수 있습니다. 역할 기반 액세스 제어 설명서에서 액세스 요구 사항에 대해 알아봅니다.

  1. 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
  2. 선택 사항: 생성할 애플리케이션 종류를 선택한 후 YAML 을 선택하여 애플리케이션을 생성하고 편집할 때 콘솔에서 YAML을 볼 수 있습니다. 주제의 뒷부분에 있는 YAML 샘플을 참조하십시오.
  3. 사용할 수 있는 리포지토리 목록에서 Helm 을 선택하고 올바른 필드의 값을 입력합니다. 콘솔의 지침에 따라 입력에 따라 YAML 편집기 변경 값을 확인합니다.
  4. 생성을 클릭합니다.
  5. 세부 정보 및 토폴로지를 볼 수 있는 개요 페이지로 리디렉션됩니다.

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 리소스를 배포할 때 리소스는 특정 리포지토리에 있습니다. 애플리케이션 모델 및 정의에서 애플리케이션 모델에 대해 자세히 알아보십시오.

사용자 필수 액세스: 애플리케이션을 생성할 수 있는 사용자 역할입니다. 역할이 할당된 작업만 수행할 수 있습니다. 역할 기반 액세스 제어 설명서에서 액세스 요구 사항에 대해 알아봅니다.

  1. 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
  2. 선택 사항: 생성할 애플리케이션 종류를 선택한 후 YAML 을 선택하여 애플리케이션을 생성하고 편집할 때 콘솔에서 YAML을 볼 수 있습니다. 주제의 뒷부분에 있는 YAML 샘플을 참조하십시오.
  3. 사용할 수 있는 리포지토리 목록에서 오브젝트 저장소를 선택하고 올바른 필드의 값을 입력합니다. 콘솔의 지침에 따라 입력에 따라 YAML 편집기 변경 값을 확인합니다.
  4. 생성을 클릭합니다.
  5. 세부 정보 및 토폴로지를 볼 수 있는 개요 페이지로 리디렉션됩니다.

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) 오브젝트 스토리지 서비스에 정의된 리소스를 서브스크립션하기 위해 서브스크립션을 설정할 수 있습니다. 다음 절차를 참조하십시오.

  1. AWS 계정, 사용자 이름 및 암호를 사용하여 AWS 콘솔에 로그인합니다.
  2. Amazon S3 > Buckets 로 이동합니다. 버킷 홈 페이지로 이동합니다.
  3. 버킷 생성 을 클릭하여 버킷을 생성합니다.
  4. AWS S3 오브젝트 버킷 연결에 필요한 AWS 리전 을 선택합니다.
  5. 버킷 액세스 토큰을 생성합니다.
  6. 탐색 모음에서 사용자 이름으로 이동한 다음 드롭다운 메뉴에서 내 보안 자격 증명을 선택합니다.
  7. AWS IAM 인증 정보 탭에서 CLI, SDK 및 API 액세스에 대한 액세스 키로 이동하여 액세스 키 생성 을 클릭합니다.
  8. 액세스 키 ID , 시크릿 액세스 키를 저장합니다.
  9. 오브젝트 YAML 파일을 버킷에 업로드합니다.

1.4.3.3. AWS 버킷의 오브젝트 구독

  1. 시크릿이 있는 오브젝트 버킷 유형 채널을 생성하여 AWS 버킷 연결을 위한 AccessKeyID,SecretAccessKey리전 을 지정합니다. 세 개의 필드는 AWS 버킷이 생성될 때 생성됩니다.
  2. URL을 추가합니다. URL에 s3 :// 또는 s 3 및 aws 키워드가 포함된 경우 URL은 AWS S3 버킷의 채널을 식별합니다. 예를 들어 다음 버킷 URL에 AWS s3 버킷 식별자가 있는지 확인합니다.

    https://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: PlacementRulekind: 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 주석을 추가하려면 다음 단계를 완료합니다.

  1. 하나 이상의 리소스를 배포하는 서브스크립션을 생성합니다.
  2. 서브스크립션을 삭제한 후에도 유지하려는 리소스 또는 리소스에 다음 주석을 추가합니다.

    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 주석을 사용하여 배포된 리소스입니다. 따라서 나머지 리소스를 제거할 때까지 네임스페이스를 삭제할 수 없습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.