searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

cert-manager简介

2023-09-01 09:06:32
33
0

cert-manager

cert-manager 是 Kubernetes 上的证书管理工具,它通过在 Kubernetes 集群中添加了 Certificates 和 Issuers 两种CRD,通过Operator简化了获取、更新和使用这些证书的过程。

  • 它支持包括Let's Encrypt、HashiCorp Vault 和 Venafi 以及私有 PKI等不同的来源颁发证书
  • 它通过证书轮转的方式尝试确保证书有效且不过期

Issuers

cert-manager 在 Kubernetes 集群中引入了 Issuer 和 ClusterIssuers 作为资源类型,它们代表证书颁发机构(CA)。通过执行证书签名请求,这些资源能够生成签名证书。Issuers 只能在当前 namespace 中使用,如果需要在多个 namespace 中使用Issuer,可以考虑创建cluster级别的ClusterIssuer资源。cert-manager支持多个证书颁发机构,具体列表可参考https://cert-manager.io/docs/configuration。

Issuer CR

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  ...
spec:
  ...

 

ClusterIssuer CR

 apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  ...
spec:
  ...

支持的证书颁发者类型:

  • SelfSigned
  • CA
  • Vault
  • Venafi
  • External
  • ACME,包括HTTP01、DNS01

  

 

Certificate

Certificate 是一个定义了所需的x509证书的资源,在 cert-manager 中它可以被更新并保持最新状态。这个证书是一个 namespace 资源,它引用了Issuer 或 ClusterIssuer,这些资源确定了将接受证书请求的内容。

CertificateRequest 是 cert-manager中的另一个namespace资源,用于从颁发机请求x509证书。这个资源包含了PEM编码的证书请求的base64编码的字符串,然后将这个字符串发送给引用的 Issuer。一旦成功颁发,将会返回已签名的证书,这是根据证书签名请求生成的。

通常情况下,CertificateRequest由控制器或其他系统使用和管理,除非特别需要,否则我们不应该自己使用它。

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: webhook-cert
  namespace: {{ .Release.Namespace }}
spec:
  dnsNames:
  - webhook.{{ .Release.Namespace }}.svc
  - webhook.{{ .Release.Namespace }}.svc.cluster.local
  issuerRef:
    kind: Issuer
    name: selfsigned-issuer
  secretName: webhook-server-cert

CA Injector

CA Injector 是 cert-manager的一个 controller,它可以将 caBundle 字段写入到以下三个 K8S 资源中,以允许 Kubernetes API Server“信任” Webhook。

  • ValidatingWebhookConfiguration
  • MutatingWebhookConfiguration
  • CustomResourceDefinition

用法:

在 webhook 的 yaml 中添加 annotation: cert-manager.io/inject-ca-from

apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingWebhookConfiguration
metadata:
  ...
annotations:
  cert-manager.io/inject-ca-from: [namespace name]/[certificate name]
webhooks:
  ...

 

例子

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: demo-issuer
  namespace: demo-system
spec:
  selfSigned: {}

---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: demo-webhook
  namespace: demo-system
spec:
  dnsNames:
  - demo-webhook.demo-system.svc
  - demo-webhook.demo-system.svc.cluster.local
  issuerRef:
    kind: Issuer
    name: demo-issuer 
  secretName: demo-webhook

---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: demo-system/demo-webhook
  name: demo-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1beta1
  clientConfig:
    service:
      name: demo-webhook
      namespace: demo-system
      path: /demo-validate-webhook
      port: 443
  failurePolicy: Fail
  matchPolicy: Equivalent
  name: vservice.demo-system.svc
  rules:
  - apiGroups:
    - ""
    apiVersions:
    - v1
    operations:
    - CREATE
    - UPDATE
    resources:
    - services
    scope: '*'
  sideEffects: None
  timeoutSeconds: 10

 

0条评论
作者已关闭评论
Darren
11文章数
0粉丝数
Darren
11 文章 | 0 粉丝
Darren
11文章数
0粉丝数
Darren
11 文章 | 0 粉丝
原创

