上一篇博客介绍了如何在 Kubernetes 上部署 Nginx 并从 80 端口 http 访问后端服务,本文将介绍如何使用 cert manager 配置自动证书签发。
安装
cert-manager 的安装比较复杂,有较多的配置文件,因此我们使用 helm 安装。
对于从前文介绍的 stackpoint 安装的集群,已经自动在集群上部署了 tiller,可以从本地远程连接部署。
安装好 helm 并配置了 kubeconfig 的环境变量指向配置文件后,可以简单的使用一行命令安装 cert-manager:
1
| helm install --name cert-manager --namespace kube-system stable/cert-manager
|
配置证书
1 2 3 4 5 6 7 8 9 10 11
| apiVersion: certmanager.k8s.io/v1alpha1 kind: ClusterIssuer metadata: name: submodule-checker-ssl-cert spec: acme: email: [email protected] http01: {} privateKeySecretRef: name: submodule-checker-ssl-cert server: https://acme-v01.api.letsencrypt.org/directory
|
这份配置非常好理解,从 Let’s encrypt 安装了证书,保存到了 secret 中。
从 stackpoint 的左侧可以直接链接到当前集群的 dashboard 界面,选择 secret 中的 submodule-checker-ssl-cert
可以看到自动签发的证书:
配置 Ingress
证书申请好后,需要在 Ingress 中配置启用 TLS 并指定证书:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| apiVersion: extensions/v1beta1 kind: Ingress metadata: name: submodule-checker-ingress annotations: certmanager.k8s.io/cluster-issuer: submodule-checker-ssl-cert spec: tls: - hosts: - submodule-checker.hlyue.com secretName: submodule-checker-ssl-cert rules: - host: submodule-checker.hlyue.com http: paths: - backend: serviceName: submodule-checker-service servicePort: 7777
|
默认情况下 Nginx Ingress Controller 在有 TLS 的情况下启用了 HSTS 头和 http 自动重定向,如果想要关闭这些功能请参考文档。
参考链接
- https://medium.com/containerum/how-to-launch-nginx-ingress-and-cert-manager-in-kubernetes-55b182a80c8f
- helm: https://helm.sh/
- cert-manager: http://cert-manager.readthedocs.io/en/latest/getting-started/index.html