Rancher2.7.1升级至2.7.6后,持续集成功能无法正确获取某些helm的value.yaml值

环境信息:
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.另外还有一点小问题:持续集成页面这些红框部分,如果集群状态正常(三个绿勾),那么点击仓库名称就会跳转白屏。。。
点击区域:


点击后跳转: