Rancher 1.4已于上周全面发布!新版本带来了Dashboard和Helm的集成,更细致的网络策略控制,直接构建进平台中的保密管理,当然还有今天要重点介绍的主角,Webhooks!


Rancher 1.4版本为webhooks添加了一个新特性,赋予其一个能够处理弹性伸缩的初始驱动程序。实现webhooks的一个关键概念就是“Receiver(接收器)”,它可以让你注册一个webhook,并且提供给你一个触发Rancher内部action的url。 


我们为webhooks实现了微服务,叫做webhook-service。我将利用我们目前的驱动程序—scaleService来解释该功能。scaleService driver允许用户创建一个receiver hook,用于对服务进行纵向扩容或缩容。一个典型的用例就是与监控系统集成,观测负载均衡器流量,当响应时间或每秒的请求数达到某个阈值时,调用这个receiver hook。下面我将详细介绍在Rancher中创建receiver hook的步骤。


新增一个Receiver Hook


在UI中导航到API -> webhooks。你为所选环境创建的所有receiver hook,都会在“Receiver Hooks”这一界面中被列出。


Webhooks初体验_第1张图片


点击”Add Receiver”,您将看到要输入的字段:


Webhooks初体验_第2张图片


在此页上,要输入的字段如下: 


  • Name:每一个receiver hook都应该有一个独特的名称,以便它可以很容易地被识别;

  • Kind:“Kind(种类)”的下拉列表中列出了所有在webhook-service中可使用的驱动程序。从列表中选择一个驱动程序(v1.4中只有“Scale a Service”这一个选项——更多基于社区贡献和要求的驱动程序很快就会与大家见面的!); 

  • Action:此字段允许您指定指向此驱动程序的action(动作)。对于scaleService driver,唯一可以指向的两个行为是“up”(增加容器的数量)和"down"(减少容器的数量)。 

这之后的字段是scaleService driver特有的: 

  • Target Service:从这个下拉列表中选择要扩/缩容的服务(如下所示);


Webhooks初体验_第3张图片


  • By:此字段要求用户输入所选服务的扩/缩容比例; 

  • Minimum Scale 和Maximum Scale:您的服务可以允许的容器的最小和最大数量。使用webhooks在超出范围内对服务进行伸缩是不允许的。 

所有字段都输入后,点击“创建”:


Webhooks初体验_第4张图片


创建的receiver hook会显示在webhooks页面上。“Trigger URL”用于实际的纵向扩容或缩容操作。在这个字段旁边,还有删除和复制receiver hook的选项:


Webhooks初体验_第5张图片


使用Receiver Hook


“Trigger URL”会为驱动程序执行操作。要使用trigger URL,你需要对特定的URL发送POST请求。没有身份认证或实物需要通过POST请求发送到URL。这个URL由一个API终点和一个标记组成。该标记包含所创建的receiver hook的所有信息,如选定的驱动程序、服务、行为(纵向扩/缩容),以及该服务的伸缩比例。API终点使用这个标记生成Cattle API调用,并完成所创建的receiver hook指定的行为。


使用webhook service自动伸缩


来自webhook service的scaleService driver,可以基于容器的度量对服务进行自动伸缩。要想这样做,webhook服务必须与一个外部监控服务一同使用。一旦你创建了一个服务,就要按照上面的步骤为它添加一个webhook。然后复制trigger URL并在监控服务中使用:当特定的度量(如响应时间)越过指定的阈值时,向该trigger URL发送一个"POST"请求。监控服务如Prometheus有一个"webhook_configs"字段,用于指定需要发送的请求格式为"POST"的URL。一旦你进行了上述的配置,webhook service将会对服务进行伸缩操作。


未来的驱动程序及其特性


我们计划在webhook服务中增加更多的驱动程序。在未来的版本中,我们致力于增加能够纵向扩/缩容主机的驱动程序,并且在dockerhub webhooks的基础上重新部署服务。我们也乐于为新的驱动程序做出贡献。你可以参考这些步骤添加新的驱动程序,也可以发送建议到我们的webhook服务库。


原文来源:Rancher Labs