Kubernetes クラスターへの ICD サービスおよびデプロイメントのデプロイ

このトピックでは、Kubernetes クラスターにコンテナー・イメージをデプロイする方法について説明します。

手順

  1. 製品 Liberty の Docker イメージおよび Docker プライベート・リポジトリーにアクセスできることを確認します。
  2. Kubernetes クラスターのマスター・ノードで、次のコマンドを実行します。
    • アプリケーションの ICD 名前空間を作成し、ディレクトリー Namespace を作成し、ディレクトリー内に yaml ファイル icd-namespace を作成します。
    • すべての Kubernetes コンポーネントの名前空間は、Namespace タイプを使用して定義されます。 以下のコードを参照してください。
      apiVersion: v1
      kind: Namespace
      metadata:
        name: icd
      
    • 次のコマンドを実行して、名前空間を作成します。
      kubectl apply -f Namespace/icd-namespace.yaml
  3. ICD 名前空間に構成マップを作成します。
    • 構成マップはカスタマイズ可能で、データの追加や更新を行うことができます。
    • ディレクトリー Config を作成し、以下に示されているようにディレクトリー内に構成マップを作成します。
    • ICD 構成マップ・データ:
      • DB_PORT: "50005"
    • 次のコマンドを実行して名前空間を作成します。
      • kubectl apply -f Config/icd-map.yaml  
  4. 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.yaml
      • kubectl apply -f Secrets/icd-tls-secret.yaml
  5. デプロイメントの 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 のポートに公開します。
    1. 次のコマンドを実行して、サービスを作成します。
      kubectl apply -f Services/ui-service.yaml
    2. 同様に、他のワークロードのサービスを作成します。
      • icd-cron
      • icd-report
      • icd-jms
      • icd-sp
      • icd-api
      • icd-mea
  6. サービスの作成後に、すべての 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 ワーカー・ポッドのロギングおよびスケーリングをそれぞれ構成します。
    1. 次のコマンドを実行して、デプロイメントを行います。
      kubectl apply -f ui-deployment.yaml
    2. 同様に、他のワークロードのデプロイメントを、それぞれのイメージを使用して作成する必要があります。
      • icd-cron
      • icd-report
      • icd-jms
      • icd-sp
      • icd-api
      • icd-mea

結果

すべてのサービス、デプロイメント、および Ingress の構成が完了したら、Kubernetes クラスター上でワークロードが作動可能になります。