k8s nginx ssl
时间: 2023-11-17 22:19:22 浏览: 129
k8s上安装nginx
5星 · 资源好评率100%
您想了解关于在 Kubernetes 中使用 Nginx 部署 SSL 的方法吗?如果是这样,您可以按照以下步骤进行操作:
1. 生成 SSL 证书和密钥
您可以使用 OpenSSL 工具生成 SSL 证书和密钥。例如,使用以下命令生成一个自签名的 SSL 证书和密钥:
```
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=example.com"
```
2. 创建 Kubernetes 密钥和证书对象
使用 kubectl 命令创建 Kubernetes 密钥和证书对象:
```
kubectl create secret tls tls-secret --key tls.key --cert tls.crt
```
3. 部署 Nginx Ingress Controller
您可以使用 Helm 安装 Nginx Ingress Controller,例如:
```
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install my-release ingress-nginx/ingress-nginx
```
4. 配置 Ingress 路由
在您的应用程序 Ingress 路由中添加以下注释来启用 SSL:
```
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-passthrough: "true"
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
tls:
- hosts:
- example.com
secretName: tls-secret
rules:
- host: example.com
http:
paths:
- path: /
backend:
serviceName: my-service
servicePort: 80
```
其中:
- `nginx.ingress.kubernetes.io/ssl-redirect: "true"` 启用所有流量重定向到 HTTPS。
- `nginx.ingress.kubernetes.io/ssl-passthrough: "true"` 配置 SSL 透传。
- `nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"` 告诉 Nginx 与后端服务通信时使用 HTTPS 协议。
- `tls` 部分定义了 SSL 证书和密钥。
- `rules` 部分定义了路由规则。
在这个例子中,所有的流量都将被重定向到 HTTPS,并且 SSL 透传将被启用。请注意,这需要在 Nginx Ingress Controller 中启用 TCP/UDP 透传。
希望这些步骤能帮助到您。
阅读全文