云客户?
免费开始>
在MyJFrog中升级>
云的新功能>







概述

JFrog pipeline和Dynatrace参考设计使DevOps团队能够更好地管理从代码到产品的软件开发和交付。特别是,它允许团队使用Dynatrace来跟踪和标记部署事件,以改进在生产中运行的应用程序和服务的故障排除。Dynatrace自动检测组件版本,并将这些与版本相关的数据集中到一个版本清单仪表板中,在这个仪表板中,可以很容易地分析按环境、开放问题和安全漏洞划分的版本。Dynatrace集成还开启了“监控即代码”的用例,其中服务水平目标、仪表板和警报都是通过JFrog管道和Dynatrace配置api进行管理的。

好处

  • 加强监控和故障排除通过JFrog Pipelines提供的元数据收集,将性能下降与特定的构建更新、部署和提交相关联并跟踪,从而对运行在生产环境中的应用程序和服务进行分析。
  • 加快问题解决,减少相互指责通过使用部署事件的详细上下文数据,包括构建和git相关信息,可以更快地解决问题。
  • 减少花在手工流程上的时间通过简化和标准化Kubernetes部署,并将自助服务的Dynatrace监控作为代码引入。

先决条件

页面内容


它是如何工作的

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集成

存储Artifactory URL和令牌。

k8sIntegration

Kubernetes集成

存储访问Kubernetes集群连接的配置YAML。

githubIntegration

GitHub集成

存储GitHub URL和用户访问令牌(管道代码存储的GitHub帐户)。GitHub用户必须拥有管道存储库的管理员权限。

dynatraceIntegration

通用的集成

存储Dynatrace实例URL和API令牌。API令牌被配置为它调用的任何API的权限。参考设计API权限在本文后面定义。

管道的步骤

引用JFrog pipeline执行以下操作管道的步骤如下面的JFrog图片所示。

  1. DockerBuild:本机JFrog管道步骤,从Dockerfile和源代码中构建docker映像githubIntegration回购。此步骤使用artifactoryIntegration连接到Artifactory实例,以便构建的镜像对DockerPush步骤可用。
  2. DockerPush:本地JFrog pipeline步骤,将Docker映像发布到Artifactory本地Docker存储库。使用artifactoryIntegration将图像推送到Artifactory实例。
  3. HelmPublish:原生JFrog管道步骤,它使用githubIntegration用所需的Docker映像和要部署的标记修改它。将更新后的Helm Chart推送到Artifactory本地Helm存储库。
  4. HelmDeploy:本机JFrog管道步骤,将发布的Helm图安装到Kubernetes集群中k8sIntegration.此步骤还将输出已部署pod的状态。
  5. AppUpCheck:使用JFrog管道Bash步骤类型,此步骤调用一个自定义bash脚本,该脚本检查传入的URL是否可访问。它将尝试几次,每次尝试之间都有延迟,如果URL不可达,它将返回'exit 1'。
  6. ConfigureDynatrace:使用JFrog管道Bash步骤类型,此步骤调用一个自定义bash脚本,该脚本将运行带有Dynatrace监视的Docker映像作为代码CLI。的githubIntegrationrepo作为卷挂载,以便“监视即代码”CLI可以访问它将要处理的YAML和JSON配置文件。中读取动态竞赛凭据dynatraceIntegration。
  7. ModifyHelmChartProperties:使用JFrog管道Bash步骤类型,此步骤调用一个自定义bash脚本,该脚本调用JFrog API向存储库中的Helm图表添加自定义属性。此步骤使用前一步中的数据并将其添加到图表文件属性中。对象中读取人工凭证artifactoryIntegration。
  8. PostDynatraceEvent:使用JFrog管道Bash步骤类型中,此步骤调用一个自定义bash脚本,该脚本使用Dynatrace API将自定义部署事件发送到Dynatrace实例。中读取动态竞赛凭据dynatraceIntegration。

Fork GitHub Repo并创建访问令牌

为了准备设置管道并运行它们,您首先需要制作参考设计GitHub代码存储库的副本。假设有aGitHub帐户。

  1. 样例JFrog Pipeline-Dynatrace存储库到您自己的存储库。
  2. 调整values.yaml带有环境值的文件。你必须调整:
    1. gitRepo.path——取代dt-demos使用您的github用户名或组织名称
    2. 的形象。ImageName——取代dynatracedemos您的Artifactory帐户名称
  3. 在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管道集成设置的一部分。

  1. 从云shell克隆演示存储库。例如:

    git clone https://github.com/dt-demos/JFrog-pipelines-dynatrace-example.git
  2. 导航到setup文件夹。

    cd JFrog-pipelines-dynatrace-example /设置
  3. 运行这个脚本,该脚本创建k8s服务帐户,为将要部署示例应用程序的位置添加名称空间,并为GKE集群生成kubecconfig文件。

    。/ createKubernetesServiceAccounts.sh
  4. 中的内容复制kubeconfig把文件放到安全的地方。

步骤3 -创建Dynatrace查看器角色

这一步创建了一个Kubernetes角色,Dynatrace需要这个角色来调用Kubernetes API。

  1. 假设你还在“JFrog-pipelines-dynatrace-example /设置文件夹,运行此命令添加角色。

    Kubectl创建-f动态代理-元数据-查看器
  2. 可以使用该命令验证是否创建了“dynatrace-oneagent-metadata-viewer”。

    Kubectl -n dev get role

看到Dynatrace文档有关此角色的更多详细信息和配置方法。

步骤4 -创建一个JFrog Docker凭证秘密

