深入搜索www,没有找到答案:我想知道如何将cert-manager与haproxy-ingress一起使用,并让加密。
是否有任何文档/指南?
发布于 2019-11-20 01:52:34
你可以尝试安装由jetstack提供的证书管理器,可以找到here,然后你需要遵循这个stackoverflow post中提到的步骤,这将为你排序。
内部acme-challenge将由证书管理器完成,一旦您将证书中提到的秘密名称修补到入口的TLS,则证书状态将变为就绪状态,请注意,秘密将自动创建,您不需要创建它。
发布于 2021-07-05 01:30:20
带有kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.yaml的
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.4.0/cert-manager.crds.yaml
cat > prod-issuer.yaml <<EOF
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: email@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: haproxy
EOF使用kubectl apply -f prod-issuer.yaml应用群集颁发者
cat > nginx-ingress.yaml <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-router
namespace: production
annotations:
kubernetes.io/ingress.class: "haproxy"
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- "example.com"
secretName: nginx-tls-secret
rules:
- host: example.com
http:
paths:
- pathType: ImplementationSpecific
path: "/"
backend:
service:
name: nginx
port:
number: 80
- host: www.example.com
http:
paths:
- pathType: ImplementationSpecific
path: "/"
backend:
service:
name: nginx
port:
number: 80
EOF使用kubectl apply -f nginx-ingress.yaml应用入口资源
这里的重要信息是Haproxy控制器不需要nginx- acme.cert-manager.io/http01-edit-in-place: "true"控制器需要的注释。它可以像预期的那样工作,不需要任何额外的注释。当您将Ingress资源应用于集群时,证书将在1-2分钟内颁发。使用kubectl describe certificate nginx-tls-secret -n production检查证书的状态,并查看获取证书的事件。
如需更多调试信息,以防出现问题,请参阅此处https://cert-manager.io/docs/faq/acme/
https://stackoverflow.com/questions/58936695
复制相似问题