2.3. プロジェクト作成の設定
				OpenShift Container Platform では、プロジェクト は関連するオブジェクトをグループ分けし、分離するために使用されます。Web コンソールまたは oc new-project コマンドを使用して新規プロジェクトの作成要求が実行されると、OpenShift Container Platform のエンドポイントは、カスタマイズ可能なテンプレートに応じてプロジェクトをプロビジョニングするために使用されます。
			
クラスター管理者は、開発者やサービスアカウントが独自のプロジェクトを作成し、プロジェクトの セルフプロビジョニング を実行することを許可し、その方法を設定できます。
2.3.1. プロジェクト作成について
					OpenShift Container Platform API サーバーは、クラスターのプロジェクト設定リソースの projectRequestTemplate パラメーターで識別されるプロジェクトテンプレートに基づいて新規プロジェクトを自動的にプロビジョニングします。パラメーターが定義されない場合、API サーバーは要求される名前でプロジェクトを作成するデフォルトテンプレートを作成し、要求するユーザーをプロジェクトの admin (管理者) ロールに割り当てます。
				
プロジェクト要求が送信されると、API はテンプレートで以下のパラメーターを置き換えます。
| パラメーター | 説明 | 
|---|---|
| 
									 | プロジェクトの名前。必須。 | 
| 
									 | プロジェクトの表示名。空にできます。 | 
| 
									 | プロジェクトの説明。空にできます。 | 
| 
									 | 管理ユーザーのユーザー名。 | 
| 
									 | 要求するユーザーのユーザー名。 | 
					API へのアクセスは、self-provisioner ロールと self-provisioners のクラスターロールバインディングで開発者に付与されます。デフォルトで、このロールはすべての認証された開発者が利用できます。
				
2.3.2. 新規プロジェクトのテンプレートの変更
クラスター管理者は、デフォルトのプロジェクトテンプレートを変更し、新規プロジェクトをカスタム要件に基づいて作成できます。
独自のカスタムプロジェクトテンプレートを作成するには、以下を実行します。
前提条件
- 
							cluster-adminパーミッションを持つアカウントを使用して OpenShift Container Platform クラスターにアクセスできる。
手順
- 
							cluster-admin権限を持つユーザーとしてログインしている。
- デフォルトのプロジェクトテンプレートを生成します。 - oc adm create-bootstrap-project-template -o yaml > template.yaml - $ oc adm create-bootstrap-project-template -o yaml > template.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							オブジェクトを追加するか、既存オブジェクトを変更することにより、テキストエディターで生成される template.yamlファイルを変更します。
- プロジェクトテンプレートは、 - openshift-confignamespace に作成する必要があります。変更したテンプレートを読み込みます。- oc create -f template.yaml -n openshift-config - $ oc create -f template.yaml -n openshift-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Web コンソールまたは CLI を使用し、プロジェクト設定リソースを編集します。 - Web コンソールの使用 - 
											Administration Cluster Settings ページに移動します。 
- Configuration をクリックし、すべての設定リソースを表示します。
- Project のエントリーを見つけ、Edit YAML をクリックします。
 
- 
											Administration 
- CLI の使用 - project.config.openshift.io/clusterリソースを編集します。- oc edit project.config.openshift.io/cluster - $ oc edit project.config.openshift.io/cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
 
- specセクションを、- projectRequestTemplateおよび- nameパラメーターを組み込むように更新し、アップロードされたプロジェクトテンプレートの名前を設定します。デフォルト名は- project-requestです。- カスタムプロジェクトテンプレートを含むプロジェクト設定リソース - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 変更を保存した後、変更が正常に適用されたことを確認するために、新しいプロジェクトを作成します。
2.3.3. プロジェクトのセルフプロビジョニングの無効化
認証されたユーザーグループによる新規プロジェクトのセルフプロビジョニングを禁止できます。
手順
- 
							cluster-admin権限を持つユーザーとしてログインします。
