2. インストール¶
本章では、Workload Managerのインストール方法について説明します。
インストールは、Amazon EKS クラスターに接続できる操作用クライアント環境を用意して行います。
2.1. 前提条件¶
Workload Managerをインストールする際の前提条件を以下に記載します。
操作用クライアント環境でkubectlコマンドが使用できること
操作用クライアント環境にkubectlがインストールされており、kubectlコマンドが実行できる必要があります。
操作用クライアント環境で docker コマンドが使用できること
以下の操作を行うため、操作用クライアント環境に docker がインストールされており、dockerコマンドが実行できる必要があります。
Workload Manager Operator の Docker イメージを生成してリポジトリにプッシュします。
Workload Manager の Docker イメージを生成してリポジトリにプッシュします。
また、インストール前に docker サービスを起動しておく必要があります。
操作用クライアント環境でawsコマンドが使用できること
生成したWorkload ManagerのDockerイメージをAmazon Elastic Container Registry (ECR) のリポジトリにプッシュします。そのリポジトリを作成するために、aws ecrコマンドを実行します。したがって、操作用クライアント環境にAWS CLIがインストールされており、awsコマンドが実行できる必要があります。
Amazon EKS クラスターに、Workload Managerが使用する「nec-workload-manager」というネームスペースが作成されていること
次のコマンドで、ネームスペースを作成できます。
> kubectl create namespace nec-workload-manager
Amazon EKS クラスターの「nec-workload-manager」ネームスペースに、Workload Managerで使用するPersistentVolumeが作成されていること
Workload Managerはデータの永続化のためにPersistentVolumeを使用します。 そのため、「nec-workload-manager」ネームスペースに、以下の条件を満たすPersistentVolumeを作成してください。
MongoDB向け
設定項目
設定値
metadata.labels.name
nec-workload-manager-mongodb
spec.capacity.storage
32Gi以上
spec.accessModes
ReadWriteMany
spec.persistentVolumeReclaimPolicy
Retain
注釈
カスタムリソースで指定する use_pv が "true" の場合に PersistentVolume の作成が必要です。"false" の場合は必要ありません。
Amazon EKS クラスターにPrometheusがデプロイされていること
Workload Managerはクラスター内の監視情報をPrometheusから取得します。 このため、事前にPrometheusがインストールされている必要があります。
AWS Certificate Managerに登録するサーバ証明書が用意されていること
Workload ManagerはHTTPS通信のためにサーバ証明書が必要です。 このため、AWS Certificate Managerが利用でき、登録するサーバ証明書を用意しておく必要があります。
Amazon Cognitoが利用できること
Workload ManagerはAmazon Cognitoと連携してユーザ認証を行います。 このため、Amazon Cognitoが利用できる必要があります。
注釈
カスタムリソースで指定する use_auth が "true" の場合に必要です。"false" の場合は必要ありません。
2.2. インストール前の作業¶
インストールを行う前に確認しておくべき事項、ならびに実施しなければならない作業について説明します。
2.2.1. AWS Certificate Managerへのサーバ証明書のインポート¶
Workload Managerのサーバ証明書をAWS Certificate Managerにインポートします。
詳細は、AWS Certificate Managerのマニュアルを参照してください。
2.2.2. Amazon Cognitoのユーザプールの設定¶
Workload Managerのユーザを登録するためのユーザプールを作成します。
作成したユーザプールに、Workload Managerがアクセスするために必要なアプリクライアントを作成します。
作成したアプリクライアントの設定で、「OAuth 2.0」の「許可されている OAuth フロー」で、「Authorization code grant」を選択します。
作成したユーザプールのドメイン名を設定します。
設定については、Amazon Cognitoのマニュアルを参照してください。
ユーザプールへのユーザ登録は、インストール後で構いません。
注釈
カスタムリソースで指定する use_auth が "true" の場合に必要です。"false" の場合は必要ありません。
2.2.3. 操作用クライアント環境へのアーカイブファイルの配置¶
製品媒体から workload-manager-operator.tar.gz を、操作用クライアント環境 上の任意の場所 (${WORK_DIR}) にコピーします。
操作用クライアント環境 にログインします。
以下のコマンドで workload-manager-operator.tar.gz を展開します。
> cd ${WORK_DIR} > tar -xvzf workload-manager-operator.tar.gz
2.2.4. Dockerfileの修正¶
本手順は操作用クライアント環境でプロキシを使用する場合に必要な手順です。使用しない場合は「2.3. インストール」の手順に進んでください。
操作用クライアント環境でプロキシを使用する場合、workload-manager/Dockerfiles/EKS/Dockerfile に定義されている pip install を、プロキシサーバのURLを指定して実行する必要があります。 下記のようにDockerfileを修正してください。
修正前のDockerfile
FROM python:3.7 ~省略~ RUN pip install flask==2.0.1 \ && pip install pymongo==3.11.4 \ && pip install kubernetes==17.17.0 \ && pip install uwsgi==2.0.19.1 \ && pip install prometheus_api_client==0.4.2 ~省略~
修正後のDockerfile
FROM python:3.7 ~省略~ RUN pip install --proxy <プロキシサーバのURL> flask==2.0.1 \ && pip install --proxy <プロキシサーバのURL> pymongo==3.11.4 \ && pip install --proxy <プロキシサーバのURL> kubernetes==17.17.0 \ && pip install --proxy <プロキシサーバのURL> uwsgi==2.0.19.1 \ && pip install --proxy <プロキシサーバのURL> prometheus_api_client==0.4.2 ~省略~
2.2.5. Docker リポジトリの作成¶
Docker イメージを保持するためのリポジトリを Amazon ECR レジストリ に作成する必要があります。リポジトリを作成するには、次のコマンドを実行します。
> aws ecr create-repository \
--region <リージョン> \
--repository-name <リポジトリ名>
Amazon ECR レジストリ に対して、Docker を認証します。
> aws ecr get-login-password --region <リージョン> | docker login --username AWS --password-stdin <AWS アカウント ID>.dkr.ecr.<リージョン>.amazonaws.com
次の 2 つのリポジトリを作成します。
Workload Manager Operator の Docker イメージを保持するリポジトリ nec/workload-manager-operator
> aws ecr create-repository \ --region <リージョン> \ --repository-name nec/workload-manager-operatorWorkload Manager の Docker イメージを保持するリポジトリ nec/workload-manager
> aws ecr create-repository \ --region <リージョン> \ --repository-name nec/workload-manager
2.3. インストール¶
2.3.1. Workload Manager Operator の Docker イメージ作成¶
操作用クライアント環境 にログインします。
次のコマンドを実行し、Workload Manager Operator の Docker イメージを作成します。
> cd ${WORK_DIR}/workload-manager-operator > docker build -f build/Dockerfile -t <AWS アカウント ID>dkr.ecr.<リージョン>.amazonaws.com/nec/workload-manager-operator:latest .
次のコマンドを実行し、 Workload Manager Operator の Docker イメージを Amazon ECR にプッシュします。
> docker push <AWS アカウント ID>dkr.ecr.<リージョン>.amazonaws.com/nec/workload-manager-operator:latest
2.3.2. Workload Manager の Docker イメージ作成¶
次のコマンドを実行し、Workload Manager の Docker イメージを作成します。
> cd ${WORK_DIR}/workload-manager-operator/workload-manager > docker build -f Dockerfiles/EKS/Dockerfile -t <AWS アカウント ID>dkr.ecr.<リージョン>.amazonaws.com/nec/workload-manager:latest .
次のコマンドを実行し、 Workload Manager Operator の Docker イメージを Amazon ECR にプッシュします。
> docker push <AWS アカウント ID>dkr.ecr.<リージョン>.amazonaws.com/nec/workload-manager:latest
2.3.3. Workload Manager Operator のインストール¶
Workload Manager Operator の展開
${WORK_DIR}/workload-manager-operator/manifest/eks/setup/eks_setup.yaml をテキストエディタで変更します。変更内容は次の通りです。
設定項目
説明
image
Workload Manager Operator のイメージを指定します。
REPLACE_IMAGE を実際のイメージに変更してください。
~省略~ containers: - name: workload-manager-operator # Replace this with the built image name image: "REPLACE_IMAGE" imagePullPolicy: "Always" ~省略~
次のように変更します。
~省略~ containers: - name: workload-manager-operator # Replace this with the built image name image: "<AWS アカウント ID>dkr.ecr.<リージョン>.amazonaws.com/nec/workload-manager-operator:latest" imagePullPolicy: "Always" ~省略~
operator.yaml の変更後、次のコマンドを実行し Workload Manager Operator を展開します。
> cd ${WORK_DIR}/workload-manager-operator/manifest/eks > kubectl create -f setup/eks_setup.yaml -n nec-workload-manager
2.3.4. Workload Manager のインストール¶
カスタムリソースの準備
Workload Manager を展開するためには、カスタムリソースに設定を行い、それを適用します。カスタムリソースを適用することで、自動的に Operator にて Workload Manager の展開と設定が行われ、Workload Manager が起動します。
次のリファレンス集を参照し、カスタムリソースを準備します。
[リファレンス集]-[コンフィグレーション]-[OpenShift Container Platform 4 または Amazon EKS]
カスタムリソースに設定する項目は次の表の通りとなっています。
設定項目
説明
image
Workload Manager のイメージを指定します。
node_selector
Workload Manager の Pod を指定したノードにスケジューリングする場合に指定します。
use_pv
MongoDB の保存先として PersistentVolume を使用するかどうかを指定します。"true" または false" を指定します。
use_auth
認証を行うかどうかを指定します。"true" または false" を指定します。
mode
試用版か製品版かのどちらで動作するかを指定します。"trial" または "product" を指定します。
cluster_platform
"EKS" を指定します。
get_info_ssc
WebSAM SigmaSystemCenter との連携動作を有効化するか否かを "on" または "off" で指定します。
user_authority_config_json
Workload Manager のユーザ定義を JSON 形式で指定します。use_auth が "true" の場合に指定します。eks.cognito_client_id
Amazon Cognito に作成したユーザプールのアプリクライアント・クライアント ID を指定します。use_auth が "true" の場合に指定します。eks.cognito_client_secret
Amazon Cognito に作成したユーザプールのアプリクライアント・シークレットを指定します。use_auth が "true" の場合に指定します。eks.cognito_domain
Amazon Cognito に作成したユーザプールのドメイン名を指定します。use_auth が "true" の場合に指定します。eks.cognito_region
Amazon Cognito に作成したユーザプールのリージョン(プール ID の"_"より前)を指定します。use_auth が "true" の場合に指定します。eks.cognito_user_pool_id
Amazon Cognito に作成したユーザプールの ID (プール ID の "_" より後)を指定します。use_auth が "true" の場合に指定します。eks.nginx_cert_arn
AWS Certificate Manager にインポートしたサーバ証明書の ARN を指定します。
eks.prometheus_service_name
EKS クラスターにデプロイした Prometheus サービスの名前を指定します。
eks.prometheus_service_protocol
EKS クラスターにデプロイした Prometheus サービスの通信プロトコルを指定します。
eks.prometheus_service_port
EKS クラスターにデプロイした Prometheus サービスのポート番号を指定します。
Workload Manager の展開
次のコマンドを実行し、Workload Manager を展開します。
> kubectl create -f ${WORK_DIR}/workload-manager-operator/manifest/eks/eks_cr.yaml -n nec-workload-manager
2.4. インストール後の作業¶
2.4.1. Workload Managerのサービス公開アドレスの確認¶
操作用クライアント環境で、Workload Managerのサービス公開アドレスを、次のコマンドで取得してください。
> kubectl get service -n nec-workload-manager
出力結果のうち、"NAME"値が"nginx"の"EXTERNAL-IP"値を参照してください。
2.4.2. Amazon Cognitoのユーザプールの設定¶
ユーザプールに作成したアプリクライアントの設定で、以下のURLを指定してください。
コールバックURL
https://<Workload Managerのサービス公開アドレス>/oauth2/callback
サインアウトURL
https://<Workload Managerのサービス公開アドレス>/oauth2/callback
注釈
カスタムリソースで指定する use_auth が "true" の場合に必要です。"false" の場合は必要ありません。