如何平滑優(yōu)雅地在Rancher2.x中升級cert-manager

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)專注于吳江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城網(wǎng)站制作。吳江網(wǎng)站建設(shè)公司,為吳江等地區(qū)提供建站服務(wù)。全流程按需規(guī)劃網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

如果你正在使用由Rancher提供的Helm Chart在Rancher管理的Kubernetes集群中安裝cert-manager,那么你最近也許收到了Let’s Encrypt發(fā)給你的提醒:

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

在集群中檢查cert-manager的日志,你可以看到Let’s Encrypt拒絕更新證書的請求,因?yàn)椤澳愕腁CME客戶端版本過舊,請升級到更新的版本”。那么,我們現(xiàn)在就開始吧!

使用Rancher提供的Helm Chart進(jìn)行更新

我想你腦海里的第一想法應(yīng)該和我的類似:使用相關(guān)的最新版本的Helm Chart升級cert-manager。大家可以不用考慮這個選項(xiàng),因?yàn)镽ancher提供的cert-manager Helm Chart目前最新的是0.5.2版本,所以別想著一鍵式升級啦!

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

使用官方Helm Chart升級

參考鏈接:https://forums.rancher.com/t/update-on-cert-manager-application-in-the-catalog/15598

計(jì)劃十分簡單:只需要將Rancher提供的cert-manager的Helm Chart移除,并使用Helm中由Jetstack維護(hù)的chart替換即可。

在開始之前,我們需要保持謹(jǐn)慎。從v0.5.2到目前stable的版本v0.11.0,許多內(nèi)容都有所更改。新引入的CRDs和相應(yīng)的配置格式將深刻地影響你的部署。因此,更新升級后,你需要將資源定義更新為新格式。幸運(yùn)的是,cert-manager為我們提供了升級腳本,我們會在下文中用到它。

移除Rancher提供的Helm Chart

1、 登錄你的Rancher UI

2、 切換到最初安裝cert-manager的項(xiàng)目(可能是System)

3、 點(diǎn)擊“APPs”

4、 點(diǎn)擊垂直省略號按鈕,然后選擇“刪除”。

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

現(xiàn)在,你已經(jīng)移除了最開始安裝的cert-manager。請注意,這一操作不會影響此前已經(jīng)創(chuàng)建的證書,并且你的ingress配置應(yīng)該像之前一樣工作。

安裝Tiller

Tiller是Helm的服務(wù)端組件,所以為了能在我們的CLI中使用Helm,我們需要在Kubernetes集群中安裝Tiller。你可以通過運(yùn)行以下命令來驗(yàn)證Tiller是否已經(jīng)安裝:

helm version

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

如果你的輸出結(jié)果與以上結(jié)果類似,那么Tiller并沒有安裝好。如果你已經(jīng)完成安裝,那么請?zhí)^這一部分。

好,現(xiàn)在我們來安裝Tiller。首先,我們需要創(chuàng)建一個服務(wù)賬號,授予我們遠(yuǎn)程安裝Tiller的權(quán)限,然后再授予安裝Chart的權(quán)限。

kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller \
  --clusterrole=cluster-admin \
  --serviceaccount=kube-system:tiller

要啟動安裝Tiller:

helm init --service-account tiller

幾秒鐘之后,你能夠通過重新輸入命令helm version來驗(yàn)證Tiller是否已經(jīng)安裝,或者通過下列命令來驗(yàn)證你的Kubernetes Tiller部署:

kubectl -n kube-system rollout status deploy/tiller-deploy:

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

安裝cert-manager

在安裝cert-manager之前,我們需要做以下準(zhǔn)備:

1、 禁用資源驗(yàn)證,以允許cert-manager的webhook組件正常工作

2、 安裝新的(v0.11.1)的CRDs

3、 添加Jetstack repos

kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.11/deploy/manifests/00-crds.yaml
helm repo add jetstack https://charts.jetstack.io && helm update

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

