使用 yaml 的 kubectl 补丁 - 没有错误,但没有变化

时间:2021-06-22 13:55:53

标签: kubectl

我喜欢 yaml 的可读性,因此我正在尝试这个(没有 json) - 你知道为什么它运行没有错误,但不更新/更改任何东西吗?

kubectl patch configmap/config-domain -n knative-serving --type merge -p '
data:
  example.com:""
'

这是有效的,但我不知道为什么:

kubectl patch configmap/config-network -n knative-serving --type merge -p '
data:
  autoTLS: Enabled
  httpProtocol: Redirected
'

1 个答案:

答案 0 :(得分:1)

这是一个示例cm,带有两个键key1key2,输出格式为yaml

k get cm my-config -o yaml
apiVersion: v1
data:
  key1: config1
  key2: config2
kind: ConfigMap
metadata:
  creationTimestamp: "2021-06-22T14:15:07Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:key1: {}
        f:key2: {}
    manager: kubectl-create
    operation: Update
    time: "2021-06-22T14:15:07Z"
  name: my-config
  namespace: default
  resourceVersion: "755842"
  selfLink: /api/v1/namespaces/default/configmaps/my-config
  uid: 18d87151-ae27-4aa1-8cf1-eee609c0dd7f

修补 cm

 k patch cm my-config  -p $'data:\n key1: "new_config1"'
configmap/my-config patched

这是更新后的 cm

k get cm my-config -o yaml
apiVersion: v1
data:
  key1: new_config1 #<----------this is updated
  key2: config2
kind: ConfigMap
metadata:
  creationTimestamp: "2021-06-22T14:15:07Z"
  managedFields:
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:key2: {}
    manager: kubectl-create
    operation: Update
    time: "2021-06-22T14:15:07Z"
  - apiVersion: v1
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        f:key1: {}
    manager: kubectl-patch
    operation: Update
    time: "2021-06-22T14:16:11Z"
  name: my-config
  namespace: default
  resourceVersion: "755928"
  selfLink: /api/v1/namespaces/default/configmaps/my-config
  uid: 18d87151-ae27-4aa1-8cf1-eee609c0dd7f

同样,您可以在 cm 中对 json 进行 o/p,您可以在以 cm 格式打印 json 后构建查询。