デプロイメントスクリプトの実行
ArcGIS Enterprise on Kubernetes をデプロイするには、Kubernetes のマニフェストとともに bash スクリプトを実行します。 デプロイメント パッケージは、My Esri からダウンロードでき、.tar.gz ファイルとして配布されます。 デプロイメントスクリプトを実行する前に、開始手順を確認してください。
注意:
対話モードでデプロイメント スクリプトを実行するには、コンテナー レジストリーのパスワードを 30 文字以下にする必要があります。 コンテナー レジストリーのパスワードが 30 文字を超えた場合、サイレント モードでデプロイメントスクリプトを実行することができます。 その前に、password-encrypt.sh ツールを使用して暗号化されたパスワードを生成し、パスワードから改行を削除して、deploy.properties ファイル内で CONTAINER_REGISTRY_PASSWORD として指定します。
対話モードでのデプロイメント スクリプトの実行
構成パラメーター ファイルを指定せずに ArcGIS Enterprise on Kubernetes デプロイメント スクリプトを実行すると、スクリプトが対話モードで開きます。 スクリプトは、各パラメーターの入力を求め、即座に各値の妥当性をチェックします。 これにより、デプロイメントのための各構成パラメーターをすばやく検証できます。
Kubernetes クライアント コンピューターで、管理者として端末を開きます。
デプロイメントスクリプトが保存されているディレクトリーに移動します。
暗号化キーファイルを作成します。
暗号化キーファイルは、パスワードの AES-256 暗号化および復号化に使用されるプレーン テキスト ファイルです。 このファイルのコンテンツは、指定したプレーン テキストで、パスワードを含めることはできません。 このファイルは固定の場所に残しておき、コンテンツを変更しないでください。
(オプション) TLS シークレットを名前空間に作成します。
端末で、次のコマンド形式を使用してデプロイメントスクリプトを実行します。
./deploy.shパラメーターを入力します。
スクリプトから、次のパラメーターを 1 つずつ入力するよう求められます。 誤った値を入力すると、ただちにエラーが返され、有効なパラメーターを入力するよう求められます。 以下は、ユーザー入力の概要です。
注意:
このスクリプトは、ルート ユーザーとして実行する必要はありません。
デプロイメント プラットフォーム - ArcGIS Enterprise on Kubernetes は、ingress を使用して、着信トラフィックをクラスターのサービスにルーティングします。 Amazon Web Services EKS や Microsoft AKS (Azure Kubernetes Service) など、クラウド プロバイダーが管理する 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) を取得するために使用されるイメージ リポジトリー。
レジストリーには、ユーザー名とパスワード ベースの認証が必要ですか ([y]/n) ? -
nを入力すると、コンテナー レジストリー アカウントのユーザー名およびパスワード パラメーターがスキップされます。レジストリーのユーザー名 - レジストリーから取得する権限を格納している、指定したコンテナー レジストリーのアカウントのユーザー名。
注意:
指定するコンテナー レジストリー アカウントには、コンテナー イメージをダウンロードする権限のみなど、最小限のレベルの権限が関連付けられている必要があります。 デフォルトでは、Kubernetes は、このアカウントの暗号化されていない認証情報をシークレットとして保存し、アクセスします。 変更内容のプッシュ、メタデータの編集、またはコンテナー レジストリーの管理の権限があるアカウントを指定しないことをおすすめします。
レジストリーのパスワード - 指定したコンテナー レジストリー アカウントのパスワード。
注意:
パスワードに特殊文字が含まれている場合、対話モードでスクリプトを実行すると失敗する原因となる可能性があります。 この場合、デプロイメント スクリプトをサイレント モードで実行し、
USE_DOCKER_CONFIG_FILE_AS_REGISTRY_SECRET=trueを指定します。 このオプションを使用するには、デプロイメント スクリプトを実行するコンピューターに、指定したコンテナー レジストリーに対する Docker がインストールおよび構成されている必要があります。完全修飾ドメイン名 - 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 証明書になります。
プロパティ ファイルをデプロイするか保存するか質問するプロンプトに答えます。
追加のサイレント デプロイ プロパティに含まれるプロパティ ファイル内のパラメーターをカスタマイズする必要がある場合、デプロイメント スクリプトを終了して、ディスク上のファイルを更新する必要があります。 追加のプロパティの一般的な例には、権限なしのコンテナーのみを実行する
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 デプロイメントへの一意の入力を求める一連のパラメーターが格納されています。
Kubernetes クライアント コンピューターで、管理者として端末を開きます。
デプロイメント スクリプトと
deploy.propertiesファイルが保存されているディレクトリーに移動します。deploy.propertiesファイルを開きます。ユーザー入力の概要についてファイル内の説明コメントを参照して、ファイルにリストされている各パラメーターの値を指定します。
ファイルは、次のセクションに分かれています。
デプロイメント プラットフォーム
名前空間
暗号化キーファイル
コンテナー レジストリー
完全修飾ドメイン名 (FQDN)
TLS 証明書
ファイルを保存します。 必要に応じて、ファイルの名前を変更します。
ターミナルで、
password-encrypt.shツールを実行し、deploy.propertiesファイルで使用する暗号化されたパスワードを生成します。端末で、次のコマンド形式を使用してデプロイメントスクリプトを実行します。
./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_count を 262144 に増やす必要もあります。
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_CUSTOM_ANNOTATION1="" - LoadBalancer サービスを使用して外部トラフィックをクラスターにルーティングする場合、このプロパティを使用してカスタム プロパティをロード バランサーに追加できます。 たとえば、ロード バランサーの構成にサブネットを追加したり、AWS の Elastic IP をネットワーク ロード バランサーに割り当てる場合などに、これは役立ちます。 INGRESS_CUSTOM_ANNOTATION2、INGRESS_CUSTOM_ANNOTATION3 などのように接尾辞を増分することで複数のアノテーション プロパティを追加できます。
CLUSTER_INGRESS_CONTROLLER_YAML_FILENAME="ingress.yaml" - INGRESS_SERVICE_USE_CLUSTER_IP を true に設定し、Ingress オブジェクトをまだ作成していない場合は、この値を Ingress YAML ファイルの絶対パスに設定することで Ingress オブジェクトを作成できます。 このオプションは、サポートされているレイヤー 7 ロード バランサーでのみ使用できます。 この値はデフォルトで空白であり、パスを指定しない限り、このプロパティは無視されます。
デプロイメント プロパティ ファイルで組織のクラスターに必要なパラメーターを更新した後、次のコマンドを使用して、ArcGIS Enterprise on Kubernetes をデプロイします:
./deploy.sh -f <user_properties>