검색

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

download PDF

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

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

다음 주제를 참조하여 앱 관리를 시작하십시오.

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

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

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

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

    참고:

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

1.4.1.1. GitOps 패턴

클러스터를 관리하기 위해 Git 리포지토리를 조정하기 위한 모범 사례를 알아보십시오.

1.4.1.1.1. GitOps 예제 디렉터리

이 예제의 폴더는 정의되고 이름이 지정되며, 관리되는 클러스터에서 실행되는 애플리케이션 또는 구성이 포함된 각 폴더가 있습니다.

  • 루트 폴더 managed-subscriptions: 공통 관리 폴더를 대상으로 하는 서브스크립션이 포함되어 있습니다.
  • 하위 폴더 앱/: managed-clusters 에 배치를 사용하여 공통 관리 폴더의 애플리케이션을 구독하는 데 사용됩니다.
  • 하위 폴더 config/: managed-clusters 에 배치를 사용하여 공통 관리 폴더의 구성을 구독하는 데 사용됩니다.
  • 하위 폴더 정책/: 배치와 함께 관리 클러스터에 정책을 적용하는 데 사용됩니다.
  • folder root-subscription/: managed-subscriptions 폴더를 서브스크립션하는 hub 클러스터의 초기 서브스크립션입니다.

디렉터리의 예제를 참조하십시오.

common-managed/
    apps/
      app-name-0/
      app-name-1/
    config/
      config001/
      config002/

managed-subscriptions
    apps/
    config/
    policies/

root-subscription/
1.4.1.1.2. GitOps flow

디렉터리 구조는 root-subscription > managed-subscriptions > common-managed 용으로 생성됩니다.

  1. root-subscription/ 의 단일 서브스크립션은 CLI 터미널에서 hub 클러스터로 적용됩니다.
  2. 서브스크립션 및 정책은 managed-subscription 폴더의 hub 클러스터에 다운로드하여 적용됩니다.

    • 그런 다음 managed-subscription 폴더의 서브스크립션 및 정책은 배치에 따라 관리 클러스터에서 작업을 수행합니다.
    • placement는 각 서브스크립션 또는 정책에 영향을 미치는 관리 클러스터를 결정합니다.
    • 서브스크립션 또는 정책은 배치와 일치하는 클러스터에 대한 내용을 정의합니다.
  3. 서브스크립션은 공통 관리 폴더의 내용을 배치 규칙과 일치하는 managed-cluster 에 적용합니다. 이는 배치 규칙과 일치하는 모든 관리 클러스터에 공통 애플리케이션 및 구성도 적용합니다.
1.4.1.1.3. 더 많은 예

1.4.2. Helm 리포지터리를 사용하여 앱 관리

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

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

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

1.4.2.1. YAML 샘플

다음 예제 채널 정의에서는 Helm 리포지터리를 채널로 추상화합니다.

참고: 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.3. 오브젝트 스토리지 리포지토리를 사용하여 앱 관리

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

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

  1. 콘솔 탐색 메뉴에서 애플리케이션을 클릭하여 나열된 애플리케이션을 확인하고 새 애플리케이션을 생성합니다.
  2. 선택 사항: 생성할 애플리케이션 유형을 선택한 후 YAML: On 을 선택하여 애플리케이션을 생성하고 편집할 콘솔에서 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. Create Bucket 을 클릭하여 버킷을 생성합니다.
  4. AWS S3 오브젝트 버킷을 연결하는 데 필요한 AWS 리전 을 선택합니다.
  5. 버킷 액세스 토큰을 생성합니다.
  6. 탐색 모음에서 사용자 이름으로 이동한 다음 드롭다운 메뉴에서 My Security Credentials 를 선택합니다.
  7. AWS IAM 인증 정보 탭에서 CLI, SDK 및 API 액세스에 대한 액세스 키로 이동하고 액세스 키 생성을 클릭합니다.
  8. 액세스 키 ID 를 저장, 시크릿 액세스 키.
  9. 오브젝트 YAML 파일을 버킷에 업로드합니다.

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

  1. 시크릿을 사용하여 오브젝트 버킷 유형 채널을 생성하여 AWS 버킷 연결을 위한 AccessKeyID,SecretAccessKeyRegion 을 지정합니다. 세 개의 필드는 AWS 버킷이 생성될 때 생성됩니다.
  2. URL을 추가합니다. URL은 URL에 s3 :// 또는 s 3 및 aws 키워드가 포함된 경우 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 API와 버킷을 연결하는 데 AWS S3 오브젝트 버킷 URL이 필요하지 않습니다.

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-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
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.