3

我想用一个命令修补 Kubernetes 部署中的所有kubectl patch容器模板,而不必知道它们的名称。那可能吗?

我知道我可以通过awk,和实现替换sed,但我更喜欢在表达式中使用类似 a 的东西......jqkubectl replace[*]

特定容器规范的补丁命令

kubectl patch deployment mydeployment -p '{"spec":{"template":{"spec":{"containers":[{"name":"myname","imagePullPolicy":"Always"}]}}}}'

示例部署

apiVersion: extensions/v1beta1
kind: Deployment
spec:
  replicas: 1
  template:
    spec:
      containers:
      - image: example.com/my/fancyimage:latest
        imagePullPolicy: Never
        name: myname
      dnsPolicy: ClusterFirst
      restartPolicy: Always
4

2 回答 2

1

这不完全是你问的,因为我在这里使用命令行工具,但如果它出现在这里,它会节省我一些时间。所以我将它发布给其他人,他们从搜索引擎来到这里。

kubectl \
  --username=USERNAME \
  --password=PASSWORD \
  --server="https://EXAMPLE.COM" \
  --insecure-skip-tls-verify=true \
  --namespace=MY_NAMESPACE \
  get deployments | \
  grep -v NAME | cut -f1 -d" " | \
  xargs kubectl \
    --username=USERNAME \
    --password=PASSWORD \
    --server="https://EXAMPLE.COM" \
    --insecure-skip-tls-verify=true \
    --namespace=MY_NAMESPACE \
    patch deployment \
      -p='{"spec":{"template":{"spec":{"containers":[{"name":"myname","imagePullPolicy":"Always"}]}}}}' 
于 2018-04-25T20:20:09.427 回答
0

实现这一点的最佳实践方法,假设您希望这是一个持续的要求,将使用AlwaysPullImages AdmissionController

总是拉图像

此准入控制器会修改每个新 Pod 以强制图像拉取策略为 Always...

--enable-admission-plugins您可以通过将其附加到参数来将其应用于您的 api 控制器

于 2018-08-15T13:08:12.347 回答