Helm を使用した Runtime Fabric のインストール

Helm を使用して、管理している Amazon Elastic Kubernetes Service (Amazon EKS)、Amazon Elastic Kubernetes Service Anywhere (Amazon EKS-A)、Azure Kubernetes Service (AKS)、Alibaba Cloud Container Service for Kubernetes (ACK)、Google Kubernetes Engine (GKE)、Rancher Kubernetes Engine (RKE)、または VMware Tanzu Kubernetes Grid 環境に Anypoint Runtime Fabric をインストールできます。

Helm を使用して Runtime Fabric をインストールする手順

Helm を使用して Runtime Fabric をインストールする手順は次のとおりです。

  1. Runtime Manager を使用して Runtime Fabric を作成します。

  2. Runtime Fabric 用の ​rtf​ 名前空間を作成します。

  3. Runtime Fabric コンポーネントイメージを取得するための Docker プルシークレットを作成します。

  4. 必要に応じて、追加の承認済み名前空間を設定します。

  5. Runtime Fabric Helm リポジトリを追加します。

  6. values.yml​ ファイルをダウンロードして Runtime Fabric をインストールします。

  7. インストール手順を完了します。

始める前に

Kubernetes 環境に Anypoint Runtime Fabric をインストールする前に、次のことを確認してください。

  • 「Runtime Fabric の概要」​で説明されているアーキテクチャと要件を確認した。

  • Runtime Fabric をサポートするようにネットワークを設定した​。

  • Kubernetes 環境を次のようにインストールして設定してある。

    • EKS、AKS、または GKE Kubernetes 環境を実行している。その他の Kubernetes 環境はサポートされていません。

    • サポートされている Kubernetes バージョンを実行している。

    • イングレスコントローラーを実行して外部要求をアプリケーションに送信している。

  • Helm 3 以降をインストールして、特権ユーザー権限を持っている。

  • Helm を使用して Runtime Fabric のインストールを管理する場合は、後で ​rtfctl​ コマンドラインユーティリティを使用して Mule ライセンスキーとプロキシを管理できます。ただし、​更新ドキュメント​に説明されているように、インストール後の変更をすべて追跡する必要があります。

Helm のサポート

Runtime Fabric は、Helm バージョン 1.13 以降を使用したインストール、アップグレード、ロールバックをサポートしています。

Runtime Manager を使用して Runtime Fabric を作成する

Helm を使用して Runtime Fabric をインストールする前に、Runtime Manager を使用して Runtime Fabric を作成します。これは、インストール中に必要なアクティベーションデータを取得するために必要です。

  1. Anypoint Platform から [Runtime Manager] を選択します。

  2. [Runtime Fabric]​ をクリックします。

  3. [Create Runtime Fabric (Runtime Fabric を作成)]​ をクリックします。

  4. 新しい Runtime Fabric の名前を入力し、次のいずれかのオプションを選択します。

    • Amazon Elastic Kubernetes Service

    • Azure Kubernetes Service

    • Google Kubernetes Engine

  5. サポート責任の免責事項を確認し、同意する場合は ​[Accept (同意)]​ をクリックします。

  6. [Helm] をクリックします。

Helm を使用したインストールプロセスの残りの手順では、プレースホルダー値を参照します。実際の値は、Runtime Fabric インスタンスを作成するときに Runtime Manager から取得できます。

Runtime Fabric 用の名前空間を作成する

Kubernetes のクラスターで、​rtf​ という名前の名前空間を作成する必要があります。この名前空間に Runtime Fabric コンポーネントをインストールします。

名前空間を作成するには、次のコマンドを実行します。

kubectl create ns rtf

Docker プルシークレットを作成する

名前空間を作成したら、Runtime Fabric のインストールと実行に必要な Docker イメージを取得できるように、プルシークレットを作成します。

デフォルトのレジストリ URL は ​rtf-runtime-registry.kprod.msap.io​ です。ローカルレジストリを使用している場合は、ここで値を指定してください。

プルシークレットを作成するには、次のコマンドを実行します。

kubectl create secret docker-registry <pull_secret> --namespace rtf --docker-server=<docker_registry_url> --docker-username=<docker_registry_username> --docker-password=<docker_ registry_password>

Runtime Fabric Helm リポジトリを追加する

作成した名前空間に Runtime Fabric Helm リポジトリを追加する必要があります。Runtime Fabric Helm リポジトリには、Runtime Fabric をインストールするのに必要なチャートが入っています。

Helm リポジトリを追加するには、次のコマンドを実行します。

helm repo add <name> <helm_repo_url> --username <your_username> --password <your_password>

すでに Helm リポジトリが追加されていて、Runtime Fabric がリポジトリの追加をスキップしたという結果が返された場合は、新しい Runtime Fabric バージョンをインストール (またはそのバージョンにアップグレード) する前に ​helm repo update​ を実行してください。

(省略可能) 承認済み名前空間を設定する

必要に応じて、他のサービスと一緒に Runtime Fabric を Kubernetes クラスターにデプロイできるようにする​承認済み名前空間​を設定できます。

