12.6. 共有 VPC ネットワークをホストする Google Cloud プロジェクトの設定
共有 Virtual Private Cloud (VPC)を使用して Google Cloud で OpenShift Container Platform クラスターをホストする場合、それをホストするプロジェクトを設定する必要があります。
共有 VPC ネットワークをホストするプロジェクトがすでにある場合は、このセクションを参照して、プロジェクトが OpenShift Container Platform クラスターのインストールに必要なすべての要件を満たすことを確認します。
手順
- OpenShift Container Platform クラスターの共有 VPC をホストするプロジェクトを作成します。Google Cloud ドキュメントの Creating and Managing Projects を参照してください。
- 共有 VPC をホストするプロジェクトでサービスアカウントを作成します。Google Cloud ドキュメント の サービスアカウントの作成 を参照してください。
サービスアカウントに適切な権限を付与します。以下の個別の権限を付与するか、
Ownerロールを割り当てることができます。特定のリソースのサービスアカウントへのロールの付与 を参照してください。注記サービスアカウントをプロジェクトの所有者にすることは、必要な権限を得る最も簡単な方法ですが、その場合、サービスアカウントはプロジェクトに対して完全な管理権限を持つことになります。この権限を提供することに伴うリスクが受け入れ可能であるかどうかを判別する必要があります。
共有 VPC ネットワークをホストするプロジェクトのサービスアカウントには以下のロールが必要です。
- コンピュートネットワークユーザー
- コンピュートセキュリティー管理者
- Deployment Manager Editor
- DNS Administrator
- Security Admin
- ネットワーク管理者
12.6.1. Google Cloud の DNS の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform をインストールするには、使用する Google Cloud アカウントに、クラスターをインストールする共有 VPC をホストするプロジェクトに専用のパブリックホストゾーンがなければなりません。このゾーンはドメインに対する権威を持っている必要があります。DNS サービスは、クラスターへの外部接続のためのクラスターの DNS 解決および名前検索を提供します。
手順
ドメイン、またはサブドメイン、およびレジストラーを特定します。既存のドメインおよびレジストラーを移行するか、Google Cloud または他のソースから新規のものを取得できます。
注記新規ドメインを購入する場合、関連する DNS の変更が伝播するのに時間がかかる場合があります。Google 経由でドメインを購入する方法の詳細は、Google ドメイン を参照してください。
Google Cloud プロジェクトにドメインまたはサブドメインのパブリックホストゾーンを作成します。Google Cloud ドキュメントの Creating public zones を参照してください。
openshiftcorp.comなどのルートドメインや、clusters.openshiftcorp.comなどのサブドメインを使用します。ホストゾーンレコードから新規の権威ネームサーバーを抽出します。Google Cloud ドキュメント の Cloud DNS ネームサーバーの検索 を参照してください。
通常は、4 つのネームサーバーがあります。
- ドメインが使用するネームサーバーのレジストラーレコードを更新します。たとえば、ドメインを Google ドメインに登録している場合は、Google Domains Help で How to switch to custom name servers のトピックを参照してください。
- ルートドメインを Google Cloud DNS に移行している場合は、DNS レコードを移行します。Google Cloud のドキュメントの Migrating to Cloud DNS を参照してください。
- サブドメインを使用する場合は、所属する会社の手順に従ってその委任レコードを親ドメインに追加します。このプロセスには、所属企業の IT 部門や、会社のルートドメインと DNS サービスを制御する部門へのリクエストが含まれる場合があります。
12.6.2. Google Cloud での VPC の作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターで使用する VPC を Google Cloud で作成する必要があります。各種の要件を満たすよう VPC をカスタマイズできます。VPC を作成する 1 つの方法として、提供されている Deployment Manager テンプレートを変更することができます。
提供される Deployment Manager テンプレートを使用して Google Cloud インフラストラクチャーを使用しない場合、提供される情報を確認し、インフラストラクチャーを手動で作成する必要があります。クラスターが適切に初期化されない場合、インストールログを用意して Red Hat サポートに問い合わせする必要がある可能性があります。
前提条件
- GCP アカウントを設定します。
手順
-
このトピックの VPC の Deployment Manager テンプレート セクションを確認し、これを
01_vpc.pyとしてコンピューターに保存します。このテンプレートは、クラスターに必要な VPC を記述しています。 リソース定義で必要な以下の変数をエクスポートします。
コントロールプレーンの CIDR をエクスポートします。
$ export MASTER_SUBNET_CIDR='10.0.0.0/17'コンピュート CIDR をエクスポートします。
$ export WORKER_SUBNET_CIDR='10.0.128.0/17'VPC ネットワークおよびクラスターをデプロイするリージョンを以下にエクスポートします。
$ export REGION='<region>'
共有 VPC をホストするプロジェクトの ID の変数をエクスポートします。
$ export HOST_PROJECT=<host_project>ホストプロジェクトに属するサービスアカウントのメールの変数をエクスポートします。
$ export HOST_PROJECT_ACCOUNT=<host_service_account_email>01_vpc.yamlリソース定義ファイルを作成します。$ cat <<EOF >01_vpc.yaml imports: - path: 01_vpc.py resources: - name: cluster-vpc type: 01_vpc.py properties: infra_id: '<prefix>'1 region: '${REGION}'2 master_subnet_cidr: '${MASTER_SUBNET_CIDR}'3 worker_subnet_cidr: '${WORKER_SUBNET_CIDR}'4 EOFgcloudCLI を使用してデプロイメントを作成します。$ gcloud deployment-manager deployments create <vpc_deployment_name> --config 01_vpc.yaml --project ${HOST_PROJECT} --account ${HOST_PROJECT_ACCOUNT}1 - 1
<vpc_deployment_name>には、デプロイする VPC の名前を指定します。
他のコンポーネントが必要とする VPC 変数をエクスポートします。
ホストプロジェクトネットワークの名前をエクスポートします。
$ export HOST_PROJECT_NETWORK=<vpc_network>ホストプロジェクトのコントロールプレーンのサブネットの名前をエクスポートします。
$ export HOST_PROJECT_CONTROL_SUBNET=<control_plane_subnet>ホストプロジェクトのコンピュートサブネットの名前をエクスポートします。
$ export HOST_PROJECT_COMPUTE_SUBNET=<compute_subnet>
- 共有 VPC を設定します。Google Cloud ドキュメント の 共有 VPC の設定 を参照してください。
12.6.2.1. VPC の Deployment Manager テンプレート リンクのコピーリンクがクリップボードにコピーされました!
以下の Deployment Manager テンプレートを使用して、OpenShift Container Platform クラスターに必要な VPC をデプロイすることができます。
例12.2 01_vpc.py Deployment Manager テンプレート
def GenerateConfig(context):
resources = [{
'name': context.properties['infra_id'] + '-network',
'type': 'compute.v1.network',
'properties': {
'region': context.properties['region'],
'autoCreateSubnetworks': False
}
}, {
'name': context.properties['infra_id'] + '-master-subnet',
'type': 'compute.v1.subnetwork',
'properties': {
'region': context.properties['region'],
'network': '$(ref.' + context.properties['infra_id'] + '-network.selfLink)',
'ipCidrRange': context.properties['master_subnet_cidr']
}
}, {
'name': context.properties['infra_id'] + '-worker-subnet',
'type': 'compute.v1.subnetwork',
'properties': {
'region': context.properties['region'],
'network': '$(ref.' + context.properties['infra_id'] + '-network.selfLink)',
'ipCidrRange': context.properties['worker_subnet_cidr']
}
}, {
'name': context.properties['infra_id'] + '-router',
'type': 'compute.v1.router',
'properties': {
'region': context.properties['region'],
'network': '$(ref.' + context.properties['infra_id'] + '-network.selfLink)',
'nats': [{
'name': context.properties['infra_id'] + '-nat-master',
'natIpAllocateOption': 'AUTO_ONLY',
'minPortsPerVm': 7168,
'sourceSubnetworkIpRangesToNat': 'LIST_OF_SUBNETWORKS',
'subnetworks': [{
'name': '$(ref.' + context.properties['infra_id'] + '-master-subnet.selfLink)',
'sourceIpRangesToNat': ['ALL_IP_RANGES']
}]
}, {
'name': context.properties['infra_id'] + '-nat-worker',
'natIpAllocateOption': 'AUTO_ONLY',
'minPortsPerVm': 512,
'sourceSubnetworkIpRangesToNat': 'LIST_OF_SUBNETWORKS',
'subnetworks': [{
'name': '$(ref.' + context.properties['infra_id'] + '-worker-subnet.selfLink)',
'sourceIpRangesToNat': ['ALL_IP_RANGES']
}]
}]
}
}]
return {'resources': resources}