Helm 不升级角色绑定

问题描述 投票:0回答:2

我正在编写一个 Helm Chart 来帮助我们为不同的项目提供命名空间。 该图表负责创建命名空间、服务帐户、限制、配额、卷和角色绑定。

到目前为止,除了一点之外,它运行得很好......

如果您运行

helm upgrade
,Helm 似乎不会更新角色绑定。

我们希望能够定期重新应用图表,以纠正与参考点的任何偏差。

实际上,

helm upgrade
所做的是创建正确的角色绑定(如果它不存在),但是如果角色绑定已经存在,但具有不同的用户/组主题,则它不会纠正它。

我可以通过指定

helm upgrade --force
来强制执行此操作。在这种情况下,角色绑定正在重新创建,但是,我无法使用此技术:在命名空间上使用
--force
选项时,会重新创建命名空间的用户 ID (sa.scc.uid-range),然后重新创建任何 NFS 安装的卷必须手动“chown”到新的 UID ...

我尝试在命名空间上使用注释“helm.sh/resource-policy=keep”,但这没有帮助。

我被这两个选项困住了:

  • 使用“--force”,在这种情况下,角色绑定会相应地重新创建,但名称空间 UID 更改会导致 NFS 权限问题
  • 不使用“--force”,并且要接受这样一个事实:我的头盔模板中定义的角色绑定可能不是我需要的,它们可能会发生偏差。

一种解决方案是将图表分为两部分:一部分负责命名空间创建,另一部分负责内部的 k8s 对象,但我不太喜欢这样。

也许有人有更好的主意?

---
{{- range .Values.evsEnv }}
apiVersion: authorization.openshift.io/v1
kind: RoleBinding
metadata:
  name: evs-rb-admin
  namespace: {{ $.Values.evsName }}-{{ .name }}
roleRef:
  name: admin
subjects:
  {{- range $.Values.evsGroupAdmin }}
  - kind: Group
    name: {{ . | quote }}
  {{- end }}
  {{- range $.Values.evsUserAdmin }}
  - kind: User
    name: {{ . | quote }}
  {{- end }}
  - kind: User
    name: {{ $.Values.evsRequester | quote }}
---
{- end }}
kubernetes openshift kubernetes-helm
2个回答
0
投票

您是否尝试过添加注释,使您的

RoleBinding
清单在每次运行时都会发生变化
helm install

metadata:
    annotations:
        rollme: {{ randAlphaNum 8 | quote }}

来源:https://helm.sh/docs/howto/charts_tips_and_tricks/#automatically-roll-deployments


0
投票

我可以实施的唯一解决方法是创建第二个图表并在两个图表之间拆分我的模板:

  • 一个图表负责命名空间的创建,并使用
    helm upgrade
  • 进行更新
  • 一个图表负责命名空间内的对象,例如角色绑定、服务帐户、卷...,并使用
    helm upgrade --force
  • 进行更新

现在我已经修改了我的管道以像这样工作,这就是我想要的,但这不是最优雅的方式......

© www.soinside.com 2019 - 2024. All rights reserved.