作为个人开发者,你是否也经历过这些烦恼?

  • 每次部署新服务都要手动配置 SSL 证书
  • 不同环境的域名证书需要重复申请
  • 在多个命名空间之间同步证书导致配置混乱
  • 证书过期忘记续期导致服务中断

这就是我开发这个 Traefik 自动化部署方案 的初衷。下面通过一个真实场景,带你体验自动化带来的改变。


传统方案 vs 自动化方案

假设我们要部署一个个人博客系统:

传统做法(手动配置)

  1. 申请域名:blog.example.com
  2. 登录 Cloudflare 控制台配置 DNS
  3. 手动生成 Let's Encrypt 证书
  4. 创建 Kubernetes Secret 存储证书
  5. 配置 Ingress 规则
  6. 每 90 天重复步骤 3-5

使用本方案

# 1. 配置 values.yaml
cat <<EOF > values.yaml
config:
  domain: example.com
  https:
    enabled: true
    cloudflareApiToken: $CLOUDFLARE_TOKEN
    email: me@example.com
EOF

# 2. 一键部署
helm install my-traefik ./my-traefik -f values.yaml

# 3. 完成!后续所有 *.example.com 的子域名自动获得证书

方案核心优势

🌟 一劳永逸的证书管理

  • 自动签发通配符证书(支持 *.example.com)
  • 证书到期前自动续期
  • 多子域名无需重复配置
# 自动生成的证书配置样例
apiVersion: cert-manager.io/v1
kind: Certificate
spec:
  commonName: "*.example.com"  # 通配符域名
  dnsNames: ["*.example.com"] # 覆盖所有子域名

🚀 跨命名空间支持

当你的项目扩展到多个环境时:

traefik:
  providers:
    kubernetesCRD:
      namespaces:
        - blog      # 博客系统
        - dashboard # 监控面板
        - api       # 后端服务

所有命名空间自动获得统一的证书管理,无需逐个配置。


快速入门指南

第一步:准备 Cloudflare Token

  1. 登录 Cloudflare 控制台
  2. 进入「API 令牌」页面
  3. 创建具有 DNS 编辑权限 的令牌

第二步:部署方案

# 克隆仓库
git clone https://github.com/your-repo/my-traefik.git
cd my-traefik

# 创建配置文件(记得替换实际参数)
echo "config:
  domain: mydevblog.com
  https:
    enabled: true
    cloudflareApiToken: YOUR_TOKEN
    email: your@email.com" > config.yaml

# 执行部署
helm install traefik . -f config.yaml

第三步:验证部署

检查自动生成的证书:

kubectl get certificate -A

应该看到类似输出:

NAMESPACE   NAME                   READY   SECRET                 AGE
default     wildcard-tls-certificate True    wildcard-tls-certificate   5m

进阶功能体验

为管理后台添加基础认证

# 启用认证
config:
  auth:
    enabled: true
    username: admin
    password: securepassword

# 生成后的 Secret 会自动挂载到 Traefik

访问服务时就会看到认证弹窗,有效防止未授权访问。


项目带来的改变

自从使用这个自动化方案后:

  • 部署新服务时间从 1小时 缩短到 5分钟
  • 证书相关运维工作减少 90%
  • 再没有因证书过期导致的故障

开源之约

这个项目已在 GitHub 开源,欢迎开发者们:

  • ⭐️ 收藏项目仓库
  • 🐛 提交 Issue 反馈问题
  • 💻 发起 PR 贡献代码

项目地址:my-traefik