第5章 Azure へのインストール

5.1. Azure アカウントの設定

OpenShift Container Platform をインストールする前に、Microsoft Azure アカウントを設定する必要があります。

重要

パブリックエンドポイントで利用可能なすべての Azure リソースはリソース名の制限を受けるため、特定の用語を使用するリソースを作成することはできません。Azure が制限する語の一覧は、Azure ドキュメントの Resolve reserved resource name errors を参照してください。

5.1.1. Azure アカウントの制限

OpenShift Container Platform クラスターは数多くの Microsoft Azure コンポーネントを使用し、デフォルトの Azure サブスクリプションおよびサービス制限、クォータ、および制約 は、OpenShift Container Platform クラスターをインストールする機能に影響を与えます。

重要

デフォルトの制限は、Free Trial や Pay-As-You-Go、および DV2、F、および G などのシリーズといったカテゴリータイプによって異なります。たとえば、Enterprise Agreement サブスクリプションのデフォルトは 350 コアです。

サブスクリプションタイプの制限を確認し、必要に応じて、デフォルトのクラスターを Azure にインストールする前にアカウントのクォータ制限を引き上げます。

以下の表は、OpenShift Container Platform クラスターのインストールおよび実行機能に影響を与える可能性のある Azure コンポーネントの制限を要約しています。

コンポーネントデフォルトで必要なコンポーネントの数デフォルトの Azure 制限説明

vCPU

40

リージョンごとに 20

デフォルトのクラスターには 40 の vCPU が必要であるため、アカウントの上限を引き上げる必要があります。

デフォルトで、各クラスターは以下のインスタンスを作成します。

  • 1 つのブートストラップマシン。これはインストール後に削除されます。
  • 3 つのコントロールプレーンマシン
  • 3 つのコンピュートマシン

ブートストラップマシンは 4 vCPUS を使用する Standard_D4s_v3 マシンを使用し、コントロールプレーンマシンは 8 vCPU を使用する Standard_D8s_v3 仮想マシンを使用し、さらにワーカーマシンは、4 vCPU を使用する Standard_D4s_v3 仮想マシンを使用するため、デフォルトクラスターには 40 の vCPU が必要になります。4 vCPU を使用するブートストラップノードの仮想マシンは、インストール時にのみ使用されます。

追加のワーカーノードをデプロイし、自動スケーリングを有効にし、大規模なワークロードをデプロイするか、または異なるインスタンスタイプを使用するには、アカウントの vCPU 制限をさらに引き上げ、クラスターが必要なマシンをデプロイできるようにする必要があります。

デフォルトで、インストールプログラムはコントロールプレーンおよびコンピュートマシンを、リージョン 内の すべてのアベイラビリティーゾーン に分散します。クラスターの高可用性を確保するには、少なくとも 3 つ以上のアベイラビリティーゾーンのあるリージョンを選択します。リージョンに含まれるアベイラビリティーゾーンが 3 つ未満の場合、インストールプログラムは複数のコントロールプレーンマシンを利用可能なゾーンに配置します。

OS ディスク

7

 

仮想マシン OS ディスクは、最小スループットが 5000 IOPS/200MBps を維持できる必要があります。このスループットは、P30 (最低 1 TiB Premium SSD) を使用することで実現できます。Azure では、ディスクのパフォーマンスは SSD のディスクサイズに直接依存するため、利用可能な Standard_D8s_v3 またはその他の同様のマシンタイプでサポートされるスループット (ターゲット: 5000 IOPS) を実現するには、少なくとも P30 ディスクが必要です。

読み取りのレイテンシーが低く抑え、読み取り IOPS およびスループットが高く保つには、ホストのキャッシュを ReadOnly に設定する必要があります。仮想マシンメモリーまたはローカル SSD ディスクにあるキャッシュから実行された読み取りは、Blob ストレージにあるデータディスクからの読み取りよりもはるかに高速です。

VNet

1

リージョンごとに 1000

各デフォルトクラスターには、2 つのサブネットを含む 1 つの Virtual Network (VNet) が必要です。

ネットワークインターフェイス

6

リージョンごとに 65,536

各デフォルトクラスターには、6 つのネットワークインターフェイスが必要です。さらに多くのマシンを作成したり、デプロイしたワークロードでロードバランサーを作成する場合、クラスターは追加のネットワークインターフェイスを使用します。

