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​ です。

  • デプロイメント

    • アノテーション

    • 表示ラベル

  • サービス

    • アノテーション

    • 表示ラベル

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 である場合)

  • ServiceAccountToken

    • automountServiceAccountToken

  • 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

コンソールログの有効化

デフォルトでは、Mule アプリケーションで他のソースを 1 つ以上ログに記録していることが検出されると、コンソールログは無効になります。このデフォルトの動作は Kubernetes テンプレートを使用して、クラスターレベルでルート Kubernetes テンプレートを使用するか、Mule アプリケーションの名前空間レベルで上書きできます。

Kubernetes テンプレートを使用してコンソールログを有効にするには、​env​ セクションの ​ENABLE_CONSOLE_LOG​ 変数を設定します。

pod:
   env:
       ENABLE_CONSOLE_LOG: "true"
copy
stdout​ を使用してログを転送するクラスターの場合、ログ転送機能に影響する可能性があります。Kubernetes チームと協力して、必要に応じてログ転送設定を調整し、ログの監視と収集を継続的に行うことができるようにしてください。

Anypoint Monitoring (AMLogFwdingAppender を含む) のサイドカーコンテナを使用する場合、コンソールログも無効化されます。

アプリケーションごとのサービスアカウントの無効化

デフォルトでは、Mule アプリケーションデプロイメントごとに サービスアカウントLeaving the Site​が作成されます。このデフォルトの動作は Kubernetes テンプレートを使用して、クラスターレベルでルート Kubernetes テンプレートを使用するか、Mule アプリケーションの名前空間レベルで上書きできます。 無効になっている場合、Mule アプリケーションデプロイメントで デフォルトのサービスアカウントLeaving the Site​が使用されます。

Kubernetes テンプレートを使用して Mule アプリケーションごとのサービスアカウントの作成を無効にするには、​env​ セクションの ​DISABLE_PER_APP_SA​ 変数を設定します。

pod:
   env:
       DISABLE_PER_APP_SA: "true"
copy