日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cert manager自动签发/更新证书

發布時間:2024/1/23 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cert manager自动签发/更新证书 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cert manager使用的是免費證書Let's Encrypt,并支持在證書過期時自動更新。

本文?Cert manager使用版本:v0.12.0

官方文檔:https://cert-manager.io/docs

添加helm源

注意stable/cert-manager已經過時不再維護了,轉到jetstack/cert-manager。

helm repo add jetstack https://charts.jetstack.io

?更新源

helm repo update

創建CRDs

  • kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.12/deploy/manifests/00-crds.yaml

  • ?
  • kubectl create -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.12/deploy/manifests/00-crds.yaml

  • 安裝

    這里設置了兩個默認值

    --set ingressShim.defaultIssuerName=letsencrypt-prod

    --set ingressShim.defaultIssuerKind=ClusterIssuer

    --set ingressShim.defaultIssuerGroup=cert-manager.io

    用于在后續創建Ingress時,配合annotations

    kubernetes.io/tls-acme: "true"
    kubernetes.io/ingress.class: "nginx"

    實現自動創建證書。

    helm install --name cert-manager --namespace cert-manager --set ingressShim.defaultIssuerName=letsencrypt-prod --set ingressShim.defaultIssuerKind=ClusterIssuer --set ingressShim.defaultIssuerGroup=cert-manager.io jetstack/cert-manager

    查看安裝是否完成

  • [root@k8s-master cert]# kubectl get pod -n cert-manager

  • NAME READY STATUS RESTARTS AGE

  • cert-manager-5cd477f7bb-fxpvf 1/1 Running 0 22m

  • cert-manager-cainjector-df4dc78cd-l527b 1/1 Running 0 22m

  • cert-manager-webhook-5f78ff89bc-ggvqt 1/1 Running 0 22m

  • [root@k8s-master cert]# kubectl get crd | grep cert-manager

  • certificaterequests.cert-manager.io 2020-01-07T01:38:32Z

  • certificates.cert-manager.io 2020-01-07T01:38:32Z

  • challenges.acme.cert-manager.io 2020-01-07T01:38:32Z

  • clusterissuers.cert-manager.io 2020-01-07T01:38:32Z

  • issuers.cert-manager.io 2020-01-07T01:38:32Z

  • orders.acme.cert-manager.io 2020-01-07T01:38:32Z

  • 創建默認簽發機構(官方文檔)

    剛剛安裝時已經指定了默認簽發類型是ClusterIssuer?,簽發機構名稱是letsencrypt-prod?,但是我們還沒有創建,現在需要創建cluster-issuer.yaml。?

    cert-manager 給我們提供了 Issuer 和 ClusterIssuer 這兩種用于創建簽發機構的自定義資源對象,Issuer?只能用來簽發自己所在 namespace 下的證書,ClusterIssuer?可以簽發任意 namespace 下的證書.

  • apiVersion: cert-manager.io/v1alpha2

  • kind: ClusterIssuer

  • metadata:

  • name: letsencrypt-prod

  • spec:

  • acme:

  • server: https://acme-v02.api.letsencrypt.org/directory

  • email: 1154365135@qq.com

  • privateKeySecretRef:

  • name: letsencrypt-prod

  • solvers:

  • - http01:

  • ingress:

  • class: nginx

  • 上述配置:參考鏈接

    • metadata.name 是我們創建的簽發機構的名稱,后面我們創建證書的時候會引用它
    • spec.acme.email 是你自己的郵箱,證書快過期的時候會有郵件提醒,不過 cert-manager 會利用 acme 協議自動給我們重新頒發證書來續期
    • spec.acme.server 是 acme 協議的服務端,我們這里用 Let’s Encrypt,這個地址就寫死成這樣就行
    • spec.acme.privateKeySecretRef 指示此簽發機構的私鑰將要存儲到哪個 Secret 對象中,名稱不重要
    • spec.acme.http01 這里指示簽發機構使用 HTTP-01 的方式進行 acme 協議 (還可以用 DNS 方式,acme 協議的目的是證明這臺機器和域名都是屬于你的,然后才準許給你頒發證書)
    kubectl create -f cluster-issuer.yaml kubectl get clusterissuer

    配置ingress

  • apiVersion: extensions/v1beta1

  • kind: Ingress

  • metadata:

  • annotations:

  • kubernetes.io/ingress.class: nginx

  • kubernetes.io/tls-acme: "true"

  • nginx.ingress.kubernetes.io/backend-protocol: HTTPS

  • nginx.ingress.kubernetes.io/ssl-redirect: "true"

  • labels:

  • app: kubernetes-dashboard

  • chart: kubernetes-dashboard-1.10.0

  • heritage: Tiller

  • release: kubernetes-dashboard

  • name: kubernetes-dashboard

  • namespace: kube-system

  • spec:

  • rules:

  • - host: k8s.deri.com

  • http:

  • paths:

  • - backend:

  • serviceName: kubernetes-dashboard

  • servicePort: 443

  • path: /

  • tls:

  • - hosts:

  • - k8s.deri.com

  • secretName: deri-com-tls-secret-cc

  • 由于添加了annotations kubernetes.io/tls-acme: "true",tls這個secret會自動創建。

    卸載

  • helm delete --purge cert-manager

  • kubectl delete -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.12/deploy/manifests/00-crds.yaml

  • Check

  • [root@master ~]# kubectl get certificate -n gateway

  • NAME READY SECRET AGE

  • consul-tls-test True consul-tls-test 19m

  • ?
  • [root@master ~]# kubectl get clusterissuer

  • NAME READY AGE

  • letsencrypt-prod True 157m

  • ?
  • [root@master ~]# kubectl get certificate -n gateway

  • NAME READY SECRET AGE

  • consul-tls-test True consul-tls-test 19m

  • ?
  • [root@master ~]# kubectl get Order -n gateway

  • NAME STATE AGE

  • consul-tls-test-3546184973-1845474898 valid 20m

  • ?
  • [root@master ~]# kubectl get CertificateRequest -n gateway

  • NAME READY AGE

  • consul-tls-test-3546184973 True 27m

  • ?
  • [root@master ~]# kubectl get secret -ngateway

  • NAME TYPE DATA AGE

  • consul-tls-test kubernetes.io/tls 3 29m

  • ?

    總結

    以上是生活随笔為你收集整理的Cert manager自动签发/更新证书的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。