当前位置: 首页 > 知识库问答 >
问题:

创建名称空间和密码,仅当不存在时进行修补

翟浩穰
2023-03-14

在我的CI中,我运行一个helm-upgrade命令来发布一个应用程序。但如果它是一个不存在的应用程序,我必须创建名称空间、一个秘密并修补serviceaccount。所以我想到了这个:

kubectl create namespace ${namespace} --dry-run=client -o yaml | kubectl apply -f -
kubectl create secret docker-registry gitlab-registry --namespace ${namespace} --docker-server="\${CI_REGISTRY}" --docker-username="\${CI_DEPLOY_USER}" --docker-password="\${CI_DEPLOY_PASSWORD}" --docker-email="\${GITLAB_USER_EMAIL}" -o yaml --dry-run=client | kubectl apply -f -
kubectl patch serviceaccount default -p '{"imagePullSecrets":[{"name":"gitlab-registry"}]}' --namespace ${namespace}

这是工作,但我认为这不是完美的方式,因为这三个步骤应该只做一次。:只有当应用程序/命名空间/秘密不存在时

共有1个答案

卫增
2023-03-14

Helm提供了--create namespace开关,如果发布的名称空间不存在,它将创建该名称空间。

这个秘密可以添加到你的舵机图表中,你可以将变量(CI_REGISTRYCI_DEPLOY_USER等)作为舵机图表值传递进来,或者作为--set值,或者通过values.yaml文件,并使用--value

服务号修补可以作为安装后和/或升级后的工作(https://helm.sh/docs/topics/charts_hooks/)

 类似资料:
  • 我有java应用程序,通过执行查询将应用程序中使用的所有cassandra表初始化为一个。它在本地运行良好,并与Apache Cassandra 3.3远程测试服务器一起运行。然而,当我在具有3个节点的Cassandra 3.3集群的生产中运行它时,它创建了前22个表,并总是在一个特定的表处停止,出现错误 导致此问题的查询是: 创建表,如果不存在userrecom_newusers(userid

  • 我只是用MVVM轻型工具包编写一些培训窗口项目。当MVVM Light引用添加到项目中时,下面的资源被自动添加到app.xml中 不幸的是,它不起作用,即由于以下错误,无法构建/编译项目: 我找到了几种针对此问题的常见解决方案(例如:更改解决方案平台、清理、重建、重新启动Visual Studio等),但它们并没有改变什么。创建一个新项目也没有帮助。 有没有其他办法让它起作用?我使用Visual

  • 基于这个类似的问题,我想要一种性能最好的方法来处理这个场景。 不幸的是,IF不存在,并且EXISTS不能用于匹配或查找唯一节点。 null

  • 问题内容: 在Python中,命名空间包可让您在多个项目中传播Python代码。当您要将相关的库作为单独的下载发布时,这很有用。例如,目录和中, 最终用户可以和。 定义名称空间包的最佳方法是什么,以便多个Python产品可以在该名称空间中定义模块? 问题答案: TL; DR: 在Python 3.3上,您无需执行任何操作,只需将任何内容都不放在名称空间包目录中即可使用。在3.3之前的版本中,请选择

  • 我在一个多租户节点应用程序中工作,我知道要在Kubernetes中创建一个新的命名空间,可以运行一个kubectl命令,如下所示:

  • 问题内容: 在本教程中:http : //www.asp.net/web-api/videos/getting-started/custom- validation Jon使用 与 我猜这里是JsonObject:http : //msdn.microsoft.com/zh- cn/library/system.json.jsonobject( v=vs.110) .aspx位于: 命名空间:Sy