bash – 如何等到Kubernetes为LoadBalancer服务分配外部IP?
发布时间:2020-12-16 01:19:19 所属栏目:安全 来源:网络整理
导读:创建一个 Kubernetes LoadBalancer立即返回(例如:kubectl create -f …或kubectl公开svc NAME –name = load-balancer –port = 80 –type = LoadBalancer). 我知道在shell中等待的手动方式: external_ip=""while [ -z $external_ip ]; do sleep 10 extern
创建一个
Kubernetes LoadBalancer立即返回(例如:kubectl create -f …或kubectl公开svc NAME –name = load-balancer –port = 80 –type = LoadBalancer).
我知道在shell中等待的手动方式: external_ip="" while [ -z $external_ip ]; do sleep 10 external_ip=$(kubectl get svc load-balancer --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}") done 然而,这并不理想: >需要至少5行Bash脚本. 有没有更好的方法等待服务外部IP(也称为LoadBalancer Ingress IP)设置或设置失败?
只是为了在这里添加答案,现在最好的选择是使用bash脚本.为方便起见,我把它放在一个包含导出环境变量的行中.
命令等待并找到Kubernetes服务端点 bash -c 'external_ip=""; while [ -z $external_ip ]; do echo "Waiting for end point..."; external_ip=$(kubectl get svc NAME_OF_YOUR_SERVICE --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}"); [ -z "$external_ip" ] && sleep 10; done; echo "End point ready-" && echo $external_ip; export endpoint=$external_ip' 我还修改了你的脚本,所以只有在ip不可用时它才会执行等待.最后一位将导出一个名为“endpoint”的环境变量 用于检查给定服务的Bash脚本 将其保存为check-endpoint.sh,然后您可以执行$sh check-endpoint.sh SERVICE_NAME #!/bin/bash # Pass the name of a service to check ie: sh check-endpoint.sh staging-voting-app-vote # Will run forever... external_ip="" while [ -z $external_ip ]; do echo "Waiting for end point..." external_ip=$(kubectl get svc $1 --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}") [ -z "$external_ip" ] && sleep 10 done echo 'End point ready:' && echo $external_ip 在Codefresh步骤中使用它 我将它用于Codefresh管道,并在完成后传递变量$endpoint. GrabEndPoint: title: Waiting for endpoint to be ready image: codefresh/plugin-helm:2.8.0 commands: - bash -c 'external_ip=""; while [ -z $external_ip ]; do echo "Waiting for end point..."; external_ip=$(kubectl get svc staging-voting-app-vote --template="{{range .status.loadBalancer.ingress}}{{.ip}}{{end}}"); [ -z "$external_ip" ] && sleep 10; done; echo "End point ready-" && echo $external_ip; cf_export endpoint=$external_ip' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |