概要
随着网络安全越来越重要,越来越多的网站都使用HTTPS/TLS来加强访问安全。在federation v2联邦集群中,可以使用FederatedSecrets来管理多个k8s集群的证书,下面简单介绍在阿里云容器服务下使用FederatedSecrets管理TLS证书。
验证环境准备
环境参考容器服务kubernetes federation v2实践一:基于External-DNS的多集群Ingress DNS实践 ,即准备好两个k8s集群组成的联邦集群,部署好External-DNS,并部署好相应的验证服务,通过域名可以访问nginx服务。
TLS证书准备
在云盾证书服务 申请个人免费版本,注意生成证书域名和测试使用域名需要一致。完成之后下载至本地。
部署FederatedSecret
yaml如下,其中tls.crt和tls.key分别为上一步生成的证书和私钥的base64转码值。
apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedSecret
metadata:
name: ingress-secret
namespace: test-namespace
spec:
template:
data:
tls.crt: {{tls.crt}}
tls.key: {{tls.key}}
type: kubernetes.io/tls
placement:
clusterNames:
- cluster1
- cluster2
验证创建结果
kubectl get secret ingress-secret -n test-namespace --context cluster1
NAME TYPE DATA AGE
ingress-secret kubernetes.io/tls 2 39s
kubectl get secret ingress-secret -n test-namespace --context cluster2
NAME TYPE DATA AGE
ingress-secret kubernetes.io/tls 2 42s
更新配置FederatedIngress:
apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedIngress
metadata:
name: test-ingress
namespace: test-namespace
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
template:
spec:
rules:
- host: ingress-example.example.club
http:
paths:
- backend:
serviceName: test-service
servicePort: 80
tls:
- secretName: ingress-secret
placement:
clusterNames:
- cluster2
- cluster1
【ingress-example.example.club】为测试域名,请更换为自己测试域名。
访问验证
总结
本文通过一个简单的例子介绍了如何在阿里云上使用FederatedSecret进行配置TLS证书,通过FederatedSecret,无需每个k8s集群进行配置,简化了多集群TLS证书管理成本。