ネットワークセキュリティーグループ

2

5000

各デフォルトクラスター。各クラスターは VNet の各サブネットにネットワークセキュリティーグループを作成します。デフォルトのクラスターは、コントロールプレーンおよびコンピュートノードのサブネットにネットワークセキュリティーグループを作成します。

controlplane

任意の場所からコントロールプレーンマシンにポート 6443 でアクセスできるようにします。

node

インターネットからワーカーノードにポート 80 および 443 でアクセスできるようにします。

ネットワークロードバランサー

3

リージョンごとに 1000

各クラスターは以下の ロードバランサー を作成します。

default

ワーカーマシン間でポート 80 および 443 での要求の負荷分散を行うパブリック IP アドレス

internal

コントロールプレーンマシン間でポート 6443 および 22623 での要求の負荷分散を行うプライベート IP アドレス

external

コントロールプレーンマシン間でポート 6443 での要求の負荷分散を行うパブリック IP アドレス

アプリケーションが追加の Kubernetes LoadBalancer サービスオブジェクトを作成すると、クラスターは追加のロードバランサーを使用します。

パブリック IP アドレス

3

 

2 つのパブリックロードバランサーのそれぞれはパブリック IP アドレスを使用します。ブートストラップマシンは、インストール時のトラブルシューティングのためにマシンに SSH を実行できるようにパブリック IP アドレスも使用します。ブートストラップノードの IP アドレスは、インストール時にのみ使用されます。

プライベート IP アドレス

7

 

内部ロードバランサー、3 つのコントロールプレーンマシンのそれぞれ、および 3 つのワーカーマシンのそれぞれはプライベート IP アドレスを使用します。

スポット VM vCPU (オプション)

0

スポット VM を設定する場合には、クラスターのコンピュートノードごとにスポット VM vCPU が 2 つ必要です。

リージョンごとに 20

これはオプションのコンポーネントです。スポット VM を使用するには、Azure の既定の制限を最低でも、クラスター内のコンピュートノード数の 2 倍に増やす必要があります。

注記

コントロールプレーンノードにスポット VM を使用することはお勧めしません。

5.1.2. Azure でのパブリック DNS ゾーンの設定

OpenShift Container Platform をインストールするには、使用する Microsoft Azure アカウントに、専用のパブリックホスト DNS ゾーンが必要になります。このゾーンはドメインに対する権威を持っている必要があります。このサービスは、クラスターへの外部接続のためのクラスター DNS 解決および名前検索を提供します。

手順

  1. ドメイン、またはサブドメイン、およびレジストラーを特定します。既存のドメインおよびレジストラーを移行するか、Azure または別のソースから新規のものを取得できます。

    注記

    Azure 経由でドメインを購入する方法についての詳細は、Azure ドキュメントの Buy a custom domain name for Azure App Service を参照してください。

  2. 既存のドメインおよびレジストラーを使用している場合、その DNS を Azure に移行します。Azure ドキュメントの Migrate an active DNS name to Azure App Service を参照してください。
  3. ドメインの DNS を設定します。Azure ドキュメントの Tutorial: Host your domain in Azure DNS の手順に従い、ドメインまたはサブドメインのパブリックホストゾーンを作成し、 新規の権威ネームサーバーを抽出し、ドメインが使用するネームサーバーのレジストラーレコードを更新します。

    openshiftcorp.com などのルートドメインや、 clusters.openshiftcorp.com などのサブドメインを使用します。

  4. サブドメインを使用する場合は、所属する会社の手順に従ってその委任レコードを親ドメインに追加します。

5.1.3. Azure アカウント制限の拡張

アカウントの制限を引き上げるには、Azure ポータルでサポートをリクエストします。

注記

サポートリクエストごとに 1 つの種類のクォータのみを増やすことができます。

手順

  1. Azure ポータルの左端で Help + support をクリックします。
  2. New support request をクリックしてから必要な値を選択します。

    1. Issue type 一覧から、Service and subscription limits (quotas) を選択します。
    2. Subscription 一覧から、変更するサブスクリプションを選択します。
    3. Quota type 一覧から、引き上げるクォータを選択します。たとえば、Compute-VM (cores-vCPUs) subscription limit increases を選択し、クラスターのインストールに必要な vCPU の数を増やします。
    4. Next: Solutions をクリックします。
  3. Problem Detailsページで、クォータの引き上げについての必要な情報を指定します。

    1. Provide detailsをクリックし、Quota detailsウィンドウに必要な詳細情報を指定します。
    2. SUPPORT METHOD and CONTACT INFO セクションに、問題の重大度および問い合わせ先の詳細を指定します。
  4. Next: Review + create をクリックしてから Create をクリックします。

