Hal*_*_07 10 kubernetes nginx-ingress
我有一个 Kubernetes 集群(v.1.22),在其中部署了 Nginx 入口控制器。我发现我可以在几种情况下重新加载我的入口:下一个列表描述了需要重新加载的场景:
- 创建了新的 Ingress 资源。
- TLS 部分已添加到现有 Ingress。
- Ingress 注释的更改不仅仅影响上游配置。例如,负载平衡注释不需要重新加载。
- 从 Ingress 添加/删除路径。
- Ingress、Service、Secret 被删除。
- Ingress 中某些缺失的引用对象是可用的,例如服务或秘密。
- 秘密已更新。
我的入口现在仅使用 HTTP 流量,我想将 TLS 部分添加到现有入口。
所以,我的问题是:我到底应该做什么来重新加载我的入口?
我在文档或其他地方找不到任何信息。任何建议表示赞赏!
我到底应该做什么来重新加载我的入口?
您只需要更新入口,在您的情况下,您只需将 TLS 部分添加到现有入口中。
然后(自动)入口控制器应该找到差异(正如anemyte在其答案中所说)并更新入口。从现在开始,您将能够使用 TLS。
一般来说,这一切都应该自动发生。理论上,这也可以手动完成,但不建议这样做。本主题对此进行了描述。
编辑:
我已经重现了这种情况。首先,我使用以下命令创建了简单的入口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
Run Code Online (Sandbox Code Playgroud)
然后我运行了kubectl get ingress,这是输出:
NAME CLASS HOSTS ADDRESS PORTS AGE
ing-1 nginx www.example.com 35.X.X.X 80 3m
Run Code Online (Sandbox Code Playgroud)
在此步骤中,我在没有 TLS 的情况下工作入口(仅工作端口 80)。然后我为 TLS 创建了 tls.yaml(我使用了自签名证书,您需要使用您的证书和域):
NAME CLASS HOSTS ADDRESS PORTS AGE
ing-1 nginx www.example.com 35.X.X.X 80 3m
Run Code Online (Sandbox Code Playgroud)
我跑过kubectl apply -f tls.yaml然后我改变ingress.yaml如下:
apiVersion: v1
kind: Secret
metadata:
name: tls
data:
tls.crt: |
<my cert>
tls.key: |
<my key>
type: kubernetes.io/tls
Run Code Online (Sandbox Code Playgroud)
我添加了 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Ingress 自动重新加载:)
| 归档时间: |
|
| 查看次数: |
44205 次 |
| 最近记录: |