2021年06月

08

【やってみた】WebSphere Hybrid Edition導入してみた:OpenShift導入編 (手順詳細)

1.本記事について

本記事は「【やってみた】WebSphere Hybrid Edition 導入してみた:OpenShift 導入編」の コマンドの詳細を掲載したものです。
本編をご覧頂きながら、詳しいコマンドや実行結果を本記事でご確認ください。

2. 事前準備

2-1. 作業用Linux環境準備

(1)作業用ディレクトリ作成

(2)Azure CLIインストール
インストール→パスを確認→バージョン確認を実行します。

$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
$ which az
/usr/bin/az
$ az version
{
 ”azure-cli”: “2.18.0”,
 ”azure-cli-core”: “2.18.0”,
 ”azure-cli-telemetry”: “1.0.6”,
 ”extensions”: {}
}

(3)jqパッケージインストール
yumコマンドでjqパッケージをインストールします。

$ yum -y install epel-release
$ yum -y install jq
$ $ which jq
/usr/bin/jq

(4)cloudctlインストール
ダウンロード→解凍→パスが通った場所に配置します。

$ curl -L https://github.com/IBM/cloud-pak-cli/releases/latest/download/cloudctl-linux-amd64.tar.gz -o cloudctl-linux-amd64.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 160 100 160 0 0 446 0 –:–:– –:–:– –:–:– 446
100 635 100 635 0 0 992 0 –:–:– –:–:– –:–:– 992
100 12.4M 100 12.4M 0 0 4699k 0 0:00:02 0:00:02 –:–:– 7554k$ tar xvf ./cloudctl-linux-amd64.tar.gz
cloudctl-linux-amd64$ sudo mv ./cloudctl-linux-amd64 /usr/local/bin/cloudctl
$ which cloudctl
/usr/local/bin/cloudctl

(5)ocコマンドのインストール

$ tar xvf ./oc-4.5.31-linux.tar.gz
README.md
oc
kubectl$ sudo mv ./oc /usr/local/bin/oc$ which oc
/usr/local/bin/oc

2-2. ファイルの準備

(1)OCP4.5インストールファイルのダウンロード
/home/user01/os45フォルダにダウンロードし、インストールファイルを解凍します。

$ tar xvf openshift-install-linux-4.5.31.tar.gz
README.md
openshift-install

(2)Pull Secretファイル

2-3. パブリックDNSゾーン設定

(1)リソースグループを作成
(2)App Serviceドメインを作成

2-4. サービスプリンシパルの作成

(1)Azureへのログイン(az login)

$ az login
The default web browser has been opened at https://login.microsoftonline.com/common/oauth2/authorize. Please continue the login in the web browser. If no web browser is available or if the web browser fails to open, use device code flow with `az login –use-device-code`.

WebブラウザでのAzure認証画面でログインします。

(2)アクティブなアカウントの詳細を表示して「tenantId」「id」を確認

$ az account list –refresh
[
 {
  “cloudName”: “AzureCloud”,
  “homeTenantId”: “<tenantId>”,
  “id”: “<ID>”,
  “isDefault”: true,
  “managedByTenants”: [],
  “name”: “<サブスクリプション名>”,
  “state”: “Enabled”,
  “tenantId”: “<tenantId>”,
  “user”: {
  “name”: “admin@xxx.onmicrosoft.com”,
“type”: “user”
}
 }
]

(3)アカウントのサービスプリンシパルを作成し「appId」「password」を確認

$ az ad sp create-for-rbac –role Contributor –name ocp_sp

Changing “ocp_sp” to a valid URI of “http://ocp_sp”, which is the required format used for service principal names Creating ‘Contributor’ role assignment under scope ‘/subscriptions/<id>’ Retrying role assignment creation: 1/36
The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
{
“appId”: “<appId>”,
“displayName”: “ocp_sp”,
“name”: “http://ocp_sp”,
“password”: “<password>”,
“tenant”: “<tenantID>”
}

(4)サービスプリンシパルに追加パーミッションを付与

(4-1)User Access Administrator ロールを割り当て

メモしておいた<appId>をパラメータに利用します。

$ az role assignment create –role “User Access Administrator” –assignee-object-id $(az ad sp list –filter “appId eq ‘<appId>’ ” | jq ‘.[0].objectId’ -r)

{
“canDelegate”: null,
“condition”: null,
“conditionVersion”: null,
“description”: null,
“id”: “/subscriptions/<id>/providers/Microsoft.Authorization/roleAssignments/c02d16cf-c875-4228-99a7-ecfc77d23ff2”,
“name”: “c02d16cf-c875-4228-99a7-ecfc77d23ff2”,
“principalId”: “f56550e6-c2f3-47d1-9e82-be0be7674f9f”,
“principalType”: “ServicePrincipal”,
“roleDefinitionId”: “/subscriptions/<id>/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9”,
“scope”: “/subscriptions/<id>”,
“type”: “Microsoft.Authorization/roleAssignments”
}

(4-2)Azure Active Directory Graph パーミッションを割り当て

$ az ad app permission add –id <appId> –api 00000002-0000-0000-c000-000000000000 –api-permissions 824c81eb-e3f8-4ee6-8f6d-de7f50d565b7=Role

Invoking “az ad app permission grant –id <appId>–api 00000002-0000-0000-c000-000000000000” is needed to make the change effective

(5)パーミッション要求を承認

$ az ad app permission grant –id <appId> –api 00000002-0000-0000-c000-000000000000

{
“clientId”: “f56550e6-c2f3-47d1-9e82-be0be7674f9f”,
“consentType”: “AllPrincipals”,
“expiryTime”: “2022-02-24T05:15:17.649474”,
“objectId”: “5lBl9fPC0Ueegr4L52dPnzVAb4VRJ4FHiVNygLqyh7c”,
“odata.metadata”: “https://graph.windows.net/<tenantId>/$metadata#oauth2PermissionGrants/@Element”,
“odatatype”: null,
“principalId”: null,
“resourceId”: “856f4035-2751-4781-8953-7280bab287b7”,
“scope”: “user_impersonation”,
“startTime”: “2021-02-24T05:15:17.649474”
}

3.OpenShift 導入

3-1. SSH秘密鍵の作成

(1)作業用Linuxマシン上でssh-keygenコマンドを実行しSSHキーを作成

$ ssh-keygen -t rsa -b 4096 -N ” -f ~/.ssh/id_rsa2
Generating public/private rsa key pair.
Your identification has been saved in /home/user01/.ssh/id_rsa2.
Your public key has been saved in /home/user01/.ssh/id_rsa2.pub.
The key fingerprint is:
SHA256:kKB23rSxmb6ZjQA9eMaLYoXWxsounLQ160TxrOpf2VY user01@A2470
The key’s randomart image is:
+—[RSA 4096]—-+
| . |
| . . . |
| o.. = |
| .+*+o B |
| oo*Bo* SE |
|o.=B.+o . |
|++=o=o.o |
|+=o….* |
|o+oo = . |
+—-[SHA256]—–+

(2)ssh-agent プロセスをバックグラウンドタスクとして開始

$ eval “$(ssh-agent -s)”
Agent pid 3306

(3)SSH プライベートキーを ssh-agent に追加

$ ssh-add ~/.ssh/id_rsa2
Identity added: /home/user01/.ssh/id_rsa2 (/home/user01/.ssh/id_rsa2)

3-2. インストールファイルの作成

(1)install-config.yaml ファイル生成

