18.2. 컨테이너 그룹


Ansible Automation Platform은 자동화 컨트롤러가 독립 실행형, 가상 환경 또는 컨테이너에 설치되었는지 여부에 관계없이 자동화 컨트롤러에서 작업을 실행할 수 있는 컨테이너 그룹을 지원합니다. 컨테이너 그룹은 가상 환경 내에서 리소스 풀 역할을 합니다. OpenShift 컨테이너를 가리키는 인스턴스 그룹을 생성할 수 있습니다. 이러한 작업은 플레이북 실행 기간 동안만 존재하는 Pod로 온디맨드로 프로비저닝되는 작업 환경입니다. 이를 임시 실행 모델이라고 하며, 모든 작업이 새 환경에서 실행되도록 합니다.

경우에 따라 컨테이너 그룹을 "항상"으로 설정할 수 있으며, 이 경우 인스턴스 생성을 통해 구성할 수 있습니다.

참고

자동화 컨트롤러 4.0이 다시 기본값으로 되돌리기 전에 버전에서 업그레이드된 컨테이너 그룹은 마이그레이션의 모든 사용자 지정 Pod 정의를 지우고 이전 Pod 정의를 제거합니다.

컨테이너 그룹은 실행 환경의 실행 환경과는 다르며 가상 환경을 사용하지 않습니다. 자세한 내용은 실행 환경을 참조하십시오.

18.2.1. 컨테이너 그룹 생성

ContainerGroup 은 OpenShift 클러스터에 연결할 수 있는 관련 인증 정보가 있는 InstanceGroup 의 유형입니다.

사전 요구 사항

  • 시작할 수 있는 네임스페이스입니다. 모든 클러스터에는 "default" 네임스페이스가 있지만 특정 네임스페이스를 사용할 수 있습니다.
  • 이 네임스페이스에서 Pod를 시작하고 관리할 수 있는 역할이 있는 서비스 계정입니다.
  • 프라이빗 레지스트리에서 실행 환경을 사용하고 자동화 컨트롤러에 컨테이너 레지스트리 인증 정보가 있는 경우 서비스 계정에는 네임스페이스에서 시크릿을 가져오고, 생성하고, 삭제하는 역할도 필요합니다. 이러한 역할을 서비스 계정에 부여하지 않으려면 ImagePullSecrets 를 사전 생성하여 ContainerGroup 의 Pod 사양에 지정할 수 있습니다. 이 경우 실행 환경에 컨테이너 레지스트리 인증 정보가 연결되어 있지 않아야 합니다. 또는 자동화 컨트롤러에서 네임스페이스에서 시크릿을 생성하려고 시도하지 않아야 합니다.
  • 해당 서비스 계정과 연결된 토큰입니다. OpenShift 또는 Kubernetes 전달자 토큰입니다.
  • 클러스터와 연결된 CA 인증서입니다.

다음 절차에서는 자동화 컨트롤러를 통해 컨테이너 그룹에서 작업을 실행하는 데 사용할 OpenShift 클러스터 또는 Kubernetes에서 서비스 계정을 생성하는 방법을 설명합니다. 서비스 계정이 생성되면 해당 인증 정보가 OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보 형태로 자동화 컨트롤러에 제공됩니다.

