在Kubernetes(K8s)集群中,证墨客成平日利用OpenSSL或cfssl等东西。OpenSSL是功能富强的开源东西,而cfssl供给了一套完全的命令行东西,便利证书的生成跟签名。
证墨客成包含公钥跟私钥,私钥必须严格保密,仅限可托人员拜访。以下是一个利用OpenSSL生成证书的示例代码:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
证书发表平日由证书发表机构(CA)停止。可能抉择自签名CA或第三方CA停止证书签发。
cfssl gencert -initca ca-csr.json cfssljson -bare ca
证书平日存储在节点上的特定目录,如/var/lib/kubelet/pki/
。确保遵守命名标准,便利管理跟查找。
确保只有受权的用户跟过程可能拜访证书跟密钥。可能利用Kubernetes的Secrets或ConfigMap来存储证书跟密钥。
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: /var/lib/kubelet/pki/ca.pem
server: https://kubernetes.default.svc
users:
- name: kubelet
user:
token: <token>
context:
cluster: kubernetes
user: kubelet
current-context: kubernetes
将证书跟密钥存储在Kubernetes Secrets中,并经由过程卷挂载或情况变量的方法转达给须要利用证书的Pod。
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: kubernetes.io/token
data:
token: <base64-encoded-token>
将证书跟密钥存储在ConfigMap中,实用于不须要直接拜访证书跟密钥的场景。
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
ca.crt: |
<base64-encoded-ca-certificate>
server.crt: |
<base64-encoded-server-certificate>
server.key: |
<base64-encoded-server-key>
利用如Cert-Manager等东西实现证书的主动续期,确保证书一直有效。
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-certificate
spec:
secretName: my-secret
issuerRef:
name: my-issuer
kind: Issuer
当发明证书被泄漏或被合法利用时,应及时撤消证书,并更新集群中的证书存储。
cfsslctl revoke -ca ca.pem -cert my-certificate.pem -key ca.key
经由过程以上五大年夜关键步调,可能有效管理K8s集群中的证书,保证集群的保险牢固运转。