$ cd /home/user01/os45
$ ./openshift-install create install-config –dir=/home/user01/os45
? SSH Public Key /home/user01/.ssh/id_rsa2.pub ← プロンプトで入力
? Platform azure ← プロンプトで入力
? azure subscription id <id> ← プロンプトで入力
? azure tenant id <tenantId> ← プロンプトで入力
? azure service principal client id <appId> ← プロンプトで入力
? azure service principal client secret [? for help] ******<password>******* ← プロンプトで入力
INFO Saving user credentials to “/home/user01/.azure/osServicePrincipal.json”
INFO Credentials loaded from file “/home/user01/.azure/osServicePrincipal.json”
? Region japaneast ← プロンプトで入力
? Base Domain ← プロンプトで入力
? Cluster Name nicpwhecluster ← プロンプトで入力
? Pull Secret [? for help] ← 事前にダウンロードしたPull Secretを貼り付け ********************************************************************************************

※特に完了のメッセージは表示されません

(2)ARM テンプレートの一般的な変数のエクスポート

$ export CLUSTER_NAME=nicpwhecluster
$ export AZURE_REGION=japaneast
$ export SSH_KEY=””ssh-rsa AAAAB3Nza<以下、省略>””
$ export BASE_DOMAIN=
$ export BASE_DOMAIN_RESOURCE_GROUP=ocp-cluster
$ export KUBECONFIG=/home/user01/os45/auth/kubeconfig

(3)クラスターの Kubernetes マニフェストを生成

$ ./openshift-install create manifests –dir=/home/user01/os45/
“INFO Credentials loaded from file “”/home/user01/.azure/osServicePrincipal.json””
INFO Consuming Install Config from target directory”

(4)コントロールプレーン、ワーカーノードを定義する Kubernetes マニフェストファイルを削除

$ rm -f /home/user01/os45/openshift/99_openshift-cluster-api_master-machines-*.yaml
$ rm -f /home/user01/os45/openshift/99_openshift-cluster-api_worker-machineset-*.yaml

※これらのファイルを削除することで、クラスターが自動的に生成するのを防ぎます。

(5)Kubernetes マニフェストファイルを変更
/home/user01/os45/manifests/cluster-scheduler-02-config.yml を変更し、Pod がコントロールプレーンにスケジュールされないようにします。
manifests/cluster-scheduler-02-config.yml ファイルをエディタで開き、”mastersSchedulable”パラメーターの値を False に設定し、保存、終了します。

(6)変数のエクスポート

$ export INFRA_ID=nicpwhecluster-h8lq5
$ export RESOURCE_GROUP=nicpwhecluster-h8lq5-rg

(7)Ignition 設定ファイルを取得

$ ./openshift-install create ignition-configs –dir=/home/user01/os45/

INFO Consuming OpenShift Install (Manifests) from target directory
INFO Consuming Openshift Manifests from target directory
INFO Consuming Common Manifests from target directory
INFO Consuming Master Machines from target directory
INFO Consuming Worker Machines from target directory

(8)ファイルの確認
os45に生成された”bootstrap.ign”ファイル、”master.ign”ファイル、”metadata.json”ファイル、”worker.ign”ファイルがあることを確認します。

$ ls -al /home/user01/os45
total 91924
drwxrwxr-x 1 user01 user01 4096 Feb 24 15:10 .
drwxr-xr-x 1 user01 user01 4096 Feb 24 15:09 ..
-rw-rw-r– 1 user01 user01 77773 Feb 24 15:10 .openshift_install.log
-rw-r—– 1 user01 user01 1274855 Feb 24 15:10 .openshift_install_state.json
drwxr-x— 1 user01 user01 4096 Feb 24 15:10 auth
-rw-r—– 1 user01 user01 302438 Feb 24 15:10 bootstrap.ign
drwxrwxr-x 1 user01 user01 4096 Feb 24 09:52 conf
-rw-r—– 1 user01 user01 4346 Feb 24 14:47 install-config.yaml.org
-rw-r—– 1 user01 user01 1847 Feb 24 15:10 master.ign
-rw-r—– 1 user01 user01 147 Feb 24 15:10 metadata.json
-rw-r–r– 1 user01 user01 92429691 Feb 12 16:46 openshift-install-linux-4.5.31.tar.gz
-rw-r–r– 1 user01 user01 2779 Feb 12 15:37 pull-secret.txt
-rw-r–r– 1 user01 user01 50 Feb 12 15:37 pull-secret.txt:Zone.Identifier
-rw-r—– 1 user01 user01 1847 Feb 24 15:10 worker.ign

同様に/home/user01/os45/auth内に”kubeadmin-password”と”kubeconfig”があることを確認

user01@A2470:~$ ls -al /home/user01/os45/auth/
total 12
drwxr-x— 1 user01 user01 4096 Feb 24 15:10 .
drwxrwxr-x 1 user01 user01 4096 Feb 24 15:10 ..
-rw-r—– 1 user01 user01 23 Feb 24 15:10 kubeadmin-password
-rw-r—– 1 user01 user01 8992 Feb 24 15:10 kubeconfig

3-3. Azure リソースグループおよびアイデンティティーの作成

(1)リソースグループを作成

$ az group create –name ${RESOURCE_GROUP} –location ${AZURE_REGION}

{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg”,
“location”: “japaneast”,
“managedBy”: null,
“name”: “nicpwhecluster-h8lq5-rg”,
“properties”: {
“provisioningState”: “Succeeded”
},
“tags”: null,
“type”: “Microsoft.Resources/resourceGroups”
}

(2)リソースグループの Azure アイデンティティーを作成

$ az identity create -g ${RESOURCE_GROUP} -n ${INFRA_ID}-identity

{
“clientId”: “487b4852-018d-4289-94f7-24db4bef3811”,
“clientSecretUrl”: “https://control-japaneast.identity.azure.net/subscriptions/<id>/resourcegroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/nicpwhecluster-h8lq5-identity/credentials?tid=<tenantId>&oid=f0273f5e-4c1b-4cf4-b3ac-14ad28344d17&aid=487b4852-018d-4289-94f7-24db4bef3811”,
“id”: “/subscriptions/<id>/resourcegroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/nicpwhecluster-h8lq5-identity”,
“location”: “japaneast”,
“name”: “nicpwhecluster-h8lq5-identity”,
“principalId”: “f0273f5e-4c1b-4cf4-b3ac-14ad28344d17”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: {},
“tenantId”: “<tenantID>”,
“type”: “Microsoft.ManagedIdentity/userAssignedIdentities”
}

(3)Contributor ロールを Azure アイデンティティーに付与

(3-1)ロール割当に必要な変数をエクスポート

$ export PRINCIPAL_ID=`az identity show -g ${RESOURCE_GROUP} -n ${INFRA_ID}-identity –query principalId –out tsv`
$ export RESOURCE_GROUP_ID=`az group show -g ${RESOURCE_GROUP} –query id –out tsv`

(3-2)Contributor ロールをアイデンティティーに割り当て

$ az role assignment create –assignee “${PRINCIPAL_ID}” –role ‘Contributor’ –scope “${RESOURCE_GROUP_ID}”

{
“canDelegate”: null,
“condition”: null,
“conditionVersion”: null,
“description”: null,
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Authorization/roleAssignments/0b0302ab-9ca5-4b85-a2f3-a0f7c7cded77”,
“name”: “0b0302ab-9ca5-4b85-a2f3-a0f7c7cded77”,
“principalId”: “f0273f5e-4c1b-4cf4-b3ac-14ad28344d17”,
“principalType”: “ServicePrincipal”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“roleDefinitionId”: “/subscriptions/<id>/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c”,
“scope”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg”,
“type”: “Microsoft.Authorization/roleAssignments”
}

3-4. RHCOS クラスターイメージおよびブートストラップ Ignition 設定ファイルのアップロード

(1)Azureストレージアカウントの作成

$ az storage account create -g ${RESOURCE_GROUP} –location ${AZURE_REGION} –name ${CLUSTER_NAME}sa –kind Storage –sku Standard_LRS