프로세스

  1. 서비스 계정을 생성하려면 다음 샘플 서비스 계정 예제인 containergroup sa 를 다운로드하여 사용하여 인증 정보를 얻으려면 필요에 따라 변경합니다.

    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: containergroup-service-account
      namespace: containergroup-namespace
    ---
    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: role-containergroup-service-account
      namespace: containergroup-namespace
    rules:
    - apiGroups: [""]
      resources: ["pods"]
      verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    - apiGroups: [""]
      resources: ["pods/log"]
      verbs: ["get"]
    - apiGroups: [""]
      resources: ["pods/attach"]
      verbs: ["get", "list", "watch", "create"]
    ---
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: role-containergroup-service-account-binding
      namespace: containergroup-namespace
    subjects:
    - kind: ServiceAccount
      name: containergroup-service-account
      namespace: containergroup-namespace
    roleRef:
      kind: Role
      name: role-containergroup-service-account
      apiGroup: rbac.authorization.k8s.io
  2. containergroup-sa.yml:의 구성을 적용합니다.

    oc apply -f containergroup-sa.yml
  3. 서비스 계정과 연결된 시크릿 이름을 가져옵니다.

    export SA_SECRET=$(oc get sa containergroup-service-account -o json | jq '.secrets[0].name' | tr -d '"')
  4. 시크릿에서 토큰을 가져옵니다.

    oc get secret $(echo ${SA_SECRET}) -o json | jq '.data.token' | xargs | base64 --decode > containergroup-sa.token
  5. CA 인증서를 가져옵니다.

    oc get secret $SA_SECRET -o json | jq '.data["ca.crt"]' | xargs | base64 --decode > containergroup-ca.crt
  6. containergroup-sa.tokencontainergroup-ca.crt 의 콘텐츠를 사용하여 컨테이너 그룹에 필요한 OpenShift 또는 Kubernetes API 전달자 토큰에 대한 정보를 제공합니다.

컨테이너 그룹을 생성하려면 컨테이너 그룹과 함께 사용할 OpenShift 또는 Kubernetes API 전달자 토큰 인증 정보를 생성합니다. 자세한 내용은 새 인증 정보 생성 을 참조하십시오.

프로세스

  1. 탐색 패널에서 자동화 실행 인프라 인스턴스 그룹을 선택합니다.
  2. Create group 을 클릭하고 Create container group 을 선택합니다.
  3. 새 컨테이너 그룹의 이름을 입력하고 이전에 생성된 인증 정보를 선택하여 컨테이너 그룹에 연결합니다.
  4. 컨테이너 그룹 생성을 클릭합니다.

18.2.2. Pod 사양 사용자 정의

Ansible Automation Platform은 간단한 기본 Pod 사양을 제공하지만 기본 Pod 사양을 재정의하는 사용자 정의 YAML 또는 JSON 문서를 제공할 수 있습니다. 이 필드는 ImagePullSecrets 와 같은 사용자 지정 필드를 사용하여 유효한 Pod JSON 또는 YAML로 "serialized"할 수 있습니다. 전체 옵션 목록은 OpenShift 문서의 Pod 및 서비스 섹션에서 확인할 수 있습니다.

프로세스

  1. 탐색 패널에서 자동화 실행 인프라 인스턴스 그룹을 선택합니다.
  2. Create group 을 클릭하고 Create container group 을 선택합니다.
  3. Pod 사양 사용자 지정 옵션을 선택합니다.
  4. Pod 사양 덮어쓰기 필드에 사용자 정의 Kubernetes 또는 OpenShift Pod 사양 을 입력합니다.

    Pod 사양 사용자 정의
  5. 컨테이너 그룹 생성을 클릭합니다.
참고

작업 시작 시 이미지는 작업과 연결된 실행 환경에 따라 결정됩니다. 컨테이너 레지스트리 인증 정보를 실행 환경과 연결하는 경우 자동화 컨트롤러는 ImagePullSecret 을 만들어 이미지를 가져오려고 시도합니다. 서비스 계정에 시크릿을 관리할 수 있는 권한을 부여하지 않으려면 ImagePullSecret 을 사전 생성하여 Pod 사양에 지정하고 사용된 실행 환경에서 인증 정보를 생략해야 합니다.

자세한 내용은 Red Hat Container Registry Authentication 문서 의 다른 보안 레지스트리의 이미지를 참조하도록 포드 허용 섹션을 참조하십시오.

