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
例
ポッド、デプロイ、サービスオブジェクトでの表示ラベルの設定
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
ポッドオブジェクトの下にある containerSecurityContext のランタイムデフォルト seccompProfile の設定:
apiVersion: rtf.mulesoft.com/v1
kind: KubernetesTemplate
metadata:
name: mule-application
namespace: rtf
spec:
pod:
containerSecurityContext:
seccompProfile:
type: RuntimeDefault
設定できるすべてのキーを示した別の例:
apiVersion: "rtf.mulesoft.com/v1"
kind: KubernetesTemplate
metadata:
name: mule-application
namespace: rtf
labels:
spec:
deployment:
metadata:
labels:
annotations:
service:
metadata:
labels:
annotations:
pod:
metadata:
labels:
annotations:
containerSecurityContext:
seccompProfile:
type: RuntimeDefault
tolerations:
- key: "example-key"
operator: "Exists"
effect: "NoSchedule"
ephemeralStorageLimit: 4gb
nodeSelector:
region: us-east
affinity:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
rtf.mulesoft.com/id: {{ .Values.id }}
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
-
-