Как читать и изменять значения Kube Manifest с помощью yq? - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть манифест 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 штрихами' : после этого нет значений.

# 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

Итак, 1-я часть Q: как читать после 2-го экземпляра 3-ти тире? 2-я часть Q: как редактировать значения ресурсов на лету?

Я могу запустить эту команду и прочитать этот раздел, но не могу читать значения памяти или процессора:

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

1 Ответ

2 голосов
/ 24 февраля 2020

Используйте параметр -d CLI. См. https://mikefarah.gitbook.io/yq/commands/write-update#multiple -документы для более подробной информации.

Также у Kubernetes есть своя вещь для kubectl patch.

...