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

1.1. Azure アカウントの設定

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

重要

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

1.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 コンポーネントの制限を要約しています。

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

vCPU

34

リージョンごとに 20

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

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

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

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

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

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

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 アドレスを使用します。

1.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. サブドメインを使用する場合は、所属する会社の手順に従ってその委任レコードを親ドメインに追加します。

1.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 をクリックします。

1.1.4. 必要な Azure ロール

Microsoft Azure アカウントには、使用するサブスクリプションについて以下のロールが必要です。

  • User Access Administrator

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

1.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
    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"
    }
    1
    <service_principal> を、サービスプリンシパルに割り当てる名前に置き換えます。
  5. 直前の出力の appId および password パラメーターの値を記録します。OpenShift Container Platform のインストール時にこれらの値が必要になります。
  6. サービスプリンシパルに追加パーミッションを付与します。サービスプリンシパルには、クラスターでそのコンポーネントの認証情報を割り当てられるようにレガシーの Azure Active Directory Graph → Application.ReadWrite.OwnedBy パーミッションおよび User Access Administrator ロールが必要です。

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

      $ az role assignment create --role "User Access Administrator" \
          --assignee-object-id $(az ad sp list --filter "appId eq '<appId>'" \ 1
             | jq '.[0].objectId' -r)
      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
      
           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
      1
      <appId> を、サービスプリンシパルの appId パラメーター値に置き換えます。

      このコマンドで付与する特定のパーミッションについての詳細は、「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 パラメーター値に置き換えます。

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

インストールプログラムは、サブスクリプションに基づいて利用可能な Microsoft Azure リージョンの一覧を動的に生成します。以下の Azure リージョンは OpenShift Container Platform バージョン 4.2.0 でテストされ、検証されています。

  • centralus (Central US)
  • eastus (East US)
  • eastus2 (East US 2)
  • northcentralus (North Central US)
  • southcentralus (South Central US)
  • westcentralus (West Central US)
  • westus (West US)
  • westus2 (West US 2)
  • uksouth (UK South)
  • ukwest (UK West)
  • francecentral (France Central)
  • northeurope (North Europe)
  • westeurope (West Europe)
  • japaneast (Japan East)
  • japanwest (Japan West)
  • koreacentral (Korea Central)
  • koreasouth (Korea South)
  • eastasia (East Asia)
  • southeastasia (Southeast Asia)
  • southindia (South India)
  • centralindia (Central India)
  • westindia (West India)
  • uaenorth (UAE North)

次のステップ