首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在kubernetes中以最小的工作量处理多个部署环境?

如何在kubernetes中以最小的工作量处理多个部署环境?
EN

Stack Overflow用户
提问于 2018-03-25 23:46:30
回答 2查看 2.9K关注 0票数 2

我是这里的新手,我正在为webapp微服务架构准备我的开发和生产环境。我已经通过我的部署文件注入了环境变量,以便控制应用程序的运行环境。例如,在开发模式下运行的微服务将与开发数据库一起工作。因此,我的问题是,您认为控制多环境部署的最佳实践是什么。我是否应该有多个部署文件,同一个微服务的每个环境一个?还是有更好的做法?谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-03-26 13:41:01

通常,您希望在dev环境中运行的应用程序不会与在production环境中运行的应用程序发生冲突。使用Kubernetes,您可以获得针对不同环境的这种隔离using different namespaces。这样,production名称空间上的对象就不同于dev名称空间上的对象。另一种更昂贵的方法是对不同的环境使用不同的k8s集群。

完成此设置后,您将在要部署到的特定环境的名称空间中部署应用程序,并在该名称空间上创建Deployment对象。此Deployment将使用包含应用程序环境变量的ConfigMap对象。在每个名称空间/环境中,ConfigMap中的变量都是不同的。这样,您的Deployment对象在不同的环境中是相同的,这让您更加确信您在dev上测试的内容与在production上使用的内容是相同的。Deployment对象是相同的,但它使用不同的变量来运行。

使用the example Pod from the documentation

代码语言:javascript
运行
复制
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

将该内容保存到pod.yaml中,我们可以使用kubectl -n my-namespace-development create pod.yamlkubectl -n my-namespace-production create pod.yaml在名称空间中创建它。

此Pod将使用一个名为special-config的ConfigMap。可以像生产中的kubectl -n my-namespace-production create configmap special-config --from-literal=special.how=verykubectl -n my-namespace-development create configmap special-config --from-literal=special.how=very-dev一样创建此配置映射。

如您所见,configmap内容在每个名称空间上都是不同的。因此,在名称空间my-namespace-production上创建的Pod将使用值very,但在名称空间my-namespace-development上创建的pod将使用值very-dev

票数 6
EN

Stack Overflow用户

发布于 2018-03-26 17:46:33

除了@fiunchinho回答。Kubernetes文档提供了3种管理部署、服务等的方式:

  1. Imperative命令-例如,用户直接对集群的实时对象进行操作

kubectl创建部署--镜像nginx kubectl编辑部署

有关更多信息,请参阅此link

  • Imperative对象配置- kubectl命令指定操作、可选标志和至少一个文件名。指定的文件必须包含YAML或JSON格式的对象的完整定义,例如

kubectl创建-f nginx.yaml kubectl替换-f nginx.yaml kubectl删除-f nginx.yaml

有关详细信息,请参阅此link

  • Declarative object configuration -用户对本地存储的对象配置文件进行操作,但用户不定义要对这些文件执行的操作。例如,kubectl会按对象自动检测创建、更新和删除操作

kubectl应用-f nginx.yaml kubectl应用-f配置/

有关更多信息,请访问此link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49477706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档