@myasnik8352

Как выполнить команду в контейнере kubernetes по условию?

Ситуация следующая есть два взаимосвязанных сервиса (пода). Первый при запуске забирает по http конфигурационный файл у второго сервиса.
Периодически второй сервис пересобирается с обновленным конфигом, а первый сервис про обновление ничего не "знает", пока не перезапустится/пересоздаться (вручную или http запросом).

Нужно после обновления второго сервиса, единожды выполнить одну команду, либо перезапуск/удаление первого сервиса, либо http запрос.

В k8s есть init-контейнеры, но нет post-init-контейнеров или чего-то подобного. Readiness и livenessprobe не подходят, т.к. работают постоянно. Читал про job и cronjob, но не уверен что подойдет. Может кто-то сталкивался с похожей задачей?

Деплой сервисов осуществляется с помощью gitlab-ci, в нем разные группы под каждый сервис со своими .gitlab-ci.yml
  • Вопрос задан
  • 650 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
@myasnik8352 Автор вопроса
может кому пригодится, добавил в deployment.yaml второй контейнер с busybox и wget

containers: 
    - name: service2
      image: repo.local/service2:latest
      ports: 
      - containerPort: 80
    - name: restart-service1
      image: busybox
      command: ['sh', '-c', 'wget http://service1/restart; echo waiting for restart service1; sleep 2; tail -f /dev/null;']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы