Kubernetes クラスターへの ICD サービスおよびデプロイメントのデプロイ
このトピックでは、Kubernetes クラスターにコンテナー・イメージをデプロイする方法について説明します。
手順
- 製品 Liberty の Docker イメージおよび Docker プライベート・リポジトリーにアクセスできることを確認します。
- Kubernetes クラスターのマスター・ノードで、次のコマンドを実行します。
- アプリケーションの ICD 名前空間を作成し、ディレクトリー Namespace を作成し、ディレクトリー内に yaml ファイル icd-namespace を作成します。
- すべての Kubernetes コンポーネントの名前空間は、Namespace タイプを使用して定義されます。 以下のコードを参照してください。
apiVersion: v1 kind: Namespace metadata: name: icd - 次のコマンドを実行して、名前空間を作成します。
kubectl apply -f Namespace/icd-namespace.yaml
- ICD 名前空間に構成マップを作成します。
- 構成マップはカスタマイズ可能で、データの追加や更新を行うことができます。
- ディレクトリー Config を作成し、以下に示されているようにディレクトリー内に構成マップを作成します。
- ICD 構成マップ・データ:
- DB_PORT: "50005"
- 次のコマンドを実行して名前空間を作成します。
kubectl apply -f Config/icd-map.yaml
- ICD 名前空間に秘密を作成します。
- 秘密もカスタマイズ可能で、独自の TLS 証明書と鍵を使用できます。
- ICD-TLS-Secret: これは、ご使用の Ingress での SSL サービスのデフォルトの証明書です。 TLS 証明書および鍵を変更する場合は、
icd-tls-secret.yamlファイルで以下のフィールドを更新します。- tls.crt: //エンコードされた証明書ストリング
- DB-Secret: これには、データベースのマスター・パスワードが含まれます。
- このマスター・パスワードを、使用するワークステーションと同じものに更新します。
- db-secret.yamlファイル内の以下のフィールドを更新します。
- password: //Base64 でエンコードされたパスワード
- パスワードのエンコードされたストリングを取得するには、
echo -n "your_password"|base64を実行します。
- 以下のコマンドを実行します。
kubectl apply -f Secrets/db-secret.yamlkubectl apply -f Secrets/icd-tls-secret.yaml
- デプロイメントの ICD 名前空間にサービスを作成します。 Kubernetes ポッドにアクセスし、ポッドへの静的アクセスを提供するには、サービスが必要です。 Kubernetes では、以下の 2 つのタイプのサービスが提供されています。
- ClusterIP: これは、クラスター内でアプリケーションを公開する場合に使用されます。 すべてのアプリケーションがクラスターに公開され、Ingress コントローラー経由で外部からアクセスできます。
- NodePort: これは、アプリケーションをcluster-adminホストを介して外部の世界に公開するために使用されます。 NodePort サービスは、データベースに外部から直接アクセスする場合に備えて、データベース専用に 1 つだけ存在します。
IBM® Control Desk ワークロードの場合、さまざまなワークロード・ポッドにアクセスするためのサービスを作成する必要があります。 例えば、icd-uiサービスです。 ディレクトリー・サービスを作成し、icd-uiサービス用のyamlファイルui-service.yamlを作成します。 icd-uiサービスの以下のコードを参照してください。kind: Service apiVersion: v1 metadata: labels: app: icd-ui name: icd-ui namespace: icd spec: type: ClusterIP ports: - name: "http-port" port: 9080 targetPort: 9080 - name: "https-port" port: 9443 targetPort: 9443 selector: app: icd-uiこのサービスは、セレクターicd-uiを介して接続されたすべてのポッドを、ClusterIP を使用して 9443 および 9080 のポートに公開します。- 次のコマンドを実行して、サービスを作成します。
kubectl apply -f Services/ui-service.yaml - 同様に、他のワークロードのサービスを作成します。
- icd-cron
- icd-report
- icd-jms
- icd-sp
- icd-api
- icd-mea
- サービスの作成後に、すべての IBM
Control Desk コンポーネントのデプロイメントを作成する必要があります。 デプロイメントは、Kubernetes ポッドの作成に使用されます。 各ポッドは、アプリケーション・コードを実行する 1 つ以上のコンテナーを持つことができます。 IBM
Control Deskの場合、各ポッドに含まれるコンテナーは 1 つのみです。 Kubernetes デプロイメント・ファイルは、事前に作成された Docker イメージを使用してポッドを作成します。 ICD 名前空間に icd-ui デプロイメントを作成します。 コード・スニペットは以下のとおりです。
kind: Deployment apiVersion: apps/v1 metadata: labels: app: icd-ui name: icd-ui namespace: icd spec: replicas: 1 selector: matchLabels: app: icd-ui template: metadata: labels: app: icd-ui spec: hostname: icd-ui containers: - env: - name: DB_HOST value: <DB IP Address> - name: JMS_SERVER value: $(ICD_JMS_SERVICE_HOST) - name: JVM_ARGS value: -Dmxe.name=MAXIMO_UI image: icdlocalgsa.icdlab.com:5000/admin/icd/ui:7612 name: ui resources: limits: memory: 5Gi requests: memory: 2Gi ports: - containerPort: 9443 - containerPort: 9080 envFrom: - configMapRef: name: icd-map restartPolicy: Always名前空間icdで作成されたデプロイメントはicd-ui spec.selector によって指定されたicd-uiサービスに接続されます。- 必須フィールド:
- image: <icdlocalgsa.icdlab.com:5000>/admin/icd/ui:<7612> // は、プライベート・レポicd-uiイメージ・パスで更新する必要があります。
- Env: データベースが管理ワークステーション上でホストされているため、DB_HOST 環境変数は、管理ワークステーションの IP アドレスになります。
- オプション・フィールド:
- replicas: 1 //更新可能です。
- limits:
memory: 5Gi// ポッドで使用できる最大メイン・メモリー。 - requests:
memory: 2Gi// ポッドの初期要求メモリー。
- 追加の構成: IBM Control Desk Containers および Scaling IBM Control Desk Workloads Pods を参照して、 IBM Control Desk ワーカー・ポッドのロギングおよびスケーリングをそれぞれ構成します。
- 次のコマンドを実行して、デプロイメントを行います。
kubectl apply -f ui-deployment.yaml - 同様に、他のワークロードのデプロイメントを、それぞれのイメージを使用して作成する必要があります。
- icd-cron
- icd-report
- icd-jms
- icd-sp
- icd-api
- icd-mea
- 必須フィールド: