デプロイメントスクリプトの実行

ArcGIS Enterprise on Kubernetes をデプロイするには、Kubernetes のマニフェストとともに bash スクリプトを実行します。 デプロイメントパッケージは、My Esri からダウンロードでき、.tar.gz ファイルとして配布されます。 デプロイメントスクリプトを実行する前に、開始手順を確認してください。

注意:

インタラクティブ モードでデプロイメントスクリプトを実行するには、コンテナー レジストリのパスワードを 30 文字以下にする必要があります。 コンテナー レジストリのパスワードが 30 文字を超えた場合、サイレント モードでデプロイメントスクリプトを実行することができます。 その前に、password-encrypt.sh ツールを使用して 暗号化されたパスワードを生成し、パスワードから改行を削除して、deploy.properties ファイル内で CONTAINER_REGISTRY_PASSWORD として指定します。

対話モードでのデプロイメントスクリプトの実行

構成パラメーター ファイルを指定せずに ArcGIS Enterprise on Kubernetes デプロイメントスクリプトを実行すると、スクリプトが対話モードで開きます。 スクリプトは、各パラメーターの入力を求め、即座に各値の妥当性をチェックします。 これにより、デプロイメントのための各構成パラメーターをすばやく検証できます。

  1. Kubernetes クライアント コンピューターで、管理者として端末を開きます。
  2. デプロイメントスクリプトが保存されているディレクトリに移動します。
  3. 暗号化キーファイルを作成します。

    暗号化キーファイルは、パスワードの AES-256 暗号化および復号化に使用されるプレーン テキスト ファイルです。 このファイルのコンテンツは、指定したプレーン テキストで、パスワードを含めることはできません。 このファイルは固定の場所に残しておき、コンテンツを変更しないでください。

  4. (オプション) TLS シークレットを名前空間に作成します。
  5. 端末で、次のコマンド形式を使用してデプロイメントスクリプトを実行します。
    ./deploy.sh
    
  6. パラメーターを入力します。

    スクリプトから、次のパラメーターを 1 つずつ入力するよう求められます。 誤った値を入力すると、ただちにエラーが返され、有効なパラメーターを入力するよう求められます。 以下は、ユーザー入力の概要です。

    注意:

    このスクリプトは、ルート ユーザーとして実行する必要はありません。

    • [デプロイメントプラットフォーム] - ArcGIS Enterprise on Kubernetes は、ingress を使用して、着信トラフィックをクラスターのサービスにルーティングします。 Amazon Web Services EKS や Microsoft Azure Kubernetes Service (AKS) など、クラウド プロバイダーが管理する Kubernetes サービスにデプロイしている場合は、クラウド プロバイダーによるロード バランサー サービスを使用して ingress コントローラーを外部に公開できます。 この場合、ArcGIS Enterprise on Kubernetes は、デプロイメントプロセス中にロード バランサーをプロビジョニングします。
    • [ロード バランサー] - デプロイしている間、ArcGIS Enterprise on Kubernetes は、Azure Load Balancer (外部向けおよび内部向け) および AWS Network Load Balancer (NLB - 外部向けおよび NLB - 内部向け) により、選択したクラウド ロード バランサーをプロビジョニングできます。 各オプションで、ロード バランサーの IP を指定するよう求められます。 このリリースでは、Azure ロード バランサーのみがこのオプションに対応しています。AWS EKS ではロードバランサーの IP オプションを使用できません。 既存の Ingress コントローラーを介してレイヤー 7 の負荷分散機能を使用するには、クラウド ロードバランサーを使用しないことを示す必要があります。
    • [クラスターレベルの Ingress コントローラー] - クラスターレベルの Ingress コントローラーを使用して、トラフィックを ArcGIS Enterprise on Kubernetes デプロイメントにルーティングし、組織がレイヤー 7 の負荷分散機能を使用できるようにします。 クラスター内 NGINX Ingress コントローラー サービスを ClusterIP タイプとして作成できるようにするには、クラスターレベルの Ingress コントローラーの使用に関する質問に yes と答えます。
    • [名前空間] - ArcGIS Enterprise on Kubernetes がデプロイされる Kubernetes クラスターの名前空間。
    • [暗号化キーファイル] - 手順 3 で作成した暗号化キーファイル。
    • [レジストリのホスト] - コンテナー レジストリのホスト (たとえば docker.io) の完全修飾ドメイン名 (FQDN)。
    • [画像パス] - コンテナー イメージ (たとえば esridocker) を引き出すために使用されるイメージ リポジトリ。
    • [レジストリのユーザー名] - レジストリから引き出す権限を格納している、指定したコンテナー レジストリのアカウントのユーザー名。
      注意:

      指定するコンテナー レジストリ アカウントには、コンテナー イメージをダウンロードする権限のみなど、最小限のレベルの権限が関連付けられている必要があります。 デフォルトでは、Kubernetes は、このアカウントの暗号化されていない認証情報をシークレットとして保存し、アクセスします。 変更内容のプッシュ、メタデータの編集、またはコンテナー レジストリの管理の権限があるアカウントを指定しないことをお勧めします。

    • [レジストリのパスワード] - 指定したコンテナー レジストリ アカウントのパスワード。
    • [完全修飾ドメイン名] - ArcGIS Enterprise on Kubernetes にアクセスするために必要な FQDN。 これは、ロード バランサー、リバース プロキシ、エッジ ルーター、またはトラフィックを ingress コントローラーにルーティングするように構成されたその他の Web フロントエンド ポイントを指します。
    • [コンテキスト パス] - ArcGIS Enterprise on Kubernetes の URL で使用されるコンテキスト パス (たとえば https://<FQDN>/<context path>)。
      注意:

      デプロイが完了すると、組織サイトで ArcGIS Enterprise on Kubernetes Web Adaptor を設定する際に、ここで指定したコンテキスト パスが使用されます。

    • [ノード ポート] - ingress コントローラーは、「LoadBalancer」または「NodePort」のサービス タイプに外部トラフィックを公開します。 ポートは、30000 ~ 32767 の範囲で指定してください。 ポートを指定しないと、Kubernetes が、この範囲内で使用可能なポートを自動的に割り当てます。
    • [TLS 証明書] - FQDN と Subject Alternative Names (サブジェクトの別名) が含まれている TLS 証明書 (自己署名または第三者認証機関 CA が署名) が必要です。 これは、ingress コントローラーのデフォルトの TLS 証明書になります。

  7. プロパティ ファイルをデプロイするか保存するか質問するプロンプトに答えます。

    追加のサイレント デプロイ プロパティに含まれるプロパティ ファイル内のパラメーターをカスタマイズする必要がある場合、デプロイメント スクリプトを終了して、ディスク上のファイルを更新する必要があります。 追加のプロパティの一般的な例には、権限なしのコンテナーのみを実行する ALLOWED_PRIVILEGED_CONTAINERS=false の更新や複数のアベイラビリティ ゾーン クラスター デプロイメントをサポートする K8S_AVAILABILITY_TOPOLOGY_KEY=topology.kubernetes.io/zone の更新などがあります。

有効なパラメーターをすべて入力すると、現在の作業ディレクトリにプロパティ ファイルが保存されます。 このプロパティ ファイルを使用して、これ以降のデプロイメントの自動化や、ArcGIS Enterprise on Kubernetes のアンデプロイを行います。

デプロイメントの最終ステップは、ArcGIS Enterprise 組織の作成です。

ヒント:

デプロイメント スクリプトは、kubectl コマンドを使用して、有効な名前空間などの必要条件を確認します。 ネットワークやファイアウォールの問題で kubectl コマンドがクラスターと通信できない場合、デプロイメントスクリプトが無反応になっているように見える可能性があります。 この場合は、./deploy.sh コマンドを終了して、kubectl を端末から直接実行してクラスターとの通信を開始します。

サイレント モードでのデプロイメントスクリプトの実行

対話モードでデプロイメントスクリプトを実行する代わりに、ArcGIS Enterprise on Kubernetes をサイレントにデプロイできます。 デプロイメントスクリプトは deploy.properties ファイルにバンドルされています。このファイルは、ArcGIS Enterprise on Kubernetes デプロイメントへの一意の入力を求める一連のパラメーターが格納されています。

  1. Kubernetes クライアント コンピューターで、管理者として端末を開きます。
  2. デプロイメントスクリプトと deploy.properties ファイルが保存されているディレクトリに移動します。
  3. deploy.properties ファイルを開きます。
  4. ユーザー入力の概要についてファイル内の説明コメントを参照して、ファイルにリストされている各パラメーターの値を指定します。

    ファイルは、次のセクションに分かれています。

    • デプロイメント プラットフォーム
    • 名前空間
    • 暗号化キーファイル
    • コンテナー レジストリ
    • 完全修飾ドメイン名 (FQDN)
    • TLS 証明書
    • その他のプロパティ
  5. ファイルを保存します。 必要に応じて、ファイルの名前を変更します。
  6. ターミナルで、password-encrypt.sh ツールを実行し、deploy.properties ファイルで使用する暗号化されたパスワードを生成します。
  7. 端末で、次のコマンド形式を使用してデプロイメントスクリプトを実行します。
    ./deploy.sh -f <user_properties>
    

<user properties> のコンテンツが deploy.properties ファイルから取得されます。

ArcGIS Enterprise on Kubernetes をデプロイする前に、デプロイメントスクリプトは、システムが最小システム要件を満たしているかどうかと、deploy.properties ファイルにリストされている各パラメーターに有効な入力を指定しているかどうかを検証します。

デプロイメントの最終ステップは、ArcGIS Enterprise 組織の作成です。

追加のサイレント デプロイ プロパティ

deploy.properties ファイルには、サイレント デプロイする時に使用できる追加のプロパティが含まれています。 それぞれのデフォルト値が設定されています。

ALLOWED_PRIVILEGED_CONTAINERS=true - 権限付きのコンテナーを実行できない場合は、この値を false に設定します。 そのためには、ルートとして # "sysctl -w vm.max_map_count=262144" コマンドを実行し、クラスター内のすべてのノードで vm.max_map_count262144 に増やす必要もあります。

CONTAINER_IMAGE_PULL_POLICY="Always" - 新しいコンテナーが開始されると、ImagePullPolicy は新しいコンテナー イメージをコンテナー レジストリから取得するかどうかを決定します。 デフォルトは "Always" で、コンテナーが開始されるたびに新しいイメージを取得します。 イメージが存在しない場合のみ新しいイメージを取得する場合は、この値を "IfNotPresent" に設定します。

INGRESS_HSTS_ENABLED=false - HTTP Strict Transport Security (HSTS) は、組織の Web トラフィックにセキュリティのレイヤーを追加します。 デフォルトでは、HSTS プロトコル オプションは false に設定されています。 HSTS をオンにするには、この値を true に設定します。

INGRESS_SSL_PROTOCOLS="TLSv1.2 TLSv1.3" - 使用する SSL プロトコルを設定します。 デフォルトは、"TLSv1.2 TLSv1.3" です。 追加の TLS バージョンを許可する必要がある場合は、ここで指定します。

INGRESS_SSL_CIPHERS="ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-CHACHA20-POLY1305:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA" - このプロパティでは、有効にする SSL 暗号化のリストを設定します。 追加の SSL 暗号化が必要な場合は、ここで指定します。

K8S_CLUSTER_DOMAIN="cluster.local" - サービスとポッドのカスタム クラスター ドメイン接尾辞 (organization.com など) がある場合は、このプロパティを使用して、ArcGIS Enterprise on Kubernetes でのクラスター ドメイン接尾辞の使用を許可できます。 デフォルト値は cluster.local です。

K8S_AVAILABILITY_TOPOLOGY_KEY="kubernetes.io/hostname" - ArcGIS Enterprise on Kubernetes をデプロイし、Kubernetes クラスターが 3 つ以上のアベイラビリティ ゾーンにまたがっている場合、"kubernetes.io/hostname""topology.kubernetes.io/zone" またはカスタム ドメイン トポロジ ラベルと置き換えます。 複数のアベイラビリティ ゾーン デプロイメントの詳細については、「複数のアベイラビリティ ゾーンの Kubernetes クラスター管理」をご参照ください。

INGRESS_SERVICE_USE_CLUSTER_IP=false - 既存の Ingress コントローラーを介してレイヤー 7 の負荷分散機能を使用するには、この値を true に設定する必要があります。 この値を true に設定すると、INGRESS_TYPE パラメーターに設定されていた値がオーバーライドされます。

デプロイ プロパティ ファイルで組織のクラスターに必要なパラメーターを更新した後、次のコマンドを使用して、ArcGIS Enterprise on Kubernetes をデプロイします。

./deploy.sh -f <user_properties>