4.2. 웹 콘솔을 사용하여 OpenShift 샌드박스 컨테이너 배포


OpenShift Container Platform 웹 콘솔을 사용하여 다음 작업을 수행하여 Azure에 OpenShift 샌드박스 컨테이너를 배포할 수 있습니다.

  1. OpenShift 샌드박스 컨테이너 Operator를 설치합니다.
  2. 피어 Pod 시크릿을 생성합니다.
  3. 피어 Pod 구성 맵을 생성합니다.
  4. Azure 시크릿을 생성합니다.
  5. KataConfig 사용자 지정 리소스를 생성합니다.
  6. OpenShift 샌드박스 컨테이너 워크로드 오브젝트를 구성합니다.

4.2.1. OpenShift 샌드박스 컨테이너 Operator 설치

OpenShift Container Platform 웹 콘솔을 사용하여 OpenShift 샌드박스 컨테이너 Operator를 설치할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.

프로세스

  1. 웹 콘솔에서 Operator OperatorHub 로 이동합니다.
  2. 키워드로 필터링 필드에 OpenShift sandboxed containers를 입력합니다.
  3. OpenShift 샌드박스 컨테이너 Operator 타일을 선택하고 설치를 클릭합니다.
  4. Operator 설치 페이지의 사용 가능한 업데이트 채널 옵션 목록에서 stable 을 선택합니다.
  5. 설치된 네임스페이스 용으로 Operator 권장 네임스페이스 가 선택되어 있는지 확인합니다. 이렇게 하면 필수 openshift-sandboxed-containers-operator 네임스페이스에 Operator가 설치됩니다. 이 네임스페이스가 아직 존재하지 않으면 자동으로 생성됩니다.

    참고

    openshift-sandboxed-containers-operator 이외의 네임스페이스에 OpenShift 샌드박스 컨테이너 Operator를 설치하려고 하면 설치가 실패합니다.

  6. 승인 전략에 대해 자동 이 선택되어 있는지 확인합니다. Automatic 은 기본값이며 새 z-stream 릴리스를 사용할 수 있을 때 OpenShift 샌드박스 컨테이너에 대한 자동 업데이트를 활성화합니다.
  7. 설치를 클릭합니다.
  8. Operator 설치된 Operator 로 이동하여 Operator가 설치되었는지 확인합니다.

4.2.2. 피어 Pod 보안 생성

OpenShift 샌드박스 컨테이너에 대한 피어 Pod 시크릿을 생성해야 합니다.

시크릿은 Pod VM(가상 머신) 이미지 및 피어 Pod 인스턴스를 생성하기 위한 인증 정보를 저장합니다.

기본적으로 OpenShift 샌드박스 컨테이너 Operator는 클러스터를 생성하는 데 사용되는 인증 정보를 기반으로 보안을 생성합니다. 그러나 다른 인증 정보를 사용하는 보안을 수동으로 생성할 수 있습니다.

사전 요구 사항

  • Azure CLI 도구를 설치하고 구성했습니다.

