当我在Digital Ocean K8S集群上部署https://projectcontour.io/ ingress控制器时,会自动创建一个负载均衡器。
我考虑使用Ansible作为K8S的管理工具来自动化部署。
完成以下任务后:
- name: retrieve file
get_url:
url: https://projectcontour.io/quickstart/contour.yaml
dest: /testing/contour.yaml
register: download_contour
- name: create deployment
k8s:
src: /testing/deployment.yml
when: download_contour.changed
字符串
我想等到轮廓得到外部IP地址分配,然后继续与其他任务.这里是一个例子在我的本地计算机:
kubectl get -n projectcontour service envoy -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
envoy LoadBalancer 10.96.226.84 172.18.255.200 80:31092/TCP,443:30362/TCP 2d15h app=envoy
型
如何等待envoy
LoadBalancer获得Ansible中分配的EXTERNAL-IP地址?
3条答案
按热度按时间ecbunoof1#
我还没有测试过它,但我认为你可以尝试这样做:
字符串
cig3rfwq2#
使用until循环:
字符串
对于shell命令,我只是使用了一些基本的Linux命令。最好用Kubectl对齐的命令来替换它们,以便只查看EXTERNAL-IP。
9w11ddsr3#
实际上,感谢Joelazar的回答,它被标记为正确的。但是,我不知道它是如何工作的,因为如果loadBalancer外部IP没有分配,我们也会得到一个0状态码作为响应。
我更喜欢使用k8s_info模块,这样我们就可以在不使用shell模块的情况下检查IP是否被分配:
字符串
此代码将检查外部IP是否已分配,并等待分配。