这一步将Frog Docker存储库凭证创建为Kubernetes密钥。Helm需要这个秘密,因为它在Helm部署期间提取docker映像。

  1. 在Google cloud shell中,运行以下命令登录到Artifactory Docker存储库。

    docker登录YOUR-ACCOUNT.JFrog.io
  2. 要将保存的凭据导出到Kubernetes secret中,请运行以下命令。

    ——docker-server= \——docker-email=

看到Kubernetes文档了解更多详情。

步骤5 -安装Dynatrace操作程序

一个关键的Dynatrace优势是易于激活,对于Kubernetes来说Dynatrace运营商是专门设计来处理生命周期的Dynatrace OneAgentKubernetes API监控,OneAgent流量路由,以及所有未来的容器化组件,如即将到来的扩展框架。

作为Kubernetes集群的一部分,操作符设置通常是一次性的活动,部署Dynatrace操作符的最快方法是Dynatrace UI中的部署向导。

  1. 登录Dynatrace
  2. Dynatrace菜单,选择“管理”。
  3. 部署Dynatrace |开始安装| Kubernetes
  4. 在Kubernetes页面上填写以下内容。
    • Name =与您的集群名称相同该名称用于各种Dynatrace设置,包括Kubernetes集群名称、网络区域、ActiveGate组和主机组
    • 选择“创建令牌”
    • 根据您的设置选择“跳过SSL”
  5. 根据你的设置,“启用卷存储”
  6. 使用Copy功能在Google cloud shell中复制并粘贴从Dynatrace向导生成的命令并运行它。
  7. 处理完成后,您可以从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集群。

  1. Dynatrace菜单中,选择主机.您应该看到如下所示的几个主机:
  2. Dynatrace菜单中,选择Kubernetes.您应该看到如下所示的集群:

步骤7 -创建API令牌

在Dynatrace中创建一个API的令牌

  1. 登录Dynatrace。
  2. Dynatrace菜单中,选择设置
  3. 集成| Dynatrace API
  4. 选择生成令牌
  5. 输入令牌的名称,例如JFrog
  6. 为令牌选择所需的权限,如下所示。

  7. 单击生成按钮。
  8. 将生成的令牌复制到安全位置。下一节Dynatrace管道集成设置需要这个令牌。

设置管道

要完成管道的设置,需要添加JFrog集成、存储库和管道源。

重要的

repo中的引用管道,pipelines.yml,假设集成和存储库的名称与设计参考部分中的表中的名称匹配,并使用下面描述的名称。欢迎您使用不同的名称,但您必须调整pipelines.yml否则管道将会失败。

步骤1:添加集成

  1. 从JFrog管理面板中添加GitHub JFrog集成。从Administration页面中选择集成然后点击“添加集成”按钮。在表单上,填写如下所示的这些值。
    • Name =githubIntegration
    • 类型= pickGitHub的从下拉列表中
    • 令牌=您的GitHub个人访问令牌
  2. 创建Dynatrace集成使用JFrog pipeline中可用的通用集成。从Administration页面中选择集成然后点击“添加集成”按钮。在表单上,填写如下所示的这些值。
    • Name =dynatraceIntegration
    • 类型= pick“通用集成”从下拉列表中
    • 添加如下客户环境变量:
  3. 使用静态文件创建Kubernetes集成kubeconfig在前面的设置部分中生成的云提供商的文件。从Administration页面中选择集成然后点击添加集成按钮。
  4. 在表单中,填写如下所示的值。
    • Name =k8sIntegration
    • 类型=选择“Kubernetes”从下拉列表中
    • kubecconfig =粘贴静态文件kubeconfig在前面的设置部分中为其云提供商生成的内容
  5. 创建Artifactory集成.从Administration页面中选择集成然后点击添加集成
  6. 在表单中,填写如下所示的值。
    • Name =artifactoryIntegration
    • 类型= select“Artifactory”从下拉列表中
    • 人工URL = leave作为默认值
    • Artifactory User = leave作为默认值
    • API密钥=单击“获取API密钥”按钮

新的集成应该是这样的:

步骤2 -添加存储库

  1. 创建码头工人存储库。
    1. 从Administration页面中选择存储库然后点击添加库
    2. 选择“本地存储库”选项。
    3. 在弹出窗口中选择码头工人
    4. 在表单中,设置“库关键”=art-docker-dynatrace。
    5. 其他字段保持默认设置。
    6. 单击保存并完成
  2. 创建执掌图表存储库。
    1. 从Administration页面中选择存储库然后单击添加库
    2. 选择“本地存储库”选项。
    3. 在弹出窗口中,选择
    4. 在表单上,设置“库关键”= art-helm-charts-dynatrace。
    5. 其他字段保持默认设置。
    6. 点击保存并完成

新的存储库应该是这样的:


步骤3 -添加管道源

使用上一步中创建的GitHub集成,用新的存储库创建一个新的GitHub Pipeline源。

  1. 从Administration面板中选择管道来源管道下拉菜单。
  2. 然后单击添加管道源并选择从YAML从下拉菜单中。
  3. 在表单中,填写如下所示的值。
    • SCM供应商集成=githubIntegration
    • 存储库全名=从下拉菜单中,选择分叉的库
    • 分支=主要
    • 管道配置文件过滤器=pipelines.yml

新的管道源应该如下所示。

运行管道

设置完成后,可以在JFrog控制台中手动运行管道我的管道选项卡。管道将按顺序执行所有步骤,完成的管道将如下所示。

您可以展开每个步骤以查看细节,但是您可能还需要查看许多其他内容。

查看已发布的舵图

在JFrog中,展开Artifactory存储库并查看更新的图表和自定义属性,如下所示。


查看已发布的Docker图

在JFrog中,展开Artifactory存储库并查看发布的映像。


查看示例应用程序

  1. 首先使用此命令从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
  2. 使用上面的示例,在端口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

版权所有©2023 JFrog Ltd.