sha*_*ite 2 web-applications docker kubernetes
我是这里的新手,我正在为 webapp 微服务架构准备我的开发和生产环境。我通过部署文件注入了环境变量,以控制应用程序运行的环境。例如,在开发模式下运行的微服务将与开发数据库一起使用。所以我的问题是,您认为控制多个环境部署的最佳实践是什么。我是否应该有多个部署文件,一个用于同一个微服务的每个环境?或者有更好的做法吗?谢谢
通常,您希望在dev
环境中运行的应用程序不会干扰在production
环境中运行的应用程序。使用 Kubernetes,您可以针对不同的环境使用不同的命名空间来获得这种隔离。这样,production
命名空间上的对象就不同于dev
命名空间上的对象。另一种更昂贵的方法是为不同的环境使用不同的 k8s 集群。
完成此设置后,您可以在要部署到的特定环境的命名空间中部署应用程序,并在该命名空间上创建Deployment
对象。这Deployment
将使用一个ConfigMap
包含您的应用程序环境变量的对象。ConfigMap
每个命名空间/环境中的变量都不同。这样,您的Deployment
对象在不同的环境中是相同的,这让您更有信心在测试上dev
的内容与将在 上使用的内容相同production
。该Deployment
对象是相同的,但它使用不同的变量来运行。
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
# Define the environment variable
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
# The ConfigMap containing the value you want to assign to SPECIAL_LEVEL_KEY
name: special-config
# Specify the key associated with the value
key: special.how
restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)
将该内容保存到 中pod.yaml
,我们可以在我们的命名空间中使用kubectl -n my-namespace-development create pod.yaml
, 和来创建它kubectl -n my-namespace-production create pod.yaml
。
这个 Pod 将使用一个名为 的 ConfigMap special-config
。可以像kubectl -n my-namespace-production create configmap special-config --from-literal=special.how=very
在生产中一样创建此配置映射,并且kubectl -n my-namespace-development create configmap special-config --from-literal=special.how=very-dev
.
如您所见,每个命名空间的 configmap 内容都不同。所以在被调用的命名空间上创建的 Podmy-namespace-production
将使用该值very
,但在命名空间上创建的 Podmy-namespace-development
将使用该值very-dev
。
归档时间: |
|
查看次数: |
2697 次 |
最近记录: |