首页 > 其他分享 >cert-manger vault K8S 证书管理

cert-manger vault K8S 证书管理

时间:2024-10-22 17:09:41浏览次数:4  
标签:manger certificate secret manager cert vault issuer

使用cert-manager和hashicorp vault 来管理集群的内部自签名SSL

前半部分会介绍一些原理性的内容,后半部分是环境中的实际应用。

正常的自签名证书流程如下:

 

使用cert-manager签名的证书流程

cert-manager 资源类型:
    ClusterIssuer: defined CAs that are able to signed certificate , that is ready condition for cert-manager
    cert-manager controller: handle certificate request and generate the secret corresponding to the certificate   
    certificate: define a desired X.509 certificate(tls.crt and tls.key) which will be renewed and kept up to date that is issued by cluster issuer.
    ca-injector: are used to configure how the Kubernetes API server connects to webhooks
    webhook: cert-manager makes use of extending the Kubernetes API server using a Webhook server to provide dynamic admission control over cert-manager resources

  

 

根据官方文档解释: https://cert-manager.io/docs/concepts/certificate/#certificate-lifecycle

lifecycle解释了K8S内部证书到期是怎么进行renew的,下面的是我从官网粘贴出来的

 

 以上为一些原理性知识,下面是环境中实际使用的cert-manager和vault结合的案例

职责分配:

1. 使用hashicorp vault 作为签证书的issuer

2. 使用cer-manager部署在K8S集群中来定期监控证书有效期,状态,以及去vault进行签名

 

定义cluster issuer:

vmadmin@jumpbox:~$ kubectl get clusterissuer -n cert-manager
NAME           AGE
vault-issuer   512d

vmadmin@jumpbox:~$ kubectl get clusterissuer vault-issuer -n cert-manager -o yaml apiVersion: certmanager.k8s.io/v1alpha1 kind: ClusterIssuer metadata:   annotations:     kubectl.kubernetes.io/last-applied-configuration: |       {"apiVersion":"certmanager.k8s.io/v1alpha1","kind":"ClusterIssuer","metadata":{"annotations":{},"name":"vault-issuer"},"spec":{"vault":{"auth":{"appRole":{"path":"approle","roleId":"64c3666d-7c2c-a689-753a-33891b3dfbd5","secretRef":{"key":"secretId","name":"cert-manager-vault-secret"}},"tokenSecretRef":{"name":""}},"caBundle":"LS0tLSo=","path":"pki_int/sign/12331","server":"https://vault.com.cn:8206"}}}    creationTimestamp: "2020-08-25T07:39:20Z" #server是vault的地址,在部署cert-manager之前,你需要现有一个vault server ,vault会提供一个pki系统来签证书   generation: 3   name: vault-issuer   resourceVersion: "19875"   selfLink: /apis/certmanager.k8s.io/v1alpha1/clusterissuers/vault-issuer   uid: 90f5e84a-e337-4fcd-9deb-f8811131fb0f spec:   vault:     auth:       appRole:         path: approle         roleId: 64c3666d-7c2c-a689-753a-33891b3dfbd5         secretRef:           key: secretId           name: cert-manager-vault-secret       tokenSecretRef:         name: ""     caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FUR     path: pki_int/sign/12331     server: https://vault.com.cn:8206 status:   conditions:   - lastTransitionTime: "2020-08-25T08:14:25Z"     message: Vault verified     reason: VaultVerified     status: "True"     type: Ready   #certificate 定义了哪些secret需要被更新,其中包含一些配置下面的注释中会介绍 vmadmin@umpbox:~$ kubectl get certificate NAME         READY   SECRET       AGE abba         True    abba         39d abba        True    abba          39d   vmadmin@umpbox:~$ kubectl get certificate tprt -o yaml apiVersion: certmanager.k8s.io/v1alpha1 kind: Certificate metadata:   creationTimestamp: "2021-04-27T02:50:22Z"   generation: 8   name: tprt   #定义这个cert的名字   namespace: default   resourceVersion: "206213505"   selfLink: /apis/certmanager.k8s.io/v1alpha1/namespaces/default/certificates/tprt-87701-portal-val-tprt-service.nazgul.app   uid: 01b7a632-79cc-4c07-b5b8-1211fe7c512d spec:   dnsNames:   - tprt.com.cn #定义你想要生成出来的CN是什么 比如baidu.com也可以   issuerRef:     kind: ClusterIssuer #类型为cluster issuer ,这样可以不用区分namespace     name: vault-issuer #这个是cluster issuer的名字   keySize: 4096   secretName: tprt-secret #生成出来的secret叫什么 status:   conditions:   - lastTransitionTime: "2021-06-23T03:23:56Z"     message: Certificate is up to date and has not expired     reason: Ready     status: "True"     type: Ready   notAfter: "2022-03-20T03:24:02Z"   vmadmin@app-corebe-jumpbox:~$ kubectl get secret tprt-secret NAME        TYPE                DATA   AGE tprt-secret   kubernetes.io/tls   3      211d  

  

 至此,哪个pod需要绑定这个secret,就可以在deployment中进行配置。

