容器服务kubernetes federation v2实践二:基于FederatedSecrets管理多集群TLS证书

概要

随着网络安全越来越重要,越来越多的网站都使用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】为测试域名,请更换为自己测试域名。

访问验证

容器服务kubernetes federation v2实践二:基于FederatedSecrets管理多集群TLS证书

总结

本文通过一个简单的例子介绍了如何在阿里云上使用FederatedSecret进行配置TLS证书,通过FederatedSecret,无需每个k8s集群进行配置,简化了多集群TLS证书管理成本。

上一篇:容器服务kubernetes federation v2实践一:基于External-DNS的多集群Ingress DNS实践


下一篇:进击的Kubernetes调度系统(三):支持批任务的Binpack Scheduling