5.1.4. 必要な Azure ロール

OpenShift Container Platform には、Microsoft Azure リソースを管理できるようにサービスプリンシパルが必要です。サービスプリンシパルの作成前に、Azure アカウントサブスクリプションに次のロールが必要です。

  • User Access Administrator
  • Owner

Azure ポータルでロールを設定するには、Azure ドキュメントの Manage access to Azure resources using RBAC and the Azure portal を参照します。

5.1.5. サービスプリンシパルの作成

OpenShift Container Platform およびそのインストールプログラムは Azure Resource Manager 経由で Microsoft Azure リソースを作成する必要があるため、これを表すサービスプリンシパルを作成する必要があります。

前提条件

  • Azure CLI のインストールまたは更新を実行します。
  • jq パッケージをインストールします。
  • Azure アカウントには、使用するサブスクリプションに必要なロールがなければなりません。

手順

  1. Azure CLI にログインします。

    $ az login

    認証情報を使用して Web コンソールで Azure にログインします。

  2. Azure アカウントでサブスクリプションを使用している場合は、適切なサブスクリプションを使用していることを確認してください。

    1. 利用可能なアカウントの一覧を表示し、クラスターに使用するサブスクリプションの tenantId の値を記録します。

      $ az account list --refresh

      出力例

      [
        {
          "cloudName": "AzureCloud",
          "id": "9bab1460-96d5-40b3-a78e-17b15e978a80",
          "isDefault": true,
          "name": "Subscription Name",
          "state": "Enabled",
          "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee",
          "user": {
            "name": "you@example.com",
            "type": "user"
          }
        }
      ]

    2. アクティブなアカウントの詳細を表示し、tenantId 値が使用するサブスクリプションと一致することを確認します。

      $ az account show

      出力例

      {
        "environmentName": "AzureCloud",
        "id": "9bab1460-96d5-40b3-a78e-17b15e978a80",
        "isDefault": true,
        "name": "Subscription Name",
        "state": "Enabled",
        "tenantId": "6057c7e9-b3ae-489d-a54e-de3f6bf6a8ee", 1
        "user": {
          "name": "you@example.com",
          "type": "user"
        }
      }

      1
      tenantId パラメーターの値が適切なサブスクリプションの UUID であることを確認します。
    3. 適切なサブスクリプションを使用していない場合には、アクティブなサブスクリプションを変更します。

      $ az account set -s <id> 1
      1
      使用する必要のあるサブスクリプションの id の値を <id> の代わりに使用します。
    4. アクティブなサブスクリプションを変更したら、アカウント情報を再度表示します。

      $ az account show

      出力例

      {
        "environmentName": "AzureCloud",
        "id": "33212d16-bdf6-45cb-b038-f6565b61edda",
        "isDefault": true,
        "name": "Subscription Name",
        "state": "Enabled",
        "tenantId": "8049c7e9-c3de-762d-a54e-dc3f6be6a7ee",
        "user": {
          "name": "you@example.com",
          "type": "user"
        }
      }

  3. 直前の出力の tenantId および id パラメーターの値を記録します。OpenShift Container Platform のインストール時にこれらの値が必要になります。
  4. アカウントのサービスプリンシパルを作成します。

    $ az ad sp create-for-rbac --role Contributor --name <service_principal> 1
    1
    <service_principal> を、サービスプリンシパルに割り当てる名前に置き換えます。

    出力例

    Changing "<service_principal>" to a valid URI of "http://<service_principal>", which is the required format used for service principal names
    Retrying role assignment creation: 1/36
    Retrying role assignment creation: 2/36
    Retrying role assignment creation: 3/36
    Retrying role assignment creation: 4/36
    {
      "appId": "8bd0d04d-0ac2-43a8-928d-705c598c6956",
      "displayName": "<service_principal>",
      "name": "http://<service_principal>",
      "password": "ac461d78-bf4b-4387-ad16-7e32e328aec6",
      "tenant": "6048c7e9-b2ad-488d-a54e-dc3f6be6a7ee"
    }

  5. 直前の出力の appId および password パラメーターの値を記録します。OpenShift Container Platform のインストール時にこれらの値が必要になります。
  6. サービスプリンシパルに追加パーミッションを付与します。

    • クラスターはそのコンポーネントの認証情報を割り当てできるように、Contributor および User Access Administrator ロールを常にアプリケーション登録サービスプリンシパルに追加する必要があります。
    • Cloud Credential Operator (CCO) を mint モード で操作するには、アプリケーション登録サービスプリンシパルで Azure Active Directory Graph/Application.ReadWrite.OwnedBy API パーミッションも必要です。
    • CCO を passthrough モード で操作するには、アプリケーション登録サービスプリンシパルで追加の API パーミッションは必要ありません。

    CCO モードの詳細は、認証および承認ガイドのクラウドプロバイダークレデンシャルの管理セクションにある Cloud Credential Operator についてを参照してください。

    1. User Access Administrator ロールを割り当てるには、以下のコマンドを実行します。

      $ az role assignment create --role "User Access Administrator" \
          --assignee-object-id $(az ad sp list --filter "appId eq '<appId>'" \
             | jq '.[0].id' -r) 1
      1
      <appId> を、サービスプリンシパルの appId パラメーター値に置き換えます。
    2. Azure Active Directory Graph パーミッションを割り当てるには、以下のコマンドを実行します。

      $ az ad app permission add --id <appId> \ 1
           --api 00000002-0000-0000-c000-000000000000 \
           --api-permissions 824c81eb-e3f8-4ee6-8f6d-de7f50d565b7=Role
      1
      <appId> を、サービスプリンシパルの appId パラメーター値に置き換えます。

      出力例

      Invoking "az ad app permission grant --id 46d33abc-b8a3-46d8-8c84-f0fd58177435 --api 00000002-0000-0000-c000-000000000000" is needed to make the change effective

      このコマンドで付与する特定のパーミッションについての詳細は、GUID Table for Windows Azure Active Directory Permissions を参照してください。

    3. パーミッション要求を承認します。アカウントに Azure Active Directory テナント管理者ロールがない場合は、所属する組織のガイドラインに従い、テナント管理者にパーミッション要求を承認するようにリクエストしてください。

      $ az ad app permission grant --id <appId> \ 1
           --api 00000002-0000-0000-c000-000000000000
      1
      <appId> を、サービスプリンシパルの appId パラメーター値に置き換えます。

