Kubernetes (K8s) オペレーターとしての Runtime Fabric のインストール

次のプラットフォームでは、Anypoint Runtime Fabric を Kubernetes (K8s) オペレーターとしてインストールできます。

  • AWS の Red Hat OpenShift サービス

  • Microsoft Azure Red Hat OpenShift

  • Red Hat OpenShift Dedicated

  • IBM Cloud の Red Hat OpenShift

  • 自己管理型 Red Hat OpenShift エディション (Performance Plus、OCP、Kubernetes エンジン)

Red Hat OpenShift への Runtime Fabric のインストール

Red Hat OpenShift に Runtime Fabric をインストールするときは、次の操作を実行します。

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

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

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

  4. 必要に応じて、共有テナントを設定します。

  5. Runtime Fabric Operator をインストールして設定します。

  6. 残りのインストール手順を完了して、Runtime Fabric を検証してイングレスを設定します。

Runtime Fabric では OpenShift ルートもサポートされています。​「OpenShift ルートを設定する」​ドキュメントを参照してください。

始める前に

Red Hat OpenShift に Runtime Fabric をインストールする前に、次のことを確認してください。

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

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

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

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

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

  4. 新しい Runtime Fabric の名前を入力し、Red Hat OpenShift オプションを選択します。

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

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

  7. アクティベーションデータをコピーします。

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

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

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

oc create ns rtf

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

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

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

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

oc 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 を 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: <app_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. ここで作成したファイルを適用します。

      oc 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: <app_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-<rtf_namespace>
        apiGroup: rbac.authorization.k8s.io
    5. 次の RoleBinding テンプレートを rtf 名前空間と他の追加の名前空間に適用します。

      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: rtf
        namespace: <rtf_namespace>
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: system:openshift:scc:anyuid
      subjects:
        - kind: ServiceAccount
          name: rtf-agent
          namespace: <rtf_namespace>
        - kind: ServiceAccount
          name: mule-clusterip-service
          namespace: <rtf_namespace>
        - kind: ServiceAccount
          name: resource-cache
          namespace: <rtf_namespace>
        - kind: ServiceAccount
          name: rtf-persistence-gateway
          namespace: <rtf_namespace>
        - kind: ServiceAccount
          name: cluster-status
          namespace: <rtf_namespace>
        - kind: ServiceAccount
          name: am-log-forwarder
          namespace: <rtf_namespace>
        - kind: ServiceAccount
          name: rtf-certificate-renewal
          namespace: <rtf_namespace>

認証済み名前空間モードでクラスター化アプリケーションを使用するには、次の 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

<additional-namespace>​ でも、同じテンプレートを指定します。

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rtf
  namespace: <app_namespace>
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:openshift:scc:anyuid
subjects:
  - kind: ServiceAccount
    name: rtf-agent
    namespace: <rtf_namespace>
  - kind: ServiceAccount
    name: mule-clusterip-service
    namespace: <rtf_namespace>
  - kind: ServiceAccount
    name: resource-cache
    namespace: <rtf_namespace>
  - kind: ServiceAccount
    name: rtf-persistence-gateway
    namespace: <rtf_namespace>
  - kind: ServiceAccount
    name: cluster-status
    namespace: <rtf_namespace>
  - kind: ServiceAccount
    name: am-log-forwarder
    namespace: <rtf_namespace>
  - kind: ServiceAccount
    name: rtf-certificate-renewal
    namespace: <rtf_namespace>
  1. クラスターで、​authorized-namespaces​ という名前の ConfigMap ファイルを作成し、追加の名前空間があればリストします。追加の名前空間のマッピングキーは、標準 K8s リソース (ConfigMap) を使用するため、一意である必要があります。キー名は、一意でさえあれば、形式については特に要件はありません。

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

    oc -nrtf delete po -l app=agent

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

Red Hat OpenShift Runtime Fabric Operator をインストールする