프로세스

  1. 다음 명령을 실행하여 Azure 서브스크립션 ID를 검색합니다.

    $ AZURE_SUBSCRIPTION_ID=$(az account list --query "[?isDefault].id" \
      -o tsv) && echo "AZURE_SUBSCRIPTION_ID: \"$AZURE_SUBSCRIPTION_ID\""
  2. 다음 명령을 실행하여 RBAC 콘텐츠를 생성합니다.

    $ az ad sp create-for-rbac --role Contributor --scopes /subscriptions/$AZURE_SUBSCRIPTION_ID \
      --query "{ client_id: appId, client_secret: password, tenant_id: tenant }"

    출력 예

    {
      "client_id": `AZURE_CLIENT_ID`,
      "client_secret": `AZURE_CLIENT_SECRET`,
      "tenant_id": `AZURE_TENANT_ID`
    }

  3. 보안 오브젝트에 사용할 RBAC 출력을 기록합니다.
  4. OpenShift Container Platform 웹 콘솔에서 Operator 설치된 Operator로 이동합니다.
  5. OpenShift 샌드박스 컨테이너 Operator 타일을 클릭합니다.
  6. 오른쪽 상단에 있는 가져오기 아이콘(+)을 클릭합니다.
  7. YAML 가져오기 창에서 다음 YAML 매니페스트를 붙여넣습니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: peer-pods-secret
      namespace: openshift-sandboxed-containers-operator
    type: Opaque
    stringData:
      AZURE_CLIENT_ID: "<azure_client_id>" 1
      AZURE_CLIENT_SECRET: "<azure_client_secret>" 2
      AZURE_TENANT_ID: "<azure_tenant_id>" 3
      AZURE_SUBSCRIPTION_ID: "<azure_subscription_id>" 4
    1
    AZURE_CLIENT_ID 값을 지정합니다.
    2
    AZURE_CLIENT_SECRET 값을 지정합니다.
    3
    AZURE_TENANT_ID 값을 지정합니다.
    4
    AZURE_SUBSCRIPTION_ID 값을 지정합니다.
  8. 저장을 클릭하여 변경 사항을 적용합니다.
  9. 워크로드 시크릿 으로 이동하여 피어 Pod 시크릿을 확인합니다.

4.2.3. 피어 Pod 구성 맵 생성

OpenShift 샌드박스 컨테이너에 대한 피어 Pod 구성 맵을 생성해야 합니다.

프로세스

  1. Azure 인스턴스에서 다음 값을 가져옵니다.

    1. Azure 리소스 그룹을 검색하고 기록합니다.

      $ AZURE_RESOURCE_GROUP=$(oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.azure.resourceGroupName}') && echo "AZURE_RESOURCE_GROUP: \"$AZURE_RESOURCE_GROUP\""
    2. Azure VNet 이름을 검색하고 기록합니다.

      $ AZURE_VNET_NAME=$(az network vnet list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Name:name}" --output tsv)

      이 값은 Azure 서브넷 ID를 검색하는 데 사용됩니다.

    3. Azure 서브넷 ID를 검색하고 기록합니다.

      $ AZURE_SUBNET_ID=$(az network vnet subnet list --resource-group ${AZURE_RESOURCE_GROUP} --vnet-name $AZURE_VNET_NAME --query "[].{Id:id} | [? contains(Id, 'worker')]" --output tsv) && echo "AZURE_SUBNET_ID: \"$AZURE_SUBNET_ID\""
    4. Azure NSS(Network Security Group) ID를 검색하고 기록합니다.

      $ AZURE_NSG_ID=$(az network nsg list --resource-group ${AZURE_RESOURCE_GROUP} --query "[].{Id:id}" --output tsv) && echo "AZURE_NSG_ID: \"$AZURE_NSG_ID\""
    5. Azure 리전을 검색하고 기록합니다.

      $ AZURE_REGION=$(az group show --resource-group ${AZURE_RESOURCE_GROUP} --query "{Location:location}" --output tsv) && echo "AZURE_REGION: \"$AZURE_REGION\""
  2. OpenShift Container Platform 웹 콘솔에서 Operator 설치된 Operator로 이동합니다.
  3. Operator 목록에서 OpenShift 샌드박스 컨테이너 Operator를 선택합니다.
  4. 오른쪽 상단에 있는 가져오기 아이콘(+)을 클릭합니다.
  5. YAML 가져오기 창에서 다음 YAML 매니페스트를 붙여넣습니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: peer-pods-cm
      namespace: openshift-sandboxed-containers-operator
    data:
      CLOUD_PROVIDER: "azure"
      VXLAN_PORT: "9000"
      AZURE_INSTANCE_SIZE: "Standard_B2als_v2" 1
      AZURE_INSTANCE_SIZES: "Standard_B2als_v2,Standard_D2as_v5,Standard_D4as_v5,Standard_D2ads_v5" 2
      AZURE_SUBNET_ID: "<azure_subnet_id>" 3
      AZURE_NSG_ID: "<azure_nsg_id>" 4
      PROXY_TIMEOUT: "5m"
      AZURE_IMAGE_ID: "<azure_image_id>" 5
      AZURE_REGION: "<azure_region>" 6
      AZURE_RESOURCE_GROUP: "<azure_resource_group>" 7
      DISABLECVM: "true"
    1
    인스턴스 크기가 워크로드에 정의되지 않은 경우 이 값은 기본값입니다.
    2
    Pod를 생성할 때 지정할 수 있는 모든 인스턴스 크기를 나열합니다. 이를 통해 더 적은 메모리와 더 적은 CPU 또는 대규모 워크로드의 인스턴스 크기가 필요한 워크로드에 대해 더 작은 인스턴스 크기를 정의할 수 있습니다.
    3
    검색한 AZURE_SUBNET_ID 값을 지정합니다.
    4
    검색한 AZURE_NSG_ID 값을 지정합니다.
    5
    선택 사항: 기본적으로 클러스터 인증 정보를 기반으로 Azure 이미지 ID를 사용하여 KataConfig CR을 실행할 때 이 값이 채워집니다. 자체 Azure 이미지를 생성하는 경우 올바른 이미지 ID를 지정합니다.
    6
    검색한 AZURE_REGION 값을 지정합니다.
    7
    검색한 AZURE_RESOURCE_GROUP 값을 지정합니다.
  6. 저장을 클릭하여 변경 사항을 적용합니다.
  7. 워크로드 ConfigMap 으로 이동하여 새 구성 맵을 확인합니다.

4.2.4. Azure 시크릿 생성

Azure VM(가상 머신) 생성 API에 필요한 SSH 키 시크릿을 생성해야 합니다. Azure에는 SSH 공개 키만 필요합니다. 기밀 컨테이너는 VM에서 SSH를 비활성화하므로 키가 VM에 영향을 미치지 않습니다.

프로세스

  1. 다음 명령을 실행하여 SSH 키 쌍을 생성합니다.

    $ ssh-keygen -f ./id_rsa -N ""
  2. OpenShift Container Platform 웹 콘솔에서 워크로드 시크릿 으로 이동합니다.
  3. 시크릿 페이지에서 openshift-sandboxed-containers-operator 프로젝트에 있는지 확인합니다.
  4. 생성을 클릭하고 키/값 시크릿을 선택합니다.
  5. 시크릿 이름 필드에 ssh-key-secret 을 입력합니다.
  6. 필드에 id_rsa.pub 를 입력합니다.
  7. 필드에 공개 SSH 키를 붙여넣습니다.
  8. 생성을 클릭합니다.
  9. 생성한 SSH 키를 삭제합니다.

    $ shred --remove id_rsa.pub id_rsa

4.2.5. KataConfig 사용자 지정 리소스 생성

KataConfig CR(사용자 정의 리소스)을 생성하여 작업자 노드에 kata-remoteRuntimeClass 로 설치해야 합니다.

kata-remote 런타임 클래스는 기본적으로 모든 작업자 노드에 설치됩니다. 특정 노드에 kata-remote 를 설치하려면 해당 노드에 레이블을 추가한 다음 KataConfig CR에 레이블을 정의할 수 있습니다.

OpenShift 샌드박스 컨테이너는 kata-remote 를 기본 런타임이 아닌 클러스터의 선택적 런타임으로 설치합니다.

중요

