18.2. コンテナーグループ


Ansible Automation Platform はコンテナーグループをサポートしています。そのため、Automation Controller がスタンドアロン、仮想環境、またはコンテナーとしてインストールされているかどうかに関係なく、Automation Controller でジョブを実行できます。

コンテナーグループは、仮想環境内のリソースのプールとして機能します。

OpenShift コンテナーを参照するインスタンスグループを作成できます。このインスタンスグループは、Playbook の実行期間中のみ存在する Pod として、オンデマンドでプロビジョニングされるジョブ環境です。これは一時的な実行モデルとして知られており、すべてのジョブの実行に対してクリーンな環境を確保します。

場合によっては、コンテナーグループを「常時オン」に設定することが必要な場合があります。これは、インスタンスの作成を通じて設定できます。

注記

Automation Controller 4.0 より前のバージョンからアップグレードしたコンテナーグループはデフォルトに戻り、古い Pod 定義は削除され、移行中のすべてのカスタム Pod 定義は消去されます。

実行環境はコンテナーイメージであり、仮想環境を使用しないという点で、実行環境とコンテナーグループは異なります。詳細は、実行環境 を参照してください。

18.2.1. コンテナーグループの作成

ContainerGroup は、OpenShift クラスターへの接続を可能にする認証情報が関連づけられた InstanceGroup の一種です。

前提条件

  • 起動できる namespace がある。すべてのクラスターには「デフォルト」の namespace がありますが、特定の namespace を使用することもできます。
  • この namespace で Pod を起動および管理可能なロールを持つサービスアカウントがある。詳細は、OpenShift Container Platform または Kubernetes でのサービスアカウントの作成 を参照してください。
  • プライベートレジストリーで実行環境を使用しており、Automation Controller でコンテナーレジストリー認証情報が実行環境に関連付けられている場合、サービスアカウントには、namespace でシークレットを取得、作成、削除するためのロールも必要です。これらのロールをサービスアカウントに付与しない場合は、ImagePullSecrets を事前に作成し、ContainerGroup の Pod 仕様で指定できます。この場合、実行環境にコンテナーレジストリーの認証情報を関連付けることはできません。関連付けられている場合、Automation Controller は namespace にシークレットを作成しようとします。
  • サービスアカウントに関連付けられたトークンがある。OpenShift または Kubernetes Bearer トークン。
  • クラスターに関連付けられた CA 証明書がある。

手順

  1. ナビゲーションパネルから、Automation Execution Infrastructure Instance Groups を選択します。
  2. Create group をクリックし、Create container group を選択します。
  3. 新しいコンテナーグループの名前を入力し、以前に作成した認証情報を選択してコンテナーグループに関連付けます。
  4. Create container group をクリックします。
  5. Customize pod spec ボックスをオンにし、Pod spec override を編集して、前の手順で使用した namespace とサービスアカウント名を含めます。

18.2.2. OpenShift Container Platform または Kubernetes でのサービスアカウントの作成

Automation Controller を通じてコンテナーグループ内でジョブを実行するには、OpenShift クラスターまたは Kubernetes のサービスアカウントを使用します。サービスアカウントを作成すると、その認証情報が OpenShift or Kubernetes API Bearer Token 認証情報の形式で Automation Controller に提供されます。

手順

  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:
      - verbs:
          - get
          - list
          - watch
          - create
          - update
          - patch
          - delete
        apiGroups:
          - ''
        resources:
          - pods
      - verbs:
          - get
        apiGroups:
          - ''
        resources:
          - pods/log
      - verbs:
          - create
        apiGroups:
          - ''
        resources:
          - pods/attach
      - verbs:
          - get
          - create
          - delete
        apiGroups:
          - ''
        resources:
          - secrets
    ---
    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
    Copy to Clipboard Toggle word wrap
  2. containergroup-sa.yml から設定を適用します。

    oc apply -f containergroup-sa.yml
    Copy to Clipboard Toggle word wrap
  3. サービスアカウントトークンを生成して API トークンを取得します。

    oc create token containergroup-service-account --duration=$((365*24))h > containergroup-sa.token
    Copy to Clipboard Toggle word wrap
  4. CA 証明書を取得します。

    oc get secret -n openshift-ingress wildcard-tls -o jsonpath='{.data.ca\.crt}' | base64 -d > containergroup-ca.crt
    Copy to Clipboard Toggle word wrap
  5. containergroup-sa.token および containergroup-ca.crt の内容を使用して、コンテナーグループに必要な OpenShift or Kubernetes API Bearer Token の情報を提供します。

コンテナーグループを作成するには、コンテナーグループで使用する OpenShift or Kubernetes API Bearer Token 認証情報を作成します。詳細は、新しい認証情報の作成 を参照してください。

