如何在Openshift中管理设置?

时间:2019-01-16 05:48:12

标签: openshift keycloak

  在存储库的源代码中找不到

profile.properties文件?

是否可以在openshift中使用环境变量? 如果是,如何在Openshift环境中设置-Dkeycloak.profile.feature.scripts=enabled

1 个答案:

答案 0 :(得分:0)

环境变量是Openshift中的一流概念。有很多使用它们的方法:

  1. 您可以直接在BuildConfig上设置它们,以“将它们放入”容器中。这不是最佳做法,因为在环境中移动它们时它们不会改变,但是可能有必要配置您的构建或设置不会改变的东西(例如,设置node.js使用的端口号以匹配官方节点)带有“ PORT = 8080”的.js图片)
  2. 您可以将此类变量放入ConfigMap或Secret配置对象中,以在许多相似的BuildConfig之间轻松共享它们
  3. 您可以直接在DeploymentConfig上设置它们,以便为该部署启动的每个Pod设置它们。这是设置特定于应用程序的环境变量的相当普遍的方式。将其用于在多个应用程序之间共享的设置不是一个好主意,因为您将不得不在许多地方更改公共变量。
  4. 您可以在ConfigMap和Secrets中进行设置,并将它们应用于多个DeploymentConfig。这样,您可以在一处管理它们。

经常看到开发人员使用.env命名的.gitignore文件,而不是git。过去,我曾编写脚本将其加载到openshift中的Secret中,然后使用envFrom在部署中设置该Secret。然后有一个.env.staging.env.live,我们git secret加密成git。

.env文件的问题在于,它们有时会变得凌乱,并且一段时间后会出现未使用的垃圾。因此,我们将文件分为一个Secret(秘密)作为数据库凭据,为每个api凭据分别设置Secrets(秘密),针对应用程序特定设置的ConfigMap。用于共享设置的ConfigMap。

这些天,我们使用Helmfile基于git webhooks从git加载所有配置。所有配置都是git repo中的yaml(已加密秘密yaml)。如果将对git git repo的更改合并,则Webhook处理程序将解密该配置并运行Helmfile以更新openshift中的设置。我正在开源所有内容,包括使用聊天机器人来管理GitHub

上的发布(可选)

我还应该说openshift自动创建许多环境变量来帮助您配置应用程序。在每个项目中,每个窗格中都设置了许多变量,这些变量告诉您​​在该项目中设置的所有服务的详细信息。

Openshift还会为您的服务设置内部dns条目。这意味着,如果应用程序A使用应用程序B,则无需自己为B配置URL。而是会有一个B的dns条目,您可以使用openshift在A上设置的env var来计算该dns条目和要使用的端口号(例如dns条目包括项目名称,并自动设置为env var通过openshift)。因此,我们的应用程序可以使用该技术找到在同一项目中运行的redis服务。