cert-manager简介

2023-09-01 09:06:32
33
0

cert-manager

cert-manager 是 Kubernetes 上的证书管理工具,它通过在 Kubernetes 集群中添加了 Certificates 和 Issuers 两种CRD,通过Operator简化了获取、更新和使用这些证书的过程。

  • 它支持包括Let's Encrypt、HashiCorp Vault 和 Venafi 以及私有 PKI等不同的来源颁发证书
  • 它通过证书轮转的方式尝试确保证书有效且不过期

Issuers

cert-manager 在 Kubernetes 集群中引入了 Issuer 和 ClusterIssuers 作为资源类型,它们代表证书颁发机构(CA)。通过执行证书签名请求,这些资源能够生成签名证书。Issuers 只能在当前 namespace 中使用,如果需要在多个 namespace 中使用Issuer,可以考虑创建cluster级别的ClusterIssuer资源。cert-manager支持多个证书颁发机构,具体列表可参考https://cert-manager.io/docs/configuration。

Issuer CR

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  ...
spec:
  ...

 

ClusterIssuer CR

 apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  ...
spec:
  ...

支持的证书颁发者类型:

  • SelfSigned
  • CA
  • Vault
  • Venafi
  • External
  • ACME,包括HTTP01、DNS01

  

 

Certificate

Certificate 是一个定义了所需的x509证书的资源,在 cert-manager 中它可以被更新并保持最新状态。这个证书是一个 namespace 资源,它引用了Issuer 或 ClusterIssuer,这些资源确定了将接受证书请求的内容。

CertificateRequest 是 cert-manager中的另一个namespace资源,用于从颁发机请求x509证书。这个资源包含了PEM编码的证书请求的base64编码的字符串,然后将这个字符串发送给引用的 Issuer。一旦成功颁发,将会返回已签名的证书,这是根据证书签名请求生成的。

通常情况下,CertificateRequest由控制器或其他系统使用和管理,除非特别需要,否则我们不应该自己使用它。

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: webhook-cert
  namespace: {{ .Release.Namespace }}
spec:
  dnsNames:
  - webhook.{{ .Release.Namespace }}.svc
  - webhook.{{ .Release.Namespace }}.svc.cluster.local
  issuerRef:
    kind: Issuer
    name: selfsigned-issuer
  secretName: webhook-server-cert

CA Injector

CA Injector 是 cert-manager的一个 controller,它可以将 caBundle 字段写入到以下三个 K8S 资源中,以允许 Kubernetes API Server“信任” Webhook。

  • ValidatingWebhookConfiguration
  • MutatingWebhookConfiguration
  • CustomResourceDefinition

用法:

在 webhook 的 yaml 中添加 annotation: cert-manager.io/inject-ca-from

apiVersion: admissionregistration.k8s.io/v1beta1
kind: ValidatingWebhookConfiguration
metadata:
  ...
annotations:
  cert-manager.io/inject-ca-from: [namespace name]/[certificate name]
webhooks:
  ...

 

例子

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: demo-issuer
  namespace: demo-system
spec:
  selfSigned: {}

---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: demo-webhook
  namespace: demo-system
spec:
  dnsNames:
  - demo-webhook.demo-system.svc
  - demo-webhook.demo-system.svc.cluster.local
  issuerRef:
    kind: Issuer
    name: demo-issuer 
  secretName: demo-webhook

---
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
  annotations:
    cert-manager.io/inject-ca-from: demo-system/demo-webhook
  name: demo-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
  - v1beta1
  clientConfig:
    service:
      name: demo-webhook
      namespace: demo-system
      path: /demo-validate-webhook
      port: 443
  failurePolicy: Fail
  matchPolicy: Equivalent
  name: vservice.demo-system.svc
  rules:
  - apiGroups:
    - ""
    apiVersions:
    - v1
    operations:
    - CREATE
    - UPDATE
    resources:
    - services
    scope: '*'
  sideEffects: None
  timeoutSeconds: 10

 

文章来自个人专栏
Darren的容器专栏
11 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0