此時(shí),我們就準(zhǔn)備好安裝并且驗(yàn)證cert-manager

helm install \
  --name cert-manager \
  --namespace cert-manager \
  --version v0.11.0 \
  jetstack/cert-manager
kubectl get pods --namespace cert-manager

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

cert-manager v0.11.0安裝成功

升級舊的資源參考和配置

參考鏈接:

https://cert-manager.io/docs/installation/upgrading/upgrading-0.10-0.11/

如果你檢查你的ingress證書,你會發(fā)現(xiàn)什么都沒有改變。這在意料之中,因?yàn)橹暗陌姹緑0.5.2中使用的ingress定義的配置不適用于v0.11.0。cert-manager為我們提供了簡便的代碼來查找哪個集群資源依舊引用舊的注釋:

kubectl get ingress \
      --all-namespaces \
      -o json | \
      jq '.items[] | select(.metadata.annotations| to_entries | map(.key)[] | test("certmanager")) | "Ingress resource \(.metadata.namespace)/\(.metadata.name) contains old annotations: (\( .metadata.annotations | to_entries | map(.key)[] | select( . | test("certmanager") )  ))"'

如何平滑優(yōu)雅地在Rancher 2.x中升級cert-manager

根據(jù)你的Kubernetes集群部署數(shù)量,以上列表可能會更短也可能會更長。而嘗試去手動更改所有部署的舊注釋可能會花費(fèi)相當(dāng)長的時(shí)間。以下CLI工具可以自動執(zhí)行這一過程,但它不會對你的集群造成任何更改:

# 首先,根據(jù)你的平臺下載二進(jìn)制文件
wget -O api-migration https://github.com/jetstack/cert-manager/releases/download/v0.11.0/api-migration-linux
# 或者根據(jù)Darwin
wget -O api-migration https://github.com/jetstack/cert-manager/releases/download/v0.11.0/api-migration-darwin

# 將二進(jìn)制文件標(biāo)記為可執(zhí)行文件,然后對集群運(yùn)行二進(jìn)制文件
chmod +x api-migration && ./api-migration --kubeconfig /path/to/my/kubeconfig.yaml

# 查看CLI的輸出結(jié)果并且檢查文件中的差異
diff ingress.yaml ingress-migrated.yaml

# 最后,review了新的ingress資源之后,應(yīng)用manifest
kubectl apply -f ingress-migrated.yaml --kubeconfig /path/to/my/kubeconfig.yaml

請確保更新所有Ingress資源,以保證您的證書保持最新狀態(tài)。

重新引入集群Issuer

我們現(xiàn)在基本上完成了,最后一步是我們需要重新引入集群Issuer(如果你只希望將kind注釋更改為Issuer,也可以選擇每個命名空間的Issuer)。

使用Let’s Encrypt stage和Production以及HTTP01創(chuàng)建兩個集群Issuer,以下是代碼摘要:

---
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    email: example@example.com
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-staging-account-key
    solvers:
    - http01:
        ingress:
          class: nginx
---
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    email: example@example.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: letsencrypt-prod-account-key
    solvers:
    - http01:
        ingress:
          class: nginx

在一兩分鐘之后,你的所有ingress都將更新為指向新頒發(fā)的證書。但是請記住,如果你之前的證書不在續(xù)訂窗口內(nèi),那么你不會發(fā)現(xiàn)任何差異。針對Rancher本身的應(yīng)用,cert-manager支持的最高版本是v0.9,如果是自有的應(yīng)用服務(wù),可以支持最新版本。由于眾所周知的原因,在國內(nèi)不推薦使用cert-manager,建議使用10年有效期的自簽名證書。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

本文名稱:如何平滑優(yōu)雅地在Rancher2.x中升級cert-manager
標(biāo)題URL:http://muchs.cn/article0/jsogio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、App設(shè)計(jì)、企業(yè)網(wǎng)站制作全網(wǎng)營銷推廣、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司