始める前に

承認済み名前空間を設定する前に、次の点に注意してください。

  • Runtime Fabric をインストールする​​に ​authorized-namespaces​ ConfigMap ファイルを作成する必要があります。さらに、ConfigMap には ​authorized-namespaces​ という名前を付ける必要があります。

  • rtf:resource-metrics-collector​ ClusterRole にはノード、ポッド、名前空間を ​get​ および ​list​ するクラスター全体の権限があり、ノードに対する ​watch​ 権限があります。ロール ClusterRole は次のように定義されます。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: rtf:resource-metrics-collector
      labels:
        {{- include "labels.standard" . | nindent 4 }}
    rules:
      - apiGroups: [""]
        resources: ["nodes", "pods", "namespaces"]
        verbs: ["list", "get"]
      - apiGroups: [""]
        resources: ["nodes"]
        verbs: ["watch"]
    1. クラスターで、アプリケーションデプロイメント用の追加の名前空間を作成し、必要な表示ラベルを名前空間に追加します。そのためには、次のコンテンツで YAML ファイルを作成します。

      apiVersion: v1
      kind: Namespace
      metadata:
        name: <namespace>
        labels:
          rtf.mulesoft.com/agentNamespace: <rtf_namespace>
          rtf.mulesoft.com/envId: <environment_id>
          rtf.mulesoft.com/org: <org_id>
          rtf.mulesoft.com/role: workers
    2. ここで作成したファイルを適用します。

      kubectl apply -f <filename>.yaml
    3. ステップ 1 と 2 を繰り返して、必要な数の名前空間を追加します。

    4. Runtime Fabric エージェント ServiceAccount が含まれる Runtime Fabric エージェント ClusterRole の RoleBinding を作成します。そのためには、追加の名前空間で次の設定を適用します。

      kind: RoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: <name>
        namespace: <additional_namespace>
      subjects:
        - kind: ServiceAccount
          name: rtf-agent
          namespace: <rtf_namespace>
      # If using persistence gateway uncomment and provide the following. Ref: https://docs.mulesoft.com/runtime-fabric/latest/persistence-gateway#persistence-gateway-with-authorized-namespaces
      # subjects:
      #  - kind: ServiceAccount
      #    name: rtf-persistence-gateway
      #    namespace: <rtf_namespace>
      
      roleRef:
        kind: ClusterRole
        name: rtf:agent
        apiGroup: rbac.authorization.k8s.io

認証済み名前空間モードでクラスター化アプリケーションを使用するには、次の RoleBinding を作成する必要があります。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rtf-mule-clusterip-service
  namespace: <app_namespace>
subjects:
- kind: ServiceAccount
  name: mule-clusterip-service
  namespace: <rtf_namespace>
roleRef:
  kind: ClusterRole
  name: rtf:mule-clusterip-service
  apiGroup: rbac.authorization.k8s.io
  1. rtf​ 名前空間で、​authorized-namespaces​ という名前の ConfigMap ファイルを作成し、追加の名前空間があればリストします。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: authorized-namespaces
      namespace: <rtf_namespace>
    data:
      ADDITIONAL_NAMESPACE_1: "additional-namespace1"
      ADDITIONAL_NAMESPACE_2: "additional-namespace2"
  2. Runtime Fabric のインストールが完了した後に ConfigMap で名前空間の追加または削除を行う場合は、Runtime Fabric エージェントポッドを再起動する必要があります。これを行うには、次のコマンドを実行します。

    kubectl -nrtf delete po -l app=agent

    ポッドを削除すると、Kubernetes によって新しいポッドが開始されます。

Runtime Fabric のインストール

Runtime Fabric をインストールするには、Runtime Manager から供給された ​values.yml​ ファイルを使用してください。

  1. values.yml​ ファイルをダウンロードします。

  2. 必要に応じて省略可能なパラメーターを追加します。

    承認済み名前空間を使用している場合は、​authorizedNamespaces​ を ​true​ に設定します。

  3. 次のコマンドを実行します。

    helm install runtime-fabric rtf/rtf-agent --version <VERSION_FROM_UI> -f values.yaml -n <namespace>

values.yml リファレンス

次に ​values.yml​ ファイルの例を示します。

activationData: <activation_data>
proxy:
  http_proxy:
  http_no_proxy:
  monitoring_proxy:
muleLicense: <mule_license_key>
customLog4jEnabled: false
global:
  nodeWatcherEnabled: true
  deploymentRateLimitPerSecond: 1
  authorizedNamespaces: false
  image:
    rtfRegistry: rtf-runtime-registry.kqa.msap.io
    pullSecretName: rtf-pull-secret
  containerLogPaths:
  - /var/lib/docker/containers
  - /var/log/containers
  - /var/log/pods
EU コントロールプレーンを使用して Runtime Fabric BYOK を設定する場合は、​「ホスト名設定」​の変更点を確認して、正しく設定してください。特に、​rtfRegistry: rtf-runtime-registry.kprod-eu.msap.io​ プロパティに注意してください。

