15%

Alexhost 满足您的愿望

参与调查 并赢得奖品

22.10.2024
No categories

证书管理器

在 AlexHost VPS 上部署 Cert-Manager 以实现安全的 Kubernetes

为什么在 AlexHost 上使用 Cert-Manager? Cert-Manager 自动化了 Kubernetes 中的 TLS 证书管理,确保安全的加密通信。 AlexHost 的 VPS 提供 NVMe 存储、根访问和 DDoS 保护,为 Kubernetes 集群提供高性能、安全的平台。本指南涵盖了 Cert-Manager 的功能、设置和在 AlexHost 上的用例。

什么是 Cert-Manager?

Cert-Manager 是一个开源的 Kubernetes 附加组件,自动化 TLS 证书的管理和续订。它与 Kubernetes 无缝集成,为在集群中运行的应用程序颁发证书,消除了通常需要手动获取和续订证书的过程。

Cert-Manager 可以从多种来源颁发证书,包括 Let’s EncryptHashiCorp VaultVenafi 和其他私有证书颁发机构(CA)。它持续监控证书的到期情况,并在必要时自动续订,确保您的服务保持安全,无需手动干预。

Cert-Manager 的主要功能

Cert-Manager 提供几个关键功能,使其成为 Kubernetes 用户不可或缺的工具:

  1. 自动证书颁发:Cert-Manager 根据 Kubernetes 资源(如
    Ingress
    Certificate
    自定义资源)自动生成 TLS 证书。这确保了集群中任何新服务或更新服务都能获得有效的证书保护。
  2. 证书续订:Cert-Manager 监控已颁发证书的到期情况,并在其到期之前自动续订,确保您的应用程序始终拥有有效的证书,避免停机。
  3. 支持多种证书颁发机构:Cert-Manager 支持多种 CA,包括 Let’s Encrypt 提供的免费公共 SSL 证书,以及内部或私有 CA,给予您在证书颁发方式上的灵活性。
  4. Kubernetes 原生:Cert-Manager 与 Kubernetes 原生集成。它利用 Kubernetes 自定义资源定义(CRD)来定义证书请求,并将证书管理为 Kubernetes 资源。
  5. DNS-01 和 HTTP-01 挑战:Cert-Manager 支持多种类型的 ACME 挑战(如 DNS-01 和 HTTP-01),用于在使用 Let’s Encrypt 等 CA 时验证域名所有权。这些方法自动化了验证过程,使证书颁发变得无缝。
  6. 通配符和多域证书:Cert-Manager 可以颁发通配符证书,这对于在单个证书下保护多个子域非常有用,同时它还可以处理多个域的证书,简化复杂应用程序的管理。

Cert-Manager 的工作原理

Cert-Manager 通过与 Kubernetes 资源和外部证书颁发机构交互来管理证书的整个生命周期。以下是该过程的概述:

  1. 证书请求:Cert-Manager 使用一个名为 CertificateIngress 的 Kubernetes 资源来请求证书。这些资源包含证书将覆盖的域名、证书的有效期和颁发者等详细信息。
  2. 颁发证书:Cert-Manager 与配置的 IssuerClusterIssuer 资源交互,从 CA 请求证书。Issuer 可以是 Let’s Encrypt、私有 CA 或其他支持的证书提供者。
  3. 验证(ACME 挑战):如果使用 Let’s Encrypt 等 ACME CA,Cert-Manager 将解决一个挑战以证明域名所有权。这可以是 HTTP-01 挑战(通过 HTTP 提供令牌)或 DNS-01 挑战(通过创建 DNS TXT 记录)。一旦验证通过,CA 将颁发证书。
  4. 存储证书:颁发的证书存储在 Kubernetes Secret 中,其他 Kubernetes 资源(如 Ingress)可以引用该 Secret 以启用应用程序的 TLS。
  5. 监控和续订:Cert-Manager 持续监控证书,并在其到期之前自动续订,确保您的服务在没有停机的情况下保持安全。

