1

一部の属性の値が一部のファイルまたは URI のコンテンツ全体から取得される Kustomize マニフェストが必要です。

これどうやってするの?

4

2 に答える 2

2

通常、kustomizeで使用するのは、ベース ファイルにマージされたオーバーレイとパッチ(1 つまたは複数のファイル) です。パッチは属性をオーバーライドします。これら 2 つの機能を使用して、可能性のあるいくつかのマニフェスト構成を事前に定義し、クラスターに適用する直前にそれらを組み合わせるだけです。

次のようなパッチまたは kustomize サブコマンドを使用して、いくつかの特定の属性を追加または編集/設定できます。

kustomize edit set image your-registry.com:$image_tag

# just to identify version in metadata sections for service/deployment/pods - not just via image tag
kustomize edit add annotation appVersion:$image_tag
kustomize build . | kubectl -n ${your_ns} apply -f -

しかし、単一のマニフェスト ファイルを持ち、同じ属性を何度も (その場で) 操作したい場合は、helm のテンプレート メカニズムの使用を検討する必要があります。これは、変更したい単一の特定の属性を kustomize で編集できない場合のオプションでもあります。

必要なのは、values.yamlファイル (キーと値のペアを含む) とtemplate.yamlファイルだけです。values.yamlでいくつかの属性を事前に設定できます。必要に応じて、CLI ごとに上書きできます。このツールは、これらの値が組み込まれた k8s マニフェストを生成します。

テンプレート ファイル:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: {{ .Values.appSettings.appName }}
  namespace: {{ .Values.appSettings.namespace }}
  labels:
    name: {{ .Values.appSettings.appName }}
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: {{ .Values.appSettings.appName }}
    spec:
      containers:
        - name: {{ .Values.appSettings.appName }}
          image: "{{ .Values.appSettings.image }}"
          ports:
            - containerPort: 8080
[...]

---
apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.appSettings.appName }}-svc
  namespace: {{ .Values.appSettings.namespace }}
  labels:
    name: {{ .Values.appSettings.appName }}
spec:
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    name: {{ .Values.appSettings.appName }}

値ファイル:

appSettings:  
  appName: your-fancy-app
  appDomain: please_override_via_cli
  namespace: please_override_via_cli

CLI:

helm template
  --set appSettings.image=your-registry.com/service:$(cat versionTag.txt)
  --set appSettings.namespace=your-ns
  --set appSettings.appDomain=your-domain.com
  ./ -f ./values.yaml | kubectl apply -f -
于 2019-11-06T08:25:30.630 に答える
1

リモートの kustomization.yml ファイルを含めることはできますが、単一の値を含めることはできません。必要に応じて独自のトランスフォーマー プラグインを作成することもできますが、それは Kustomize の精神に沿ったものではありません。

于 2019-11-06T02:59:55.013 に答える