OpenShift on Azureのデプロイ

Azure での OpenShift の前提条件 | Microsoft Docs の記載の手順にしたがってデプロイする方法を説明します。

OpenShift のデプロイ用の ARM のテンプレートは、cloud provider 設定ができるようになったりしているので Azure 側での事前準備が必要になりましたが、いくつかのコマンドを実行すれば良いだけなの案外簡単です。

OpenShift をデプロイするにあたって、事前準備でAzure CLI を利用します。リソースグループ名やロケーションなどを環境変数に設定しておけば、以降の手順を実行する際に各自好きな名称を設定しても、コピペで作業を進めていけるので、まず、各自で可変になりそうな値は環境数に設定します。

パラメータ名 説明
KVRG keyvaultrg Key Vault用のリソースグループ名
LOCATION eastus リージョン
KVNAME keyvault Key Vault名
SECNAME keysecret Secret名
OCPRG openshift OpenShiftをデプロイするリソースグループ名
OPENSHIFTSP openshiftsp+乱数OpenShift用のサービスプリンリプル サービスプリンリプルは、一位の名前である必要があるのでここでは乱数を付与するようにしていますが、任意の自分のアカウント名などをつけても良いです。

Bash を使っている場合は、次のコマンドを実行します。

export KVRG=keyvaultrg
export LOCATION=eastus
export KVNAME=keyvault
export SECNAME=keysecret
export OCPRG=openshift
export OPENSHIFTSP=openshiftsp$RANDOM

OpenShift をデプロイするための準備

1. CLI を使って azure portal にログイン

az login

2. OpenShiftをデプロイするリソースグループを作成

az group create --name $OCPRG --location $LOCATION

3. Key Vault を保持するリソースグループを作成(OpenShiftをデプロイするリソースグループとは別にする)

az group create --name $KVRG --location $LOCATION

4. Key Vault を作成

az keyvault create --resource-group $KVRG --name $KVNAME \
       --enabled-for-template-deployment true \
       --location $LOCATION

5. SSH キーの生成

ssh-keygen -f ~/.ssh/openshift_rsa -t rsa -N ''

6. Azure Key VaultにSSH秘密鍵を登録

az keyvault secret set --vault-name $KVNAME --name $SECNAME --file ~/.ssh/openshift_rsa

7. サービスプリンリパルの生成

az ad sp create-for-rbac --name $OPENSHIFTSP \
          --role Contributor --password "@dmin9999" \
          --scopes $(az group show --name $OCPRG --query id)

ここで The request did not have a provided subscription. All requests must have an associated subscription Id. というエラーが発生した場合は、--scopes で subscription が正しく取得できていません。その場合は、az group show --name $OCPRG --query id を実行し、そこで出力された値を--scopes のパラメータに利用してください。

az group show --name $OCPRG --query id
"/subscriptions/<数字がいっぱい>/resourceGroups/openshift"   ← 出力される文字列
az ad sp create-for-rbac --name openshiftspkeomizo --role Contributor --password "@dmin9999" --scopes "/subscriptions/<数字がいっぱい>/resourceGroups/openshift"

コマンドが成功すると、次のような文字列が出力されるのでメモ帳などにコピーしておく。

{
  "appId":  "9999999-9999-9999-9999-999999999999"",
  "displayName": "openshiftsp1234",
  "name": "http://openshiftsp1234",
  "password": "@dmin9999",
  "tenant": "9999999-9999-9999-9999-999999999999"
}

MarketplaceからOpenShiftをデプロイ

1. Azure PortalでOpenShiftのリソースグループを選択

f:id:akubicharm:20180905143647p:plain

2. リソース追加ボタンをクリック

f:id:akubicharm:20180905143853p:plain

3. 検索文字列に「OpenShift」を指定してテンプレートを選択

f:id:akubicharm:20180905144136p:plain

4. 下までスクロールして「Create」をクリックしてウィザードを開始

f:id:akubicharm:20180905144313p:plain

5. ウィザードのパラメータを入力

1. Basics

f:id:akubicharm:20180905145345p:plain

