第36章 外部永続ボリュームプロビジョナーのデプロイ
36.1. 概要
外部プロビジョナーは、特定のストレージプロバイダーの動的プロビジョニングを可能にするアプリケーションです。外部プロビジョナーは、OpenShift Container Platform が提供するプロビジョナープラグインと共に実行でき、StorageClass オブジェクトの設定と同じ方法で設定されます。この方法は、「動的プロビジョニングとストレージクラスの作成」のセクションで説明しています。これらのプロビジョナーは外部プロビジョナーであるため、OpenShift Container Platform とは独立してデプロイし、更新できます。
36.2. 作業を開始する前に
外部プロビジョナーのデプロイとアップグレードには、Ansible Playbook も使用できます。
「クラスターメトリクスの設定」と「クラスターロギングの設定」のセクションを十分に理解してから、先に進むようにしてください。
36.2.1. 外部プロビジョナーの Ansible ロール
OpenShift Ansible openshift_provisioners ロールは Ansible インベントリーファイルからの変数を使用して、外部プロビジョナーを設定し、デプロイします。それぞれの install 変数を true に上書きして、インストールするプロビジョナーを指定する必要があります。
36.2.2. 外部プロビジョナーの Ansible 変数
以下は、install 変数が true で、すべてのプロビジョナーに適用されるロール変数の一覧です。
表36.1 Ansible 変数
| 変数 | 説明 |
|---|---|
|
|
|
|
|
コンポーネントイメージのプレフィックス。たとえば |
|
|
コンポーネントイメージのバージョン。たとえば |
|
|
プロビジョナーのデプロイ先のプロジェクト。デフォルトは |
36.2.3. AWS EFS プロビジョナーの Ansible 変数
AWS EFS プロビジョナーは、所定の EFS ファイルシステムのディレクトリーに動的に作成されたディレクトリーを基盤とする NFS PV を動的にプロビジョニングします。AWS EFS プロビジョナー Ansible 変数を設定するには、以下の要件を満たす必要があります。
- AmazonElasticFileSystemReadOnlyAccess ポリシー (またはこれ以上) を割り当てられた IAM ユーザー。
- クラスターリージョン内の EFS ファイルシステム。
- 任意のノード (クラスターのリージョン内の任意のゾーン) がファイルシステムの DNS 名で EFS ファイルシステムをマウントできる、マウントターゲットとセキュリティーグループ。
表36.2 必須の EFS Ansible 変数
| 変数 | 説明 |
|---|---|
|
|
EFS ファイルシステムのファイルシステム ID。例: |
|
|
EFS ファイルシステムの Amazon EC2 リージョン |
|
|
IAM ユーザーの AWS アクセスキー (指定された EFS ファイルシステムが存在するかチェックする) |
|
|
IAM ユーザーの AWS シークレットアクセスキー (指定された EFS ファイルシステムが存在するかチェックする) |
表36.3 オプションの EFS Ansible 変数
| 変数 | 説明 |
|---|---|
|
|
|
|
|
EFS ファイルシステム内のディレクトリーのパスで、ここで EFS プロビジョナーがディレクトリーを作成して、作成する各 PV をサポートします。これは存在している必要があり、EFS プロビジョナーでマウントできる必要があります。デフォルトは |
|
|
StorageClass で指定する |
|
|
Pod が配置されるノードを選択するラベルのマップ。例: |
|
|
EFS ファイルシステムへの書き込みパーミッションのために必要な場合の、Pod に指定する補助グループ。デフォルトは |
36.3. プロビジョナーのデプロイ
OpenShift Ansible 変数で指定される設定に従って、すべてのプロビジョナーを同時にデプロイすることも、プロビジョナーを 1 つずつデプロイすることもできます。以下の例では、指定されたプロビジョナーをデプロイして、対応する StorageClass を作成し、設定する方法を示します。
36.3.1. AWS EFS プロビジョナーのデプロイ
以下のコマンドは、EFS ボリューム内のディレクトリーを /data/persistentvolumes に設定します。このディレクトリーはファイルシステム内に存在している必要があり、プロビジョナー Pod によってマウントや書き込みができる必要があります。
$ ansible-playbook -v -i <inventory_file> \
/usr/share/ansible/openshift-ansible/playbooks/openshift-provisioners/config.yml \
-e openshift_provisioners_install_provisioners=True \
-e openshift_provisioners_efs=True \
-e openshift_provisioners_efs_fsid=fs-47a2c22e \
-e openshift_provisioners_efs_region=us-west-2 \
-e openshift_provisioners_efs_aws_access_key_id=AKIAIOSFODNN7EXAMPLE \
-e openshift_provisioners_efs_aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY \
-e openshift_provisioners_efs_path=/data/persistentvolumes36.3.1.1. AWS EFS オブジェクト定義
aws-efs-storageclass.yaml
kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: slow provisioner: openshift.org/aws-efs 1 parameters: gidMin: "40000" 2 gidMax: "50000" 3
動的にプロビジョニングされた各ボリュームに対応する NFS ディレクトリーには、gidMin から gidMax の範囲に一意の GID 所有者が割り当てられます。指定されない場合、デフォルトで gidMin は2000、gidMax は 2147483647 になります。要求によってプロビジョニングされるボリュームを使用するすべての Pod は、必要な GID を補助グループとして自動的に実行され、ボリュームの読み取り/書き込みができます。補助グループを持たない (かつルートとして実行されていない) 他のマウンターは、ボリュームの読み取り/書き込みはできません。補助グループを使用して NFS アクセスを管理する方法については、「グループ ID」セクションの NFS ボリュームセキュリティーのトピックを参照してください。
36.4. クリーンアップ
以下のコマンドを実行すると、OpenShift Ansible openshift_provisioners ロールによってデプロイされたものをすべて削除できます。
$ ansible-playbook -v -i <inventory_file> \
/usr/share/ansible/openshift-ansible/playbooks/openshift-provisioners/config.yml \
-e openshift_provisioners_install_provisioners=False
Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.