环境信息:
RKE2 版本: v1.26.8 +rke2r1
节点 CPU 架构,操作系统和版本:
Centos 7 x64 内核版本:6.1.8-1.el7.elrepo.x86_64
集群配置:
验证环境由3台Controller和3台worker组成,部署rke2版本v1.26.8 +rke2r1(实际1.24和1.26都试过了一样的毛病),cni为cilium并取代kube-proxy
问题描述:
rancher server在升级到了2.7.6之后,持续集成功能无法正确获取helm chart的一些value
重现步骤:
最近在升级rancher集群,测试环境rancher从2.7.1升级到了2.7.6。
集群业务的部署依托于rancher的持续集成功能,其中有直接基于yaml文件部署,也有基于helm chart的部署。
helm chart部署中,有一个用nfs作pvc的chart(GitHub - kubernetes-sigs/nfs-subdir-external-provisioner: Dynamic sub-dir volume provisioner on a remote NFS server. ),它的values.yaml如下:
image:
repository: xxx.xxx.xxx.xxx/k8s.gcr.io/sig-storage/nfs-subdir-external-provisioner
name: nfs-client-log
nfs:
mountOptions:
- nfsvers=4.1
- rsize=1048576
- wsize=1048576
path: /home/rke2/nfs_log
server: xxx.xxx.xxx.xxx
storageClass:
accessModes: ReadWriteMany
defaultClass: true
name: nfs-client-log
pathPattern: ${.PVC.namespace}/${.PVC.name}
reclaimPolicy: Delete
其中有个变量pathPattern的值为${.PVC.namespace}/${.PVC.name}
,这个变量在之前的rancher.v2.7.1版本中是可以正确识别并部署的:
# kubectl get storageclasses.storage.k8s.io nfs-client-log -o yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
meta.helm.sh/release-name: nfs-client-provisioner-log
meta.helm.sh/release-namespace: default
objectset.rio.cattle.io/id: default-prod-auto-deployment-shard-services-chart-nfs-log
storageclass.kubernetes.io/is-default-class: "true"
creationTimestamp: "2023-02-01T07:57:43Z"
labels:
app: nfs-subdir-external-provisioner
app.kubernetes.io/managed-by: Helm
chart: nfs-subdir-external-provisioner-4.0.17
heritage: Helm
objectset.rio.cattle.io/hash: 1197f9a6f86dcc6b373a502fd11f3449a989fbfb
release: nfs-client-provisioner-log
name: nfs-client-log
resourceVersion: "179453"
uid: 5d64420d-6d54-42c2-8b2b-d18b897e6c0a
mountOptions:
- nfsvers=4.1
- rsize=1048576
- wsize=1048576
parameters:
archiveOnDelete: "true"
pathPattern: ${.PVC.namespace}/${.PVC.name}
provisioner: cluster.local/nfs-client-provisioner-log-nfs-subdir-external-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate
但是在2.7.6的持续集成功能下,部署会失败:
看上去貌似是没有正确的处理这个参数,除非我注释掉
pathPattern: ${.PVC.namespace}/${.PVC.name}
这一行,才能正常部署,但是这个参数就没办法打上去了。
相关参数说明:
查看 fleet-controller的日志报错信息如下:
日志
time=“2023-09-23T07:11:50Z” level=error msg=“error syncing ‘fleet-default/hlet-temp-ci-rancher-new-version-test-chart-nfs-dfdf3’: handler bundle: failed to render helm values template: template: values:15:21: executing “values” at <.PVC.namespace>: map has no entry for key “PVC”, requeuing”
还请开发看一下这个问题。
PS.另外还有一点小问题:持续集成页面这些红框部分,如果集群状态正常(三个绿勾),那么点击仓库名称就会跳转白屏。。。
点击区域:
点击后跳转: