Azure Red Hat OpenShift 4 のプライベート クラスターを作成する

この記事では、OpenShift 4 を実行する Azure Red Hat OpenShift のプライベート クラスターを作成するための環境を準備します。 学習内容は次のとおりです。

  • 前提条件を設定し、必要な仮想ネットワークとサブネットを作成する
  • プライベート API サーバー エンドポイントとプライベート イングレス コントローラーを使用してクラスターをデプロイする

CLI をローカルにインストールして使用する場合、このチュートリアルでは、Azure CLI バージョン 2.30.0 以降を実行している必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

開始する前に

リソース プロバイダーを登録する

  1. 複数の Azure サブスクリプションがある場合は、適切なサブスクリプション ID を指定します。

    az account set --subscription <SUBSCRIPTION ID>
    
  2. Microsoft.RedHatOpenShift リソース プロバイダーを登録します。

    az provider register -n Microsoft.RedHatOpenShift --wait
    
  3. Microsoft.Compute リソース プロバイダーを登録します (まだ登録していない場合)。

    az provider register -n Microsoft.Compute --wait
    
  4. Microsoft.Network リソース プロバイダーを登録します (まだ登録していない場合)。

    az provider register -n Microsoft.Network --wait
    
  5. Microsoft.Storage リソース プロバイダーを登録します (まだ登録していない場合)。

    az provider register -n Microsoft.Storage --wait
    

Red Hat プル シークレットを取得する (省略可能)

Red Hat プル シークレットを使用すると、クラスターは追加のコンテンツと共に Red Hat コンテナー レジストリにアクセスできます。 この手順は省略可能ですが、実施することをお勧めします。

  1. Red Hat OpenShift クラスター マネージャー ポータルに移動し、ログインします。

    Red Hat アカウントにログインするか、お使いのビジネス メール アドレスを使用して新しい Red Hat アカウントを作成し、使用条件に同意する必要があります。

  2. [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 つの空のサブネットを含む仮想ネットワークを作成します。

  1. 次の変数を設定します。

    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
    
  2. リソース グループを作成します

    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
    }
    
  3. 仮想ネットワークを作成します。

    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"
    }
    }
    
  4. マスター ノード用の空のサブネットを追加します。

    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
    
  5. ワーカー ノード用の空のサブネットを追加します。

    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
    
  6. マスター サブネットのサブネット プライベート エンドポイント ポリシーを無効にします。 これは、クラスターに接続して管理できるようにするために必要です。

    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 UserDefinedRoutingaro 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 資格情報を使用してログインします。

Screenshot that shows the Azure Red Hat OpenShift login screen.

OpenShift CLI をインストールする

OpenShift Web コンソールにログインしたら、右上にある [?] をクリックし、[Command Line Tools](コマンドライン ツール) をクリックします。 お使いのマシンに適したリリースをダウンロードします。

Image shows Azure Red Hat OpenShift login screen

また、お使いのマシンに適した 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 を使用して認証のためにクラスターを構成する方法について学習します。