関連情報

5.1.6. サポート対象の Azure リージョン

インストールプログラムは、サブスクリプションに基づいて利用可能な Microsoft Azure リージョンの一覧を動的に生成します。

サポート対象の Azure パブリックリージョン
  • australiacentral (Australia Central)
  • australiaeast (Australia East)
  • australiasoutheast (Australia South East)
  • brazilsouth (Brazil South)
  • canadacentral (Canada Central)
  • canadaeast (Canada East)
  • centralindia (Central India)
  • centralus (Central US)
  • eastasia (East Asia)
  • eastus (East US)
  • eastus2 (East US 2)
  • francecentral (France Central)
  • germanywestcentral (Germany West Central)
  • japaneast (Japan East)
  • japanwest (Japan West)
  • koreacentral (Korea Central)
  • koreasouth (Korea South)
  • northcentralus (North Central US)
  • northeurope (North Europe)
  • norwayeast (Norway East)
  • southafricanorth (South Africa North)
  • southcentralus (South Central US)
  • southeastasia (Southeast Asia)
  • southindia (South India)
  • switzerlandnorth (Switzerland North)
  • uaenorth (UAE North)
  • uksouth (UK South)
  • ukwest (UK West)
  • westcentralus (West Central US)
  • westeurope (West Europe)
  • westindia (West India)
  • westus (West US)
  • westus2 (West US 2)
サポート対象の Azure Government リージョン

以下の Microsoft Azure Government (MAG) リージョンのサポートが OpenShift Container Platform バージョン 4.6 に追加されています。

  • usgovtexas (US Gov Texas)
  • usgovvirginia (US Gov Virginia)

Azure ドキュメント の利用可能なすべての MAG リージョンを参照できます。他の提供される MAG リージョンは OpenShift Container Platform で機能することが予想されますが、まだテストされていません。

5.1.7. 次のステップ