Resource provider ‘Microsoft.Storage’ used by this operation is not registered. We are registering for you.
Registration succeeded.
{- Finished ..
“accessTier”: null,
“allowBlobPublicAccess”: null,
“azureFilesIdentityBasedAuthentication”: null,
“blobRestoreStatus”: null,
“creationTime”: “2021-02-24T06:16:35.567172+00:00”,
“customDomain”: null,
“enableHttpsTrafficOnly”: true,
“encryption”: {
“keySource”: “Microsoft.Storage”,
“keyVaultProperties”: null,
“requireInfrastructureEncryption”: null,
“services”: {
“blob”: {
“enabled”: true,
“keyType”: “Account”,
“lastEnabledTime”: “2021-02-24T06:16:35.629673+00:00”
},
“file”: {
“enabled”: true,
“keyType”: “Account”,
“lastEnabledTime”: “2021-02-24T06:16:35.629673+00:00”
},
“queue”: null,
“table”: null
}
},
“failoverInProgress”: null,
“geoReplicationStats”: null,
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Storage/storageAccounts/nicpwheclustersa”,
“identity”: null,
“isHnsEnabled”: null,
“isHnsEnabled”: null,
“kind”: “Storage”,
“largeFileSharesState”: null,
“lastGeoFailoverTime”: null,
“location”: “japaneast”,
“minimumTlsVersion”: null,
“name”: “nicpwheclustersa”,
“networkRuleSet”: {
“bypass”: “AzureServices”,
“defaultAction”: “Allow”,
“ipRules”: [],
“virtualNetworkRules”: []
},
“primaryEndpoints”: {
“blob”: “https://nicpwheclustersa.blob.core.windows.net/”,
“dfs”: null,
“file”: “https://nicpwheclustersa.file.core.windows.net/”,
“internetEndpoints”: null,
“microsoftEndpoints”: null,
“queue”: “https://nicpwheclustersa.queue.core.windows.net/”,
“table”: “https://nicpwheclustersa.table.core.windows.net/”,
“web”: null
},
“primaryLocation”: “japaneast”,
“privateEndpointConnections”: [],
“provisioningState”: “Succeeded”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“routingPreference”: null,
“secondaryEndpoints”: null,
“secondaryLocation”: null,
“sku”: {
“name”: “Standard_LRS”,
“tier”: “Standard”
},
“statusOfPrimary”: “available”,
“statusOfSecondary”: null,
“tags”: {},
“type”: “Microsoft.Storage/storageAccounts”
}

(2)ストレージアカウントキーを環境変数としてエクスポート

$ export ACCOUNT_KEY=`az storage account keys list -g ${RESOURCE_GROUP} –account-name ${CLUSTER_NAME}sa –query “[0].value” -o tsv`

(3)VHD の URL を環境変数にエクスポート
今回はOCP4.5で構築するのでrelease-4.5ディレクトリを指定します。

$ export VHD_URL=`curl -s https://raw.githubusercontent.com/openshift/installer/release-4.5/data/data/rhcos.json | jq -r .azure.url`

(4)選択した VHD を blob にコピー

$ az storage container create –name vhd –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY}

{
“created”: true
}

コピーがスタートしたら、コマンドを実行してステータスを確認します。「Success」なったら完了です。

$ az storage blob copy start –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY} –destination-blob “rhcos.vhd” –destination-container vhd –source-uri “${VHD_URL}”
{
“completionTime”: null,
“id”: “afe1cb0f-9194-40b4-9a6c-d8f25c7b69bd”,
“progress”: null,
“source”: null,
“status”: “pending”,
“statusDescription”: null
}(状況確認コマンド)
$ az storage blob show –container-name vhd –name “rhcos.vhd” –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY} -o tsv –query properties.copy.status
success

(5)blob ストレージコンテナーを作成します。

$ az storage container create –name files –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY} –public-access blob

{
“created”: true
}

続いて、生成されたbootstrap.ignファイルをアップロードします。

$ az storage blob upload –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY} -c “files” -f “/home/user01/os45/bootstrap.ign” -n “bootstrap.ign”

{
“etag”: “00000002-0000-0000-8f3c-b41b770ad701”,
“id”: “/subscriptions/<id>/resourceGroups/ocp-cluster/providers/Microsoft.Network/dnszones/nicpwhecluster.”,
“location”: “global”,
“maxNumberOfRecordSets”: 10000,
“name”: “nicpwhecluster.”,
“nameServers”: [
“ns1-05.azure-dns.com.”,
“ns2-05.azure-dns.net.”,
“ns3-05.azure-dns.org.”,
“ns4-05.azure-dns.info.”
],
“numberOfRecordSets”: 2,
“registrationVirtualNetworks”: null,
“resolutionVirtualNetworks”: null,
“resourceGroup”: “ocp-cluster”,
“tags”: {},
“type”: “Microsoft.Network/dnszones”,
“zoneType”: “Public”
}

3-5. DNSゾーンの作成

(1)プライベートDNSゾーンを作成

$ az network dns zone create -g ${BASE_DOMAIN_RESOURCE_GROUP} -n \${CLUSTER_NAME}.${BASE_DOMAIN}

 {-Finished ..
“etag”: “02474d3c-85a2-4a48-8650-e837ea7df63b”,
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster.”,
“location”: “global”,
“maxNumberOfRecordSets”: 25000,
“maxNumberOfVirtualNetworkLinks”: 1000,
“maxNumberOfVirtualNetworkLinksWithRegistration”: 100,
“name”: “nicpwhecluster.”,
“numberOfRecordSets”: 1,
“numberOfVirtualNetworkLinks”: 0,
“numberOfVirtualNetworkLinksWithRegistration”: 0,
“provisioningState”: “Succeeded”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Network/privateDnsZones”
}

3-6. Azure での VNet の作成

(1)デプロイメントを作成
マニュアルページにある「VNet の ARM テンプレート」の内容をコピーして/home/user01/os45ディレクトリに01_vnet.jsonというファイルを作成し、コマンドを実行

$ az deployment group create -g ${RESOURCE_GROUP} –template-file “/home/user01/os45/01_vnet.json” –parameters baseName=”${INFRA_ID}”

{- Finished ..
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Resources/deployments/01_vnet”,
“location”: null,
“name”: “01_vnet”,
“properties”: {
“correlationId”: “0a44ba18-b094-41b1-9be5-16ae14c50593”,
“debugSetting”: null,
“dependencies”: [
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkSecurityGroups/nicpwhecluster-h8lq5-nsg”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-nsg”,
“resourceType”: “Microsoft.Network/networkSecurityGroups”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/virtualNetworks/nicpwhecluster-h8lq5-vnet”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-vnet”,
“resourceType”: “Microsoft.Network/virtualNetworks”
}
],
“duration”: “PT9.5604786S”,
“error”: null,
“mode”: “Incremental”,
“onErrorDeployment”: null,
“outputResources”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkSecurityGroups/nicpwhecluster-h8lq5-nsg”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/virtualNetworks/nicpwhecluster-h8lq5-vnet”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
}
],
“outputs”: null,
“parameters”: {
“baseName”: {
“type”: “String”,
“value”: “nicpwhecluster-h8lq5”
}
},
“parametersLink”: null,
“providers”: [
{
“id”: null,
“namespace”: “Microsoft.Network”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “virtualNetworks”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “networkSecurityGroups”
}
]
}
],
“provisioningState”: “Succeeded”,
“templateHash”: “16546001156426103307”,
“templateLink”: null,
“timestamp”: “2021-02-24T06:39:35.707206+00:00”,
“validatedResources”: null
},
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Resources/deployments”
}

(2)VNet テンプレートをプライベート DNS ゾーンにリンク

$ az network private-dns link vnet create -g ${RESOURCE_GROUP} -z ${CLUSTER_NAME}.${BASE_DOMAIN} -n ${INFRA_ID}-network-link -v “${INFRA_ID}-vnet” -e false

