ConfigMap怎么使用

76次阅读
没有评论

共计 2330 个字符,预计需要花费 6 分钟才能阅读完成。

本篇内容介绍了“ConfigMap 怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

将 ConfigMap 作为一种环境变量

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

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

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

现在注意数据部分,在数据部分下,你会找到键值对。从技术上来说,ConfigMap 仅仅是键值存储。属性的名称是键,属性的值是值。应用程序的代码会要求你查找这些键值对。

为了在 Java 代码中使用此环境变量,我们需要编写以下代码:

下面的代码段定义了两个 K8s 环境变量,分别为“SPRING_BOOT_HELLO_WORLD_APP_NAME”和“SPRING_BOOT_HELLO_WORLD_DESC”。这些变量将从 ConfigMap app-env-config 获取值。需要重点关注的是键。

属性配置文件可以在单个文件中保存很多个属性,以在不同环境中运行应用程序。在 Spring Boot 应用程序中,属性保存在 classpath 下的 application.properties 文件中。我们来看一下打包在应用程序 jar 包中的 application.properties 文件。

我们正在使用命令 kubectl create configmap 从单个文件或从多个文件创建 ConfigMap。

现在让我们查看完整的代码。

将 ConfigMap 挂载为文件

在本节中,我将说明如何使用 ConfigMap 挂载文件以外部化配置。在此示例中,我将使用 ConfigMap 来外部化 application.properties 文件。即使默认文件打包在 jar 中,也位于 src / main / resources 下。简单来说,我们将通过 ConfigMap 所提供的文件来覆盖默认文件。

第一步是从 application.properties 创建 ConfigMap。让我们了解如何在 K8s 中存储此 ConfigMap。

通过 ConfigMap,我们将挂载 application.properties 文件到 K8s 集群中,并且可以在应用程序中使用它。请注意,数据部分包含了 application.properties 的内容,键是文件名。

现在,为了覆盖默认配置文件,我们需要(通过 ConfigMap)将 application.properties 挂载到应用程序的 classpath 中。Spring Boot 通过提供不同的选项来提供这一功能。SpringApplication 在以下位置从 application.properties 文件加载属性,并将它们添加到 Spring Environment:

当前目录的 /config 子目录

当前目录

classpath / config 包

The classpath root

如果你想了解更多信息,可以查阅官方文档:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

最简单,最好的方法是将 application.properties 挂载在“/ config”目录中。

仔细检查挂载路径,请注意 ConfigMap 的名称应与我们在上面创建的 app-file-configmap 完全相同,键为文件名。另外,请确保将 volume mount 配置的名称更改为 volume 配置的名称。

这段代码说明了如何在 application.properties 文件中定义属性。如果使用 Spring 推荐的标准方法的话,这十分简单。具体而言,就是使用 @Value 注释将属性值注入到变量中。

现在,我们可以继续进行 ConfigMap 示例应用程序了。我们来看一下完整的代码段。

ConfigMap 怎么使用

让我们创建一个 Docker 镜像并将其上传到 Dockerhub。在本例中,镜像名称是 k8s-springboot-helloworld-configmap—app。

以下是 K8S pod 配置文件:

ConfigMap 怎么使用

现在我们使用 NodePort 服务类型创建服务,以便可以从 K8S 集群外部使用 Welcome 服务。

ConfigMap 怎么使用

现在,让我们把这些更改应用于 K8S。

导航到浏览器并访问 http:// minikube_ip : service_node_port /welcome。在本例,应该是 http:// 192.168.99.100:30880/welcome。

认真观察输出,返回的字符串是:

ConfigMap 怎么使用

同时,检查代码中硬编码的环境变量的默认值,以及打包在 jar 中的 application.properties 的 property 默认值。你发现从 ConfigMap 中获取了环境变量和 application.properties 的值。

“ConfigMap 怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2330字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)