在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何平滑优雅地在Rancher 2.x中升级cert

115次阅读
没有评论

共计 4232 个字符,预计需要花费 11 分钟才能阅读完成。

如何平滑优雅地在 Rancher 2.x 中升级 cert-manager,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

如果你正在使用由 Rancher 提供的 Helm Chart 在 Rancher 管理的 Kubernetes 集群中安装 cert-manager,那么你最近也许收到了 Let’s Encrypt 发给你的提醒:

在集群中检查 cert-manager 的日志,你可以看到 Let’s Encrypt 拒绝更新证书的请求,因为“你的 ACME 客户端版本过旧,请升级到更新的版本”。那么,我们现在就开始吧!

使用 Rancher 提供的 Helm Chart 进行更新

我想你脑海里的第一想法应该和我的类似:使用相关的最新版本的 Helm Chart 升级 cert-manager。大家可以不用考虑这个选项,因为 Rancher 提供的 cert-manager Helm Chart 目前最新的是 0.5.2 版本,所以别想着一键式升级啦!

使用官方 Helm Chart 升级

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

计划十分简单:只需要将 Rancher 提供的 cert-manager 的 Helm Chart 移除,并使用 Helm 中由 Jetstack 维护的 chart 替换即可。

在开始之前,我们需要保持谨慎。从 v0.5.2 到目前 stable 的版本 v0.11.0,许多内容都有所更改。新引入的 CRDs 和相应的配置格式将深刻地影响你的部署。因此,更新升级后,你需要将资源定义更新为新格式。幸运的是,cert-manager 为我们提供了升级脚本,我们会在下文中用到它。

移除 Rancher 提供的 Helm Chart

1、登录你的 Rancher UI

2、切换到最初安装 cert-manager 的项目(可能是 System)

3、点击“APPs”

4、点击垂直省略号按钮,然后选择“删除”。

现在,你已经移除了最开始安装的 cert-manager。请注意,这一操作不会影响此前已经创建的证书,并且你的 ingress 配置应该像之前一样工作。

安装 Tiller

Tiller 是 Helm 的服务端组件,所以为了能在我们的 CLI 中使用 Helm,我们需要在 Kubernetes 集群中安装 Tiller。你可以通过运行以下命令来验证 Tiller 是否已经安装:

helm version

如果你的输出结果与以上结果类似,那么 Tiller 并没有安装好。如果你已经完成安装,那么请跳过这一部分。

好,现在我们来安装 Tiller。首先,我们需要创建一个服务账号,授予我们远程安装 Tiller 的权限,然后再授予安装 Chart 的权限。

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 来验证 Tiller 是否已经安装,或者通过下列命令来验证你的 Kubernetes Tiller 部署:

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

安装 cert-manager

在安装 cert-manager 之前,我们需要做以下准备:

1、禁用资源验证,以允许 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

此时,我们就准备好安装并且验证 cert-manager

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

cert-manager v0.11.0 安装成功

升级旧的资源参考和配置

参考链接:

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

如果你检查你的 ingress 证书,你会发现什么都没有改变。这在意料之中,因为之前的版本 v0.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) ) ))

根据你的 Kubernetes 集群部署数量,以上列表可能会更短也可能会更长。而尝试去手动更改所有部署的旧注释可能会花费相当长的时间。以下 CLI 工具可以自动执行这一过程,但它不会对你的集群造成任何更改:

#  首先,根据你的平台下载二进制文件
wget -O api-migration https://github.com/jetstack/cert-manager/releases/download/v0.11.0/api-migration-linux
#  或者根据 Darwin
wget -O api-migration https://github.com/jetstack/cert-manager/releases/download/v0.11.0/api-migration-darwin
#  将二进制文件标记为可执行文件,然后对集群运行二进制文件
chmod +x api-migration   ./api-migration --kubeconfig /path/to/my/kubeconfig.yaml
#  查看 CLI 的输出结果并且检查文件中的差异
diff ingress.yaml ingress-migrated.yaml
#  最后,review 了新的 ingress 资源之后,应用 manifest
kubectl apply -f ingress-migrated.yaml --kubeconfig /path/to/my/kubeconfig.yaml

请确保更新所有 Ingress 资源,以保证您的证书保持最新状态。

重新引入集群 Issuer

我们现在基本上完成了,最后一步是我们需要重新引入集群 Issuer(如果你只希望将 kind 注释更改为 Issuer,也可以选择每个命名空间的 Issuer)。

使用 Let’s Encrypt stage 和 Production 以及 HTTP01 创建两个集群 Issuer,以下是代码摘要:

---
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
 name: letsencrypt-staging
spec:
 acme:
 email: [email protected]
 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: [email protected]
 server: https://acme-v02.api.letsencrypt.org/directory
 privateKeySecretRef:
 name: letsencrypt-prod-account-key
 solvers:
 - http01:
 ingress:
 class: nginx

在一两分钟之后,你的所有 ingress 都将更新为指向新颁发的证书。但是请记住,如果你之前的证书不在续订窗口内,那么你不会发现任何差异。针对 Rancher 本身的应用,cert-manager 支持的最高版本是 v0.9,如果是自有的应用服务,可以支持最新版本。由于众所周知的原因,在国内不推荐使用 cert-manager,建议使用 10 年有效期的自签名证书。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计4232字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 西西444www无码大胆 | 成人免费网站 | 中文字幕免费视频 | 亚洲成人在线免费 | 2hhhh在线视频免费观看 | 日本一道免费一区二区三区 | 狠狠色狠狠色88综合日日91 | 在线 中文字幕 日韩 欧美 | 国产肉体xxxx裸体137大胆 | 欧美一a一片一级一片 | 欧美性精品不卡在线观看 | 国产一区二区三区免费视频 | 久草视频在线首页 | 七次狼最新首页 | 琪琪电影院色婷婷香蕉 | av午夜福利一片免费看久久 | 一级午夜a毛片免费视频 | 欧美成人毛片一级在线 | 伊人狠狠色丁香综合尤物 | 人人妻人人澡人人爽人人精品97 | 日韩精品一区二区午夜成人版 | 国产一级做a爱片久久毛片a | 九九久久国产精品 | 亚洲精品无码久久久久 | 欧美韩国日本 | 中文字幕av伊人av无码av | 欧美亚洲精品小说一区二三区 | 97久久精品人人做人人爽 | 日躁夜躁狠狠躁2001 | 久久久影视 | 免费在线黄色电影 | 在线亚洲天堂 | 91日韩高清在线观看播放 | 最新国产三级在线不卡视频 | 国产成人精品一区二区三区 | 欧美颜射内射中出口爆在线 | 欧美成视频在线观看 | 无码综合天天久久综合网 | 国产成人综合亚洲欧美天堂 | 国模吧双双大尺度炮交gogo | 成人黄色网址 |