它是如何工作的
JFrog Pipeline和Dynatrace参考设计利用了一系列内置集成和JFrog Pipelines平台中可用的自定义bash脚本,使用户能够构建Docker映像并将其部署到使用Dynatrace OneAgent Operator的Kubernetes集群中。完成此操作后,Dynatrace部署事件被发送到运行时环境中正在监视的相关服务,并带有重要上下文和超链接,指向执行部署的JFrog管道作业。
参考设计
JFrog存储库
下面是一组Artifactory存储库都是在参考设计中使用的:
库名称 |
类型 |
描述 |
art-docker-dynatrace |
存储由管道创建的Docker映像的集合。 |
|
art-helm-charts-dynatrace |
存储由管道创建的Helm图表的集合。 |
集成
集成将管道连接到外部服务/工具。每种集成类型都定义了端点、凭据和管道与服务交换信息所需的任何其他配置细节。以下是该参考设计中使用的集成:
集成的名字 |
类型 |
描述 |
artifactoryIntegration |
存储Artifactory URL和令牌。 |
|
k8sIntegration |
存储访问Kubernetes集群连接的配置YAML。 |
|
githubIntegration |
存储GitHub URL和用户访问令牌(管道代码存储的GitHub帐户)。GitHub用户必须拥有管道存储库的管理员权限。 |
|
dynatraceIntegration |
存储Dynatrace实例URL和API令牌。API令牌被配置为它调用的任何API的权限。参考设计API权限在本文后面定义。 |
管道的步骤
引用JFrog pipeline执行以下操作管道的步骤如下面的JFrog图片所示。
- DockerBuild:本机JFrog管道步骤,从Dockerfile和源代码中构建docker映像githubIntegration回购。此步骤使用artifactoryIntegration连接到Artifactory实例,以便构建的镜像对DockerPush步骤可用。
- DockerPush:本地JFrog pipeline步骤,将Docker映像发布到Artifactory本地Docker存储库。使用artifactoryIntegration将图像推送到Artifactory实例。
- HelmPublish:原生JFrog管道步骤,它使用githubIntegration用所需的Docker映像和要部署的标记修改它。将更新后的Helm Chart推送到Artifactory本地Helm存储库。
- HelmDeploy:本机JFrog管道步骤,将发布的Helm图安装到Kubernetes集群中k8sIntegration.此步骤还将输出已部署pod的状态。
- AppUpCheck:使用JFrog管道Bash步骤类型,此步骤调用一个自定义bash脚本,该脚本检查传入的URL是否可访问。它将尝试几次,每次尝试之间都有延迟,如果URL不可达,它将返回'exit 1'。
- ConfigureDynatrace:使用JFrog管道Bash步骤类型,此步骤调用一个自定义bash脚本,该脚本将运行带有Dynatrace监视的Docker映像作为代码CLI。的githubIntegrationrepo作为卷挂载,以便“监视即代码”CLI可以访问它将要处理的YAML和JSON配置文件。中读取动态竞赛凭据dynatraceIntegration。
- ModifyHelmChartProperties:使用JFrog管道Bash步骤类型,此步骤调用一个自定义bash脚本,该脚本调用JFrog API向存储库中的Helm图表添加自定义属性。此步骤使用前一步中的数据并将其添加到图表文件属性中。对象中读取人工凭证artifactoryIntegration。
- PostDynatraceEvent:使用JFrog管道Bash步骤类型中,此步骤调用一个自定义bash脚本,该脚本使用Dynatrace API将自定义部署事件发送到Dynatrace实例。中读取动态竞赛凭据dynatraceIntegration。
Fork GitHub Repo并创建访问令牌
为了准备设置管道并运行它们,您首先需要制作参考设计GitHub代码存储库的副本。假设有aGitHub帐户。
- 叉样例JFrog Pipeline-Dynatrace存储库到您自己的存储库。
- 调整values.yaml带有环境值的文件。你必须调整:
- gitRepo.path——取代dt-demos使用您的github用户名或组织名称
- 的形象。ImageName——取代dynatracedemos您的Artifactory帐户名称
- 在GitHub帐户中为GitHub管道仓库创建一个GitHub个人访问令牌JFrog GitHub集成文档。将生成的令牌复制到安全位置。这个Token在接下来的管道GitHub集成设置部分中是需要的。
准备Kubernetes集群和Dynatrace
步骤1—创建并连接到集群
集成不需要Kubernetes集群;相反,参考管道使用容器化的应用程序,并使用Helm进行部署。
这个演示使用Google GKE使用Google控制台的默认设置。
- cluster-version 1.20.8
- 3节点(12GB 6 CPU)机型“e2-medium”
配置集群后,使用google console web控制台运行这些命令来配置kubectl以连接和查看集群节点。
gcloud容器集群get-credentials——zone < zone >——project < project > kubectl获取节点
步骤2 -创建一个JFrog服务帐户
此步骤创建下一节中需要的服务帐户,作为k8s管道集成设置的一部分。
从云shell克隆演示存储库。例如:
git clone https://github.com/dt-demos/JFrog-pipelines-dynatrace-example.git
导航到setup文件夹。
cd JFrog-pipelines-dynatrace-example /设置
运行这个脚本,该脚本创建k8s服务帐户,为将要部署示例应用程序的位置添加名称空间,并为GKE集群生成kubecconfig文件。
。/ createKubernetesServiceAccounts.sh
- 中的内容复制kubeconfig把文件放到安全的地方。
步骤3 -创建Dynatrace查看器角色
这一步创建了一个Kubernetes角色,Dynatrace需要这个角色来调用Kubernetes API。
假设你还在“
JFrog-pipelines-dynatrace-example /设置
文件夹,运行此命令添加角色。Kubectl创建-f动态代理-元数据-查看器
可以使用该命令验证是否创建了“dynatrace-oneagent-metadata-viewer”。
Kubectl -n dev get role
看到Dynatrace文档有关此角色的更多详细信息和配置方法。
步骤4 -创建一个JFrog Docker凭证秘密
这一步将Frog Docker存储库凭证创建为Kubernetes密钥。Helm需要这个秘密,因为它在Helm部署期间提取docker映像。
在Google cloud shell中,运行以下命令登录到Artifactory Docker存储库。
docker登录YOUR-ACCOUNT.JFrog.io
要将保存的凭据导出到Kubernetes secret中,请运行以下命令。
——docker-server=
\——docker-email=
看到Kubernetes文档了解更多详情。
步骤5 -安装Dynatrace操作程序
一个关键的Dynatrace优势是易于激活,对于Kubernetes来说Dynatrace运营商是专门设计来处理生命周期的Dynatrace OneAgentKubernetes API监控,OneAgent流量路由,以及所有未来的容器化组件,如即将到来的扩展框架。
作为Kubernetes集群的一部分,操作符设置通常是一次性的活动,部署Dynatrace操作符的最快方法是Dynatrace UI中的部署向导。
- 登录Dynatrace
- 在Dynatrace菜单,选择“管理”。
- 去部署Dynatrace |开始安装| Kubernetes
- 在Kubernetes页面上填写以下内容。
- Name =与您的集群名称相同.该名称用于各种Dynatrace设置,包括Kubernetes集群名称、网络区域、ActiveGate组和主机组
- 选择“创建令牌”
- 根据您的设置选择“跳过SSL”
- 根据你的设置,“启用卷存储”
- 使用Copy功能在Google cloud shell中复制并粘贴从Dynatrace向导生成的命令并运行它。
处理完成后,您可以从Google云web shell中运行此命令。在进入下一节之前,您希望看到所有pod都像下面所示的那样运行。
kubectl -n dynatrace get pods名称READY状态重启AGE dynakube-classic-gkt9f 1/1运行0 4d3h dynakube-classic- s7v41 /1运行0 4d3h dynakube-kubemon-0 1/1运行0 4d3h dynakube- route -0 1/1运行0 4d3h dynatrace- operate -8b89765d5-znzd6 1/1运行10 5d3
步骤6 -在Dynatrace中验证集群
登录Dynatrace并检查这些页面,以验证是否正在监视Kubernetes集群。
- 在Dynatrace菜单中,选择主机.您应该看到如下所示的几个主机:
- 在Dynatrace菜单中,选择Kubernetes.您应该看到如下所示的集群:
步骤7 -创建API令牌
在Dynatrace中创建一个API的令牌.
- 登录Dynatrace。
- 在Dynatrace菜单中,选择设置.
- 去集成| Dynatrace API.
- 选择生成令牌.
- 输入令牌的名称,例如JFrog.
- 为令牌选择所需的权限,如下所示。
- 单击生成按钮。
- 将生成的令牌复制到安全位置。下一节Dynatrace管道集成设置需要这个令牌。
设置管道
要完成管道的设置,需要添加JFrog集成、存储库和管道源。
重要的
repo中的引用管道,pipelines.yml,假设集成和存储库的名称与设计参考部分中的表中的名称匹配,并使用下面描述的名称。欢迎您使用不同的名称,但您必须调整pipelines.yml否则管道将会失败。
步骤1:添加集成
- 从JFrog管理面板中添加GitHub JFrog集成。从Administration页面中选择集成然后点击“添加集成”按钮。在表单上,填写如下所示的这些值。
- Name =githubIntegration
- 类型= pickGitHub的从下拉列表中
- 令牌=您的GitHub个人访问令牌
- 创建Dynatrace集成使用JFrog pipeline中可用的通用集成。从Administration页面中选择集成然后点击“添加集成”按钮。在表单上,填写如下所示的这些值。
- Name =dynatraceIntegration
- 类型= pick“通用集成”从下拉列表中
- 添加如下客户环境变量:
- DT_URL—Dynatrace实例的URL。例如:https://abc.live.dynatrace.com
- DT_API_TOKEN- Dynatrace实例的API令牌
- 使用静态文件创建Kubernetes集成
kubeconfig
在前面的设置部分中生成的云提供商的文件。从Administration页面中选择集成然后点击添加集成按钮。 - 在表单中,填写如下所示的值。
- Name =k8sIntegration
- 类型=选择“Kubernetes”从下拉列表中
- kubecconfig =粘贴静态文件
kubeconfig
在前面的设置部分中为其云提供商生成的内容
- 创建Artifactory集成.从Administration页面中选择集成然后点击添加集成.
- 在表单中,填写如下所示的值。
- Name =artifactoryIntegration
- 类型= select“Artifactory”从下拉列表中
- 人工URL = leave作为默认值
- Artifactory User = leave作为默认值
- API密钥=单击“获取API密钥”按钮
新的集成应该是这样的:
步骤2 -添加存储库
- 创建码头工人存储库。
- 从Administration页面中选择存储库然后点击添加库.
- 选择“本地存储库”选项。
- 在弹出窗口中选择码头工人.
- 在表单中,设置“库关键”=art-docker-dynatrace。
- 其他字段保持默认设置。
- 单击保存并完成.
- 创建执掌图表存储库。
- 从Administration页面中选择存储库和然后单击添加库.
- 选择“本地存储库”选项。
- 在弹出窗口中,选择舵.
- 在表单上,设置“库关键”= art-helm-charts-dynatrace。
- 其他字段保持默认设置。
- 点击保存并完成.
新的存储库应该是这样的:
步骤3 -添加管道源
使用上一步中创建的GitHub集成,用新的存储库创建一个新的GitHub Pipeline源。
- 从Administration面板中选择管道来源从管道下拉菜单。
- 然后单击添加管道源并选择从YAML从下拉菜单中。
- 在表单中,填写如下所示的值。
- SCM供应商集成=githubIntegration
- 存储库全名=从下拉菜单中,选择分叉的库
- 分支=主要
- 管道配置文件过滤器=pipelines.yml
新的管道源应该如下所示。
运行管道
设置完成后,可以在JFrog控制台中手动运行管道我的管道选项卡。管道将按顺序执行所有步骤,完成的管道将如下所示。
您可以展开每个步骤以查看细节,但是您可能还需要查看许多其他内容。
查看已发布的舵图
在JFrog中,展开Artifactory存储库并查看更新的图表和自定义属性,如下所示。
查看已发布的Docker图
在JFrog中,展开Artifactory存储库并查看发布的映像。
查看示例应用程序
首先使用此命令从Kubernetes服务获取公共IP地址。
kubectl -n dynatrace get service名称类型CLUSTER-IP EXTERNAL-IP PORT(S) AGE demoapp LoadBalancer 10.84.2.18 34.133.103.200 8080:32602/TCP 5d . zip
使用上面的示例,在端口8080上打开应用程序http://34.133.103.200:8080.应用程序看起来像这样:
将流量发送到示例应用程序
为了让Dynatrace完全监控服务和应用程序,需要有一些事务流经应用程序。为了简化这个过程,repo中提供了一个简单的脚本,它将在一个循环中向各种应用程序url发送cURL请求。要运行此脚本,请打开Google web shell并运行这些命令。
~ / / sendSomeTraffic.sh jfrog-pipelines-dynatrace-example /脚本
的sendSomeTraffic.sh
将确定应用程序的公共IP并输出循环状态,如下所示。要停止脚本,只需使用ctrl - c
.
调用http://111.111.111.111:8080…循环1 200 200 200 200循环2 200 200 200 200循环3 200 200 ... ...
查看Dynatrace部署事件
在Dynatrace中导航到释放菜单打开发布库存仪表板.在这个指示板上是演示应用程序、它的自动检测版本和它的部署事件。下面是示例部署事件的扩展详细信息,其中包含执行部署的JFrog管道的URL。
查看Dynatrace Kubernetes仪表板
在Dynatrace中导航到Kubernetes菜单,并钻取到演示应用程序的工作负载。如下所示,demoapp工作负载指示板显示总体利用率指标,并提供可深入到特定流程的链接。
审查服务
在Dynatrace中导航到服务菜单并打开DemoNodeJsApp如下所示。该指示板显示了您需要了解的有关服务的所有信息,包括来自的请求的时间序列指标sendSomeTraffic.sh脚本。
部署演示应用程序的另一个版本
这个示例应用带有内置的“特性”行为——意思是——如果你启动应用并让它作为特性1、2或3运行,会显示出稍微不同的行为。使用Docker构建参数设置特性,该参数设置应用程序代码查找的环境变量。你可以在demoapp README文件.
若要更改特性号,请将环境变量FEATURE_NUMBER调整为文件中的值pipeline.yml将代码更改归档并提交。JFrog将在任何代码提交后自动重新运行管道,因此只需监视管道的进度,然后返回查看Dynatrace发布清单、事件和JFrog工件。下面是一个更改的示例:
支持
如果您需要有关此集成的帮助,请联系partner_support@JFrog.com.