k8s自签证书
k8s自签证书通过使用cert-manager来管理证书cert-manager将确保证书有效并且是最新的,并在到期前尝试在配置的时间续订证书part1.安装CustomResourceDefinitions和cert-manager本身:╭─[18:04:19] yup@YP-7-15 ~╰─$ kubectl apply -f https://github.com/jetstack/cert-
·
k8s自签证书
通过使用cert-manager来管理证书
cert-manager将确保证书有效并且是最新的,并在到期前尝试在配置的时间续订证书
part1.安装CustomResourceDefinitions和cert-manager本身:
╭─[18:04:19] yup@YP-7-15 ~
╰─$ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.2.0/cert-manager.yaml
part2.部分资源概述:
1.发行人(代表证书颁发机构) Issuer(命名空间级别)/ClusterIssuer(集群级别)
2.X.509证书Certificate 它引用Issuer和ClusterIssuer来确定将接受证书请求的内容。成功后生成的密钥对会保存在该命名空间下的secret中
3.证书请求CertificateRequest 成功发行后,将根据证书签名请求返回已签名的证书,自动生成 不需要人为去管理
part3.yaml资源清单
00-create-ClusterIssuer.yaml
# 创建一个证书发行人
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: yup-clusterissuer
spec:
# ACME配置这个颁发者与RFC8555 (ACME)服务器通信,以获取签名的x509证书。
acme:
# Email”是需要与ACME帐户关联的邮箱地址。此字段是可选的,当您的帐户或证书有问题时,它将用于与您联系
email: yupeng@q1.com
# 用于存储自动生成的ACME帐户私钥
privateKeySecretRef:
name: yup-clusterissuer-key
# 2021年1月11日之后颁发的新证书需要使用新的CA根目录 需要指定preferredChain参数
# 而不在使用https://acme-staging-v02.api.letsencrypt.org/directory
server: https://acme-v02.api.letsencrypt.org/directory
preferredChain: "ISRG Root X1"
# server: https://acme-v02.api.letsencrypt.org/directory
# preferredChain: "DST Root CA X3"
# 为了从ACME服务器获取证书,必须提供求解器配置
solvers:
- http01:
ingress:
class: nginx
01-create-certificare.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: lianyun-php-cert
namespace: ssjl-lianyun-php
spec:
secretName: lianyun-php-cert-tls
# 该格式不允许d(days)后缀。您必须使用指定这些值s,m和h后缀来代替
duration: 2160h # 90d 有效期
renewBefore: 360h # 15d 到期前15天进行续订
subject:
# 证书上要使用的组织
organizations:
- jetstack
# DNSNames是要在证书上设置的DNS subjectAltNames的列表 域名需要解析之后 Certificate才能创建成功
# 否则会报错 Issuing certificate as Secret does not exist
dnsNames:
- accessly.kairong5.com
#IssuerRef是对该证书颁发者的引用。如果未设置“kind”字段,或将其设置为“Issuer”,则将使用与证书同名的名称空间中的颁发者资源。如果“kind”字段设置为“ClusterIssuer”,则将使用具有提供名称的ClusterIssuer。
issuerRef:
name: yup-clusterissuer
kind: ClusterIssuer
group: cert-manager.io
privateKey:
algorithm: RSA
encoding: PKCS1
size: 2048
part4 查看相关资源
╭─[18:20:48] yup@YP-7-15 ~
╰─$ kubectl get certificaterequests.cert-manager.io,certificate,secret,ClusterIssuer -n ssjl-lianyun-php
NAME READY AGE
certificaterequest.cert-manager.io/lianyun-php-cert-tw6cx True 57m
NAME READY SECRET AGE
certificate.cert-manager.io/lianyun-php-cert True lianyun-php-cert-tls 57m
NAME TYPE DATA AGE
secret/acr-credential-0cd66774c2e1635329078c8ad94a7d92 kubernetes.io/dockerconfigjson 1 13d
secret/acr-credential-518dfd1883737c2a6bde99ed6fee583c kubernetes.io/dockerconfigjson 1 13d
secret/default-token-2r8lz kubernetes.io/service-account-token 3 13d
secret/docker-secret kubernetes.io/dockerconfigjson 1 13d
secret/lianyun-php-cert-tls kubernetes.io/tls 2 56m
NAME READY AGE
clusterissuer.cert-manager.io/yup-clusterissuer True 57m
part5 在阿里云控制台上,给相应的域名开启TLS功能
)]
prat6 检测
https访问域名 当URL前面有个小锁头则代表证书生效
注:
域名需要解析之后 Certificate才能创建成功,否则在describe中会有message“Issuing certificate as Secret does not exist”
Certificate资源所在的命名空间必须和需要自签证书的资源在同一个命名空间
cert-manager详细信息请点击这
更多推荐
已为社区贡献4条内容
所有评论(0)