Mule アプリケーション Kubernetes リソースのカスタマイズ

Anypoint Runtime Fabric では、カスタムリソース ​kubernetestemplates.rtf.mulesoft.com​ テンプレートを使用して Mule アプリケーション Kubernetes リソースをカスタマイズできます。

kubernetestemplate​ リソースに ​mule-application​ という名前を付けます。テンプレートは 2 つの異なる名前空間で定義できます。

  • アプリケーション名前空間
    テンプレートは、指定された名前空間にデプロイされたすべての Mule アプリケーションに適用されます。

  • Runtime Fabric エージェント名前空間
    テンプレートは、指定された Runtime Fabric エージェントによって管理されるすべての Mule アプリケーションに適用されます。

kubernetestemplate​ リソースは、リソースが作成された後に作成される Mule アプリケーションデプロイメントにのみ適用されます。既存のデプロイメントには影響しません。​kubernetestemplate​ を作成または更新した後に Mule アプリケーションを再デプロイすると、テンプレートが適用されます。

kubernetestemplate​ リソースを使用すると、アプリケーションのポッド、デプロイメント、およびサービスオブジェクトで次の要素を設定できます。

セキュリティコンテキストポッドの場合、使用するキーは ​containerSecurityContext​ です。

  • デプロイメント

    • アノテーション

    • Labels (ラベル)

  • サービス

    • アノテーション

    • Labels (ラベル)

Runtime Fabric ですでに定義されている設定要素は、テンプレートで定義した設定要素より優先されます。

テンプレートに設定できるキー要素の CRD を取得するには、次のコマンドを実行することで Kubernetes の仕様を取得します。

kubectl get crd kubernetestemplates.rtf.mulesoft.com -o yaml
copy

ポッド​、​デプロイ​、​サービス​オブジェクトでの​表示ラベル​の設定

apiVersion: rtf.mulesoft.com/v1
kind: KubernetesTemplate
metadata:
  name: mule-application
  namespace: rtf
spec:
  deployment:
    metadata:
      labels:
        deploymentLabel: value
  service:
    metadata:
      labels:
        serviceLabel: value
  pod:
    metadata:
      labels:
        podLabel: value
copy

ポッド​オブジェクトの下にある ​containerSecurityContext​ のランタイムデフォルト ​seccompProfile​ の設定:

apiVersion: rtf.mulesoft.com/v1
kind: KubernetesTemplate
metadata:
  name: mule-application
  namespace: rtf
spec:
  pod:
    containerSecurityContext:
      seccompProfile:
        type: RuntimeDefault
copy

設定できるすべてのキーを示した別の例:

CRD を使用して上書きできないキー要素:

  • デプロイメント

    • labels (表示ラベル)

      • 環境

      • 組織

      • type

      • rtf.mulesoft.com/id

      • rtf.mulesoft.com/version

      • rtf.mulesoft.com/agentNamespace

  • アノテーション

    • rtfc.mulesoft.com/egress-ruleset (if set in deployment values)

    • rtf.mulesoft.com/desiredStatus

    • rtf.mulesoft.com/replicas

    • rtf.mulesoft.com/version

  • ポッド

    • アノテーション

      • fluentbit.io/exclude

      • mulesoft.com/resources

    • labels (表示ラベル)

      • app

      • 環境

      • am-org-id

      • root-org-id

      • 組織

      • rtf.mulesoft.com/id

      • rtf.mulesoft.com/generation

      • type

      • rtf.mulesoft.com/disableAmLogForwarding

      • name

  • リソース

    • ephemeral-storage (env.resources で設定されていないか、またはクラスターフレーバーが rtfc である場合)

  • SecurityContext

    • runAsUser

    • runAsGroup

    • allowPrivilageEscalation

    • capabilities

    • privileged

    • readOnlyRootFilesystem

  • NodeSelector

    • kubernetes.io/os

    • kubernetes.io/arch

    • beta.kubernetes.io/os

    • beta.kubernetes.io/arch

    • RTF.DeploymentNodeSelector

  • Affinity (アフィニティ)

    • podAntiAffinity

  • サービス

    • labels (表示ラベル)

      • ingress.rtf.mulesoft.com/bind

      • rtf.mulesoft.com/id

      • rtf.mulesoft.com/version

      • rtf.mulesoft.com/agentNamespace

    • アノテーション

      • rtf.mulesoft.com/merge-policy

      • rtf.mulesoft.com/environment

      • rtf.mulesoft.com/organization