cert-manager使用
集群入口是 nginx-ingress 参考这个官方文档
域名有公网解析
域名无公网解析
说明
使用kind安装的k8s集群,并且使用 nginx-ingress 作为入口控制器,所有的域名解析都是 127.0.0.1 ,因域名无公网解析导致CA机构(Let's Encrypt、HashiCorp Vault等)无法验证域名,此时就需要使用 SelfSigned 作为本地CA了
创建issuer
在安装完 cert-manager 之后,第一件需要配置的就是 Issuer 或 ClusterIssuer。这些资源代表了能够对证书签名请求进行签发的证书颁发机构(CA)
说明
Issuer是作用于特定命名空间,ClusterIssuer是作用于全局SelfSigned不依赖于任何资源,因此只需要在资源清单中spec下填写selfSigned即可
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-cluster-issuer
namespace: devops
spec:
selfSigned: {}
这个 Issuer 将用于签发自签名证书
创建certificate
说明
这个 Certificate 资源将使用 selfsigned-cluster-issuer 签发一个自签名的根证书,并将其存储在 root-secret Secret 中
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-selfsigned-ca
namespace: devops
spec:
isCA: true
commonName: my-selfsigned-ca
secretName: root-secret
privateKey:
algorithm: ECDSA
size: 256
issuerRef:
name: selfsigned-cluster-issuer
kind: Issuer
group: cert-manager.io
创建CA issuer
说明
这个 Issuer 将使用之前创建的根证书 root-secret 作为 CA 来签发其他证书
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: my-ca-cluster-issuer
namespace: devops
spec:
ca:
secretName: root-secret
没有部署cert-manager
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
meta.helm.sh/release-name: gitea
meta.helm.sh/release-namespace: devops
creationTimestamp: "2025-04-28T09:01:45Z"
generation: 1
labels:
app: gitea
app.kubernetes.io/instance: gitea
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: gitea
app.kubernetes.io/version: "1.23"
helm.sh/chart: gitea-11.0.1
version: "1.23"
name: gitea
namespace: devops
resourceVersion: "637205"
uid: 6222cb73-3ac9-4498-a759-672361d9f2a0
spec:
ingressClassName: nginx
rules:
- host: gitea.ops.com
http:
paths:
- backend:
service:
name: gitea-http
port:
number: 3000
path: /
pathType: Prefix
status:
loadBalancer: {}

