1

オーケストレーションの一部では、envsubst を使用して YAML テンプレート ファイルを目的の値で更新します。

envsubst < "${SECRET_TEMPLATE}" | kubectl apply -f -

キーワード config の値は JSON 文字列です。

data=$(jq -c . ${JSON_FILE})

これにより、YAML は次のようになります (簡潔にするためにトリミングされています)。

apiVersion: v1
kind: Secret
metadata:
  name: reporting-config
type: Opaque
data:
  config: {"database": "foo"}

これは、以前のバージョンの Kube では機能していたようです。1.8 と言いたいです。とにかく、私たちは 1.15 を実行していますが、kubectl はこれをマップ タイプとして解釈し、次のように文句を言います。

error: error validating "STDIN": error validating data: ValidationError(Secret.data.config): invalid type for io.k8s.api.core.v1.Secret.data: got "map", expected "string"; if you choose to ignore these errors, turn validation off with --validate=false

今これを行うためのトリックはありますか。私は引用やさまざまな場所で遊んだり、引用をエスケープしたり、ジャズや灘のすべてをいじりました。

* 更新 1 *

stringData を使用しても、同じエラーが発生します。

apiVersion: v1
kind: Secret
metadata:
  name: monsoon-storage-reporting-config
type: Opaque
stringData:
  config: {"database": "foo"}
error: error validating "STDIN": error validating data: ValidationError(Secret.stringData.config): invalid type for io.k8s.api.core.v1.Secret.stringData: got "map", expected "string"; if you choose to ignore these errors, turn validation off with --validate=false
4

2 に答える 2