{- Finished ..
“etag”: “\”7e02aec1-0000-0100-0000-6035f4fb0000\””,
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./virtualNetworkLinks/nicpwhecluster-h8lq5-network-link”,
“location”: “global”,
“name”: “nicpwhecluster-h8lq5-network-link”,
“provisioningState”: “Succeeded”,
“registrationEnabled”: false,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Network/privateDnsZones/virtualNetworkLinks”,
“virtualNetwork”: {
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/virtualNetworks/nicpwhecluster-h8lq5-vnet”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
“virtualNetworkLinkState”: “Completed”
}

3-7. RHCOS クラスターイメージのデプロイ

(1)RHCOS VHD blob URL を変数としてエクスポート

$ export VHD_BLOB_URL=`az storage blob url –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY} -c vhd -n “rhcos.vhd” -o tsv`

(2)クラスターイメージのデプロイ
マニュアルページにある「イメージストレージの ARM テンプレート」の内容をコピーして/home/user01/os45ディレクトリに02_storage.jsonというファイルを作成し、コマンドを実行します。

$ az deployment group create -g ${RESOURCE_GROUP} –template-file “/home/user01/os45/02_storage.json” –parameters vhdBlobURL=”${VHD_BLOB_URL}” –parameters baseName=”${INFRA_ID}”

– Finished ..
{- Finished ..
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Resources/deployments/02_storage”,
“location”: null,
“name”: “02_storage”,
“properties”: {
“correlationId”: “0d04f61c-907e-4ccb-b364-a5c50c0e9ae7”,
“debugSetting”: null,
“dependencies”: [],
“duration”: “PT13.9015046S”,
“error”: null,
“mode”: “Incremental”,
“onErrorDeployment”: null,
“outputResources”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/images/nicpwhecluster-h8lq5-image”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
}
],
“outputs”: null,
“parameters”: {
“baseName”: {
“type”: “String”,
“value”: “nicpwhecluster-h8lq5”
},
“vhdBlobURL”: {
“type”: “String”,
“value”: “https://nicpwheclustersa.blob.core.windows.net/vhd/rhcos.vhd”
}
},
“parametersLink”: null,
“providers”: [
{
“id”: null,
“namespace”: “Microsoft.Compute”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “images”
}
]
}
],
“provisioningState”: “Succeeded”,
“templateHash”: “723175588916620424”,
“templateLink”: null,
“timestamp”: “2021-02-24T06:45:00.292869+00:00”,
“validatedResources”: null
},
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Resources/deployments”
}

3-8.ネットワークおよび負荷分散コンポーネントの作成

(1)ネットワークオブジェクトおよびロードバランサーのデプロイ
マニュアルページにある「ネットワークおよびロードバランサーの ARM テンプレート」の内容をコピーして/home/user01/os45ディレクトリに03_infra.jsonというファイルを作成し、コマンドを実行します。

$ az deployment group create -g ${RESOURCE_GROUP} –template-file “/home/user01/os45/03_infra.json” –parameters privateDNSZoneName=”${CLUSTER_NAME}.${BASE_DOMAIN}” –parameters baseName=”${INFRA_ID}”

{- Finished ..
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Resources/deployments/03_infra”,
“location”: null,
“name”: “03_infra”,
“properties”: {
“correlationId”: “32467378-c2a4-4e99-b950-9b3ba06ba768”,
“debugSetting”: null,
“dependencies”: [
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/publicIPAddresses/nicpwhecluster-h8lq5-master-pip”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-pip”,
“resourceType”: “Microsoft.Network/publicIPAddresses”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/loadBalancers/nicpwhecluster-h8lq5-public-lb”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-public-lb”,
“resourceType”: “Microsoft.Network/loadBalancers”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/loadBalancers/nicpwhecluster-h8lq5-internal-lb”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-internal-lb”,
“resourceType”: “Microsoft.Network/loadBalancers”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/api”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./api”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/loadBalancers/nicpwhecluster-h8lq5-internal-lb”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-internal-lb”,
“resourceType”: “Microsoft.Network/loadBalancers”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/api-int”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./api-int”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
}
],
“duration”: “PT7.2301651S”,
“error”: null,
“mode”: “Incremental”,
“onErrorDeployment”: null,
“outputResources”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/loadBalancers/nicpwhecluster-h8lq5-internal-lb”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/loadBalancers/nicpwhecluster-h8lq5-public-lb”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/api”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/api-int”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/publicIPAddresses/nicpwhecluster-h8lq5-master-pip”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
}
],
“outputs”: null,
“parameters”: {
“baseName”: {
“type”: “String”,
“value”: “nicpwhecluster-h8lq5”
},
“privateDNSZoneName”: {
“type”: “String”,
“value”: “nicpwhecluster.”
}
},
“parametersLink”: null,
“providers”: [
{
“id”: null,
“namespace”: “Microsoft.Network”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “publicIPAddresses”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “loadBalancers”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “privateDnsZones/A”
}
]
}
],
“provisioningState”: “Succeeded”,
“templateHash”: “8527193543920854248”,
“templateLink”: null,
“timestamp”: “2021-02-24T07:02:29.639760+00:00”,
“validatedResources”: null
},
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Resources/deployments”
}

(2)変数のエクスポートとクラスターを既存のパブリックゾーンに追加
まず変数をエクスポートします。

$ export PUBLIC_IP=`az network public-ip list -g ${RESOURCE_GROUP} –query “[?name==’${INFRA_ID}-master-pip’] | [0].ipAddress” -o tsv`

クラスターを既存のパブリックゾーンに追加します。

$ az network dns record-set a add-record -g ${BASE_DOMAIN_RESOURCE_GROUP} -z ${BASE_DOMAIN} -n api.${CLUSTER_NAME} -a ${PUBLIC_IP} –ttl 60

{
“arecords”: [
{
“ipv4Address”: “20.78.25.157”
}
],
“etag”: “e1b034dc-580a-460e-8579-d7789e6aa43c”,
“fqdn”: “api.nicpwhecluster..”,
“id”: “/subscriptions/<id>/resourceGroups/ocp-cluster/providers/Microsoft.Network/dnszones//A/api.nicpwhecluster”,
“metadata”: null,
“name”: “api.nicpwhecluster”,
“provisioningState”: “Succeeded”,
“resourceGroup”: “ocp-cluster”,
“targetResource”: {
“id”: null
},
“ttl”: 60,
“type”: “Microsoft.Network/dnszones/A”
}

3-9.ノードの作成

(1)ブートストラップマシンの作成
まず変数をエクスポートします。

$ export BOOTSTRAP_URL=`az storage blob url –account-name ${CLUSTER_NAME}sa –account-key ${ACCOUNT_KEY} -c “files” -n “bootstrap.ign” -o tsv`

$ export BOOTSTRAP_IGNITION=`jq -rcnM –arg v “2.2.0” –arg url ${BOOTSTRAP_URL} ‘{ignition:{version:$v,config:{replace:{source:$url}}}}’ | base64 -w0`

マニュアルページにある「ブートストラップマシンの ARM テンプレート」の内容をコピーして/home/user01/os45ディレクトリに04_bootstrap.jsonというファイルを作成し、コマンドを実行します。

$ az deployment group create -g ${RESOURCE_GROUP} –template-file “/home/user01/os45/04_bootstrap.json” –parameters bootstrapIgnition=”${BOOTSTRAP_IGNITION}” –parameters sshKeyData=”${SSH_KEY}” –parameters baseName=”${INFRA_ID}”

