「cert-manager」- 概念及架构

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:在 cert-manager 中,需要知晓的基本概念及其技术架构。

解决方案

Issuer

在 cert-manager 中,术语 Issuer 能够理解为“证书颁发机构(CA)”。支持以下类型:
1)SelfSigned,自签名证书;
2)CA,此类似代表证书及私钥在集群中的证书颁发机构;
3)Vault,第三方证书颁发机构;
4)Venafi,第三方证书颁发机构;
5)ACME,使用 ACME 协议获取证书。当然不限于 Let’s Encrypt 机构;
5)External,除了上述类型外,通过该方法能够自定义证书机构,以处理 CertificateRequest 资源;

Issuer 分为两种:命名空间级别的 Issuer 资源;集群级别的 ClusterIssuer 资源;

Certificate

当定义 CA(Issuer)之后,便能够申请证书,此时使用 Certificate 资源。

该对象引用 Issuer 或 ClusterIssuer 资源:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: acme-crt
spec:
  secretName: acme-crt-secret
  dnsNames:
  - foo.example.com
  - bar.example.com
  issuerRef:
    name: letsencrypt-prod
    # We can reference ClusterIssuers by changing the kind here.
    # The default value is Issuer (i.e. a locally namespaced Issuer)
    kind: Issuer
    group: cert-manager.io

CertificateRequest

当创建 Certificate 资源,cert-manager 将创建 CertificateRequest 资源来申请证书。

注意事项:通常 CertificateRequest 资源无需我们手动创建,也不应该由用户手动创建。

Order and Challenge

Order 与 Challenge 资源是为了完成“ACME 质询”而引入的资源。

ACME issuer 将使用 Order 资源来管理签发的 TLS 证书的生命周期。Order 资源为该 “acme order(订单?)” 封装多个“ACME 质询”,因此将管理一个或多个 Challenge 资源。

ACME issuer 将使用 Challenge 资源来管理“必须完成的 ACME 质询”的生命周期,以验证域名的所有权。

注意事项:
1)Order 资源永远都无需我们手动创建;

整体架构以及各资源的作用

参考文献

cert-manager/Issuer/Supported Issuers
Concepts | cert-manager