云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库服务器_天翼云视频会议_新注册优惠

小七 141 0

这篇博文将指导我们完成配置SAP Cloud SDK Continuous Delivery Toolkit以在Kubernetes集群上动态扩展所需的步骤。

注意:这篇博文是系列文章的一部分。有关完整的概述,请访问SAP Cloud SDK概述。

本文的目标是

当我们决定建立第一个连续交付基础设施时,出现的第一个问题是,我们需要保留多少资源。然而,回答这个问题并不容易。资源有限可能会限制并发构建管道执行。另一方面,如果我们计划保留足够的资源来支持并行构建管道执行,物联网时代,我们可能最终会浪费资源。很有可能,这些资源在一天的大部分时间都处于空闲状态。

基础设施的自动缩放解决了这样一个问题。SAP Cloud SDK管道的最新版本中引入了此功能。在执行过程中,管道不是主动保留资源,而是在Kubernetes集群上动态创建Jenkins代理。一旦代理完成了指定的任务,它就会被删除并释放资源。

基础设施组件故障(如节点崩溃)很难预测和预防。如果我们使用这里介绍的dockerized方法,那么我们需要建立一个额外的机制来管理失败。例如,企业大数据分析,我们可能需要一个基础设施健康监测工具(如Nagios)来识别故障,并需要一个回退脚本来启动备份节点上的服务。

多亏了Kubernetes,监测和自我修复才开箱即用。Kubernetes定期对基础设施和服务进行健康检查。如果任何基础设施组件或服务未通过运行状况检查,kubernetes将创建一个新组件并使旧组件退役。如果降级组件是一个节点,那么kubernetes将创建一个新节点,并确保在该节点上运行的服务被移动到一个正常的节点。如果Jenkins主pod失败,kubernetes将启动一个新的pod,并通过重用持久卷恢复状态。如果pod在执行管道阶段时失败,kubernetes将重新创建它,而不会将失败传播到管道中。

在下面的部分中,我们将了解如何使用自动缩放功能,请先阅读以下教程:

注意:SAP Cloud SDK中的Kubernetes支持目前仅作为实验性功能提供。

前提条件

当前版本的SAP Cloud SDK管道仅当Jenkins master也设置在Kubernetes群集上时才支持自动缩放。首先,我们需要一个Kubernetes集群,在这里我们将使用Jenkins-helm图表来设置Jenkins。使用helm安装Jenkins的文档可以在这里找到。要使用sapcloudsdk提供的Jenkins映像,我们必须将s4sdk/Jenkins master作为主人。形象将Jenkins部署到Kubernetes时的命令行参数。

成功完成的部署包括一个Jenkins pod,端口80和50000分别用于HTTP和内部JNLP通信。部署还创建了两个服务,每个服务侦听端口80上的传入HTTP流量和端口50000上的内部JNLP流量。请注意,在此示例设置中,SSL/TLS终止发生在负载平衡器上,因此负载平衡器和Jenkins pod之间的所有通信都是未加密的。

Kubernetes插件配置

SAP Cloud SDK使用Jenkins Kubernetes插件。它预装了最新版本的s4sdk/jenkins master docker映像。如果我们使用helm来安装Jenkins,那么插件是由helm图表自动配置的,我们可以跳过这一节。但是,如果我们使用任何其他方法来安装Jenkins,那么我们需要配置插件来建立到Kubernetes集群的连接。为此,导航到Jenkins欢迎页面左侧的Manage Jenkins菜单。

进一步导航到Configure System>Cloud部分,通过在Kubernetes URL字段中输入值来配置Kubernetes群集详细信息。请使用对Kubernetes命名空间字段中配置的命名空间具有编辑访问权限的凭据。点击测试连接。

代理被创建为一个新的pod,一个逻辑节点,包含执行管道阶段所需的容器集合。代理使用JNLP协议与主机通信。在这个示例设置中,我们将端口50000用于内部JNLP通信。输入Jenkins tunnel字段的值,即服务名称后跟端口号(Jenkins)-代理人:50000). 请注意,淘客app源码,隧道值不应以协议为前缀。

环境变量

SAP Cloud SDK连续交付管道需要在Jenkins中设置一个环境变量,大数据在线,以利用自动缩放功能。要设置环境变量,请导航到管理Jenkins>配置系统>全局属性。在K8S上添加一个环境变量并将值设置为true。

管道配置

现在Jenkins已经准备好运行我们的项目管道,如下所述。但是,每个动态代理都被创建为一个带有JNLP代理容器的新pod。默认情况下,使用jnlp代理docker映像。但是,如果我们的Jenkins有一个终止于pod级别的TLS/SSL配置,那么我们需要提供一个带有有效证书的定制JNLP代理映像。一旦我们将定制的JNLP映像发布到一个安全的位置,就在我们的管道配置文件pipeline中配置它_配置yml.

注意:Jenkins主服务器包含一个ID为1000的用户Jenkins。因此,大数据的数据库,JNLP代理也应该有一个ID为1000的用户,以避免对主代理和代理共享的文件的访问问题。