我应该怎么做才能重新加载我的入口?
您只需要更新入口,在您的情况下,您只需将 TLS 部分添加到现有入口。
然后(自动)入口控制器应该找到差异(如anemyte 在其回答中所说)并更新入口。从现在开始,您将能够使用 TLS。
一般来说,这一切都应该自动发生。理论上,这也可以手动完成,但不建议这样做。它被描述为in this topic。
编辑:
我已经重现了这种情况。
首先,我使用以下ingress.yaml 创建了简单的入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ing-1
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- backend:
service:
name: app-1
port:
number: 80
path: /
pathType: Prefix
然后我运行了kubectl get ingress,这是输出:
NAME CLASS HOSTS ADDRESS PORTS AGE
ing-1 nginx www.example.com 35.X.X.X 80 3m
在这一步中,我在没有 TLS 的情况下工作了入口(只有工作端口 80)。然后我为 TLS 创建了tls.yaml(我使用了自签名证书,你需要使用你的证书和域):
apiVersion: v1
kind: Secret
metadata:
name: tls
data:
tls.crt: |
<my cert>
tls.key: |
<my key>
type: kubernetes.io/tls
我已经通过kubectl apply -f tls.yaml 运行,然后我将ingress.yaml 更改为如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ing-1
spec:
ingressClassName: nginx
rules:
- host: www.example.com
http:
paths:
- backend:
service:
name: app-1
port:
number: 80
path: /
pathType: Prefix
# This section is only required if TLS is to be enabled for the Ingress
tls:
- hosts:
- www.example.com
secretName: tls
我已添加 TLS 部分。然后我运行了kubectl apply -f ingress.yaml,几秒钟后我可以在运行kubectl get ingress时看到这个输出:
NAME CLASS HOSTS ADDRESS PORTS AGE
ing-1 nginx www.example.com 35.239.7.126 80, 443 18m
TLS 正在运行。在日志中我可以看到这条消息:
Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"ing-1", UID:"84966fae-e135-47bb-8110-bf372de912c8", APIVersion:"networking.k8s.io/v1", ResourceVersion:"11306", FieldPath:""}): type: 'Normal' reason: 'Sync' Scheduled for sync
Ingress 自动重新加载 :)