컨테이너 그룹을 성공적으로 생성하면 새로 생성된 컨테이너 그룹의 세부 정보 탭이 유지되므로 컨테이너 그룹 정보를 검토하고 편집할 수 있습니다. 인스턴스 그룹 목록 뷰에서 Edit 아이콘을 클릭하면 열리는 메뉴와 같습니다.

인스턴스를 편집하고 이 인스턴스 그룹과 연결된 작업을 검토할 수도 있습니다.

인스턴스 그룹이 성공적으로 생성됨

그에 따라 컨테이너 그룹과 인스턴스 그룹의 레이블이 지정됩니다.

18.2.3. 컨테이너 그룹 기능 확인

컨테이너 배포 및 종료를 확인하려면 다음을 수행합니다.

프로세스

  1. mock 인벤토리를 생성하고 인스턴스 그룹 필드에 있는 컨테이너 그룹의 이름을 채워 컨테이너 그룹을 이 그룹에 연결합니다. 자세한 내용은 새 인벤토리 추가를 참조하십시오.

    테스트 인벤토리 생성
  2. 다음 변수를 사용하여 인벤토리에서 localhost 호스트를 생성합니다.

    {'ansible_host': '127.0.0.1', 'ansible_connection': 'local'}
  3. ping 또는 setup 모듈을 사용하여 localhost에 임시 작업을 시작합니다. Machine Credential 필드가 필수지만 이 테스트에서 선택한 것은 중요하지 않습니다.

    임시 localhost 시작
    임시 localhost 2 시작

작업 세부 정보 뷰에서 애드혹 작업 중 하나를 사용하여 컨테이너에 성공적으로 도달했음을 확인할 수 있습니다.

OpenShift UI가 있는 경우 Pod가 배포 및 종료될 때 표시되고 사라지는 것을 확인할 수 있습니다. CLI를 사용하여 네임스페이스에서 get Pod 작업을 수행하여 동일한 이벤트가 발생하는 것을 실시간으로 확인할 수도 있습니다.

18.2.4. 컨테이너 그룹 작업 보기

컨테이너 그룹과 연결된 작업을 실행하면 세부 정보 탭에서 해당 작업의 세부 정보를 확인할 수 있습니다. 연결된 컨테이너 그룹 및 실행 환경을 볼 수도 있습니다.

프로세스

  1. 탐색 패널에서 자동화 실행 선택합니다.
  2. 컨테이너 그룹 작업을 볼 작업을 클릭합니다.
  3. 세부 정보 탭을 클릭합니다.
인스턴스 그룹 작업 세부 정보

18.2.5. Kubernetes API 실패 상태

컨테이너 그룹을 실행하고 Kubernetes API에서 리소스 할당량을 초과했다고 응답하는 경우 자동화 컨트롤러는 작업을 보류 상태로 유지합니다. 기타 실패로 인해 다음 예와 같이 실패 이유를 표시하는 Error Details 필드가 역추적됩니다.

Error creating pod: pods is forbidden: User "system: serviceaccount: aap:example" cannot create resource "pods" in API group "" in the namespace "aap"

18.2.6. 컨테이너 용량 제한

컨테이너의 용량 제한 및 할당량은 Kubernetes API의 오브젝트로 정의됩니다.

  • 지정된 네임스페이스 내의 모든 Pod에 제한을 설정하려면 LimitRange 오브젝트를 사용합니다. 자세한 내용은 OpenShift 문서의 할당량 및 제한 범위 섹션을 참조하십시오.
  • 자동화 컨트롤러에서 시작한 포드 정의에 제한을 직접 설정하려면 OpenShift 문서 의 포드 사양 사용자 지정컴퓨팅 리소스 섹션을 참조하십시오.
참고

컨테이너 그룹은 일반 노드가 사용하는 용량 알고리즘을 사용하지 않습니다. 작업 템플릿 수준에서 포크 수를 설정해야 합니다. 자동화 컨트롤러에서 포크를 구성하면 해당 설정이 컨테이너로 전달됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.