Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第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.1 Ansible 変数

変数説明

openshift_provisioners_install_provisioners

true の場合、それぞれの install 変数が true に設定されているすべてのプロビジョナーをデプロイします。それ以外の場合は削除します。

openshift_provisioners_image_prefix

コンポーネントイメージのプレフィックス。たとえば openshift3/efs-provisioner:v3.6 の場合、プレフィックスを openshift3/ に設定します。

openshift_provisioners_image_version

コンポーネントイメージのバージョン。たとえば openshift3/efs-provisioner:v3.6 の場合、バージョンを v3.6 に設定します。

openshift_provisioners_project

プロビジョナーのデプロイ先のプロジェクト。デフォルトは openshift-infra です。

36.2.3. AWS EFS プロビジョナーの Ansible 変数

AWS EFS プロビジョナーは、所定の EFS ファイルシステムのディレクトリーに動的に作成されたディレクトリーを基盤とする NFS PV を動的にプロビジョニングします。AWS EFS プロビジョナー Ansible 変数を設定するには、以下の要件を満たす必要があります。

表36.2 必須の EFS Ansible 変数

変数説明

openshift_provisioners_efs_fsid

EFS ファイルシステムのファイルシステム ID。例: fs-47a2c22e

openshift_provisioners_efs_region

EFS ファイルシステムの Amazon EC2 リージョン

openshift_provisioners_efs_aws_access_key_id

IAM ユーザーの AWS アクセスキー (指定された EFS ファイルシステムが存在するかチェックする)

openshift_provisioners_efs_aws_secret_access_key

IAM ユーザーの AWS シークレットアクセスキー (指定された EFS ファイルシステムが存在するかチェックする)

表36.3 オプションの EFS Ansible 変数

変数説明

openshift_provisioners_efs

true の場合、AWS EFS プロビジョナーは openshift_provisioners_install_provisionerstruefalse によって、インストールまたはアンインストールされます。デフォルトは false です。

openshift_provisioners_efs_path

EFS ファイルシステム内のディレクトリーのパスで、ここで EFS プロビジョナーがディレクトリーを作成して、作成する各 PV をサポートします。これは存在している必要があり、EFS プロビジョナーでマウントできる必要があります。デフォルトは /persistentvolumes です。

openshift_provisioners_efs_name

StorageClass で指定する provisioner 名。デフォルトは openshift.org/aws-efs です。

openshift_provisioners_efs_nodeselector

Pod が配置されるノードを選択するラベルのマップ。例: {"node":"infra","region":"west"}

openshift_provisioners_efs_supplementalgroup

EFS ファイルシステムへの書き込みパーミッションのために必要な場合の、Pod に指定する補助グループ。デフォルトは 65534 です。

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

1
この値を openshift_provisioners_efs_name 変数と同じ値に設定します。デフォルトは openshift.org/aws-efs です。
2
StorageClass の GID 範囲の最小値 (オプション)。
3
StorageClass の GID 範囲の最大値 (オプション)。

動的にプロビジョニングされた各ボリュームに対応する NFS ディレクトリーには、gidMin から gidMax の範囲に一意の GID 所有者が割り当てられます。指定されない場合、デフォルトで gidMin2000gidMax2147483647 になります。要求によってプロビジョニングされるボリュームを使用するすべての 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