linux cpu占用率如何看
277
2022-09-10
一款云原生证书管理工具介绍和使用!谈谈我是如何高效管理证书的
一、Cert-Manager简介
官方文档:什么是cert-manager?
cert-manager是证书管理工具。
cert-manager 将证书和证书颁发者作为资源类型添加到 Kubernetes 集群中,并简化了获取、更新和使用这些证书的过程。
1.2 相关资源对象
ClusterIssuer:集群级别的资源对象,作为颁发机构(CA颁发者)进行签发证书,可以签发任意命名空间的证书;Issuer:命名空间的资源对象,通过证书签名请求来生成证书的颁发机构(CA),只能签发自己所在命名空间下的证书;Certificate:用于告诉 cert-manager 我们想要什么域名的证书以及签发证书所需要的一些配置,包括对 Issuer/ClusterIssuer 的引用。
Certificate资源指定用于生成证书签名请求的字段,然后由您引用的颁发者类型完成。
Certificates通过指定certificate.spec.issuerRef字段来指定他们想要从哪个颁发者获取证书。
一个Certificate资源,用于example.com和example.comDNS 名称,spiffe://cluster.local/ns/sandbox/sa/exampleURI 主题备用名称,有效期为 90 天,并在到期前 15 天续订如下。它包含Certificate资源可能具有的所有选项的详尽列表,但只有一部分字段需要标记。
二、cert-manager部署(v1.7.2)
2.1 下载资源清单文件
$ wget grep image: cert-manager.yaml image: "quay.io/jetstack/cert-manager-cainjector:v1.7.2" image: "quay.io/jetstack/cert-manager-controller:v1.7.2" image: "quay.io/jetstack/cert-manager-webhook:v1.7.2"
您不需要对 cert-manager 安装参数进行任何调整。
2.2 创建资源对象
$ kubectl apply -f cert-manager.yaml$ kubectl -n cert-manager get pods #相关资源会放到cert-manager命名空间下NAME READY STATUS RESTARTS AGEcert-manager-86b4798576-zkx6s 1/1 ContainerCreating 0 4m40scert-manager-webhook-6b4f99d45d-xmtbv 1/1 ContainerCreating 0 4m40s$ kubectl -n cert-manager get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEcert-manager ClusterIP 10.102.69.246
2.3 验证安装
**在主机安装cmctl客户端工具**(二进制)
cmctl是一个 CLI 工具,可以帮助您管理集群内的 cert-manager 资源。 虽然也可作为kubectl 插件。
$ wget tar zxvf cmctl-linux-amd64.tar.gz $ mv cmctl /usr/local/bin/
证书创建检查
cmctl 对 Kubernetes 集群执行试运行证书创建检查。如果成功,将The cert-manager API is ready显示该消息。
$ cmctl check apiThe cert-manager API is ready
三、cert-manager使用
安装 cert-manager 成功后,您需要配置的第一件事是创建颁发者,然后您可以使用它来颁发证书。cert-manager 附带了许多内置的证书颁发者,这些证书颁发者通过在cert-manager.io组中来表示。除了内置类型之外,您还可以安装外部发行者。内置和外部发行者的处理方式相同,并且配置相似。 通过ClusterIssuer资源对象创建证书签发机构(颁发者),ClusterIssuer是集群级别的资源对象。
3.1 创建证书签发机构
基于ClusterIssuer或者Issuer资源对象创建证书颁发者。
$ vim cluster-issuer-lidabai.yaml---apiVersion: cert-manager.io/v1kind: ClusterIssuermetadata: name: lidabai #签发机构的名称,后面创建证书会引用spec: acme: server: #aacme 协议的服务端,我们这里用 Let’s Encrypt,这个地址就写死成这样就行 email: 524719755@qq.com #电子邮件,证书快过期的时候会有邮件提醒,不过 cert-manager 会利用 acme 协议自动给我们重新颁发证书来续期。 privateKeySecretRef: #此签发机构的私钥将要存储到哪个 Secret 对象中,名称不重要 name: clusterissuer-secret solvers: # 添加单个挑战求解器,HTTP01 使用 nginx - ingress: #使用哪种入口控制器 class: nginx$ kubectl apply -f cluster-issuer-lidabai.yamlclusterissuer.cert-manager.io/letsencrypt-prod created$ kubectl get clusterissuerNAME READY AGElidabai True 21s$ kubectl get secrets -A | grep clusterissuer-secretercert-manager clusterissuer-secreter Opaque 1 104s
资源清单解释
spec: acme:
3.2 创建证书资源
编写资源清单文件
$ cat cert-lidabai.yaml ---apiVersion: cert-manager.io/v1kind: Certificatemetadata: name: cert-lidabai namespace: defaultspec: issuerRef: #从哪个颁发者获取证书 name: lidabai kind: ClusterIssuer secretName: clusterissuer-secret ipAddresses: #少需要 DNS 名称、URI 或 IP 地址之一。 - 192.168.2.60
创建资源对象
$ kubectl apply -f cert-lidabai.yamlcertificate.cert-manager.io/cert-lidabai created$ kubectl get certificate -n defaultNAME READY SECRET AGEcert-lidabai False clusterissuer-secret 3m9s
查看日志
$ kubectl logs -f $(kubectl get pods -n cert-manager | grep cert-manager | grep -v 'cainjector\|webhook' | awk '{print $1}') -n cert-manager
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~