{- Finished ..
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Resources/deployments/04_bootstrap”,
“location”: null,
“name”: “04_bootstrap”,
“properties”: {
“correlationId”: “6bfb12f9-fade-4ab0-99e2-a6acc50a0e67”,
“debugSetting”: null,
“dependencies”: [
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/publicIPAddresses/nicpwhecluster-h8lq5-bootstrap-ssh-pip”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-bootstrap-ssh-pip”,
“resourceType”: “Microsoft.Network/publicIPAddresses”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-bootstrap-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-bootstrap-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-bootstrap-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-bootstrap-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-bootstrap”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-bootstrap”,
“resourceType”: “Microsoft.Compute/virtualMachines”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-bootstrap”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-bootstrap”,
“resourceType”: “Microsoft.Compute/virtualMachines”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkSecurityGroups/nicpwhecluster-h8lq5-nsg/securityRules/bootstrap_ssh_in”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-nsg/bootstrap_ssh_in”,
“resourceType”: “Microsoft.Network/networkSecurityGroups/securityRules”
}
],
“duration”: “PT2M34.7216702S”,
“error”: null,
“mode”: “Incremental”,
“onErrorDeployment”: null,
“outputResources”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-bootstrap”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-bootstrap-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkSecurityGroups/nicpwhecluster-h8lq5-nsg/securityRules/bootstrap_ssh_in”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/publicIPAddresses/nicpwhecluster-h8lq5-bootstrap-ssh-pip”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
}
],
“outputs”: null,
“parameters”: {
“baseName”: {
“type”: “String”,
“value”: “nicpwhecluster-h8lq5”
},
“bootstrapIgnition”: {
“type”: “String”,
“value”: “eyJpZ25pdGlvbiI6eyJ2ZXJzaW9uIjoiMi4yLjAiLCJjb25maWciOnsicmVwbGFjZSI6eyJzb3VyY2UiOiJodHRwczovL25pY3B3aGVjbHVzdGVyc2EuYmxvYi5jb3JlLndpbmRvd3MubmV0L2ZpbGVzL2Jvb3RzdHJhcC5pZ24ifX19fQo=”
},
“bootstrapVMSize”: {
“type”: “String”,
“value”: “Standard_D4s_v3”
},
“sshKeyData”: {
“type”: “SecureString”
}
},
“parametersLink”: null,
“providers”: [
{
“id”: null,
“namespace”: “Microsoft.Network”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “publicIPAddresses”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “networkInterfaces”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “networkSecurityGroups/securityRules”
}
]
},
{
“id”: null,
“namespace”: “Microsoft.Compute”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “virtualMachines”
}
]
}
],
“provisioningState”: “Succeeded”,
“templateHash”: “61131872004139608”,
“templateLink”: null,
“timestamp”: “2021-02-24T07:15:18.354401+00:00”,
“validatedResources”: null
},
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Resources/deployments”
}

(2)コントロールプレーンの作成
マニュアルページにある「コントロールプレーンマシンの ARM テンプレート」の内容をコピーして/home/user01/os45ディレクトリに05_masters.jsonというファイルを作成し、コマンドを実行します。

$ az deployment group create -g ${RESOURCE_GROUP} –template-file “/home/user01/os45/05_masters.json” –parameters masterIgnition=”${MASTER_IGNITION}” –parameters sshKeyData=”${SSH_KEY}” –parameters privateDNSZoneName=”${CLUSTER_NAME}.${BASE_DOMAIN}” –parameters baseName=”${INFRA_ID}”

{- Finished ..
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Resources/deployments/05_masters”,
“location”: null,
“name”: “05_masters”,
“properties”: {
“correlationId”: “8d3c2bed-113b-4889-8aa7-b0bfba69ea74”,
“debugSetting”: null,
“dependencies”: [
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-0-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-0-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-0”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./etcd-0”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-1-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-1-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-1”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./etcd-1”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-2-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-2-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-2”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./etcd-2”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-0-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-0-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-0”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./etcd-0”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./SRV/_etcd-server-ssl._tcp”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./_etcd-server-ssl._tcp”,
“resourceType”: “Microsoft.Network/privateDnsZones/SRV”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-master-0”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-0”,
“resourceType”: “Microsoft.Compute/virtualMachines”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-1-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-1-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-1”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./etcd-1”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./SRV/_etcd-server-ssl._tcp”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./_etcd-server-ssl._tcp”,
“resourceType”: “Microsoft.Network/privateDnsZones/SRV”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-master-1”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-1”,
“resourceType”: “Microsoft.Compute/virtualMachines”
},
{
“dependsOn”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-2-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-2-nic”,
“resourceType”: “Microsoft.Network/networkInterfaces”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-2”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./etcd-2”,
“resourceType”: “Microsoft.Network/privateDnsZones/A”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./SRV/_etcd-server-ssl._tcp”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster./_etcd-server-ssl._tcp”,
“resourceType”: “Microsoft.Network/privateDnsZones/SRV”
}
],
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-master-2”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“resourceName”: “nicpwhecluster-h8lq5-master-2”,
“resourceType”: “Microsoft.Compute/virtualMachines”
}
],
“duration”: “PT2M25.3829982S”,
“error”: null,
“mode”: “Incremental”,
“onErrorDeployment”: null,
“outputResources”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-master-0”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-master-1”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-master-2”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-0-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-1-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-master-2-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-0”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-1”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./A/etcd-2”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/privateDnsZones/nicpwhecluster./SRV/_etcd-server-ssl._tcp”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
}
],
“outputs”: null,
“parameters”: {
“baseName”: {
“type”: “String”,
“value”: “nicpwhecluster-h8lq5”
},
“diskSizeGB”: {
“type”: “Int”,
“value”: 1024
},
“masterIgnition”: {
“type”: “String”,
“value”: “eyJpZ25pdGlvbiI6eyJjb25maWciOnsiYXBwZW5kIjpbeyJzb3VyY2UiOiJodHRwczovL2FwaS1p\nbnQubmljcHdoZWNsdXN0ZXIuYXp1cmUtY2xvdWRwYWstbmljcHRlc3QuY29tOjIyNjIzL2NvbmZp\nZy9tYXN0ZXIiLCJ2ZXJpZmljYXRpb24iOnt9fV19LCJzZWN1cml0eSI6eyJ0bHMiOnsiY2VydGlm\naWNhdGVBdXRob3JpdGllcyI6W3sic291cmNlIjoiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm\nLTg7YmFzZTY0LExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVJGUkVO\nRFFXWnBaMEYzU1VKQlowbEpVek0xZEVoNmRtUnVWMFYzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpS\nUVhkS2FrVlRUVUpCUjBFeFZVVUtRM2hOU21JelFteGliazV2WVZkYU1FMVNRWGRFWjFsRVZsRlJS\nRVYzWkhsaU1qa3dURmRPYUUxQ05GaEVWRWw0VFVSSmVVNUVRVEpOUkVFd1RteHZXQXBFVkUxNFRV\nUkplVTFxUVRKTlJFRXdUbXh2ZDBwcVJWTk5Ra0ZIUVRGVlJVTjRUVXBpTTBKc1ltNU9iMkZYV2pC\nTlVrRjNSR2RaUkZaUlVVUkZkMlI1Q21JeU9UQk1WMDVvVFVsSlFrbHFRVTVDWjJ0eGFHdHBSemwz\nTUVKQlVVVkdRVUZQUTBGUk9FRk5TVWxDUTJkTFEwRlJSVUV5VW14VlJuVjBVbUZtVHpRS2FVcFBh\nVTR4YVZvMWNYWmFkMjQ1TUdaNGQwZzVRelF5T0M5MWFHVXZkV2hXVTJOdVVURnVjV3Q0UVd0c2JW\naHlNbmhVVmxsMWJXUmFOREptTmtJeE5nb3dkM0F3TjNWbFYxbHBTMlZPT1VkclprUjVPRlpZUTJS\nTU5raHNkRGxVWVVrd01UQkpUakJUVUVWWldFeDFORmxsSzJoRVRpdHJkR3RoV0V0a1QycG5DbWRO\nTHpOQmMwRlFSM1p5UjNoMlVUa3ZURloxZW5odVkwNUhWVUppTUZnNU1tVnFURWRMVGtoalZITlNU\nSFZtWVdSSFJFOVBibXhYZDJWWkwySmFOa1lLZUZCQ05FVjVhVVJHUVhsbmEwUkVSVFJyT0RkeVNY\naDVZVkpZTkhRMVkwOXpSWFpJZFdOSE5tUXdSekl3U2xRMWMzcHZhV0pwTUN0NVJGcE1kRk51ZFFw\nYWIyWkJTaXREZVRoVloxSndZWE5sYUZjeFpteHNWRklyZURSUVVDODFTbFUxYURWV00ySnlSM0pJ\nVjBwTVFqUnVhemszWm10aVFVTTJiMlZzUkdOWENqbFNlamQwVTFKT1RWRkpSRUZSUVVKdk1FbDNV\nVVJCVDBKblRsWklVVGhDUVdZNFJVSkJUVU5CY1ZGM1JIZFpSRlpTTUZSQlVVZ3ZRa0ZWZDBGM1JV\nSUtMM3BCWkVKblRsWklVVFJGUm1kUlZUTktkRWMzZGtKb1RrWlllREptYzNWbFdHNTNVV0ZoTjNW\nRVdYZEVVVmxLUzI5YVNXaDJZMDVCVVVWTVFsRkJSQXBuWjBWQ1FVbHhNa2xNU1c4NGNVbFpOMXA0\nZERoc04yOUthVzQzY0U1SFZrZ3ZRMDF4Umlzd01GTlpVemQ2VGxBck1GZzBRMU5RUWtrd1dtWllW\nM1Z3Q2s1U1kwVkpTVGxqVW5vME1tczBOVlZTVm1saU5XeFdVR1prY1RSa2NEZG1aSGRKVVdGc04y\nTnNPSEJVVUhJMVpXcG9SbEJGVmpSeFpGY3pWSGRFVkhjS00yOTZZWGc1UmtVM1p5dGxZbEp6Vmtk\nSVlWRlVUVzVDZVRKQmFrVkJZbGxGTkRSWlp6UkJjbWRoWlZGaVNUZGhhMkp6WjNSNlpqQnlUSGg1\nU1RWR1RncHNiMmR5ZUcxV1dFdFJNVkUwYzI1NmVWWndSa05tUW05WFpraFdVMmhUUm1rM2JHUm9S\nV3RsU0ZaQ1ExaHNPVzlYUTI5UUszQmtUalp0UjFsb1dGTlZDbFZVYUd4RVpXcEZNV2x0ZVhGTmVI\nTnhTblJJYjJsdFoxTnJkWE5SVkVWVk1ETXdZVWRrUWtOVWNITXpaM0JPTWtKQmNqVm5SMVpDY0hk\nalJtOHZjazRLT1hKbE1FSk5URTFCU21SSFdGSlVSekJLWmtJNE1XNVVWUzlSUFFvdExTMHRMVVZP\nUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2c9PSIsInZlcmlmaWNhdGlvbiI6e319XX19LCJ0aW1l\nb3V0cyI6e30sInZlcnNpb24iOiIyLjIuMCJ9LCJuZXR3b3JrZCI6e30sInBhc3N3ZCI6e30sInN0\nb3JhZ2UiOnt9LCJzeXN0ZW1kIjp7fX0=”
},
“masterVMSize”: {
“type”: “String”,
“value”: “Standard_D8s_v3”
},
“numberOfMasters”: {
“type”: “Int”,
“value”: 3
},
“privateDNSZoneName”: {
“type”: “String”,
“value”: “nicpwhecluster.”
},
“sshKeyData”: {
“type”: “SecureString”
}
},
“parametersLink”: null,
“providers”: [
{
“id”: null,
“namespace”: “Microsoft.Network”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “privateDnsZones/SRV”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “networkInterfaces”
},
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “privateDnsZones/A”
}
]
},
{
“id”: null,
“namespace”: “Microsoft.Compute”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
“japaneast”
],
“properties”: null,
“resourceType”: “virtualMachines”
}
]
}
],
“provisioningState”: “Succeeded”,
“templateHash”: “6843960507431905901”,
“templateLink”: null,
“timestamp”: “2021-02-24T08:02:39.379059+00:00”,
“validatedResources”: null
},
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Resources/deployments”
}

