问题描述
所以我已经建立了一个 AWS EKS 集群(使用 fargate),并打算将其用于 gitlab CI/CD 集成
然后尝试根据this doc
设置基域helm repo add Nginx-stable https://helm.Nginx.com/stable
helm repo update
helm install nginx-ingress Nginx-stable/nginx-ingress
kubectl get service nginx-ingress-nginx-ingress -ojson | jq -r '.status.loadBalancer.ingress[].ip'
即使等待很长时间也总是返回 null
基本上我需要一个 loadBalancer IP 来在 gitlab 中设置基本域。
读到我需要将服务类型设置为 loadBalancer,所以重试了
helm install nginx-ingress Nginx-stable/nginx-ingress --set controller.service.type=LoadBalancer
相同的结果
kubectl get service nginx-ingress-nginx-ingress -ojson
的结果包含
{
"apiVersion": "v1","kind": "Service","Metadata": {
"annotations": {
"Meta.helm.sh/release-name": "nginx-ingress","Meta.helm.sh/release-namespace": "default"
},"creationTimestamp": "2021-03-26T19:49:02Z","finalizers": [
"service.kubernetes.io/load-balancer-cleanup"
],"labels": {
"app.kubernetes.io/instance": "nginx-ingress","app.kubernetes.io/managed-by": "Helm","app.kubernetes.io/name": "nginx-ingress-nginx-ingress","helm.sh/chart": "nginx-ingress-0.8.1"
},.
.
.
.
"status": {
"loadBalancer": {
"ingress": [
{
"hostname": "<xyz-key>.ap-southeast-1.elb.amazonaws.com"
}
]
}
}
}
解决方法
正如@rockn-rolla 在评论中提到的,通过 nginx-ingress 在 EKS 返回时配置的弹性负载均衡器由主机名公开。负载均衡器确实具有与其部署到的子网(弹性网络接口)相关联的 IP 地址,但它们可能会发生变化。如果您有域名,则可以将自定义子域指向负载均衡器并将其提供给 GitLab。此 GitLab 博客包含更多详细信息:https://about.gitlab.com/blog/2020/05/05/deploying-application-eks/