必須パラメーター

Runtime Manager で Runtime Fabric を作成すると、次の必須パラメーターが作成されて ​values.yml​ に追加されます。

キー

activationData

アクティベーションデータ

YW55cG9pbnQubXVsZXNvZnQuY29tOjBmODdmYzYzLTM3MWUtNDU2Yy1iODg5LTU5NTkyNjYyZjUxZQ==

rtfRegistry

レジストリ URL

rtf-runtime-registry.kprod.msap.io

pullSecretName

レジストリシークレット

<pull_secret>

muleLicense

アプリケーションの Mule ライセンス

<mule_license_key>​。Base64 エンコードである必要があります。

省略可能なパラメーター

Runtime Fabric をインストールする前に、必要に応じて次の省略可能なパラメーターを ​values.yml​ で設定します。

キー

customLog4jEnabled

カスタム Log4j 設定を有効化または無効化

customLog4jEnabled: true​、デフォルトは ​false

authorizedNamespaces

追加の名前空間の有効化または無効化

authorizedNamespaces: true​、デフォルトは false

crds.install

カードのインストールの有効化

crds.install: true​ (最初の Runtime Fabric のインストール)、false (以降のインストール)

  • proxy.http_proxy

  • proxy.http_no_proxy

プロキシ値と no_proxy 値

proxy.monitoring_proxy

Anypoint Monitoring のプロキシ値

socks5://<user>:<pass>@<10.0.0.2>:<8080>

global.containerLogPaths

Filebeat の読み取りパス

  • /var/lib/docker/

  • /var/log/containers

  • /var/log/pods

nodeWatcherEnabled

クラスターのノードウォッチャーの有効化または無効化

nodeWatcherEnabled:true​、デフォルト値は ​true

deploymentRateLimitPerSecond

1 秒ごとのデプロイメントレート制限の設定

deploymentRateLimitPerSecond: 1​、デフォルト値は ​1

Mule ライセンスキーの挿入

インストール中に Mule ライセンスキーを追加しなかった場合は、​rtfctl​ コマンドラインユーティリティまたは Helm を使用して追加できます。

ライセンスキーをインストールする前に Base64 形式にエンコードしてください。

ライセンスキーのエンコード

  • MacOS では、次のコマンドを実行します。

    base64 -b 0 -i <license-file>
  • Unix では、次のコマンドを実行します。

    base64 -w0 <license-file>
  • Windows では、次のいずれかを選択します。

    • base64 ツールが含まれる WSL または Cygwin シェルを使用し、上記の Unix コマンドを使用します。

    • Windows git (C:\Program Files\Git\usr\bin) と一緒に含まれている base64.exe プログラムを使用します。

    • 次の Powershell コマンドを使用します。

      $BASE64_ENCODED_LICENSE=[convert]::ToBase64String((Get-Content -path "license.lic" -Encoding byte))

rtfctl を使用してライセンスキーを適用する

  1. インストール中にリーダーとして機能するコントローラーノード (インストーラーノード) で、次のコマンドを実行します。

    rtfctl apply mule-license $BASE64_ENCODED_LICENSE

    ファイルパスを直接指定する Mule ライセンスを適用することもできます。

    rtfctl apply mule-license --file /path/to/license.lic
    rtfcl apply​ と一緒に値を使用しても、OpenShift では機能しません。OpenShift コンソールで値を更新する必要があります。
  2. Mule ライセンスキーが適切に適用されていることを確認するには、次のコマンドを実行します。

    rtfctl get mule-license

Helm を使用したライセンスキーの適用

Helm を使用してライセンスを適用するには、次のコマンドを実行します。

helm upgrade runtime-fabric rtf/rtf-agent --set muleLicense=$BASE64_ENCODED_LICENSE -n rtf --reuse-values

イングレスリソーステンプレートの設定

イングレスコントローラーにカスタムアノテーションとイングレスクラス定義が必要な場合は、​「カスタムイングレス設定の定義」​の手順に従います。

GKE のお客様の場合、デフォルトで GKE と一緒に含まれているイングレスコントローラーによってアプリケーションごとに個別の HTTP ロードバランサーがプロビジョニングされます。詳細は、こちらの KB 記事​を参照してください。

Runtime Fabric を検証する

インストールが完了したら、Anypoint 組織内で Runtime Fabric をアクティブ化する必要があります。インストールを検証するには、Anypoint Runtime Manager に移動し、Runtime Fabric の状況が ​[Active (アクティブ)]​ であることを確認します。

アプリケーションを Runtime Fabric にデプロイする前に、次の手順を実行します。

  1. Runtime Fabric を少なくとも 1 つの Anypoint 環境に関連付けます。

  2. Kubernetes 環境に基づいてインバウンドトラフィック設定を確認および更新します。

  3. アプリケーションをデプロイして、Runtime Fabric が正しくインストールおよび設定されていることを確認します。

ロールバックの実行

Helm を使用して Runtime Fabric の以前のバージョンにロールバックするには、 Helm rollback​ のドキュメントにあるコマンドの説明を参照してください。