第1章 Pod の仕様変更
1.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
Pod の Kubernetes の概念は、「1 つのホストに一緒にデプロイされる 1 つ以上のコンテナーであり、定義、デプロイ、または管理できる最小のコンピューティングユニット」です。
Pod は、コンテナーに対して、(物理または仮想) マシンインスタンスと同等のものです。各 Pod は独自の内部 IP アドレスで割り当てられるため、そのポートスペース全体を所有し、Pod 内のコンテナーはそれらのローカルストレージおよびネットワークを共有できます。
Pod にはライフサイクルがあります。それらは定義された後にノードで実行するために割り当てられ、コンテナーが終了するまで実行するか、その他の理由でコンテナーが削除されるまで実行します。ポリシーおよび終了コードによっては、Pod は終了後に削除されるか、コンテナーのログへのアクセスを有効にするために保持される可能性があります。
Red Hat Ansible Automation Platform は単純なデフォルトの Pod 仕様を提供しますが、デフォルトの Pod 仕様をオーバーライドするカスタム YAML または JSON ドキュメントを提供できます。このカスタムドキュメントは、有効な Pod JSON または YAML としてシリアル化できる ImagePullSecrets などのカスタムフィールドを使用します。
オプションの完全なリストは、Openshift のドキュメント にあります。
長期サービスを提供する Pod の例。
この例は、数多くの Pod 機能を示していますが、そのほとんどは他のトピックで説明されるため、ここでは簡単に説明します。
| ラベル | 説明 |
|---|---|
|
|
Pod には 1 つまたは複数のラベルでタグ付けすることができ、このラベルを使用すると、一度の操作で Pod グループの選択や管理が可能になります。これらのラベルは、キー/値形式で metadata ハッシュに保存されます。この例で使用されているラベルは |
|
|
Pod にはそれらの名前空間内に任意の名前がなければなりません。Pod 定義では、 |
|
|
|
|
| 環境変数は、必要な値を各コンテナーに渡します。 |
|
| Pod の各コンテナーは、独自の Docker 形式のコンテナーイメージからインスタンス化されます。 |
|
| コンテナーは、Pod の IP で使用可能になったポートにバインドできます。 |
|
| Pod を指定する場合は、必要に応じて、コンテナーが必要とする各リソースの量を記述できます。指定する最も一般的なリソースは、CPU とメモリー (RAM) です。他のリソースも使用できます。 |
|
| OpenShift Online は、コンテナーが特権付きコンテナーとして実行を許可されるか、選択したユーザーとして実行を許可されるかどうかを指定するセキュリティーコンテキストを定義します。デフォルトのコンテキストには多くの制限がありますが、管理者は必要に応じてこれを変更できます。 |
|
| コンテナーは外部ストレージボリュームがコンテナー内にマウントされるかどうかを指定します。この場合、レジストリーのデータを保存するためのボリュームと、OpenShift Online API に対して要求を行うためにレジストリーが必要とする認証情報へのアクセス用のボリュームがあります。 |
|
|
Pod には 1 つ以上のコンテナーを含めることができます。コンテナーは、レジストリーからプルする必要があります。認証を必要とするレジストリーからのコンテナーの場合は、名前空間に存在する |
|
|
Pod 再起動ポリシーと使用可能な値の |
|
|
OpenShift Online API に対して要求する Pod は一般的なパターンです。この場合は |
|
| Pod は、コンテナーで使用できるストレージボリュームを定義します。この場合は、レジストリーストレージの一時的なボリュームおよびサービスアカウントの認証情報が含まれる secret ボリュームが提供されます。 |
Automation Controller UI で Pod 仕様を編集することにより、Automation Controller を使用して Kubernetes ベースのクラスターでジョブの実行に使用される Pod を変更できます。ジョブを実行する Pod の作成に使用される Pod 仕様は YAML 形式です。Pod 仕様の編集の詳細は、Pod 仕様のカスタマイズ を参照してください。
1.1.1. Pod 仕様のカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
次の手順で Pod をカスタマイズできます。
手順
-
Automation Controller UI で、
に移動します。 - にチェックを入れます。
- Pod Spec Override フィールドで、トグルを使用して名前空間を指定し、Pod Spec Pod Spec Override フィールドを有効にして展開します。
- をクリックします。
- オプション: 追加でカスタマイズする場合は、 をクリックしてカスタマイズウィンドウ全体を表示します。
ジョブの起動時に使用されるイメージは、ジョブに関連付けられた実行環境によって決まります。Container Registry 認証情報が実行環境に関連付けられている場合、Automation Controller は ImagePullSecret を使用してイメージをプルします。シークレットを管理するパーミッションをサービスアカウントに付与しない場合は、ImagePullSecret を事前に作成してそれを Pod 仕様で指定し、使用する実行環境から認証情報を削除する必要があります。
1.1.2. Pod による他のセキュアなレジストリーからのイメージ参照の許可 リンクのコピーリンクがクリップボードにコピーされました!
コンテナーグループが、認証情報を必要とするセキュアなレジストリーのコンテナーを使用する場合は、コンテナーレジストリーの認証情報を、ジョブテンプレートに割り当てられている実行環境に関連付けることができます。Automation Controller はこれを使用して、コンテナーグループジョブが実行される OpenShift Container Platform の名前空間に ImagePullSecret を作成し、ジョブの完了後にクリーンアップします。
コンテナーグループの名前空間に ImagePullSecret がすでに存在する場合は、ContainerGroup のカスタム Pod 仕様で ImagePullSecret を指定できます。
コンテナーグループで実行しているジョブで使用されるイメージは、必ずそのジョブに関連付けられている実行環境によってオーバーライドされることに注意してください。
事前に作成された ImagePullSecrets の使用 (詳細)
このワークフローを使用して ImagePullSecret を事前に作成する場合は、以前にセキュアなコンテナーレジストリーにアクセスしたシステム上のローカル .dockercfg ファイルから作成に必要な情報を入手できます。
手順
.dockercfg file ファイル (新しい Docker クライアントの場合は $HOME/.docker/config.json) は、ユーザーの情報を保管する Docker 認証情報ファイルです (以前にセキュアな/セキュアではないレジストリーにログインしている場合)。
セキュアなレジストリーの
.dockercfgファイルがすでにある場合は、次のコマンドを実行して、そのファイルからシークレットを作成できます。oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、
$HOME/.docker/config.jsonファイルがある場合は、以下のコマンドを実行します。oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow セキュアなレジストリーの Docker 認証情報ファイルがまだない場合は、次のコマンドを実行してシークレットを作成できます。
oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod のイメージをプルするためにシークレットを使用するには、サービスアカウントにシークレットを追加する必要があります。この例では、サービスアカウントの名前は、Pod が使用するサービスアカウントの名前に一致している必要があります。デフォルトはデフォルトのサービスアカウントです。
oc secrets link default <pull_secret_name> --for=pull
$ oc secrets link default <pull_secret_name> --for=pullCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: ビルドイメージのプッシュおよびプルにシークレットを使用するには、Pod 内にシークレットがマウント可能でなければなりません。以下でこれを実行できます。
oc secrets link builder <pull_secret_name>
$ oc secrets link builder <pull_secret_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - オプション: ビルドについては、ビルド設定内からのプルシークレットとしてシークレットを参照する必要もあります。
コンテナーグループが正常に作成されると、新しく作成されたコンテナーグループの Details タブが表示され、そこでコンテナーグループ情報を確認および編集できます。これは、Instance Group リンクから をクリックした場合に開くメニューと同じです。インスタンスを編集し、このインスタンスグループに関連付けられたジョブを確認することもできます。