KataConfig CR을 생성하면 작업자 노드가 자동으로 재부팅됩니다. 재부팅에는 10분에서 60분 이상 걸릴 수 있습니다. 다음 요인은 재부팅 시간을 늘릴 수 있습니다.

  • 더 많은 작업자 노드가 있는 대규모 OpenShift Container Platform 배포
  • BIOS 및 Cryostat 유틸리티 활성화.
  • SSD가 아닌 하드 디스크 드라이브에 배포합니다.
  • 가상 노드가 아닌 베어 메탈과 같은 물리적 노드에 배포됩니다.
  • 느린 CPU 및 네트워크입니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
  • 선택 사항: 노드 자격 검사를 활성화하려면 Node Feature Discovery Operator를 설치했습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 Operator 설치된 Operator로 이동합니다.
  2. OpenShift 샌드박스 컨테이너 Operator를 선택합니다.
  3. KataConfig 탭에서 KataConfig 만들기 를 클릭합니다.
  4. 다음 세부 정보를 입력합니다.

    • 이름: 선택 사항: 기본 이름은 example-kataconfig 입니다.
    • labels: 선택 사항: KataConfig 리소스에 대한 특성을 식별하는 모든 관련 정보를 입력합니다. 각 레이블은 키-값 쌍을 나타냅니다.
    • enablePeerPods: 퍼블릭 클라우드, IBM Z® 및 IBM® LinuxONE 배포에는 선택합니다.
    • kataConfigPoolSelector. 선택 사항: 선택한 노드에 kata-remote 를 설치하려면 선택한 노드의 라벨에 일치하는 표현식을 추가합니다.

      1. kataConfigPoolSelector 영역을 확장합니다.
      2. kataConfigPoolSelector 영역에서 matchExpressions 를 확장합니다. 이는 라벨 선택기 요구 사항 목록입니다.
      3. matchExpressions 추가를 클릭합니다.
      4. 필드에 선택기가 적용되는 라벨 키를 입력합니다.
      5. Operator 필드에 레이블 값과의 키 관계를 입력합니다. 유효한 연산자는 In,NotIn,ExistsDoesNotExist 입니다.
      6. 영역을 확장한 다음 값 추가 를 클릭합니다.
      7. 필드에 레이블 값에 true 또는 false 를 입력합니다.
    • loglevel: kata-remote 런타임 클래스를 사용하여 노드에 대해 검색된 로그 데이터의 수준을 정의합니다.
  5. 생성을 클릭합니다. KataConfig CR이 생성되고 작업자 노드에 kata-remote 런타임 클래스를 설치합니다.

    설치를 확인하기 전에 kata-remote 설치가 완료되고 작업자 노드가 재부팅될 때까지 기다립니다.

검증

  1. KataConfig 탭에서 KataConfig CR을 클릭하여 세부 정보를 확인합니다.
  2. YAML 탭을 클릭하여 상태 스탠자를 확인합니다.

    상태 스탠자에는 조건kataNodes 키가 포함되어 있습니다. status.kataNodes 의 값은 노드 배열이며 각 노드는 특정 kata-remote 설치의 노드를 나열합니다. 업데이트가 있을 때마다 메시지가 표시됩니다.

  3. Reload (다시 로드)를 클릭하여 YAML을 새로 고칩니다.

    status.kataNodes 어레이의 모든 작업자가 설치조건.InProgress: False 를 지정하는 이유 없이 False를 표시하면 클러스터에 kata-remote 가 설치됩니다.

추가 리소스
Pod VM 이미지 확인

클러스터에 kata-remote 가 설치되면 OpenShift 샌드박스 컨테이너 Operator에서 피어 Pod를 생성하는 데 사용되는 Pod VM 이미지를 생성합니다. 이 프로세스는 클라우드 인스턴스에서 이미지가 생성되므로 시간이 오래 걸릴 수 있습니다. 클라우드 공급자에 대해 생성한 구성 맵을 확인하여 Pod VM 이미지가 성공적으로 생성되었는지 확인할 수 있습니다.

프로세스

  1. 워크로드 ConfigMap 으로 이동합니다.
  2. 공급자 구성 맵을 클릭하여 세부 정보를 확인합니다.
  3. YAML 탭을 클릭합니다.
  4. YAML 파일의 상태 스탠자를 확인합니다.

    AZURE_IMAGE_ID 매개변수가 채워지면 Pod VM 이미지가 성공적으로 생성되었습니다.

