Ingress实现HTTPS访问(一)

2023-05-05 09:42:00 浏览数 (1)

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协议的相应资源。

0 人点赞