Ingress是Kubernetes中实现负载均衡和路由的重要组件,它可以将流量路由到不同的服务中。Ingress支持HTTP和HTTPS两种协议,但默认情况下只支持HTTP。如果要实现HTTPS访问,需要进行一些配置。
创建证书和密钥
要实现HTTPS访问,需要使用SSL证书和密钥。可以使用自签名证书,也可以使用公共证书。在这里,我们将使用自签名证书作为示例。
创建自签名证书和密钥的命令如下:
代码语言:javascript复制$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt
该命令将在当前目录下生成tls.crt和tls.key两个文件,其中tls.crt是证书,tls.key是密钥。
创建Ingress资源
创建Ingress资源的过程与HTTP类似,不同之处在于需要添加TLS配置。
下面是一个示例Ingress资源配置,它使用上面生成的证书和密钥,将流量路由到一个名为web的服务。
代码语言:javascript复制apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- example.com
secretName: tls-secret
rules:
- host: example.com
http:
paths:
- path: /web
pathType: Prefix
backend:
service:
name: web
port:
name: http
在上述配置中,spec
字段下的tls
字段指定了使用的TLS证书,其中hosts
字段指定了使用证书的域名,secretName
字段指定了存储证书和密钥的Secret资源的名称。
此外,annotations
字段下的nginx.ingress.kubernetes.io/ssl-redirect
注解用于启用SSL重定向。这意味着如果客户端使用HTTP协议访问Ingress资源,它将被重定向到使用HTTPS协议的相应资源。