标签:manger,certificate,secret,manager,cert,vault,issuer
From: https://www.cnblogs.com/howtobuildjenkins/p/18493329

相关文章

  • docker-certbot-dnspod 使用 Docker 申请、续期免费证书
    项目地址https://github.com/chenlongqiang/docker-certbot-dnspod背景近期免费证书有效期从1年缩短到3个月,避免经常要上云平台手动申请,所以想找个工具可以简单的申请、续期证书。通过了解,发现Certbot工具,但官方没提供Dnspod插件,于是找了Python3的封装并打包成......
  • Digicert SSL证书
    随着互联网技术的飞速发展,网络安全问题日益凸显,成为企业和个人用户共同关注的焦点。数字证书作为确保网络安全的重要工具,已经广泛应用于网站、电子邮件、代码签名等多个领域。其中,DigiCert作为全球领先的数字证书颁发机构(CA),凭借其卓越的安全性能、广泛的应用范围和优质的客户服......
  • OSCP(Offensive Security Certified Professional)考证全...
     一、OSCP认证是什么?首先介绍下OSCP认证,目前安全技术类的证书有很多,像是CEH,Security+,CISSP等等。除了众多侧重于笔试的安全认证,OSCP(OffensiveSecurityCertifiedProfessional)是为数不多得到国际认可的安全实战类认证。目前在国外受到广泛认可,在台湾、香港等地区也比较......
  • 【Azure Cloud Service】使用Key Vault Secret添加.CER证书到Cloud Service Extended
    问题描述因为KeyVault的证书上传功能中,只支持pfx格式的证书,而中间证书,根证书不能转换为pfx格式,只能是公钥证书格式cet或者crt,能通过文本工具直接查看base64编码内容。如一个证书链文件中可以看见中间证书,根证书: 当把包含完成证书链的证书PFX上传到KeyVaultcertificate......
  • k8s 1.28 安装配置 knative-serving v1.15.2 + cert-manager v1.16.1
    安装配置knative-serving配置基础组件#考虑image可能存在拉取问题,可以使用https://github.com/DaoCloud/public-image-mirror方法替换kubectlapply-fhttps://github.com/knative/serving/releases/download/knative-v1.15.2/serving-crds.yamlkubectlapply-fhttps:......
  • [Paper Reading] TouchInsight: Uncertainty-aware Rapid Touch and Text Input for M
    目录TouchInsight:Uncertainty-awareRapidTouchandTextInputforMixedRealityfromEgocentricVisionTL;DRMethod模型中的数据流touchlocalizationLossProbabilisticcommandpredictExperimentAblation打字速度模型部署效果可视化总结与发散资料查询TouchInsight:Unc......
  • clock uncertainty和clock skew
    首先查看一下两者的定义:1,时钟不确定性(ClockUncertainty):是指在给定时间点上,某个时钟信号可能存在的不确定性范围。它通常是由于信号传播延迟、设备响应时间、时钟抖动等导致的。这种不确定性关注的是在做出时间测量时,设备时间值的准确性和可靠性。uncertainty=jitter+skew。2......
  • 网络最常用的几个命令(arp ,net view,tracert)
    除非了ping常用外,其实命令行,dos命令,还是很多时候可以检查出一个局域网的情况,特别排查问题,找到情况。网络最好用的几个命令arp  显示和修改地址解析协议(ARP)使用的“IP到物理”地址转换表。ARP-sinet_addreth_addr[if_addr]ARP-dinet_addr[if_addr]ARP-a[inet_a......
  • SciTech-Mathmatics-Probability+Statistics:Quantifing Uncertainty_统计分析: SciTec
    一般数学表示方法概率数学表示方法\(\large\begin{array}{rl}\\\bm{X}:&符合某种概率分布的Random\Variable(随机变量)\\\bm{x}:&\bm{rnorm},随机变量X的一个实例,,…\\\bm{f}:&\bm{pdf},\bm{dnorm},\text{ProbabilityDistributionFunction}\of\\text......
  • SciTech-Mathmatics-Probability+Statistics:Quantifing Uncertainty_多元数据统计分
    Chapt1学习目标理解多元数据及多元统计分析与一元统计分析的区别。掌握数据的计量尺度与数据类型。了解多元统计分析的应用分类。1.1 多元数据认知1.1.1多元数据的概念对任何一个现实问题要转化为一个统计问题,首要的工作是要对其特征进行刻画;一般采用随机变量,多......