- 以下のコマンドを実行して、 - self-provisionersクラスターロールバインディングの使用を確認します。- oc describe clusterrolebinding.rbac self-provisioners - $ oc describe clusterrolebinding.rbac self-provisioners- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - self-provisionersセクションのサブジェクトを確認します。
- self-provisionerクラスターロールをグループ- system:authenticated:oauthから削除します。- self-provisionersクラスターロールバインディングが- self-provisionerロールのみを- system:authenticated:oauthグループにバインドする場合は、以下のコマンドを実行します。- oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'- $ oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- self-provisionersクラスターロールバインディングが- self-provisionerロールを- system:authenticated:oauthグループ以外のユーザー、グループまたはサービスアカウントにバインドする場合は、以下のコマンドを実行します。- oc adm policy \ remove-cluster-role-from-group self-provisioner \ system:authenticated:oauth- $ oc adm policy \ remove-cluster-role-from-group self-provisioner \ system:authenticated:oauth- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- ロールへの自動更新を防ぐには、 - self-provisionersクラスターロールバインディングを編集します。自動更新により、クラスターロールがデフォルトの状態にリセットされます。- CLI を使用してロールバインディングを更新するには、以下を実行します。 - 以下のコマンドを実行します。 - oc edit clusterrolebinding.rbac self-provisioners - $ oc edit clusterrolebinding.rbac self-provisioners- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 表示されるロールバインディングで、以下の例のように - rbac.authorization.kubernetes.io/autoupdateパラメーター値を- falseに設定します。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 単一コマンドを使用してロールバインディングを更新するには、以下を実行します。 - oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'- $ oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 認証されたユーザーとしてログインし、プロジェクトのセルフプロビジョニングを実行できないことを確認します。 - oc new-project test - $ oc new-project test- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Error from server (Forbidden): You may not request a new project via this API. - Error from server (Forbidden): You may not request a new project via this API.- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 組織に固有のより有用な説明を提供できるように、このプロジェクト要求メッセージをカスタマイズすることを検討します。 
2.3.4. プロジェクト要求メッセージのカスタマイズ
プロジェクトのセルフプロビジョニングを実行できない開発者またはサービスアカウントが Web コンソールまたは CLI を使用してプロジェクト作成要求を行う場合は、以下のエラーメッセージがデフォルトで返されます。
You may not request a new project via this API.
You may not request a new project via this API.クラスター管理者はこのメッセージをカスタマイズできます。これを、組織に固有の新規プロジェクトの要求方法の情報を含むように更新することを検討します。以下に例を示します。
- 
							プロジェクトを要求するには、システム管理者 (projectname@example.com) に問い合わせてください。
- 
							新規プロジェクトを要求するには、https://internal.example.com/openshift-project-requestにあるプロジェクト要求フォームに記入します。
プロジェクト要求メッセージをカスタマイズするには、以下を実行します。
手順
- Web コンソールまたは CLI を使用し、プロジェクト設定リソースを編集します。 - Web コンソールの使用 - 
											Administration Cluster Settings ページに移動します。 
- Configuration をクリックし、すべての設定リソースを表示します。
- Project のエントリーを見つけ、Edit YAML をクリックします。
 
- 
											Administration 
- CLI の使用 - 
											cluster-admin権限を持つユーザーとしてログインします。
- project.config.openshift.io/clusterリソースを編集します。- oc edit project.config.openshift.io/cluster - $ oc edit project.config.openshift.io/cluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 
											
 
- specセクションを、- projectRequestMessageパラメーターを含むように更新し、値をカスタムメッセージに設定します。- カスタムプロジェクト要求メッセージを含むプロジェクト設定リソース - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 以下に例を示します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 変更を保存した後に、プロジェクトをセルフプロビジョニングできない開発者またはサービスアカウントとして新規プロジェクトの作成を試行し、変更が正常に適用されていることを確認します。