Как быстро и просто обновлять YAML-файлы с помощью kubectl

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!



Первое, что приходит в голову, когда речь идёт про обновление YAML-файлов — использовать sedawk или perl и т.п. Но если использовать встроенную функцию Kubectl patch, дело пойдёт значительно проще. Команда VK Cloud перевела статью о более простом способе обновления YAML-файлов.

Допустим, нам нужно обновить количество реплик в представленной ниже spec, а также версию образа контейнера Nginx. Для этого нужно обновить несколько строк, поэтому другие опции в нашем случае нерелевантны.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Применим файл
kubectl apply -f https://k8s.io/examples/application/deployment.yaml.

Локально создадим файл с именем patch.yaml и следующим содержимым:

spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 3 # Update the number replicas from 2 to 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.16.1 # Update the version of nginx from 1.14.2 to 1.16.1
        ports:
        - containerPort: 80

Исправим deployment с помощью команды:

kubectl patch deployment/nginx-deployment --patch "$(cat patch.yaml)"

Когда вы увидите сообщение deployment.apps/nginx-deployment patched., выполните команды:

Kubectl get deployments 
# NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
#nginx-deployment      3/3     3            3           3hkubectl get deployment nginx-deployment -o yaml

Начинайте искать предыдущую конфигурацию, которую вы заменили:
kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"name":"nginx-deployment","namespace":"default"},"spec":{"replicas":2,"selector":{"matchLabels":{"app":"nginx"}},"template":{"metadata":{"labels":{"app":"nginx"}},"spec":{"containers":[{"image":"nginx:1.14.2","name":"nginx","ports":[{"containerPort":80}]}]}}}}

Попробуйте Kubernetes as a Service на платформе VK Cloud. Мы даем новым пользователям 3000 бонусных рублей на тестирование кластера или любых других сервисов.


Stay tuned


Присоединяйтесь к телеграм-каналу «Вокруг Kubernetes», чтобы быть в курсе новостей из мира K8s!

Регулярные дайджесты, полезные статьи, а также анонсы конференций и вебинаров.
t.me/+cWY7eMrhzNVmMmQy
Источник: https://habr.com/ru/company/vk/blog/722488/


Интересные статьи

Интересные статьи

Представляем вашему вниманию чрезвычайно простой алгоритм сортировки. Может показаться, что он очевидно ошибочен, но мы докажем, что на самом деле он корректен. Мы сравним его с другими простыми алг...
Те, кто занимается разработкой и производством электронных устройств, рано или поздно сталкиваются с задачей тестирования большого количества смонтированных печатных плат перед продажей...
Я расскажу про несколько подходов, которые помогут вам быстро и качественно, а главное бесплатно подготовится к сдаче экзамена и получения сертификата Juniper JNCIA-junos...
Разбираем скриптом внутренний журнал событий MikroTik отбирая уведомления вход/выход пользователей на устройство. Отправляем события на почту или Telegram. Написать свой ...
Не раз слышал мнение, что задача аналитиков — показать откровенно «грустные» цифры таким образом, будто всё идет по плану. Возможно, где-то так и происходит, но в геймдеве всё наоборот. Нам н...