kubernetes Helm不升级角色绑定

gtlvzcf8  于 2023-04-29  发布在  Kubernetes
关注(0)|答案(2)|浏览(201)

我正在写一个Helm Chart来帮助我们为不同的项目提供名称空间。该图表负责创建命名空间、服务帐户、限制、配额、卷和角色绑定。
到目前为止一切都很好,除了一点。..
如果运行helm upgrade,Helm似乎不会更新角色绑定。
我们希望能够定期重新应用图表,以纠正与参考点的任何偏差。
实际上,helm upgrade所做的是在rolebinding不存在的情况下创建正确的rolebinding,但是在rolebinding已经存在的情况下,但是对于不同的用户/组主题,它不会纠正它。
我能够通过指定helm upgrade --force来执行这一点。在本例中,正在重新创建角色绑定,但是,我不能使用此技术:--force选项在用于名称空间时重新创建名称空间的用户ID(sa.uid-range),然后任何NFS装载的卷都必须手动“chown”到新UID。..
我尝试使用注解“ www.example.com ”,但这没有帮助。
我被这两个选择困住了:

  • 使用“--force”,在这种情况下,角色绑定将相应地重新创建,但命名空间UID更改,这会导致NFS权限问题
  • 不使用“--force”和生活与事实,即rolebinding定义在我的 Helm 模板可能不是一个我需要的,他们可以偏离。

解决方案是将图表分为两部分:一个负责命名空间的创建,一个负责内部的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 }}
zpqajqem

zpqajqem1#

您是否尝试过添加一个注解,以便在每次运行helm install时更改RoleBinding清单?

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

资料来源: www.example.com

ct2axkht

ct2axkht2#

我唯一能实现的解决方法是创建第二个图表,并在两个图表之间分割模板:

  • 一个图表负责名称空间的创建,该图表使用helm upgrade进行更新
  • 一个图表负责命名空间内的对象,如rolebindings、serviceaccounts、volumes等。..已更新为helm upgrade --force

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

相关问题