我正在写一个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 }}
2条答案
按热度按时间zpqajqem1#
您是否尝试过添加一个注解,以便在每次运行
helm install
时更改RoleBinding
清单?资料来源: www.example.com
ct2axkht2#
我唯一能实现的解决方法是创建第二个图表,并在两个图表之间分割模板:
helm upgrade
进行更新helm upgrade --force
现在我已经修改了我的管道来像这样工作,这就是我想要的,但不是最优雅的方式。..