18.2.3. Pod 仕様のカスタマイズ

Ansible Automation Platform は単純なデフォルトの Pod 仕様を提供しますが、デフォルトの Pod 仕様をオーバーライドするカスタム YAML または JSON ドキュメントを提供できます。このフィールドは、有効な Pod JSON または YAML として「シリアル化」できる ImagePullSecrets などのカスタムフィールドを使用します。オプションの完全なリストは、OpenShift ドキュメントの Pods and Services セクションを参照してください。

手順

  1. ナビゲーションパネルから、Automation Execution Infrastructure Instance Groups を選択します。
  2. Create group をクリックし、Create container group を選択します。
  3. Customize pod spec オプションをオンにします。
  4. Pod spec override フィールドに、カスタムの Kubernetes または OpenShift Pod 仕様を入力します。

  5. Create container group をクリックします。
注記

ジョブ起動時のイメージは、どの実行環境がジョブに関連付けられているかによって決まります。コンテナーレジストリーの認証情報を実行環境に関連付ける場合、Automation Controller はイメージをプルするために ImagePullSecret を作成しようとします。シークレットを管理するパーミッションをサービスアカウントに付与しない場合は、ImagePullSecret を事前に作成してそれを Pod 仕様で指定し、使用する実行環境から認証情報を削除する必要があります。

詳細は、Red Hat Container Registry AuthenticationAllowing Pods to Reference Images from Other Secured Registries セクションを参照してください。

コンテナーグループが正常に作成されると、新しく作成されたコンテナーグループの Details タブが表示され、そこでコンテナーグループ情報を確認および編集できます。これは、Instance Groups リストビューから Edit アイコンをクリックした場合に開くメニューと同じです。

Instances を編集し、このインスタンスグループに関連付けられた Jobs を確認することもできます。

コンテナーグループとインスタンスグループは適宜ラベル付けされます。

18.2.4. コンテナーグループ機能の検証

コンテナーのデプロイと終了を確認するには、以下を実行します。

手順

  1. モックインベントリーを作成し、Instance groups フィールドにコンテナーグループの名前を入力して、コンテナーグループをそのインベントリーに関連付けます。詳細は、新しいインベントリーの追加 を参照してください。

  2. 次の変数を使用して、インベントリーに localhost ホストを作成します。

    {'ansible_host': '127.0.0.1', 'ansible_connection': 'local'}
    Copy to Clipboard Toggle word wrap
  3. ping または setup モジュールを使用して、ローカルホストに対してアドホックジョブを起動します。Machine Credential フィールドは必須ですが、このテストでどれを選択するかは重要ではありません。

Jobs 詳細ビューで、アドホックジョブの 1 つを使用してコンテナーに正常にアクセスしたことが表示されます。

OpenShift UI を使用している場合、Pod はデプロイされると表示され、終了すると非表示になります。CLI を使用して namespace で get pod 操作を実行し、同イベントの発生をリアルタイムで監視することもできます。

18.2.5. コンテナーグループジョブの表示

コンテナーグループに関連付けられたジョブを実行すると、そのジョブの詳細が Details タブに表示されます。関連付けられたコンテナーグループと起動された実行環境も表示できます。

手順

  1. ナビゲーションパネルから、Automation Execution Jobs を選択します。
  2. コンテナーグループジョブを表示するジョブをクリックします。
  3. Details タブをクリックします。

18.2.6. Kubernetes API の障害状態

コンテナーグループを実行し、Kubernetes API がリソースクォータを超過したと応答すると、Automation Controller はジョブを保留状態にします。その他の障害の場合は、次の例のように、Error Details フィールドのトレースバックに障害の理由が表示されます。

Error creating pod: pods is forbidden: User "system: serviceaccount: aap:example" cannot create resource "pods" in API group "" in the namespace "aap"
Copy to Clipboard Toggle word wrap

18.2.7. コンテナーの容量制限

コンテナーの容量制限とクォータは、Kubernetes API のオブジェクトで定義します。

  • 特定の namespace 内のすべての Pod に制限を設定するには、LimitRange オブジェクトを使用します。詳細は、OpenShift ドキュメントの クォータおよび制限範囲 セクションを参照してください。
  • Automation Controller が起動する Pod 定義に制限を直接設定するには、Pod 仕様のカスタマイズ と OpenShift ドキュメントの コンピュートリソース セクションを参照してください。
注記

コンテナーグループは、通常のノードが使用する容量アルゴリズムを使用しません。ジョブテンプレートレベルでフォークの数を設定する必要があります。Automation Controller でフォークを設定すると、その設定はコンテナーに渡されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat