【发布时间】:2021-01-28 12:50:18
【问题描述】:
我正在尝试设置服务并将其在 EKS 上对外公开。我已经很容易在 GKE 上完成了,但现在 AWS 让我很难过。
我的 NGINX yaml 看起来像这样:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- app.mydomain.com
secretName: myapp-tls
rules:
- host: app.mydomain.com
http:
paths:
- path: /
backend:
serviceName: myapp-service
servicePort: 80
然后我在 Google Domains 上的域 app.mydomain.com 指向入口外部地址。为了支持 HTTPS,还运行了一个 cert-manager 服务。
但是,虽然基本相同的设置在 GKE 上完全开箱即用,但 EKS 让我很难过。
据我了解,与 Google 的第 7 层相比,EKS 默认 LoadBalancer 是第 4 层(这说明 HTTPS 不起作用),但也存在域重定向问题,因为它只是解析为入口地址而不是我想要的地址,因此我的应用程序没有出现。
该域是通过 Google Domains 注册的,我正在创建指向我在 EKS 上的入口外部地址的合成记录(用于我的子域)。相同的方案在 GKE 上运行良好,但在这里它将地址解析为入口地址而不是我的域,这导致入口端出现 404。
我想知道是否有人可以指点我如何正确设置它?我应该放弃 EKS 上的 nginx 入口并转向 ALB 吗?以及如何正确关联域?
非常感谢您!
编辑:
kubectl describe ingress myapp-ingress的输出:
Name: myapp-ingress
Namespace: default
Address: ********************************-****************.elb.eu-west-1.amazonaws.com
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
myapp-tls terminates app.mydomain.com
Rules:
Host Path Backends
---- ---- --------
app.mydomain.com
/ myapp-service:80 (172.31.2.238:8000)
Annotations: cert-manager.io/cluster-issuer: myapp-letsencrypt-prod
kubernetes.io/ingress.class: nginx
Events: <none>
【问题讨论】:
标签: amazon-web-services nginx kubernetes kubernetes-ingress amazon-eks