パラメータ名 説明
VM Admin User Name clusteradmin デフォルト値のまま変更なし
SSH Public Key for VM Admin User VMssh で接続する時の公開鍵
Subscription 適用するサブスクリプション 仮想サーバを9台デプロイできるだけの余裕があること!!!
Resource Group Use existingを選択。リソースグループ名は$OCPRGに設定した名称 空っぽのリソースグループであること
Location $LOCATIONに設定したリージョン
2. Infrastructure Settings

f:id:akubicharm:20180905145744p:plain

パラメータ名 説明
OCP Cluster Name Prefix ocpcluster デフォルト値のまま変更なし
Master Node Size 3 x Standard D4s V3 メモリ、CPUの要件に合わせて適宜変更。台数は奇数。
Infrastructure Node Size 3 x Standard ES2s v3 メモリ、CPUの要件に合わせて適宜変更
Number of Application Nodes 2 必要な台数に合わせて適宜変更
Application Node Size 2 x Standard D2s v3 メモリ、CPUの要件に合わせて適宜変更
Bastion Host Size 1 x Standard DS2 v2 デフォルト値のまま変更なし
Custom IP subnet No 変更なし
Key Vault Resource Group Name keyvaultrg 事前準備の手順4で指定した Key Vaultのリソースグループ名。$KVRG
Key Vault Name keyvault 事前準備の手順4で指定した Key Vault名。$KVNAME
Secret Name keysecret 事前準備の手順6で指定したsecret名。$SECNAME
3. OpenShift Container Platform Settings

f:id:akubicharm:20180905151311p:plain

パラメータ名 説明
OpenShift Admin User Password @dmin123 任意の文字列
Confirm OpenShift Admin User Password @dmin123
Red Hat SubscriptionManager User Name Red Hat Customer Portalに登録しているメールアドレス
Red Hat Subscription Manager User Password Red Hat Customer Portalに登録しているパスワード
Red Hat Subscription Manager OpenShift Pool ID Red Hatから割り当てられているサブスクリプションのPool ID
Configure Azure Cloud Provider Yes デフォルト値のまま変更なし
Azure AD Service Principal Client ID GUID 事前準備の手順7のサービスプリンシプルの作成で出力された AppID
Azure AD Service Principal Client ID Secret 事前準備の手順7:サービスプリンシプルの作成時に指定したパスワード
4. Additional Settings

f:id:akubicharm:20180905151845p:plain

パラメータ名 説明
Configure Cluster Logging No デフォルト値のまま変更なし。ロギングの設定はインストール後でもできます
Configure Metrics for the Cluster No デフォルト値のまま変更なし。メトリクスの設定はインストール後でもできます
Default Router Subdomein nipio デフォルト値のまま変更なし
5. Summary

バリデーションがパスしたら、「OK」ボタンをクリックします。 f:id:akubicharm:20180905152614p:plain

6. Buy

内容を確認して「Create」ボタンをクリックします。 f:id:akubicharm:20180905152736p:plain

6.完成を気長に待つ

1時間くらいはかかるので、気長に待ちましょう。

OpenShift にログイン

1. Master サーバのパブリックIPアドレスを選択

Azure PortalでOpenShiftのリソースグループを選択し、「master」から始まる Public IP address を選択します。 f:id:akubicharm:20180905153417p:plain

2. MasterサーバのDNS名を確認

詳細画面のDNS Nameをコピーします。

f:id:akubicharm:20180905153726p:plain

3.ブラウザでアクセス

コピーしたDNS Nameを利用してOpenShiftの管理コンソールにログインします。 管理コンソールは8443ポートではなく、443ポートで動作しています。

https://masterdnsxxxxxxxxxx.eastus.cloudapp.azure.com

4. clusteradmin でログイン

f:id:akubicharm:20180905154404p:plain

パラメータ名 説明
Username clusteradmin
Password OpenShiftデプロイのウィザード3: OpenShift Container Platform Settingsで指定したパスワード

5. コンソールの確認

この画面が表示されれば OK です。パチパチパチー。

f:id:akubicharm:20180905154749p:plain

ユーザ管理

マーケットプレイスからデプロイした場合は、ユーザ認証がhtpasswd形式になっています。ユーザを追加する場合は、masterサーバに配置されている/etc/origin/master/htpasswdファイルにユーザのエントリを追加します。

Azure AD を使って認証する方法は、 openshift-playground/AzureADAuthorization.md at master · akubicharm/openshift-playground · GitHub を参照してください。