在 CentOS 上搭建 Kubernetes(k8s)并“加证书”,通常有三种常见场景,我先帮你区分一下,然后分别说做法:
比如 kube-apiserver、etcd、kubelet 等组件证书
kubeadm 默认自动生成证书,一般在:
/etc/kubernetes/pki/
查看证书:
ls /etc/kubernetes/pki/
查看某个证书有效期:
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not
kubeadm certs renew all
然后重启相关组件:
systemctl restart kubelet
比如 https://example.com
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.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.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
tls:
- hosts:
- example.com
secretName: example-tls
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-svc
port:
number: 80
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout tls.key \
-out tls.crt \
-subj "/CN=example.com"
kubectl create secret tls example-tls \
--cert=tls.crt \
--key=tls.key
spec:
tls:
- hosts:
- example.com
secretName: example-tls
你可以告诉我:
我可以直接给你 可复制的命令或 yaml。