Flex Gateway新着情報
Governance新着情報
Monitoring API Manager複数のインスタンスの Anypoint Runtime Fabric をインストールすることで、複数の Runtime Fabrics 間で同じクラスターを共有し、効率的にリソースを使用することができます。
この機能を使用するには、複数のインスタンスがサポートされる 2.2.5 以上のバージョンの Runtime Fabric エージェントにアップグレードする必要があります。
エージェントの名前空間はアプリケーションの名前空間に 1 対 1 でマップされます。同じクラスターの複数のインスタンスの Runtime Fabric 間でアプリケーションの名前空間を共有することはできません。
Hazelcast クラスタリングはまだ複数のインスタンスではサポートされていません。
複数のインスタンスがある場合、最初の Runtime Fabric エージェントのインストールにより、persistencegateways.rtf.mulesoft.com のカスタムリソース定義 (CRD) と優先度クラスの rtf-components-high-priority リソースが作成されます。エージェントをアンインストールしても、Runtime Fabric エージェントではこれらのリソースがクリーンアップされません。
|
1 つの BYOK (Bring Your Own Kubernetes) クラスターに複数のインスタンスの Anypoint Runtime Fabric をインストールするには、次の手順に従ってください。
Runtime Manager を使用して Runtime Fabric を作成します。
前のステップで作成した Fabric をインストールするカスタム名前空間を作成します。
kubectl create ns <rtf_namespace>
前に作成した名前空間の Runtime Fabric コンポーネントイメージを取得するための Docker プルシークレットを作成します。
kubectl create secret docker-registry rtf-pull-secret --namespace <rtf_namespace> --docker-server=<docker_registry_url> --docker-username=<docker_registry_username> --docker-password=<docker_ registry_password>
Runtime Fabric Helm リポジトリを追加します。
helm repo add <name> <helm_repo_url> --username <your_username> --password <your_password>
必要に応じて、共有テナントを設定できます。詳細は、「承認済み名前空間の設定」を参照してください。
Anypoint Platform UI から values.yaml
ファイルをダウンロードして設定します。
values.yaml
ファイルの必須パラメーターを設定します。
クラスターに Runtime Fabric をインストールします。
helm install runtime-fabric rtf/rtf-agent --version <rtf_version> -f values.yaml -n <rtf_namespace>
Runtime Manager で Runtime Fabric インスタンスを作成すると、次の必須パラメーターの値が設定されます。ローカルレジストリを使用していない場合は、レジストリ URL とプルシークレットのデフォルト値を使用してください。
キー | 値 | 例 |
---|---|---|
|
アクティベーションデータ |
YW55cG9pbnQubXVsZXNvZnQuY29tOjBmODdmYzYzLTM3MWUtNDU2Yy1iODg5LTU5NTkyNjYyZjUxZQ== |
|
レジストリ URL |
US rtf-runtime-registry.kprod.msap.io EU rtf-runtime-registry.kprod-eu.msap.io |
|
レジストリプルシークレット |
rtf-pull-secret |
|
アプリケーションの Mule ライセンス |
Mule ライセンスキー (Base64 でエンコードされている必要があります) |
必要に応じて次の省略可能なパラメーターを設定します。
キー | 説明 | 例 |
---|---|---|
|
共有テナントを有効にする |
authorizedNamespaces=true |
|
Crds と PriorityClass のインストールを有効にする |
install=true |
|
プロキシ値と no_proxy 値 |
- http://<user>:<pass>@<10.0.0.1>:<8080> |
|
Monitoring のプロキシ値 |
socks5://<user>:<pass>@<10.0.0.2>:<8080> |
|
Filebeat の読み取りパス |
- /var/lib/docker/ |
最初のエージェントをクラスターにインストールするには、crds.install の値を true に設定します。同じクラスターの以降のすべてのエージェントインストールでは crds.install を false に設定します。
|
次に values.yaml
ファイルの例を示します。
activationData: <activation_data> proxy: http_proxy: http_no_proxy: monitoring_proxy: custom_log4j_enabled: true muleLicense: <mule_license_key> global: crds: install: true authorizedNamespaces: false image: rtfRegistry: rtf-runtime-registry.kprod.msap.io pullSecretName: rtf-pull-secret containerLogPaths: - /var/lib/docker/containers - /var/log/containers - /var/log/pods
Mule アプリケーションをデプロイするには、インストールするエージェントごとに app-namespace
を作成します。
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
新しい <rtf_namespace>
でイングレスを作成します。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rtf-ingress namespace: <rtf_namespace> annotations: nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: ingressClassName: rtf-nginx rules: - host: "testrtf.com" http: paths: - pathType: Prefix path: "/app-name(/|$)(.*)" backend: service: name: service port: name: service-port
<rtf_namespace>
ごとに異なるホスト名を使用してください。複数のイングレスで同じホストについて異なるパスを定義すると、イングレスコントローラーによって定義がマージされます。 結果として、同じ名前の, Mule アプリケーションにアクセスできなくなり、Runtime Fabric の問題ではなく k8s の問題が発生することになります。
必要に応じて、他のサービスと一緒に Runtime Fabric を Kubernetes クラスターにデプロイできるようにする承認済み名前空間を設定できます。
Runtime Fabric をインストールする前に Runtime Fabric 名前空間用に authorized-namespaces
ConfigMap ファイルを作成する必要があります。さらに、ConfigMap
には authorized-namespaces
という名前を付ける必要があります。ConfigMap
ファイルの例を示します。
apiVersion: v1 kind: ConfigMap metadata: name: authorized-namespaces namespace: <rtf_namespace> data: APPLICATION_NAMESPACE_1: "<app_namespace_1>" APPLICATION_NAMESPACE_2: "<app_namespace_1>
rtf:resource-metrics-collector
ClusterRole にはノード、ポッド、名前空間を get
および list
するクラスター全体の権限があり、ノードに対する watch
権限があります。ロール ClusterRole は次のように定義されます。
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"]
アプリケーションデプロイメント用の追加の名前空間を作成し、必要な表示ラベルを名前空間に追加するには、次の手順に従ってください。
次のコンテンツで 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
以前に作成したファイルを適用します。
kubectl apply -f <filename>.yaml
ステップ 1 と 2 を繰り返して、必要な数の名前空間を追加します。
追加の名前空間で次の設定を適用することにより、Runtime Fabric エージェント ServiceAccount
が含まれる Runtime Fabric エージェント ClusterRole
の RoleBinding
を作成します。
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: <rb_name> namespace: <app_namespace> subjects: - kind: ServiceAccount name: rtf-agent namespace: <rtf_namespace> roleRef: kind: ClusterRole name: rtf:agent-<rtf_namespace> apiGroup: rbac.authorization.k8s.io