我想在Google Cloud中为我的应用程序启用https连接。我遵循了一些教程,但似乎无济于事。
我已经使用Ingress在GKE上部署了应用程序。这是ingress.yml
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: myapp-ip
spec:
backend:
serviceName: myapp-service
servicePort: 80
使用ip地址访问它可以正常工作,可以从Internet访问该站点。
我已经购买了带有Google域的域,并通过添加指向我的外部IP地址和CNAME记录的A记录来配置DNS区域。现在可以通过该域完美访问应用程序。
然后我通过运行命令创建SSL证书和Kubernate秘密:
openssl genrsa -out myapp-ingress-1.key 2048
openssl req -new -key myapp-ingress-1.key -out myapp-ingress-1.csr -subj "/CN=myapp.co.uk"
openssl x509 -req -days 365 -in myapp-ingress-1.csr -signkey myapp-ingress-1.key -out myapp-ingress-1.crt
kubectl create secret tls myapp-tls-secret-1 --cert myapp-ingress-1.crt --key myapp-ingress-1.key
并更新了ingress.yml
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: myapp-ip
spec:
tls:
- secretName: myapp-tls-secret-1
rules:
- host: myapp.co.uk
http:
paths:
- backend:
serviceName: myapp-service
servicePort: 80
我在互联网上按照不同的示例尝试了多个ingress.yml文件,但没有一个起作用。
有人可以建议我吗?
答案 0 :(得分:1)
您在yaml文件中缺少指定要保护的主机的行。由于您没有使用external-dns
,因此必须在域提供者端手动创建记录,以将IP地址连接到您的域(您似乎已经这样做)。看起来您的入口密码和tls密码都在default
名称空间中,因此您可以使用以下ingress.yaml
:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
kubernetes.io/tls-acme: "true"
kubernetes.io/ingress.global-static-ip-name: myapp-ip
spec:
tls:
- hosts:
- "myapp.co.uk"
secretName: myapp-tls-secret-1
rules:
- host: "myapp.co.uk"
http:
paths:
- path: /
backend:
serviceName: myapp-service
servicePort: 80