Ingress配置SSL证书
- 1. 准备 SSL 证书和私钥
- 2. 创建 Kubernetes Secret
- 3. 配置 Ingress 资源
- 4. 应用 Ingress 配置
- 5. 验证配置
- 注意事项
- 自签名证书在Ingress中如何应用?
- 相关文献
在 Kubernetes 中,Ingress 资源可以用来管理外部访问到集群内服务的 HTTP 流量,并且可以通过配置 SSL 证书来启用 HTTPS。以下是配置 Ingress 以使用 SSL 证书的基本步骤:
1. 准备 SSL 证书和私钥
首先,你需要有一个有效的 SSL 证书和对应的私钥。这可以是一个由权威证书颁发机构(CA)签发的证书,也可以是一个自签名的证书。证书和私钥通常以 PEM 格式存储。
2. 创建 Kubernetes Secret
将证书和私钥存储在 Kubernetes Secret 中,以便 Ingress 资源可以引用它们。以下是一个示例命令,用于创建一个包含证书和私钥的 Secret:
kubectl create secret tls my-tls-secret --cert=path/to/tls.crt --key=path/to/tls.key
这里,my-tls-secret
是你创建的 Secret 的名称,tls.crt
是证书文件的路径,tls.key
是私钥文件的路径。
3. 配置 Ingress 资源
接下来,你需要在 Ingress 资源中配置 SSL 证书。这可以通过在 Ingress 的 YAML 配置文件中设置 tls
字段来完成。以下是一个示例 Ingress 配置,它使用了上一步创建的 Secret:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: my-ingressannotations:nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:tls:- hosts:- mydomain.comsecretName: my-tls-secretrules:- host: mydomain.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80
在这个配置中,tls
字段定义了一个证书配置,其中 hosts
指定了需要启用 HTTPS 的主机名,secretName
引用了之前创建的包含证书和私钥的 Secret。
4. 应用 Ingress 配置
使用 kubectl apply
命令应用 Ingress 配置:
kubectl apply -f my-ingress.yaml
这里,my-ingress.yaml
是你的 Ingress 配置文件。
5. 验证配置
一旦 Ingress 资源被应用,你可以通过访问 https://mydomain.com
来验证 SSL 证书是否已正确配置。如果一切设置正确,你应该能够看到由证书保护的 HTTPS 页面。
注意事项
- 确保你的域名(在这个例子中是
mydomain.com
)指向了 Ingress 控制器的公共 IP 地址。 - 如果你在本地开发环境中使用自签名证书,你的浏览器可能会警告证书不可信。这是因为自签名证书不是由受信任的 CA 签发的。
- 如果你使用的是云服务提供商的 Ingress 控制器,如 AWS 的 ALB 或 GCP 的 Ingress,你可能需要遵循特定的步骤来配置 SSL 证书。
通过上述步骤,你可以在 Kubernetes 集群中配置 Ingress 以使用 SSL 证书,从而启用 HTTPS 加密通信。
自签名证书在Ingress中如何应用?
在 Kubernetes 集群中,使用自签名证书配置 Ingress 以启用 HTTPS 的基本步骤如下 :
-
创建自签名证书:
使用 OpenSSL 创建自签名证书和私钥:openssl genrsa -out albtop-key.pem 4096 openssl req -subj "/CN=demo.alb.ingress.top" -sha256 -new -key albtop-key.pem -out albtop.csr echo subjectAltName = DNS:demo.alb.ingress.top > extfile.cnf openssl x509 -req -days 3650 -sha256 -in albtop.csr -signkey albtop-key.pem -out albtop-cert.pem -extfile extfile.cnf
-
创建 Kubernetes Secret:
将自签名证书和私钥转换为 base64 编码,并创建 Secret:kubectl create secret tls my-tls-secret --cert=albtop-cert.pem --key=albtop-key.pem
-
配置 Ingress 资源:
在 Ingress 配置文件中添加tls
字段,并引用上一步创建的 Secret:apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: my-ingressannotations:nginx.ingress.kubernetes.io/force-ssl-redirect: "true" spec:tls:- hosts:- mydomain.comsecretName: my-tls-secretrules:- host: mydomain.comhttp:paths:- path: /pathType: Prefixbackend:service:name: my-serviceport:number: 80
-
应用 Ingress 配置:
使用kubectl apply
命令应用 Ingress 配置:kubectl apply -f my-ingress.yaml
-
验证配置:
通过访问https://mydomain.com
来验证 SSL 证书是否已正确配置。
这个过程确保了 HTTPS 请求在 Kubernetes 集群中的安全性和有效性,通过自签名的证书来启用 HTTPS,非常适合开发环境。
相关文献
【Kubernets】配置类型资源 Etcd, Secret, ConfigMap
【Kubernets】kubernets资源类型ingress详细介绍