(3)ワーカーマシンの作成
まず変数をエクスポートします。

$ export WORKER_IGNITION=`cat /home/user01/os45/worker.ign | base64`

マニュアルページにある「ワーカーマシンの ARM テンプレート」の内容をコピーして/home/user01/os45ディレクトリに06_workers.jsonというファイルを作成し、コマンドを実行します。

$ az deployment group create -g ${RESOURCE_GROUP} –template-file “/home/user01/os45/06_workers.json” –parameters workerIgnition=”${WORKER_IGNITION}” –parameters sshKeyData=”${SSH_KEY}” –parameters baseName=”${INFRA_ID}”

{- Finished ..
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Resources/deployments/06_workers”,
“location”: null,
“name”: “06_workers”,
“properties”: {
“correlationId”: “f5b06e10-75d0-4768-8546-637a838d11f4”,
“debugSetting”: null,
“dependencies”: [],
“duration”: “PT1M45.2779547S”,
“error”: null,
“mode”: “Incremental”,
“onErrorDeployment”: null,
“outputResources”: [
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-worker-japaneast-1”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-worker-japaneast-2”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Compute/virtualMachines/nicpwhecluster-h8lq5-worker-japaneast-3”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-worker-japaneast-1-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-worker-japaneast-2-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
},
{
“id”: “/subscriptions/<id>/resourceGroups/nicpwhecluster-h8lq5-rg/providers/Microsoft.Network/networkInterfaces/nicpwhecluster-h8lq5-worker-japaneast-3-nic”,
“resourceGroup”: “nicpwhecluster-h8lq5-rg”
}
],
“outputs”: null,
“parameters”: {
“baseName”: {
“type”: “String”,
“value”: “nicpwhecluster-h8lq5”
},
“nodeVMSize”: {
“type”: “String”,
“value”: “Standard_D4s_v3”
},
“numberOfNodes”: {
“type”: “Int”,
“value”: 3
},
“sshKeyData”: {
“type”: “SecureString”
},
“workerIgnition”: {
“type”: “String”,
“value”: “eyJpZ25pdGlvbiI6eyJjb25maWciOnsiYXBwZW5kIjpbeyJzb3VyY2UiOiJodHRwczovL2FwaS1p\nbnQubmljcHdoZWNsdXN0ZXIuYXp1cmUtY2xvdWRwYWstbmljcHRlc3QuY29tOjIyNjIzL2NvbmZp\nZy93b3JrZXIiLCJ2ZXJpZmljYXRpb24iOnt9fV19LCJzZWN1cml0eSI6eyJ0bHMiOnsiY2VydGlm\naWNhdGVBdXRob3JpdGllcyI6W3sic291cmNlIjoiZGF0YTp0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm\nLTg7YmFzZTY0LExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVJGUkVO\nRFFXWnBaMEYzU1VKQlowbEpVek0xZEVoNmRtUnVWMFYzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpS\nUVhkS2FrVlRUVUpCUjBFeFZVVUtRM2hOU21JelFteGliazV2WVZkYU1FMVNRWGRFWjFsRVZsRlJS\nRVYzWkhsaU1qa3dURmRPYUUxQ05GaEVWRWw0VFVSSmVVNUVRVEpOUkVFd1RteHZXQXBFVkUxNFRV\nUkplVTFxUVRKTlJFRXdUbXh2ZDBwcVJWTk5Ra0ZIUVRGVlJVTjRUVXBpTTBKc1ltNU9iMkZYV2pC\nTlVrRjNSR2RaUkZaUlVVUkZkMlI1Q21JeU9UQk1WMDVvVFVsSlFrbHFRVTVDWjJ0eGFHdHBSemwz\nTUVKQlVVVkdRVUZQUTBGUk9FRk5TVWxDUTJkTFEwRlJSVUV5VW14VlJuVjBVbUZtVHpRS2FVcFBh\nVTR4YVZvMWNYWmFkMjQ1TUdaNGQwZzVRelF5T0M5MWFHVXZkV2hXVTJOdVVURnVjV3Q0UVd0c2JW\naHlNbmhVVmxsMWJXUmFOREptTmtJeE5nb3dkM0F3TjNWbFYxbHBTMlZPT1VkclprUjVPRlpZUTJS\nTU5raHNkRGxVWVVrd01UQkpUakJUVUVWWldFeDFORmxsSzJoRVRpdHJkR3RoV0V0a1QycG5DbWRO\nTHpOQmMwRlFSM1p5UjNoMlVUa3ZURloxZW5odVkwNUhWVUppTUZnNU1tVnFURWRMVGtoalZITlNU\nSFZtWVdSSFJFOVBibXhYZDJWWkwySmFOa1lLZUZCQ05FVjVhVVJHUVhsbmEwUkVSVFJyT0RkeVNY\naDVZVkpZTkhRMVkwOXpSWFpJZFdOSE5tUXdSekl3U2xRMWMzcHZhV0pwTUN0NVJGcE1kRk51ZFFw\nYWIyWkJTaXREZVRoVloxSndZWE5sYUZjeFpteHNWRklyZURSUVVDODFTbFUxYURWV00ySnlSM0pJ\nVjBwTVFqUnVhemszWm10aVFVTTJiMlZzUkdOWENqbFNlamQwVTFKT1RWRkpSRUZSUVVKdk1FbDNV\nVVJCVDBKblRsWklVVGhDUVdZNFJVSkJUVU5CY1ZGM1JIZFpSRlpTTUZSQlVVZ3ZRa0ZWZDBGM1JV\nSUtMM3BCWkVKblRsWklVVFJGUm1kUlZUTktkRWMzZGtKb1RrWlllREptYzNWbFdHNTNVV0ZoTjNW\nRVdYZEVVVmxLUzI5YVNXaDJZMDVCVVVWTVFsRkJSQXBuWjBWQ1FVbHhNa2xNU1c4NGNVbFpOMXA0\nZERoc04yOUthVzQzY0U1SFZrZ3ZRMDF4Umlzd01GTlpVemQ2VGxBck1GZzBRMU5RUWtrd1dtWllW\nM1Z3Q2s1U1kwVkpTVGxqVW5vME1tczBOVlZTVm1saU5XeFdVR1prY1RSa2NEZG1aSGRKVVdGc04y\nTnNPSEJVVUhJMVpXcG9SbEJGVmpSeFpGY3pWSGRFVkhjS00yOTZZWGc1UmtVM1p5dGxZbEp6Vmtk\nSVlWRlVUVzVDZVRKQmFrVkJZbGxGTkRSWlp6UkJjbWRoWlZGaVNUZGhhMkp6WjNSNlpqQnlUSGg1\nU1RWR1RncHNiMmR5ZUcxV1dFdFJNVkUwYzI1NmVWWndSa05tUW05WFpraFdVMmhUUm1rM2JHUm9S\nV3RsU0ZaQ1ExaHNPVzlYUTI5UUszQmtUalp0UjFsb1dGTlZDbFZVYUd4RVpXcEZNV2x0ZVhGTmVI\nTnhTblJJYjJsdFoxTnJkWE5SVkVWVk1ETXdZVWRrUWtOVWNITXpaM0JPTWtKQmNqVm5SMVpDY0hk\nalJtOHZjazRLT1hKbE1FSk5URTFCU21SSFdGSlVSekJLWmtJNE1XNVVWUzlSUFFvdExTMHRMVVZP\nUkNCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2c9PSIsInZlcmlmaWNhdGlvbiI6e319XX19LCJ0aW1l\nb3V0cyI6e30sInZlcnNpb24iOiIyLjIuMCJ9LCJuZXR3b3JrZCI6e30sInBhc3N3ZCI6e30sInN0\nb3JhZ2UiOnt9LCJzeXN0ZW1kIjp7fX0=”
}
},
“parametersLink”: null,
“providers”: [
{
“id”: null,
“namespace”: “Microsoft.Resources”,
“registrationPolicy”: null,
“registrationState”: null,
“resourceTypes”: [
{
“aliases”: null,
“apiProfiles”: null,
“apiVersions”: null,
“capabilities”: null,
“defaultApiVersion”: null,
“locationMappings”: null,
“locations”: [
null
],
“properties”: null,
“resourceType”: “deployments”
}
]
}
],
“provisioningState”: “Succeeded”,
“templateHash”: “18038938870077969594”,
“templateLink”: null,
“timestamp”: “2021-02-24T08:19:00.447842+00:00”,
“validatedResources”: null
},
“resourceGroup”: “nicpwhecluster-h8lq5-rg”,
“tags”: null,
“type”: “Microsoft.Resources/deployments”
}

