分享交流
合作共赢!

Kubernetes/K8S基础使用方法总结【二十三】——cert-manager的部署和使用

一、简介

cert-manager是Kubernetes的一个附加组件,用于自动管理和发布来自不同发布源的TLS证书。cert-manager可以在证书将要过期的时间段内,定期更新证书,以保证证书的长期持久有效。它基于kube-lego而工作,并且具有kube-cert-manager的一些功能。Github项目站点点击 这里 查看,官方站点点击 这里 查看。

二、部署ingress-nginx-controller

在部署cert-manager演示之前,我们需要先通过ingress-nginx部署一个web网页示例来进行直观的演示,ingress-nginx的作用是对集群的流量入口进行管理。

1.Helm部署方式

通过Helm的方式来部署ingress-nginx-controller,参考官方文档点击 这里

 2.Manifests部署方式

通过yaml清单文件部署ingress-nginx-controller,参考官方文旦点击 这里

 方便起见,我这里选择第二种manifests部署方式,因为我是AWS的EKS平台,故选择对应的aws安装选项(点 这里 直达)。

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/aws/deploy.yaml

三、部署应用

这里以一个流行的服务kuard作为示例进行演示,清单文件(kuard.yaml)内容如下:

---
apiVersion: v1
kind: Service
metadata:
name: kuard
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
selector:
app: kuard

---
apiVersion: apps/v1 kind: Deployment metadata: name: kuard spec: selector: matchLabels: app: kuard replicas: 1 template: metadata: labels: app: kuard spec: containers: - image: gcr.io/kuar-demo/kuard-amd64:1 imagePullPolicy: Always name: kuard ports: - containerPort: 8080

应用使其生效:

kubectl apply -f kuard.yaml

 为kuard创建ingress,ingress(ingress.yaml)示例如下,这里需要添加正确的hosts值,根据实际需要更改即可。

注意:

  • 如果创建issuer,则ingress清单列表中annotations中需要注明:cert-manager.io/issuer
  • 如果使用创建的clusterissuer,则ingress清单列表中annotations中需要注明:cert-manager.io/cluster-issuer
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: kuard
annotations:
kubernetes.io/ingress.class: "nginx"
#cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- buard.ctrix.bciadopt.com
secretName: devops-tls
rules:
- host: buard.trix.bciadopt.com
http:
paths:
- path: /
backend:
serviceName: kuard
servicePort: 80

使其应用生效

kubectl apply -f ingress-kuard.yaml

此时可以通过浏览器访问ingress里面host配置的地址,如下可以看到https的报错”Not secure:your connection to this sit isn’t secure”,这就需要我们配置cert-manager来应用ssl协议,解决这个问题。

四、部署cert-manager

 cert-manager的部署方式可以点击 这里 参考官方文档,同样有Helm和manifests清单文件两种部署方式,根据自己喜好进行选择,我这里同样还是选择manifests文件作为演示 (喜欢helm部署方式的到官方网站参考官方部署方式即可)。

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.yaml

 部署完可以验证cert-manager是否正常运行:

kubectl get pods --namespace cert-manager

五、配置Let’s Encrypt

1.Let’s Encrypt是一个免费为网站提供https证书签发的机构,详情可以点击 这里 从官方网站了解更多内容。官方文档介绍了两种配置方式,一种是测试,一种是生产,这里我们直接以生产方式进行部署和配置。

此内容查看价格4.99立即购买

cert-manager将会读取annotation的字段,自动生成证书,查看证书

# kubectl get certificate -A
NAMESPACE NAME READY SECRET AGE
default kuard True kuard 7m21s

七、验证

重新打开我们配置host的网址,显示如下,https正常显示。

相关文档:

说明:

如上配置内容,需要基于k8s的nginx ingress来实现。

如果需要在用istio做集群流量管理的集群中配置Let’sEncrypt证书的话,参考如下:

Kubernetes/K8S基础使用方法总结【二十七】——Istio通过cert-manager配置Let’sEncrypt证书

赞(0) 打赏
未经允许不得转载:琼杰笔记 » Kubernetes/K8S基础使用方法总结【二十三】——cert-manager的部署和使用

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册