0

我有一个 Kube 清单,需要将其应用于具有不同资源设置的几个 kubernetes 集群。为此,我需要即时更改此文件的资源部分。这是它的内容:

apiVersion: v1
kind: Service
metadata:
  name: abc-api
  labels:
    app: abc-api
spec:
  ports:
  - name: http
    port: 80
    targetPort: 3000
  - name: https
    port: 3000
    targetPort: 3000
  selector:
    app: abc-api
    tier: frontend
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: abc-api
  labels:
    app: abc-api
spec:
  selector:
    matchLabels:
      app: abc-api
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: abc-api
        tier: frontend
    spec:
      containers:
      - image: ABC_IMAGE
        resources:
          requests:
            memory: "128Mi"
            cpu: .30
          limits:
            memory: "512Mi"
            cpu: .99

我搜索并发现 yq 是一个更好的工具。但是,当我从该文件中读取值时,它只显示它直到带有'3 dashes'的行:没有超过该值的值。

# yq r worker/deployment.yaml 
apiVersion: v1
kind: Service
metadata:
  name: hometales-api
  labels:
    app: hometales-api
spec:
  ports:
  - name: http
    port: 80
    targetPort: 3000
  - name: https
    port: 3000
    targetPort: 3000
  selector:
    app: hometales-api
    tier: frontend

我想阅读部署部分,以及编辑资源值。

阅读部分:

---
apiVersion: apps/v1
kind: Deployment
metadata:

....

要编辑的部分:

resources:
  requests:
    memory: "128Mi"
    cpu: .20
  limits:
    memory: "512Mi"
    cpu: .99

那么问题的第一部分:如何在第二个 3 破折号实例之后阅读?问的第二部分:如何动态编辑资源值?

我可以运行此命令并阅读此部分,但无法进一步读取内存或 cpu 值:

# yq r -d1 deployment.yaml "spec.template.spec.containers[0].resources.requests"
memory: "128Mi"
cpu: .20
4

1 回答 1

2

使用-dCLI 选项。有关更多详细信息,请参阅https://mikefarah.gitbook.io/yq/commands/write-update#multiple-documents

Kubernetes 也有它自己的东西kubectl patch

于 2020-02-24T09:49:14.640 回答