【问题标题】:Kubernetes: Get mail once deployment is doneKubernetes:部署完成后获取邮件
【发布时间】:2020-05-06 08:46:12
【问题描述】:

有没有办法在 GCP/AWS 上的 kubernetes 中发布部署邮件?

一旦部署团队规模扩大,在 Kubernetes 上维护部署就会变得更加困难。拥有部署后邮件服务将简化流程。因为它还会说明谁应用了部署。

【问题讨论】:

  • 我们谈论 GKE/EKS 吗?
  • @Nick 是的,我的意思是一样的

标签: amazon-web-services kubernetes google-cloud-platform


【解决方案1】:

您可以尝试使用 https://github.com/bitnami-labs/kubewatch 和 webhook 处理程序来观察部署事件。

另一件事可能是使用 kubernetes API 实现自定义解决方案,例如在 python 中:https://github.com/kubernetes-client/python 然后将其作为集群中的单独通知 pod 运行

第三种选择是在 ci/cd 管道中管理部署,其中实际部署执行步骤是“批准”类型,您应该看到批准的用户,批准后管道中的下一步可能是电子邮件通知

圈子批准:https://circleci.com/docs/2.0/workflows/#holding-a-workflow-for-a-manual-approval

【讨论】:

    【解决方案2】:

    我认为 Kubernetes 没有内置这样的功能。

    不过有一个手表机制,你可以使用什么。运行以下GET 查询:

    https://<api-server-url>/apis/apps/v1/namespace/<namespace>/deployments?watch=true

    连接不会关闭,您会收到有关每次部署的“通知”。检查状态字段。然后你可以发送邮件或做其他事情。

    您需要传递一个授权令牌才能访问 API 服务器。如果你有 kubectl 设置,你可以运行一个本地代理,这样就不需要令牌:kubectl proxy

    【讨论】:

      【解决方案3】:

      您可以将处理程序附加到容器生命周期事件。 Kubernetes 支持 preStop 和 postStart 事件。 Kubernetes 会在容器启动后立即发送 postStart 事件。这是 pod manifest 部署文件的 sn-p。

       spec:
           containers:
           - name: <******>
             images:  <******>
             lifecycle:
               postStart:
                  exec:
                     command: [********]
      

      【讨论】:

      • 如果我错了,请纠正我,但 preStartpostStart 命令将在 pod 中运行。我想说这不是很理想 - 最好将电子邮件发送逻辑与实际 pod 分开。
      【解决方案4】:

      考虑到 GCP,一个选项可以是创建一个过滤器以在 Stackdriver Logging 中获取有关您的部署完成的信息,并且您可以使用该过滤器在 中使用 CREATE METRIC 选项Stackdriver 日志记录

      创建指标后,使用 Stackdriver Monitoring 创建发送电子邮件的提醒。更多详情at official documentation.

      【讨论】:

        【解决方案5】:

        似乎还没有人提到 Kubernetes 提供的“原生工具”。

        请注意,Kubernetes 中有Audit 的概念。

        它提供了一组与安全相关的按时间顺序排列的记录,记录了单个用户、管理员或系统其他组件影响系统的活动顺序。

        每个请求在其执行的每个阶段都会产生一个事件,然后根据一定的策略对其进行预处理,并由一定的后端进行处理。

        这让集群管理员可以回答以下问题:

        • 发生了什么?
        • 什么时候发生的?
        • 是谁发起的?
        • 发生了什么?
        • 它是在哪里观察到的?
        • 它是从哪里开始的?
        • 要去哪里?

        管理员可以在审核策略的帮助下指定应记录哪些事件以及应包含哪些数据。

        有一些后端将审计事件保存到外部存储。

        • 日志后端,将事件写入磁盘
        • Webhook 后端,将事件发送到外部 API
        • 动态后端,通过 AuditSink API 对象配置 webhook 后端。

        如果您使用日志后端,可以使用 fluentd 等工具收集数据。有了这些数据,您不仅可以在 Kubernetes 中实现部署后邮件。

        希望有帮助!

        【讨论】:

        • 我认为审计应该只用于审计目的,而不是这样的事情。想想 Kubernetes 本身是如何实现控制器的。
        猜你喜欢
        • 2020-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多