Cert-Manager 的组件

Cert-Manager 由多个核心组件组成,这些组件协同工作以处理 Kubernetes 中的证书管理:

  • Issuer/ClusterIssuer:这些资源定义了 Cert-Manager 应该如何以及在哪里请求证书。Issuer 是命名空间范围的,而 ClusterIssuer 是集群范围的。它们提供与所需 CA 交互的配置详细信息。
  • CertificateCertificate 资源定义了 Cert-Manager 应该请求的特定 TLS 证书。它包括域名、有效期和相关 Issuer 等详细信息。
  • CertificateRequest:Cert-Manager 使用 CertificateRequest 资源来跟踪对证书的特定请求。当请求新的证书时,此资源会由 Cert-Manager 自动创建。
  • Secret:在 Cert-Manager 从 CA 获取证书后,它将证书和私钥存储在 Kubernetes Secret 中。此 Secret 可以被应用程序或 Ingress 资源引用以启用 TLS。

Cert-Manager 的常见用例

Cert-Manager 在 Kubernetes 环境中被广泛使用,以简化和自动化证书管理。以下是一些常见用例:

1. 使用 HTTPS 保护 Web 应用程序

Cert-Manager 最常见的用例之一是通过使用 Let’s Encrypt 颁发 SSL 证书 来保护 Web 应用程序。Cert-Manager 可以自动为 Kubernetes Ingress 资源颁发和续订证书,确保 Web 流量加密和安全。

2. 自动化证书续订

手动管理证书续订可能耗时且容易出错。Cert-Manager 通过监控证书到期日期并在到期之前续订它们来自动化此过程,确保您的服务不会因证书过期而停机。

3. 管理内部证书

除了公共证书外,Cert-Manager 还可以管理由私有 CA 为内部应用程序颁发的证书。例如,在微服务架构中,服务通过安全网络进行内部通信,Cert-Manager 可以为内部服务之间的通信颁发和轮换证书。

4. 通配符证书

对于使用多个子域的应用程序(例如,app.example.comapi.example.com),Cert-Manager 可以颁发单个通配符证书(例如,*.example.com)以一次性保护所有子域,简化证书管理。

安装和配置 Cert-Manager

在您的 Kubernetes 集群中安装 Cert-Manager 非常简单。以下是安装和配置 Cert-Manager 的一般步骤:

步骤 1:安装 Cert-Manager

您可以使用 Helm 或通过静态 YAML 清单安装 Cert-Manager。以下是 Helm 安装方法:

kubectl apply --validate=false -f https://github.com/cert-manager/cert-manager/releases/download/vX.Y.Z/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version vX.Y.Z
将 vX.Y.Z 替换为 Cert-Manager 的最新版本。

步骤 2:配置 Issuer 或 ClusterIssuer

要颁发证书,您需要配置一个 IssuerClusterIssuer。例如,要为 Let’s Encrypt 配置一个 Issuer,您可以创建如下 YAML 配置:

apiVersion:cert-manager.io/v1
kind: ClusterIssuer
metadata:name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: your-email@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx

步骤 3:请求证书

配置完您的 Issuer 后,您可以创建一个 Certificate 资源来请求应用程序的 TLS 证书

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: example-tls
namespace: default
spec:
secretName: example-tls-secret
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
commonName: example.com
dnsNames:
- example.com
- www.example.com

结论:在 AlexHost VPS 上无缝保护您的 Kubernetes 集群,使用 Cert-Manager

Cert-Manager 自动化 TLS 证书管理,确保 Kubernetes 应用程序的安全,且付出最小的努力。在 AlexHost 的 VPS 上部署它,以快速颁发证书,支持 NVMe 和根访问。

15%

Alexhost 满足您的愿望

参与调查 并赢得奖品

Похожие записи не найдены.