为Nginx Ingress配置HTTPS证书
Ingress支持配置HTTPS证书以提供安全服务。
- 请参见通过kubectl连接集群,使用kubectl连接集群。
- Ingress支持使用kubernetes.io/tls和IngressTLS两种TLS密钥类型,此处以IngressTLS类型为例,详情请参见创建密钥。kubernetes.io/tls类型的密钥示例及说明请参见TLS Secret。
执行如下命令,创建名为“ingress-test-secret.yaml”的YAML文件,此处文件名可自定义。
vi ingress-test-secret.yaml
YAML文件配置如下:apiVersion: v1 data: tls.crt: LS0******tLS0tCg== tls.key: LS0tL******0tLS0K kind: Secret metadata: annotations: description: test for ingressTLS secrets name: ingress-test-secret namespace: default type: IngressTLS
此处tls.crt和tls.key为示例,请获取真实的证书和密钥进行替换。tls.crt和tls.key的值为Base64编码后的内容。
- 创建密钥。
kubectl create -f ingress-test-secret.yaml
回显如下,表明密钥已创建。
secret/ingress-test-secret created
查看已创建的密钥。
kubectl get secrets
回显如下,表明密钥创建成功。
NAME TYPE DATA AGE ingress-test-secret IngressTLS 2 13s
- 创建名为“ingress-test.yaml”的YAML文件,此处文件名可自定义。
vi ingress-test.yaml
1.23及以上版本集群:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-test namespace: default spec: tls: - hosts: - foo.bar.com secretName: ingress-test-secret #替换为您的TLS密钥证书 rules: - host: foo.bar.com http: paths: - path: / backend: service: name: <your_service_name> #替换为您的目标服务名称 port: number: <your_service_port> #替换为您的目标服务端口 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: nginx
1.21及以下版本集群:apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: ingress-test annotations: kubernetes.io/ingress.class: nginx spec: tls: - hosts: - foo.bar.com secretName: ingress-test-secret #替换为您的TLS密钥证书 rules: - host: foo.bar.com http: paths: - path: '/' backend: serviceName: <your_service_name> #替换为您的目标服务名称 servicePort: <your_service_port> #替换为您的目标服务端口 ingressClassName: nginx
- 创建Ingress。
kubectl create -f ingress-test.yaml
回显如下,表示Ingress服务已创建。
ingress/ingress-test created
- 查看已创建的Ingress。
kubectl get ingress
回显如下,表示Ingress服务创建成功。
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-test nginx * 121.**.**.** 80 10s
- 访问工作负载(例如Nginx工作负载),在浏览器中输入安全访问地址https://121.**.**.**:443进行验证。
其中,121.**.**.**为统一负载均衡实例的IP地址。