介绍
在本实验中,你将学习如何在 Kubernetes 中使用 ConfigMaps 来配置你的应用程序。ConfigMaps 提供了一种将配置数据与应用程序代码分离的方式,使得在不修改应用程序本身的情况下,轻松管理和更新应用程序配置成为可能。
在本实验中,你将学习如何在 Kubernetes 中使用 ConfigMaps 来配置你的应用程序。ConfigMaps 提供了一种将配置数据与应用程序代码分离的方式,使得在不修改应用程序本身的情况下,轻松管理和更新应用程序配置成为可能。
在创建资源之前,你需要一个正在运行的 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 环境,可以在你的本地机器上运行。
导航到工作目录:
打开终端并导航到默认的项目文件夹:
cd /home/labex/project
启动 Minikube:
启动 Minikube 以初始化一个 Kubernetes 集群:
minikube start
验证 Minikube 是否正在运行:
检查 Minikube 集群的状态:
minikube status
kubelet
和 apiserver
等组件是否显示为 Running
。minikube start
。如果启动 Minikube 时遇到问题,可以使用 minikube delete
来重置环境(如有需要)。
在本步骤中,你将创建一个包含应用程序配置数据的 ConfigMap。
在 /home/labex/project/
目录下创建一个名为 configmap.yaml
的文件,内容如下:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://user:password@host:port/dbname
此 ConfigMap 包含一个键值对,其中键为 DATABASE_URL
,值为 PostgreSQL 数据库连接字符串。
要创建 ConfigMap,请运行以下命令:
kubectl apply -f configmap.yaml
在本步骤中,你将在应用程序中使用 ConfigMap。
在 /home/labex/project/
目录下创建一个名为 deployment.yaml
的文件,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: my-config
key: DATABASE_URL
此部署指定了一个运行应用程序的容器,该容器使用 DATABASE_URL
环境变量连接到 PostgreSQL 数据库。DATABASE_URL
的值从 my-config
ConfigMap 中获取。
要创建部署,请运行以下命令:
kubectl apply -f deployment.yaml
在本步骤中,你将验证配置是否已应用到你的应用程序中。
首先,通过运行以下命令查找运行应用程序的 Pod 名称:
kubectl get pods -l app=my-app
你应该会看到一个运行应用程序的 Pod。记下该 Pod 的名称。
接下来,运行以下命令以在运行应用程序的容器中打开一个 shell 会话:
kubectl exec -it pod-name -- /bin/sh
将 <pod-name>
替换为你之前记下的 Pod 名称。
进入 shell 会话后,运行以下命令以打印 DATABASE_URL
环境变量的值:
echo $DATABASE_URL
你应该会看到在 ConfigMap 中设置的数据库连接字符串。
在本步骤中,你将更新 ConfigMap 并观察其对应用程序的影响。
更新 configmap.yaml
文件中的 DATABASE_URL
键值为新值:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
DATABASE_URL: postgres://newuser:newpassword@newhost:newport/newdbname
这将 DATABASE_URL
键更新为一个新值。
要更新 ConfigMap,请运行以下命令:
kubectl apply -f configmap.yaml
在本步骤中,你将验证 ConfigMap 的更新是否已应用到你的应用程序中。
首先,通过运行以下命令查找运行应用程序的 Pod 名称:
kubectl get pods -l app=my-app
你应该会看到一个运行应用程序的 Pod。记下该 Pod 的名称。
接下来,运行以下命令以在运行应用程序的容器中打开一个 shell 会话:
kubectl exec -it pod-name -- /bin/sh
将 <pod-name>
替换为你之前记下的 Pod 名称。
进入 shell 会话后,运行以下命令以打印 DATABASE_URL
环境变量的值:
echo $DATABASE_URL
你会发现配置并未生效,仍然是之前的数据。你需要通过以下命令重启 Deployment:
kubectl rollout restart deployment my-app
当重启完成后,再次进入容器并使用上述命令检查配置。
你应该会看到更新后的数据库连接字符串。
在本实验中,你学习了如何在 Kubernetes 中使用 ConfigMaps 来配置你的应用程序。你创建了一个包含配置数据的 ConfigMap,在应用程序中使用了该 ConfigMap,并更新了 ConfigMap 以观察其对应用程序的影响。你还学习了如何验证配置是否已应用到应用程序中,以及如何清理实验中创建的资源。