我想在部署初始化成功后运行特定命令。
这是我的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
但是,我希望在成功初始化部署并运行Pod之后(而不是之前)运行数据库迁移命令。
我可以为每个pod手动执行此操作(使用kubectl exec),但这不是很好的可扩展性。
3条答案
按热度按时间8hhllhi21#
我使用lifecycles解决了这个问题:
svdrlsy42#
您可以使用Helm来部署一组Kubernetes资源。然后,使用Helm hook(例如
post-install
或post-upgrade
)在单独的Docker容器中运行Job。将作业设置为调用数据库迁移。一个作业将运行〉=1个Pod直到完成,因此非常适合此处。ztigrdn83#
我选择使用readinessProbe
我的应用程序需要在进程完全启动后进行配置。postStart命令在应用程序准备就绪之前运行。