kubernetes - 带两次部署的 Helm

标签 kubernetes kubernetes-helm

我是使用Helm的新手,因此不确定在进行两次部署时哪种方法最好。
我已经为我的应用程序创建了一个图表。它包含两个部署:

  • app-nginx-phpfpm.yaml
  • app-mysql.yaml

  • 我应该将它们保留在同一图表中还是应该为app-mysql.yaml创建一个子图?

    最佳答案

    可以同时使用这两种方法,具体取决于您要如何构造部署。

    您应该记住以下几点

    注意事项

    单张图表的好处

  • 易于部署:仅部署一次,单次比较
  • 单个版本,因此回滚/升级发生在单个元素
  • 您可以使用功能标志
  • 卸载零件
  • 在不接触其余元素的情况下安装新组件可能会很棘手

  • 单一图表警告
  • 在升级数据库
  • 时更难部署未耦合的服务,例如用于数据访问的模拟服务
  • 很难解耦和测试每个实例
  • 很难命名和理解每个组件(在不同的发行版中,每个“应用”的{{.Release.Name}}都已经改变)。
  • 很难为不同组件提供/保持不同发布周期的跟踪
  • 版本存储在单个ConfigMap中,如果您的图表包含例如测试嵌入的
  • 数据,则可能导致大小限制问题

    关于版本控制的注意事项

    您可以拥有一个用于对所有子图表进行测试的主图表,并独立打包这些子图表,但所有内容都保留在同一仓库中。

    例如,我通常保留以下任一内容:
    . / helm / charts / whatever / charts / subchart1
    . / helm / charts / whatever / charts / subchart2
    . / helm / charts / whatever / values.yaml
    

    要么
    . / helm / charts / whatever-master / values.yaml
    . / helm / charts / whatever-master / requirements.yaml
    . / helm / charts / whatever-subchart1 / values.yaml
    . / helm / charts / whatever-subchart2 / values.yaml
    

    并使用主图表上的requirements.yaml从file://../whatever-subchartx中提取。

    这样,我可以拥有whatever-stress-testwhatever-subcomponent-unit-test,同时仍然可以灵活地单独部署具有不同发布周期的组件(如果需要)。

    最后,这还取决于您的升级策略。与单张图表相比,金丝雀升级可能会要求您以更特定的方式处理有状态微服务,因此请进行相应计划。

    关于kubernetes - 带两次部署的 Helm ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54543895/

    相关文章:

    redis - 升级图表时 Helm 相关性更新

    git - Jenkins 实例丢失

    node.js - 将更新推送到 gcloud 容器/pod

    kubernetes - GKE入口 Controller 多路径

    amazon-web-services - Terraform AWS EKS 安全组问题

    kubernetes - 安装了 prometheus-community/helm-charts 但我无法获取 "default"命名空间的指标

    ubuntu - 如何确保使用 http 而不是 https 完成 Liveness/Readiness 探测

    docker - Helm 测试最佳实践

    linux - 由于系统中打开的文件太多,Kubernetes 无法启动

    kubernetes - helm 无法连接到 GKE 中的耕耘机