第36章 外部永続ボリュームプロビジョナーのデプロイ
36.1. 概要
OpenShift Container Platform の AWS EFS の外部プロビジョナーはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) ではサポートされていません。これらは、機能的に完全でない可能性があり、Red Hat では実稼働環境での使用を推奨していません。これらの機能は、近々発表予定の製品機能をリリースに先駆けてご提供することにより、お客様に機能性をテストし、開発プロセス中にフィードバックをお寄せいただくことができます。Red Hat のテクノロジープレビュー機能のサポートについての詳細は、「Red Hat テクノロジプレビュー機能のサポート範囲」を参照してください。
外部プロビジョナーは、特定のストレージプロバイダーの動的プロビジョニングを可能にするアプリケーションです。外部プロビジョナーは、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.2.3. AWS EFS プロビジョナーの Ansible 変数
AWS EFS プロビジョナーは、所定の EFS ファイルシステムのディレクトリーに動的に作成されたディレクトリーを基盤とする NFS PV を動的にプロビジョニングします。AWS EFS プロビジョナー Ansible 変数を設定するには、以下の要件を満たす必要があります。
- AmazonElasticFileSystemReadOnlyAccess ポリシー (またはこれ以上) を割り当てられた IAM ユーザー。
- クラスターリージョン内の EFS ファイルシステム。
- 任意のノード (クラスターのリージョン内の任意のゾーン) がファイルシステムの DNS 名で EFS ファイルシステムをマウントできる、マウントターゲットとセキュリティーグループ。
変数 | 説明 |
---|---|
|
EFS ファイルシステムのファイルシステム ID。例: |
|
EFS ファイルシステムの Amazon EC2 リージョン |
|
IAM ユーザーの AWS アクセスキー (指定された EFS ファイルシステムが存在するかチェックする) |
|
IAM ユーザーの AWS シークレットアクセスキー (指定された EFS ファイルシステムが存在するかチェックする) |
変数 | 説明 |
---|---|
|
|
|
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/persistentvolumes
36.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