k8s使用volume将ConfigMap作为文件或目录直接挂载_两种方法,轻松上手ConfigMap!

属性配置文件在任何应用程序中都非常重要。它们不仅可以让应用程序具备灵活性,还能够根据文件中配置的值产生不同的功能。实际上,在staging、开发、测试、UAT或生产环境中,我们都使用属性配置文件来驱动不同的行为。

通常情况下,属性配置文件会与代码一起打包,并且整个程序包都部署在执行环境中。这一方法中,如果你想更改任何配置(即便配置文件中也发生了更改),你需要重新发布代码。尽管这种方法行之有效,但是对于现在而言,效率还是太低了。因此我们需要一种外部化的配置。

在本文中,我将阐述Kubernetes如何为容器提供外部化、灵活的配置以及可移植性。ConfigMap主要是为了让应用程序的配置和部署解耦,这一功能可以让容器化应用程序具备可移植性。

如果你对Spring Cloud的生态很熟悉,那么接下来你会发现ConfigMap与Spring Cloud server十分类似。这里有两种使用ConfigMap的方法:

  1. 将ConfigMap作为一种环境变量

  2. 将ConfigMap挂载为文件

让我们开始进行实践!我们将使用一个简单的应用程序,基于Spring Boot、Docker和Kubernetes进行演示。

k8s使用volume将ConfigMap作为文件或目录直接挂载_两种方法,轻松上手ConfigMap!_第1张图片

将ConfigMap作为一种环境变量

在本例中,我们将在Kubernetes中创建一个新的环境变量,并将其用于代码中。在Java中,可以通过System.getenv(String) API在代码中使用环境变量。在常规Java应用程序中,可以在J2EE应用程序容器(如Oracle WLS或IBM WAS)中设置环境变量,也可以在OS中设置环境变量。然而,在Kubernetes中情况并不相同。要使用环境变量,我们必须根据literal创建配置映射。

87deefcdfbed0f44b885927cd9730439.png

通过kubectl create configmap 命令,我们创建了两个环境变量:app.name 和 app.desc。

我们来了解一下这背后发生了什么。

你可能感兴趣的:(k8s使用volume将ConfigMap作为文件或目录直接挂载_两种方法,轻松上手ConfigMap!)