OperatorHub から Runtime Fabric Operator (​rtf-agent-operator​) をインストールします。

  1. Red Hat OpenShift コンソールで、​[Operators (Operator)]​ > ​[OperatorHub]​ に移動します。

  2. [OperatorHub] 検索項目で、Runtime Fabric Operator を検索します。

  3. rtf-agent-operator ダイアログで、​[Install (インストール)]​ をクリックします。

Runtime Fabric Operator をインストールするには手動で承認を行う必要があり、完了まで数分かかる場合があります。

Runtime Fabric Operator を設定する

Runtime Fabric Operator を設定するには、要求されたら必要な値を指定します。

  1. Red Hat OpenShift コンソールで、​[Operators (Operator)]​ > ​[Installed Operators (インストール済み Operator)]​ に移動します。

  2. コンソールで、​[Project (プロジェクト)]​ の値を Runtime Fabric のインストール用に作成した名前空間に切り替えます。

  3. コンソールで ​[Create Instance (インスタンスを作成)]​ をクリックし、​[Configure via form view (フォームビューを通じて設定)]​ を選択します。

    インスタンスの名前は変更しないでください。名前を変更すると、インストールエラーが発生する場合があります。

  4. 必須のパラメーターを追加します。案内については、「インストールパラメーターリファレンス」を参照してください。

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

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

インストールパラメーターリファレンス

次に、インストールパラメーターの YAML ビューの例を示します。

activationData: <activation_data>
proxy:
  http_proxy:
  http_no_proxy:
  monitoring_proxy:
custom_log4j_enabled: true
muleLicense: <mule_license_key>
global:
  authorizedNamespaces: false
  image:
    rtfRegistry: <rtf-runtime-registry.kqa.msap.io or local registry value>
    pullSecretName: rtf-pull-secret
  containerLogPaths:
  - /var/lib/docker/containers
  - /var/log/containers
  - /var/log/pods

必須パラメーター

Runtime Manager で Runtime Fabric を作成すると、次の必須パラメーターの値が設定されます。ローカルレジストリを使用していない場合は、レジストリ URL とプルシークレットのデフォルト値を使用してください。

キー

activationData

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

YW55cG9pbnQubXVsZXNvZnQuY29tOjBmODdmYzYzLTM3MWUtNDU2Yy1iODg5LTU5NTkyNjYyZjUxZQ==

rtfRegistry

レジストリ URL

rtf-runtime-registry.kprod.msap.io

pullSecretName

レジストリシークレット

<pull_secret>

muleLicense

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

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

省略可能なパラメーター

必要に応じて次の省略可能なパラメーターを設定します。

キー

customLog4jEnabled

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

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

authorizedNamespaces

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

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

authorizedNamespaces

承認済み名前空間の有効化

authorizedNamespaces:true

  • 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

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))

OpenShift コンソールからライセンスキーを適用する

OpenShift コンソールからライセンスキーを適用する手順は、次のとおりです。

  1. Runtime Fabric Operator に移動します。

  2. Runtime Fabric インスタンスがインストールされている名前空間を選択します。

  3. [Runtime Fabric]​ タブをクリックします。

  4. runtime-fabric​ インスタンスのリンクをクリックします。

    runtime-fabric インスタンスが選択されている Runtime Fabric Operator
  5. muleLicense​ を追加して、Runtime Fabric インスタンスの CR .yaml ファイルを更新します。

    mulelicense が追加された Runtime Fabric インスタンス

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 が正しくインストールおよび設定されていることを確認します。

Mule アプリケーションを Red Hat OpenShift にデプロイする準備をする

Mule アプリケーションを Red Hat OpenShift クラスターにデプロイする前に Mule ライセンスキーをインストールしていることを確認してから、次の手順を実行してください。

また、Mule アプリケーションのデプロイを試みる前に、Mule ライセンスキーをインストールしていることを確認してください。

  1. Create a namespace for your Mule app deployments. See 「アプリケーションデプロイメント用の名前空間の作成」を参照してください。

  2. Runtime Manager から、名前空間を使用して Mule アプリケーションをデプロイします。手順は、​「Runtime Fabric への Mule アプリケーションのデプロイ」​を参照してください。