문제 해결

  1. 다음 명령을 실행하여 이벤트 로그를 검색합니다.

    $ oc get events -n openshift-sandboxed-containers-operator --field-selector involvedObject.name=osc-podvm-image-creation
  2. 다음 명령을 실행하여 작업 로그를 검색합니다.

    $ oc logs -n openshift-sandboxed-containers-operator jobs/osc-podvm-image-creation

문제를 해결할 수 없는 경우 Red Hat 지원 케이스를 제출하고 두 로그의 출력을 첨부합니다.

4.2.6. 워크로드 오브젝트 구성

kata-remote 를 다음 pod 템플릿 오브젝트의 런타임 클래스로 설정하여 OpenShift 샌드박스 컨테이너 워크로드 오브젝트를 구성해야 합니다.

  • Pod 오브젝트
  • ReplicaSet 오브젝트
  • ReplicationController 오브젝트
  • StatefulSet 오브젝트
  • Deployment 오브젝트
  • DeploymentConfig 오브젝트
중요

Operator 네임스페이스에 워크로드를 배포하지 마십시오. 이러한 리소스에 대한 전용 네임스페이스를 생성합니다.

YAML 파일에 주석을 추가하여 구성 맵에 정의된 기본 인스턴스 크기를 사용하여 워크로드를 배포해야 하는지 여부를 정의할 수 있습니다.

인스턴스 크기를 수동으로 정의하지 않으려면 사용 가능한 메모리에 따라 자동 인스턴스 크기를 사용하도록 주석을 추가할 수 있습니다.

사전 요구 사항

  • KataConfig CR(사용자 정의 리소스)을 생성했습니다.

프로세스

  1. OpenShift Container Platform 웹 콘솔에서 워크로드 워크로드 유형(예: Pod )으로 이동합니다.
  2. 워크로드 유형 페이지에서 오브젝트를 클릭하여 세부 정보를 확인합니다.
  3. YAML 탭을 클릭합니다.
  4. 다음 예와 같이 spec.runtimeClassName: kata-remote 를 각 pod 템플릿 워크로드 오브젝트의 매니페스트에 추가합니다.

    apiVersion: v1
    kind: <object>
    # ...
    spec:
      runtimeClassName: kata-remote
    # ...
  5. 수동으로 정의된 인스턴스 크기 또는 자동 인스턴스 크기를 사용하도록 pod-templated 오브젝트에 주석을 추가합니다.

    • 수동으로 정의한 인스턴스 크기를 사용하려면 다음 주석을 추가합니다.

      apiVersion: v1
      kind: <object>
      metadata:
        annotations:
          io.katacontainers.config.hypervisor.machine_type: "Standard_B2als_v2" 1
      # ...
      1
      구성 맵에서 정의한 인스턴스 크기를 지정합니다.
    • 자동 인스턴스 크기를 사용하려면 다음 주석을 추가합니다.

      apiVersion: v1
      kind: <Pod>
      metadata:
        annotations:
          io.katacontainers.config.hypervisor.default_vcpus: <vcpus>
          io.katacontainers.config.hypervisor.default_memory: <memory>
      # ...

      워크로드에서 사용할 수 있는 메모리 양을 정의합니다. 워크로드는 사용 가능한 메모리 크기에 따라 자동 인스턴스 크기에서 실행됩니다.

  6. 저장을 클릭하여 변경 사항을 적용합니다.

    OpenShift Container Platform은 워크로드 오브젝트를 생성하고 스케줄링을 시작합니다.

검증

  • pod-templated 오브젝트의 spec.runtimeClassName 필드를 검사합니다. 값이 kata-remote 이면 피어 Pod를 사용하여 OpenShift 샌드박스 컨테이너에서 워크로드가 실행됩니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.