0

在安装 helm chart 时,依赖项的条件与以下 Chart.yaml 文件一样有效。但它不允许基于现有 Kubernetes 资源应用条件。

# Chart.yaml 
apiVersion: v1
name: my-chart
version: 0.3.1
appVersion: 0.4.5
description: A helm chart with dependency
dependencies:
  - name: metrics-server
    version: 2.5.0
    repository: https://artifacts.myserver.com/v1/helm
    condition: metrics-server.enabled

我在命名空间(默认)中进行了图表(my-chart)的本地安装,然后我尝试在另一个命名空间(pb)中安装相同的图表我收到以下错误,说明资源已经存在。此资源“system:metrics-server-aggregated-reader”已作为以前的依赖项(metrics-server)安装在集群范围内。以下是重现的步骤。

user@hostname$helm install my-chart -n default --set metrics-server.enabled=true ./my-chart
NAME: my-chart
LAST DEPLOYED: Wed Nov 25 16:22:52 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
My Cluster

user@hostname$helm install my-chart -n pb  --set metrics-server.enabled=true ./my-chart
Error: rendered manifests contain a resource that already exists. Unable to continue with install: ClusterRole "system:metrics-server-aggregated-reader" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-namespace" must equal "pb": current value is "default"

有一种方法可以修改 metrics-server 图表中的模板,以有条件地生成清单文件,如Helm Conditional Templates中所述。为了做到这一点,我必须在内部工件中修改和维护指标服务器图表,这将限制我使用最新的图表。我正在寻找一种方法来查询现有的 Kubernetes 资源“system:metrics-server-aggregated-reader”,并且仅在此类资源不存在时才安装依赖关系图。

4

0 回答 0