Go Cloud Native with JFrog Artifactory - 15分钟概述

了解Artifactory如何帮助您将云原生工具和流程整合到单个系统中,以便您可以从可信的、始终可用的源向动态环境提供生产就绪构建及其必要的组件。

学习如何Artifactory:

  • 作为你的Kubernetes注册表
  • 托管和管理您的IaC/业务流程文件
  • 允许在任何地方构建和部署
  • 通过扫描容器和包的漏洞来确保SSC的安全
  • 用最少的努力为可预测的、频繁的、高影响的发布创建基础

点击这里了解更多

视频记录

演讲者1:
如今,越来越多的公司正在探索云技术。由于许多不同的原因,我们看到越来越多的公司大规模地转向云计算。关于这个我们还有其他的讲座,如果你想去YouTube里面的其他页面的话。但是这里的一个关键概念是,当然,降低成本。另一件事是,你如何在运营上更有竞争力在速度和效率方面,还有,通过创造更小的服务来更多地进入市场的能力,能够更频繁地运营,做所有你做的事情?
如今,云原生通常是大多数公司所采用的方法。我们看到越来越多的公司放弃了使用专用数据中心的想法,当然,他们转向了更多的公共云。利用现有的服务比如AKS, EKS, GKE等等。我的意思是,有很多不同类型的托管提供商,比如OpenShift等等。
但这里的想法很简单。原生云是人们现在正在使用的方法,并且已经使用了多年,但越来越多的传统公司甚至因为效率、成本和效率等问题而采用这种方法。首先,什么是云原生?这有什么大不了的?为什么现在有这么多人问这个问题,并沿着这条路走下去?好吧,正如你所知,我们实际上是云原生基金会的治理委员会成员,我们在这里面有非常必要的发言权。如果我们要用实际的定义,我们就这么做。云原生技术使组织能够在现代动态环境(如公共、私有和混合云)中构建和运行可伸缩的应用程序。容器、服务网格、微服务、不可变的基础设施和声明性api就是这种方法的例子。
是的,这是一个非常宽泛的定义,但它的真正含义是将你所做的事情分解成一个更容易、可消耗和可管理的解决方案,使你能够更快地扩展、更快地增长,更快地开发更多功能。它存在的原因有很多。TCO的减少,你能想到的。问题是,我们将讨论这个的技术方面以及为什么Artifactory,包括整个JFrog平台实际上是构建和实际部署云原生方法的首要选择之一因为我们将集中讨论容器之类的东西,对吧?这是大多数人在考虑云原生时想到的,但它远不止于此,它更复杂一些。因为事情是,你要记住Docker,当然,你托管你的应用程序的容器,允许你控制你在一个容易管理的环境中创建的东西的实际执行。
但是,当然,你需要扩大规模。早期也有Docker集群,但大多数人都用Kubernetes。Kubernetes背后的一个关键因素当然是,编排所有这些容器的指令集,这是地狱。让我们退一步看Docker,对吧?当我们谈到Docker时,你心里会想,好吧,这是我托管应用程序的地方,这是真的,因为这就是容器。容器是你在受控环境和它自己的小生态系统中做某事的一种方式,但它是由不同的东西组成的。当然,这是您将要托管的应用程序,对吗?这是你构建的在实际Docker容器内部执行的东西。
当然,这取决于运行时间。运行时是您可能需要的所有执行位。您正在运行MPM应用程序吗?你运行的是Java应用程序还是。net ?无论运行什么,都需要运行时来支持这个应用程序。你还需要一个操作系统,对吧?是基于sed的,是基于windows的,还是基于debian的?问题是这里有很多活动的部分,非常复杂。今天我想说的是,关于如何使用Artifactory和云原生方法构建应用程序,我们有很多不同的演讲,但我将集中讨论为什么这很重要的一些重要细节。
问题是,我们从一个容器开始,但是,当然,容器只是第一步。因为就像我之前说的,假设你在做一个web服务,你把它托管在一个不同的Kubernetes提供商中来提供可伸缩性,你会有Docker映像来执行特定的任务。它可能是web前端,可能是安全,可能是后端,可能是数据处理,可能是API服务。但是当你部署这些时,你需要有你的东西,比如头盔,对吧?这是关于你将如何部署这些容器的指令集,它们将如何扩展,弹性模型,诸如此类。这将使你有很高的生产力,并且允许你替换每一个单独的组件,而不影响其他的,如果你设计得当。
但另一件事是,当我们把JFrog作为我们的平台时,我们是一个端到端的DevSecOps工具,所以我们使用Artifactory。使用Artifactory,您可以维护和管理用于构建软件的第三方传输依赖项。这可能是基本级别的容器映像,这些可能是你的软件使用的库,这些可能是实际的操作系统组件。构成该容器的所有部分都可以维护和监视。您在Artifactory内部维护和管理那些占您工作85%到90%的第三方趋势和来源,其中包括那些容器。
但最重要的是,它也是一个存储你构建的应用程序的地方,一个存储实际容器图像的地方,一个存储实际Helm图表的地方。还有,你依赖于基础设施之类的东西作为代码。也许你使用的是Puppet, Chef或Terraform,你可以存储这两个。因为Artifactory支持超过30种现成的包类型。
然后是一张安全表。另一件你应该一直,一直,一直考虑的事情就是我们的JFrog x射线产品。我们就此谈过很多次。我们从左移到右移。我们做深层的容器安全。我们实际上为您的开发人员提供安全,通过CI流程一直到CD流程。在未来,我们会监视你在Kubernetes所做的事情的部署。
右边是分布。这是一种将实际的云原生应用程序部署到单个或多个云提供商的方法,我们不关心。或者是混血儿。我们的方法很简单。我们不关心你在哪里做这件事,我们提供了全面的相同的工具集。因此,您可能正在探索不同或多个云提供商,我们可以为您提供支持。这个分发组件允许你发布那些工件在叫做发布包的东西里,这些是数字签名的不可变的发布包里面可能包含你的Helm图表和Docker图像,我们的x射线产品甚至可以在你把它们投入生产之前最后一次扫描它们。当你把它们放到分布中并发布时,你发布到这些叫做边缘节点的东西上。边缘节点是Artifactory的轻量级不可变版本,它说你的COOP控制服务可以与之对话,因为这些边缘节点也充当本地拉式Docker注册表。
问题是,我们有一个全面的端到端云解决方案,可以让你做到这一点。您可以使用自己的CI工具,因为我们是通用的,或者您可以使用我们的管道产品,这是一个CD和CI编排工具。它本身实际上是一个云原生应用程序,使用Kubernetes执行您生成的构建的运行时执行。现在我们了解了所有这些部分,我们有更多的实际视频,深入了解我们这里的每个组件,这只是一个简短的视频,只是向你们展示我们提供的内容。
那么,让我们来看看使用Artifactory、Xray和我们的其他产品所获得的一些好处。hth华体会最新官方网站首先,你要明白,我们的解决方案是全球性的。正如您在这里看到的,我在全球范围内运行了多个Artifactory版本,因为我们提供了与您所在位置无关的开发人员一致性。因此,印度的开发人员可以使用与布拉格的开发人员和硅谷的开发人员相同的一组二进制文件。这是边节点。我在AWS中有一个边缘节点,在GCP中有一个,在Azure中有一个。我可以将我的web服务部署到它需要的地方,而不依赖于我所选择的云提供商。如果我愿意,我甚至可以在我自己的数据中心中托管它。
但我们今天要重点讲的当然是容器,对吧?容器和赫尔姆航海图。让我们来看一个例子,看看通过使用Artifactory可以得到什么,以及为什么它最重要。正如我前面提到的,您可以模拟软件开发生命周期。正如你们所知,我在这里选择的应用程序实际上是利用Jenkins构建的。它有一个更大的后端,它有一个节点前端,我创建了一个基本级别的Docker映像,我将它存储在Artifactory中。我将它们全部组合到一个Docker映像中,该映像承载Docker映像。哦,是的,它在我的Gradle应用程序上托管我的,抱歉,我的MPM,然后我实际上要使用我在Artifactory里面的元数据,因为Artifactory的一个关键因素是我们存储二进制文件的方式,但首先。
但第二个事实是它是元数据方法,对吧?我们实际上把二进制文件存储为一个镜头,以防我们决定检查一些并通过元数据引用它。有很多故事都是建立在这个基础上的,非常有深度。但元数据也是这里的关键因素,您可以使用该信息创建以激光为中心的云数据应用程序部署。在提取Docker映像时,永远不要使用latest这个词,这是个糟糕的主意。它应该是你知道将作为你的应用程序托管的版本,你应该总是知道你要发布的实际映像。这使得实际的补救更容易。问题是,使用这些信息来创建赫尔姆图可以让我对我正在做的事情进行非常集中的部署,我不必质疑我实际使用的是哪个应用程序。
我们来看看这一步。现在,这一步恰好是组合的步骤。为了证明给你们看。同样,在我的DSL中,我在这里使用来构建这个应用程序,我实际上在继续,我在使用Artifactory下载服务,在这个例子中,它实际上是我们的Artifactory插件的一部分。但我已经创建了一个函数,它实际上使用了我们的东西,叫做AQL或Artifactory查询语言,来继续查询Artifactory,以找到我想要在Docker映像中托管的最新版本。这意味着我确切地知道要在那里托管的版本,并且可以根据存储在Artifactory中的元数据查询它。
所以当我看到这个的时候,首先,我还可以告诉你们,我提到过我们可以模仿SDLC。所以有一个与所有构建相关联的值,称为状态。状态是一个任意值,在使用我们的推广API时,我们可以将二进制文件从开发到QA,再到登台到生产。你可以对Docker映像做同样的事情。我可以告诉你,首先,这个已经发布了,我知道已经发布了。我也知道它包含一些关键问题。但是,让我们看一下这个问题,因为调试云原生应用程序可能很困难。因为在大多数情况下,当你有Docker注册表时,你会得到这个。只是一堆模糊的图像层。你做一个Docker拉,一个Docker跑,你在工作,对吧,因为你不知道内容。
在这里,我可以用我们的最佳实践告诉你们,在这个Docker映像中,我运行这个版本的节点前端,我运行这个版本的Java后端。此外,如果你遇到了问题,比如你的云原生方法和云原生部署,你如何知道应用程序的哪个版本在Docker文本之间发生了变化?114,也许之前的版本是93。在这里,我可以继续,我可以使用Artifactory来做一个diff,告诉我,“嘿”,实际上,在这里我将使用92。114号和92号之间发生了什么变化?看起来节点前端是一样的。看起来我们没有改变UI,但看起来Java后端已经改变了。在几秒钟内,我就在刚刚托管到云原生方法中的应用程序的两个版本之间进行了补救。
但我也了解它背后的所有部分,所有的环境和系统信息。我们还提供了这些二进制文件的深层扫描。现在,这是一个糟糕的容器,我必须告诉你。这个有超过2000处违规,这是我的测试之一。但我要关注一个问题。但问题是,你必须知道的是,当你使用Artifactory时,我们会在容器内找到每一个细节级别的问题。我们对每件作品都做了深度扫描。所以,如果我向你们展示我在这里发现的一个关键问题,顺便说一下,你们可以看到,JFrog是一个认证的数字权威机构,一个CNA,所以我们生产cbe。
但如果你看这里,你可以看到我们实际上发现了一个关键问题。顺便说一下,在这种情况下,我们的研究团队说它实际上是中等的,因为我们也提供上下文分析。但就像我说的,Docker容器,你需要理解这一边的一切。在这种情况下,实际上,我遇到的这个问题恰好是构建的图像的一层中的一个罐子。顺便说一下,这实际上更快Jackson,它是Spring Boot的XML解析器。这实际上是在我的应用程序的罐子里检测它。我们为您提供了所有的信息。在这种情况下,这是一个可怕的CBE,但我们的公司和我们的团队,我们的研究团队已经进入并提供了更多的研究数据,所以你可以提供更好的补救,一个更快速的反应。
现在,对于我们的x射线产品,你应该去看关于它的视频,你实际上可以在它进入之前检测到它,因为…只是要注意,如果你在生产中检测到它,它比你的开发人员在开发人员层面上首先修复它要贵100倍。此外,我们还向您展示了操作系统、运行时和应用程序的所有许可文件。我们还提供了操作风险等方面的信息,对吧?我用来构建应用程序的二进制文件有多久的历史了?我们还帮助您了解Docker应用程序内部的所有组件。如果你看这里,你可以看到我实际上可以向你展示所有实际组件的层,所有在Docker图像层中的二进制文件。如果需要,我还可以进入并创建报告,如违反、许可、安全性和操作风险,如PDF、CSV或JSON。
你知道,可能会有一个受监管的行业。我们可以为您提供软件构建材料。这些天你听到了很多,对吧,我们有很多关于这个的演讲。这个想法是,它将构成你产生的二进制的成分列表放在一起。在本例中是Docker映像。我们支持CycloneDX格式的SPDX。但另一件事是,如果你看这里,我们可以把它连接到你的Jira上,给你看Jira的问题。除此之外,你还可以制作Jira罚单以便更快地进行补救。您还可以继续在图像之间进行完全的区别,这样您就可以查看工件、依赖项和环境系统信息,并查看是否发生了变化。您还可以通过查看这里来跟踪它的整个发布周期。 But that’s great. That’s a lot of information I just threw at you.
我们来做这个。调试云原生应用程序非常困难。所以我们从Docker图像开始…就说你想找出哪里出了问题。我们在Artifactory中捕捉事物的最好的部分之一,很多人都喜欢这个,事实上,我可以进入这里,我可以从Docker图像中追踪它。我将访问我实际托管的tar gz。
这恰好是一个MPM应用程序,你可以看到它是一个Node应用程序。我可以看到关于它的所有信息,它是什么时候生产的,多久以前,多少次下载。我可以看到它的依赖关系的所有信息。我可以看到它有什么权限。它有自己的一组x射线数据,我可以查看是否有任何我应该担心的安全问题。我可以添加更多元数据,使其更适用。我可以说,“只拉一个特定的东西。”我想加多少就加多少。我可以在任何时候跟踪任何二进制文件,然后说,“嘿,如果有人使用这个二进制文件,我想收到通知”所以我可以说,“嘿,不要用这个,用另一个”
但这里的关键因素是,大多数人……当他们构建这些云原生应用程序时,你确实遇到了一些问题……比如说你遇到了一个问题,一个政府,一个安全暴露,你突然担心,这是从多久以前开始的?你要多久才能找到?在这里,我可以说,首先,这是实际生成tar gz的构建,但这里是每一个,在这个例子中,镜像,Docker镜像,都使用了这个我可以告诉你它到底有多深。我可以从这里开始,跟随这个构建,回到它的创建,给你看,这是tar gz,我可以找到它自己的所有信息。
但让我们谈谈这件事的另一面。就像我之前说的,头盔图表。当我们看Helm图表时,我在这里做了另一个DSL。我知道这样看起来有点乱。但如果你熟悉shell并且动态地做事情,你就知道SED是重写文件的一种方式,对吧?如果你不习惯Helm和Kubernetes,请深入研究一下……你有了你的图表,然后你有了价值观,对吧?值是Kubernetes的疯狂Libs版本,你把这些值放进去。
在本例中,我想要图表的值,在这里,在这里,我将使用SED命令。我想要一个查询,并找到我将在Helm chart中使用的应用程序的最新版本,以部署我的Kubernetes服务。再一次,我们要用到我们的老朋友AQL。因此,我们要查询,在这种情况下,我的Docker注册表,在这种情况下,我的产品注册表,并根据元数据为我提供最新的已批准的注册表。我想确保我有最新的。
我甚至有这种能力在Jenkins里面动态地创造它。我们去看看,好吗?我还把赫尔姆的图表放在这里。如果我们进去,如果你看,它实际上有一些重要的事情在发生。如果你看舵手图表,我可以从这里出发,我可以进去。你可以看到这是我生成的tar gz。在这种情况下,只有一件藏物,对吧?我们有一些运输依赖关系,我会在这个例子中展示给你们看。你可以看到这里有一个来自Docker应用程序的manifest Dot JSON,但让我们进去看看Helm图表……当我实际继续,我构建了这个,我得到了那个信息,我可以在这里说,“好吧,这是我要部署的Helm图表。”
如果你看这个图表,这个值文件,我可以从这里给你看,查看源代码,我可以给你看我正在做的Docker应用的实际版本就在这里。我可以向你们展示,我已经动态地拉出了这些源,这样我就能确切地知道,在部署这个应用程序时,我将使用什么标记。通过这样做,你确切地知道你在做什么,你在部署什么。你应该通过这样做来减轻自己的压力,因为这样其他一切都集中在创新上,而不是执行上。它允许您继续执行并自动化此操作,以便您可以更快更有效地进行部署。
如果你想了解更多关于平台其他部分的信息,请联系我们。我们还有自己的JFrog YouTube频道,我们的网站上有很多东西。但这里的想法是更快,更本地的部署,甚至可以使用我们的JFrog管道产品,我也可以把它作为其中的一部分展示给你们。就像我说的,我们集成了很多很多其他工具,包括Kubernetes。我想我这里可能有一些。如果你看这里,就像我说的,你实际上可以继续使用我们的作品。好了,各位,我只想说非常感谢你们。祝你度过美好的一天,平平安安,身体健康,来我们这里多多讨论云数据。

要么快速释放,要么死亡