Azure Red Hat OpenShift 4 のプライベート クラスターを作成する
この記事では、OpenShift 4 を実行する Azure Red Hat OpenShift のプライベート クラスターを作成するための環境を準備します。 学習内容は次のとおりです。
- 前提条件を設定し、必要な仮想ネットワークとサブネットを作成する
- プライベート API サーバー エンドポイントとプライベート イングレス コントローラーを使用してクラスターをデプロイする
CLI をローカルにインストールして使用する場合、このチュートリアルでは、Azure CLI バージョン 2.30.0 以降を実行している必要があります。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
開始する前に
リソース プロバイダーを登録する
複数の Azure サブスクリプションがある場合は、適切なサブスクリプション ID を指定します。
az account set --subscription <SUBSCRIPTION ID>
Microsoft.RedHatOpenShift
リソース プロバイダーを登録します。az provider register -n Microsoft.RedHatOpenShift --wait
Microsoft.Compute
リソース プロバイダーを登録します (まだ登録していない場合)。az provider register -n Microsoft.Compute --wait
Microsoft.Network
リソース プロバイダーを登録します (まだ登録していない場合)。az provider register -n Microsoft.Network --wait
Microsoft.Storage
リソース プロバイダーを登録します (まだ登録していない場合)。az provider register -n Microsoft.Storage --wait
Red Hat プル シークレットを取得する (省略可能)
Red Hat プル シークレットを使用すると、クラスターは他のコンテンツと共に Red Hat コンテナー レジストリにアクセスできます。 この手順は省略可能ですが、実施することをお勧めします。
Red Hat OpenShift クラスター マネージャー ポータルに移動し、ログインします。
Red Hat アカウントにサインインするか、お使いのビジネス メール アドレスを使用して新しい Red Hat アカウントを作成し、使用条件に同意します。
[Download pull secret]\(プル シークレットのダウンロード\) を選択します。
保存されている pull-secret.txt
ファイルは安全な場所に保管してください。このファイルは、クラスターを作成するたびに使用します。
az aro create
コマンドを実行する場合は、--pull-secret @pull-secret.txt
パラメーターを使用してプル シークレットを参照できます。 pull-secret.txt
ファイルを格納したディレクトリから az aro create
を実行します。 それ以外の場合は、@pull-secret.txt
を @<path-to-my-pull-secret-file
で置き換えます。
プル シークレットをコピーする場合や他のスクリプトで参照する場合は、プル シークレットを有効な JSON 文字列として書式設定する必要があります。
2 つの空のサブネットを含む仮想ネットワークを作成する
次に、2 つの空のサブネットを含む仮想ネットワークを作成します。
次の変数を設定します。
LOCATION=eastus # the location of your cluster RESOURCEGROUP="v4-$LOCATION" # the name of the resource group where you want to create your cluster CLUSTER=aro-cluster # the name of your cluster
リソース グループを作成します
Azure リソース グループは、Azure リソースが展開され管理される論理グループです。 リソース グループを作成するときは、場所を指定します。 この場所は、リソース グループのメタデータが格納される場所です。リソースの作成時に別のリージョンを指定しない場合は、Azure でリソースが実行される場所でもあります。 [az group create][az-group-create] コマンドを使用して、リソース グループを作成します。
az group create --name $RESOURCEGROUP --location $LOCATION
次の出力例では、正常に作成されたリソース グループが示されています。
{ "id": "/subscriptions/<guid>/resourceGroups/aro-rg", "location": "eastus", "managedBy": null, "name": "aro-rg", "properties": { "provisioningState": "Succeeded" }, "tags": null }
仮想ネットワークを作成します。
OpenShift 4 を実行する Azure Red Hat OpenShift クラスターでは、コントロールおよびワーカー ノード用に 2 つの空のサブネットを持つ仮想ネットワークが必要です。
前に作成したのと同じリソース グループ内に新しい仮想ネットワークを作成します。
az network vnet create \ --resource-group $RESOURCEGROUP \ --name aro-vnet \ --address-prefixes 10.0.0.0/22
次の出力例では、正常に作成された仮想ネットワークが示されています。
{ "newVNet": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/22" ] }, "id": "/subscriptions/<guid>/resourceGroups/aro-rg/providers/Microsoft.Network/virtualNetworks/aro-vnet", "location": "eastus", "name": "aro-vnet", "provisioningState": "Succeeded", "resourceGroup": "aro-rg", "type": "Microsoft.Network/virtualNetworks" } }
マスター ノード用の空のサブネットを追加します。
az network vnet subnet create \ --resource-group $RESOURCEGROUP \ --vnet-name aro-vnet \ --name master-subnet \ --address-prefixes 10.0.0.0/23 \ --service-endpoints Microsoft.ContainerRegistry
ワーカー ノード用の空のサブネットを追加します。
az network vnet subnet create \ --resource-group $RESOURCEGROUP \ --vnet-name aro-vnet \ --name worker-subnet \ --address-prefixes 10.0.2.0/23 \ --service-endpoints Microsoft.ContainerRegistry
マスター サブネットのサブネット プライベート エンドポイント ポリシーを無効にします。 これは、クラスターに接続して管理できるようにするために必要です。
az network vnet subnet update \ --name master-subnet \ --resource-group $RESOURCEGROUP \ --vnet-name aro-vnet \ --disable-private-link-service-network-policies true
クラスターを作成する
次のコマンドを実行して、クラスターを作成します。 必要に応じて、Red Hat プル シークレットを渡して、クラスターが他のコンテンツと共に Red Hat コンテナー レジストリにアクセスできるよう設定できます。
Note
コマンドをコピーおよび貼り付けして、オプション パラメーターのいずれかを使用する場合は、先頭のハッシュ タグと末尾のコメント テキストを削除してください。 また、先行するコマンド行の引数の末尾に、円記号を付けて閉じます。
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--apiserver-visibility Private \
--ingress-visibility Private
# --domain foo.example.com # [OPTIONAL] custom domain
# --pull-secret @pull-secret.txt # [OPTIONAL]
通常、az aro create
コマンドを使ってクラスターを作成するには約 35 分かかります。
Note
クラスターを作成しようとした際に、リソース クォータが超過したことを示すエラー メッセージが表示される場合は、ARO アカウントにクォータを追加する方法に関するページを参照して、続行する方法をご確認ください。
重要
foo.example.com などのカスタム ドメインを指定すると、組み込みドメイン https://console-openshift-console.apps.<random>.<location>.aroapp.io
の代わりに https://console-openshift-console.apps.foo.example.com
などの URL で OpenShift コンソールを使用できるようになります。
OpenShift では、既定で、*.apps.<random>.<location>.aroapp.io
で作成されたすべてのルートに自己署名証明書が使用されます。 クラスターに接続した後でカスタム DNS を選択した場合は、OpenShift のドキュメントに従って、イングレス コントローラー用のカスタム証明書と、API サーバー用の カスタム証明書を構成する必要があります。
パブリック IP アドレスを持たないプライベート クラスターを作成する
通常、プライベート クラスターを作成すると、他のサービスとの送信接続に用いるパブリック IP アドレスとロード バランサーが付与されます。 しかし、パブリック IP アドレスを持たないプライベート クラスターを作成することができます。 これは、セキュリティまたはポリシーの要件でパブリック IP アドレスの使用が禁止されている場合に必要になる場合があります。
パブリック IP アドレスを持たないプライベート クラスターを作成するには、上記の手順に従って、次の例のようにパラメーター --outbound-type UserDefinedRouting
を aro create
コマンドに追加します。
az aro create \
--resource-group $RESOURCEGROUP \
--name $CLUSTER \
--vnet aro-vnet \
--master-subnet master-subnet \
--worker-subnet worker-subnet \
--apiserver-visibility Private \
--ingress-visibility Private \
--outbound-type UserDefinedRouting
Note
UserDefinedRouting フラグは、--apiserver-visibility Private
パラメーターと --ingress-visibility Private
パラメーターを使用してクラスターを作成する場合にのみ使用できます。 必ず最新の Azure CLI を使用してください。 Azure CLI 2.52.0 以前を使用してデプロイされたクラスターは、パブリック IP を使用してデプロイされます。
このユーザー定義ルートのオプションを使用すると、パブリック IP アドレスがプロビジョニングされなくなります。 ユーザー定義ルート (UDR) を使用すると、既定のシステム ルートをオーバーライドしたり、サブネットのルート テーブルにルートを追加したりできるカスタム ルートを Azure で作成できます。 詳細については、「仮想ネットワーク トラフィックのルーティング」を参照してください。
重要
プライベート クラスターを作成する際には、正しく設定されたルーティング テーブルで正しいサブネットを指定してください。
エグレスの場合、ユーザー定義ルートのオプションを使用すると、新しく作成したクラスターでエグレス ロックダウン機能が有効になり、新しいプライベート クラスターからの送信トラフィックをセキュリティで保護できます。 詳細については、「Azure Red Hat OpenShift (ARO) クラスターのエグレス トラフィックを制御する」を参照してください。
Note
ネットワークの種類としてユーザー定義ルートを選択した場合、仮想ネットワークの外側にあるクラスターのルーティングのエグレスを管理すること (たとえば、パブリック インターネットにアクセスするなど) は、すべてユーザーの責任となります。 Azure Red Hat OpenShift 側で、これらを管理することはできません。
ユーザーは、名前空間、またはパブリック IP アドレスを持たないプライベート クラスターの名前空間内にある特定のポッドに対して、1 つ以上のエグレス IP アドレスを構成できます。 これを行うには、上記の手順に従ってパブリック IP アドレスを持たないプライベート クラスターを作成してから、こちらの Red Hat OpenShift ドキュメントに従ってエグレス IP を構成します。 これらのエグレス IP アドレスは、ARO クラスターに関連付けられているサブネットからのものである必要があります。
ARO プライベート クラスターのエグレス IP を構成することは、--outbound-type UserDefinedRouting
パラメーターを持つクラスターでのみサポートされます。 --outbound-type LoadBalancer
パラメーターを持つパブリック ARO クラスターではサポートされていません。
プライベート クラスターに接続する
kubeadmin
ユーザーを使用してクラスターにログインできます。 次のコマンドを実行して、kubeadmin
ユーザーのパスワードを調べます。
az aro list-credentials \
--name $CLUSTER \
--resource-group $RESOURCEGROUP
次の出力例は、パスワードが kubeadminPassword
に含まれることを示しています。
{
"kubeadminPassword": "<generated password>",
"kubeadminUsername": "kubeadmin"
}
次のコマンドを実行すると、クラスター コンソールの URL を調べることができます。これは、https://console-openshift-console.apps.<random>.<region>.aroapp.io/
のようになります
az aro show \
--name $CLUSTER \
--resource-group $RESOURCEGROUP \
--query "consoleProfile.url" -o tsv
重要
Azure Red Hat OpenShift のプライベート クラスターに接続するには、作成した仮想ネットワーク内、またはクラスターがデプロイされた仮想ネットワークでピアリングされた仮想ネットワーク内のホストから、次の手順を実行する必要があります。
ブラウザーでコンソールの URL にアクセスし、kubeadmin
の資格情報を使用してサインインします。
OpenShift CLI をインストールする
OpenShift Web コンソールにサインインしたら、右上にある [?] を選択し、[コマンド ライン ツール] を選択します。 お使いのマシンに適したリリースをダウンロードします。
また、お使いのマシンに適した CLI の最新リリースをダウンロードすることもできます。
OpenShift CLI を使用して接続する
API サーバーのアドレスを取得します。
apiServer=$(az aro show -g $RESOURCEGROUP -n $CLUSTER --query apiserverProfile.url -o tsv)
重要
Azure Red Hat OpenShift のプライベート クラスターに接続するには、作成した仮想ネットワーク内、またはクラスターがデプロイされた仮想ネットワークでピアリングされた仮想ネットワーク内のホストから、次の手順を実行する必要があります。
次のコマンドを使用して、OpenShift クラスターの API サーバーにサインインします。 <kubeadmin password> を、取得したパスワードに置き換えます。
oc login $apiServer -u kubeadmin -p <kubeadmin password>
次のステップ
この記事では、OpenShift 4 を実行する Azure Red Hat OpenShift クラスターをデプロイしました。 以下の方法を学習しました。
- 前提条件を設定し、必要な仮想ネットワークとサブネットを作成する
- クラスターのデプロイ
kubeadmin
ユーザーを使用してクラスターに接続する
次の記事に進み、Microsoft Entra ID を使用して認証のためにクラスターを構成する方法について学習します。