首页 > 教程攻略 > ai资讯 >Fitten_Code写Kubernetes_ingress:快速配置路由规则与SSL证书

Fitten_Code写Kubernetes_ingress:快速配置路由规则与SSL证书

来源:互联网 时间:2026-06-27 08:09:45

要在Kubernetes中实现外部用户通过HTTPS安全访问内部服务,核心动作就两个:配置Ingress路由规则、绑定有效的SSL证书。缺一不可——少了前者请求无法到达正确后端,少了后者浏览器会直接拦下。这一套操作并不复杂,但顺序和细节确实值得留意。

换句话说,

没有配好Ingress和证书

,HTTPS请求要么转发失败,要么因为证书问题被浏览器判定为不安全连接。那么,到底该怎么一步步配好?先说几个核心判断:先确认控制器状态,再创建证书Secret,最后部署Ingress资源并验一遍HTTPS,稳扎稳打就对了。

确认Ingress Controller已就绪

先执行 kubectl get pods -n ingress-nginx(如果用的是默认命名空间),或者 kubectl get pods -A | grep ingress,看看Ingress控制器的Pod是不是 Running 状态,并且 READY 列显示为 1/1。如果输出一片空白,或者状态不对劲,那后面所有步骤都是白忙活。

这一步真的不能省——

Ingress资源本身不处理任何流量,一切全靠控制器来调度

。控制器没跑起来,你写的Ingress YAML文件再漂亮也没用。这是个非常容易忽略但又极其关键的检查项。

准备并注入TLS证书Secret

方法一:用已有的证书文件创建Secret

手上得有 tls.crt(公钥证书)和 tls.key(私钥),这两个文件必须是一对,且都没有损坏。然后用这个命令注入到集群:

kubectl create secret tls my-ingress-tls --cert=tls.crt --key=tls.key -n default

注意一个常见的坑:Secret必须和Ingress部署在同一个命名空间下,否则Ingress根本引用不到它。假如Ingress放在 prod 命名空间,就把 -n default 改成 -n prod

方法二:自签名测试证书(仅限开发环境)

跑下面两条命令,一分钟就搞定一个有效期为365天的自签名证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -subj "/CN=example.com" -keyout tls.key -out tls.crt

kubectl create secret tls example-tls --cert=tls.crt --key=tls.key -n default

注意:这种方式仅限于本地或测试环境,生产环境务必使用正规CA签发的证书。

编写并应用Ingress资源

第一步:创建 ingress.yaml 文件

内容参考下面这个模板,记得把 example.com 换成你的真实域名,my-service80 换成实际的后端Service名称和端口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
tls:
- hosts:
- example.com
secretName: my-ingress-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80

第二步:应用配置

kubectl apply -f ingress.yaml

第三步:验证资源是否创建成功

执行 kubectl get ingress web-ingress -o wide,确保 ADDRESS 字段有值(比如 192.168.49.2 或云厂商分配的公网IP),并且 READY 状态为 True。如果ADDRESS为空,说明Ingress还没绑定到控制器上,需要回头检查控制器状态。

验证HTTPS访问是否生效

将你的域名解析指向Ingress控制器的EXTERNAL-IP。这个IP可以通过 kubectl get svc -n ingress-nginx ingress-nginx-controller 查到。如果只是临时测试,也可以直接改本地 /etc/hosts,加一行:EXTERNAL-IP example.com

然后打开浏览器,访问 https://example.com。如果页面正常加载,地址栏还出现了锁形图标,那恭喜你,SSL证书已经生效,整套链路跑通了。

如果浏览器提示“您的连接不是私密连接”,先检查证书中的 CN 或 Subject Alternative Name 是否包含了你的域名。如果返回的是502或503错误,那多半是后端Service没起来,或者端口号写错了,需要回去确认一下Service的状态。