(4)クラスターへのログイン
ocコマンドにてクラスタにログインします。

$ export KUBECONFIG=/home/user01/os45/auth/kubeconfig
$ oc whoami
system:admin

(5)マシンの証明書署名要求の承認
まずマスターに認識されるすべてのノードを一覧表示します。まだワーカーマシンが表示されていません。

$ oc get nodes
NAME STATUS ROLES AGE VERSION
nicpwhecluster-h8lq5-master-0 Ready master 21m v1.18.3+e574db2
nicpwhecluster-h8lq5-master-1 Ready master 21m v1.18.3+e574db2
nicpwhecluster-h8lq5-master-2 Ready master 21m v1.18.3+e574db2

保留中の証明書署名要求 (CSR) でいくつか「Pending」になっていることを確認します。

$ oc get csr
NAME AGE SIGNERNAME REQUESTOR CONDITION
csr-4ltzq 21m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued
csr-5ff59 22m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued
csr-8cxlk 22m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Approved,Issued
csr-d79hz 21m kubernetes.io/kubelet-serving system:node:nicpwhecluster-h8lq5-master-2 Approved,Issued
csr-ghhrm 22m kubernetes.io/kubelet-serving system:node:nicpwhecluster-h8lq5-master-1 Approved,Issued
csr-jtts9 7m15s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
csr-m68ns 7m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
csr-vgtp6 7m2s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending
csr-wwptz 21m kubernetes.io/kubelet-serving system:node:nicpwhecluster-h8lq5-master-0 Approved,Issued$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{“\n”}}{{end}}{{end}}’ | xargs oc adm certificate approvecertificatesigningrequest.certificates.k8s.io/csr-jtts9 approved
certificatesigningrequest.certificates.k8s.io/csr-m68ns approved
certificatesigningrequest.certificates.k8s.io/csr-vgtp6 approved

再度マスターに認識されるすべてのノードを一覧表示し、ワーカーマシンがReadyになっていることを確認します。

$ oc get nodes
NAME STATUS ROLES AGE VERSION
nicpwhecluster-h8lq5-master-0 Ready master 24m v1.18.3+e574db2
nicpwhecluster-h8lq5-master-1 Ready master 25m v1.18.3+e574db2
nicpwhecluster-h8lq5-master-2 Ready master 24m v1.18.3+e574db2
nicpwhecluster-h8lq5-worker-japaneast-1 Ready worker 2m2s v1.18.3+e574db2
nicpwhecluster-h8lq5-worker-japaneast-2 Ready worker 2m6s v1.18.3+e574db2
nicpwhecluster-h8lq5-worker-japaneast-3 Ready worker 2m v1.18.3+e574db2

(6)ブートストラップリソースを削除
これですべてのノードが作成されて利用可能となりましたので、ブートストラップノードと関連するリソースを削除します。

$ ./openshift-install wait-for bootstrap-complete –dir=/home/user01/os45/ –log-level info

