我应该怎么样才能重新加载我的Ingress?
您只需要更新 Ingress,在您的情况下只需将TLS部分添加到现有的Ingress。
然后(自动地),Ingress 控制器应该找到差异(如 anemyte 在其答案中所说)并更新 Ingress。从现在起,您就可以使用 TLS。
一般来说,所有这些都应该自动完成。理论上,这也可以手动完成,尽管不推荐。在这个话题中有详细描述。
编辑:
我已经复现了这种情况。首先,我创建了一个简单的 Ingress,具体内容如下 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
在这一步中,我已经实现了工作中的入口(只有端口80是可用的,没有TLS)。然后我创建了 tls.yaml
文件用于启用TLS(我使用了自签名证书,你需要使用你自己的证书和域名):
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
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 已自动重新加载 :)