Caddy Ingress Controller 使用教程
1. 项目介绍
Caddy Ingress Controller 是一个为 Kubernetes 设计的 Ingress 控制器,基于 Caddy 2 构建。它能够监控 Kubernetes 集群中的 Ingress 资源,并自动为所有定义在 Ingress 资源中的主机名提供 HTTPS 证书。Caddy Ingress Controller 旨在简化 Kubernetes 集群中的 HTTPS 配置,提供自动化的证书管理功能。
2. 项目快速启动
2.1 前提条件
- Helm 3+
- Kubernetes 1.19+
2.2 安装步骤
2.2.1 创建命名空间
首先,创建一个新的命名空间来隔离所有 Caddy 资源:
kubectl create namespace caddy-system
2.2.2 安装 Helm Chart
使用 Helm 安装 Caddy Ingress Controller:
helm install \
--namespace=caddy-system \
--repo https://caddyserver.github.io/ingress/ \
--atomic \
mycaddy \
caddy-ingress-controller
2.2.3 生成 Kubernetes YAML 文件
或者,您可以生成 Kubernetes YAML 文件并手动应用:
git clone https://github.com/caddyserver/ingress.git
cd ingress
# 生成 YAML 文件
helm template mycaddy ./charts/caddy-ingress-controller \
--namespace=caddy-system \
> mycaddy.yaml
# 应用文件
kubectl apply -f mycaddy.yaml
2.3 获取外部 IP
安装完成后,您可以通过以下命令获取 LoadBalancer 的外部 IP 地址:
kubectl get svc -n caddy-system
3. 应用案例和最佳实践
3.1 自动 HTTPS
Caddy Ingress Controller 支持自动 HTTPS 功能,只需在配置中指定您的电子邮件地址即可启用:
helm install \
--set ingressController.config.email=your@email.com \
mycaddy \
caddy-ingress-controller
3.2 On-Demand TLS
On-Demand TLS 允许在请求时动态生成 SSL 证书。您可以通过以下命令启用此功能:
helm install \
--set ingressController.config.onDemandTLS=true \
mycaddy \
caddy-ingress-controller
3.3 自定义证书
如果您希望为特定主机使用自己的证书,可以创建一个 Kubernetes TLS 密钥,并在 Ingress 资源中指定该密钥:
kubectl create secret tls mycerts --key /tls/key --cert /tls/crt
然后在 Ingress 资源中引用该密钥:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
annotations:
kubernetes.io/ingress.class: caddy
spec:
rules:
- host: test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: test
port:
number: 8080
tls:
- secretName: mycerts
hosts:
- test.com
4. 典型生态项目
4.1 Glasskube
Glasskube 是一个 Kubernetes 管理工具,支持通过 GUI 安装和管理 Caddy Ingress Controller。您可以通过 Glasskube 的界面选择 "caddy-ingress-controller" 并点击 "install" 来安装。
4.2 Cert-Manager
Cert-Manager 是一个 Kubernetes 插件,用于自动化证书管理。它可以与 Caddy Ingress Controller 结合使用,提供更强大的证书管理功能。
4.3 Prometheus 和 Grafana
Prometheus 和 Grafana 可以用于监控 Caddy Ingress Controller 的性能和状态,提供详细的监控和报警功能。
通过以上步骤,您可以快速启动并使用 Caddy Ingress Controller,并结合其他生态项目实现更复杂的功能。