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 次 |
| 最近记录: |