我正在将我的Phoenix应用程序推送到Kubernetes集群进行审核。我使用GitLab为Web服务器创建服务,为临时postgres pod创建另一项服务。
我想做的是自动mix ecto.create
和mix ecto.migrate
。但是,有一个时间问题 - postgres服务器还没有准备好的时间很短。
在创建Web应用程序服务之前,我可以在部署脚本中轮询postgres服务。但这是最实用的方法吗?
答案 0 :(得分:2)
Kubernetes有一些名为init containers的东西可以帮到你。
从文档中,这是一个等待dB容器的app容器的示例。
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']