INFO Waiting up to 20m0s for the Kubernetes API at https://api.nicpwhecluster.:6443…
INFO API v1.18.3+e574db2 up
INFO Waiting up to 40m0s for bootstrapping to complete…
INFO It is now safe to remove the bootstrap resources
INFO Time elapsed: 0s

$ az network nsg rule delete -g ${RESOURCE_GROUP} –nsg-name ${INFRA_ID}-nsg –name bootstrap_ssh_in
$ az vm stop -g ${RESOURCE_GROUP} –name ${INFRA_ID}-bootstrap

About to power off the specified VM…
It will continue to be billed. To deallocate a VM, run: az vm deallocate.

$ az vm deallocate -g ${RESOURCE_GROUP} –name ${INFRA_ID}-bootstrap
$ az vm delete -g ${RESOURCE_GROUP} –name ${INFRA_ID}-bootstrap –yes
$ az disk delete -g ${RESOURCE_GROUP} –name ${INFRA_ID}-bootstrap_OSDisk –no-wait –yes
$ az network nic delete -g ${RESOURCE_GROUP} –name ${INFRA_ID}-bootstrap-nic –no-wait
$ az storage blob delete –account-key ${ACCOUNT_KEY} –account-name ${CLUSTER_NAME}sa –container-name files –name bootstrap.ign
$ az network public-ip delete -g ${RESOURCE_GROUP} –name ${INFRA_ID}-bootstrap-ssh-pip

(7)クラスターのインストールを完了する

$ ./openshift-install –dir=/home/user01/os45/ wait-for install-complete

INFO Waiting up to 30m0s for the cluster at https://api.nicpwhecluster.:6443 to initialize…
INFO Waiting up to 10m0s for the openshift-console route to be created…
INFO Install complete!
INFO To access the cluster as the system:admin user when using ‘oc’, run ‘export KUBECONFIG=/home/user01/os45/auth/kubeconfig’
INFO Access the OpenShift web-console here: https://console-openshift-console.apps.nicpwhecluster.
INFO Login to the console with user: “kubeadmin”, and password: “<パスワード>”
INFO Time elapsed: 1s

(8)ログイン

$ oc login -u kubeadmin -p  <パスワード>https://api.nicpwhecluster.:6443
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others.
Use insecure connections? (y/n): yLogin successful.You have access to 58 projects, the list has been suppressed. You can list all projects with ‘oc projects’Using project “default”.

 

 

その他の記事

2022年06月24日

【早わかり】AIX と IBM i ライセンス情報

こんにちは。エヌアイシー・パートナーズ 村上です。 2022年度は新しい試みとして、 ・理解しているつもりだけど説明はできない ・時間があれば調べたいと思っていた ・当たり前な知識かもしれなくて質問しにくい という内容を取り上げた「早わかりシリーズ」を掲載していきます。 今回は、IBM Power のメインOS、AIX と IBM i のライセンス情報をご紹介します。 AIX とIBM i は、片方のライセンス情報しか知らないという方も意外と多いので、ぜひこの機会に比較しながら読んでみてくださいね。   セクション 1) 永続ライセンスのおさらい 2) マンスリーとサブスクリプションをご存じですか? 3) ライフサイクルとバージョンのポイント   1) 永続ライセンスのおさらい AIX とIBM i のスタンダードなライセンス「永続ライセンス」。 有効期限のない永続ライセンスは、SWMA (SoftWare MAintenance) と合わせて所有します。 永続ライセンス OSを利用できる権利。1年目に購入。 SWMA 「サブスクリプション(最新バージョンへのアップグレード)」と「テクニカルサポート(対象製品に対するQAサポート)」の権利。 1年~5年で選択し、継続するためには都度オーダーが必要。 更改などで新ハードウェアへ移行する場合、 AIX 永続ライセンスはIBM Power本体に紐づくので、新ハードウェアになるタイミングで永続ライセンスが買い直しになります IBM i 既存機のライセンスを新ハードウェア移管することが可能です(移行先の機械レベルが高くなる場合は追加料金が発生) IBM i には、移行中ライセンスとして安価なITL(IBM Temporary License)が提供されたり、DR機専用のライセンスがあったりもします。   2) マンスリーとサブスクリプションをご存じですか? さて、このセクションが今回のブログの本題です。 2022年6月現在、AIX とIBM i には「永続」「マンスリー」「サブスクリプション」と3種類のライセンスがあります。 以下は利用ケースのイメージです。 利用ケース 永続ライセンス ・長期間利用 マンスリーラインセンス ・移行時の短期利用 ・スパイク(最低限の環境をさっと作って概ねの方向性を確認する) サブスクリプションライセンス ・初期投資を抑えたい場合に利用 ・HWに依存せず臨機応変に利用(中長期間でAIXの場合) サブスクリプションライセンスは、AIX は2021年、IBM i は2022年に提供が開始されました。 (表が見えにくいのでクリックして拡大してご覧ください) サブスクリプションライセンスは、今後拡張が予定されています。 利用ケースにあったライセンスを選択できるようになってきたので、臨機応変な検討ができるようになりますね。   3) ライフサイクルとバージョンのポイント 2022年6月時点で、IBMは「AIX も IBM i も将来の投資を継続する」という発表をしています。 IBM Power ユーザとしては一安心です。 どちらのOSも、サポートライフサイクルは10年間となります。 下記にバージョンのポイントを纏めてみました。 <AIX > 購入できるバージョン v7.2 , v7.3 標準サポートがあるバージョン v7.1, v7.2, v7.3 どうやってもサポートが終わっているバージョン v5.3 実はまだ有償延長サポートがあるバージョン v6.1 TLが出るタイミング(※) 1回/年、成熟してくると1回/2年 サポートライフサイクル(10年) 標準(最短6年)+延長保守(3~5年) <IBM i > 購入できるバージョン v7.3 , v7.4, v7.5 標準サポートがあるバージョン v7.3, v7.4, v7.5 どうやってもサポートが終わっているバージョン v6.1 実はまだ有償延長サポートがあるバージョン v7.1, v7.2 TRが出るタイミング(※) 2回/年(最新バージョンと1世代前のバージョンに対して) サポートライフサイクル(10年) 標準(7年)+延長保守(3年) <※TLとTRの補足> TL:テクノロジー・レベル。AIXにおける問題の修正、新しいハードウェアのサポート、ソフトウェアの機能拡張が含まれたプログラム。 TR:テクノロジー・リフレッシュ。IBM i におけるオファリング、サービス、およびハードウェアの機能拡張を提供するプログラム。 かなり前のバージョンも、延長保守のサポートがあるため更改時も安心です。 ただ、延長保守サポートは、部品不足による急な保守終了や、新規の問い合わせに対応いただけない、という面があるので要注意です。 また、延長保守サポートには細かい前提が設けられており前提にも随時変更が入りますので、ご利用を検討される際はお問い合わせください。   さいごに つい先日(2022年6月)、IBM i の複数のソフトウェアラインセンスが無償化される発表(IBM PartnerWorld)がありました。 IBM i では更改の検討が始まると、実際に利用している有償ソフトウェアの見直しが入ったりして、見積もりに時間がかかることがありますよね。 有償ライセンスが減ったことで、見積もりが少しでも簡単になり助かります。 クラウドシフトが進む中で、ライセンス体系、課金、監査方法が複雑化しています。 弊社には毎日のようにパートナー様からライセンス関連の相談やお問い合わせが来ています。 OSのみではなく、あらゆるソフトウェアのライセンス情報収集に日々奮闘(?)しているSEが多数おりますので、お困りの際はお気軽にご連絡ください! ※ 本ブログの情報は時間経過とともに変更が入る可能性があります。   お問い合わせ この記事に関する、ご質問は下記までご連絡ください。 エヌアイシー・パートナーズ株式会社 E-Mail:voice_partners@niandc.co.jp  

back to top