Как запустить команду после инициализации
Я хочу запустить определенную команду после успешной инициализации развертывания.
Это мой файл yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: auth
spec:
replicas: 1
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: {{my-service-image}}
env:
- name: NODE_ENV
value: "docker-dev"
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 3000
Тем не менее, я хотел бы запустить команду для переноса db после (не раньше) развертывания, успешно инициализированного и запущены pods.
Я могу сделать это вручную для каждого контейнера (с kubectl exec), но это не очень масштабируемо.
Ответы
Ответ 1
Я решил это с помощью жизненных циклов:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: auth
spec:
replicas: 1
template:
metadata:
labels:
app: auth
spec:
containers:
- name: auth
image: {{my-service-image}}
env:
- name: NODE_ENV
value: "docker-dev"
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 3000
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", {{cmd}}]
Ответ 2
Вы можете использовать Helm для развертывания набора ресурсов Kubernetes. А затем используйте крючок руля, например, post-install
или post-upgrade
, чтобы запустить задание в отдельном контейнере Docker. Установите вашу работу, чтобы вызвать миграцию БД. Задание выполнит> = 1 стручков до завершения, так что оно вполне уместно.