写点什么

如何在多 Kubernetes 集群和多租户环境中使用 Prometheus 监控

  • 2020-04-22
  • 本文字数:4099 字

    阅读完需:约 13 分钟

如何在多Kubernetes集群和多租户环境中使用Prometheus监控

JFrog Artifactory 是一个 artifacts 仓库管理平台,它支持所有的主流打包格式、构建工具和持续集成(CI)服务器。它将所有二进制内容保存在一个单一位置并提供一个接口,这使得用户在整个应用程序开发和交付过程中,能更易于上传、查找和使用二进制文件。


在本文中我们将介绍如何使用 Rancher 在 Kubernetes 集群上部署和管理 JFrog Artifactory。在看完本文后,你将会系统地了解 JFrog Artifactory OSS 的安装设置,并且能够按照同样的步骤在任何 Kubernetes 集群中安装 Artifactory OSS 或者它的商业版本。当然,我们还将向你展示如何在 Artifactory 中创建通用仓库并且向其中上传工件。


除了文章中所展示的之外,Artifactory 还有更多特性,在以后的文章中我们会更详细地介绍它们。


好了,那么我们开始吧!

使用的软件

本文使用了下列的软件工具:


  • Rancher v2.0.8

  • 运行在 Google Kubernetes Engine version 1.10.7-gke.2 上的 Kubernetes 集群

  • Artifactory helm chart version 7.4.2

  • Artifactory OSS version 6.3.2


如果以后本文更新了,请使用到时候的最新版本。


和 Kubernetes 中的其他工具一样,我们有多种方法来安装 Artifactory。这里我们将使用 Helm chart,Helm 提供了一种给应用程序安装命令打包及分享给他人的方式。你可以把它想象成服务于 Kubernetes 的包管理者。在 Rancher Catalog(应用服务目录)中,Rancher 集成了 Helm,在 Catalog 中你只需要点击几下就可以部署任何 Helm 支持的应用程序。除此之外 Rancher 还有其他特点,包括:


  • 一个简单直观的 Web 界面

  • 统一纳管所有云上、所有发行版、所有 Kubernetes 集群

  • 一个单一视图展示所有托管的集群

  • 开箱即用的集群监控

  • 工作负载、基于角色的访问控制(RBAC)、策略和项目管理

  • 所有 Kubernetes 的功能都不需要在本地安装任何软件

安装 Rancher

注意:如果你已经有了 Rancher v2 Server 和 Kubernetes 集群,直接可以跳过这部分,直接进入安装 JFrog Artifactory 的教程部分。


Rancher 非常强大,它能够在任何地方管理 Kubernetes 集群,因此我们将在 GCE 实例上以独立模式启动 Rancher Server,使用它在 GKE 中部署 Kubernetes 集群。


在独立模式下启动 Rancher Server 非常容易——因为它是 Docker 容器,在启动容器之前,我们需要一个计算实例来运行它,那么我们用下面的命令启动:



请你根据自己的部署修改 project 以及 zone 参数。


几分钟之后你应该能看到实例已经准备好了。



记录下来 EXTERNAL_IP 地址,稍后连接 Rancher Server 的时候你可能会用到。


计算节点启动并运行之后,我们通过 GCE 的 CLI(命令行接口)SSH 到它。



同样,注意调整 project 和 zone 参数,在你用不同的 name 或者在不同的 zone 启动节点时它们会变化。


连接之后,运行下面的命令安装一些依赖包并且安装 Docker CE。Rancher Server 是一个 Docker 容器,如果想要继续安装的话我们就需要用到 Docker 了。



有了这些之后,我们就可以部署 Rancher 服务器了。在第一次启动容器时,Docker Engine 会从 Docker Hub 中获取容器镜像,在启动容器之前先将其保存在本地。以后容器要启动时,就直接使用本地的镜像,这样速度会更快。


使用下面的命令控制 Docker 启动 Rancher Server 容器,并监听主机上的 80 和 443 端口



如果一切正常,在返回提示符之前 Docker 会打印出下载的状态,接着是新的容器 ID。



恭喜你!你已经成功启动了一个 Rancher Server 实例。


在浏览器中输入刚刚你记录下来的 EXTERNAL_IP 地址,你需要接受 Rancher 默认安装的 self-signed 证书。这之后,会弹出欢迎界面,设置密码(记住它!)接着继续下一页。



在这一页面上你需要设置 Rancher Server 的 URL。在生产部署中这可能是一个主机名,比如 rancher.yourcompany.com,但是如果你使用的是 demo server,可以直接使用上面的 EXTERNAL_IP 地址。



点击 Save URL 之后,会进入到 Clusters 页面,从这里开始我们就可以开始部署自己的 Kubernetes 集群了。

使用 Rancher 来部署一个 GKE 集群

Rancher 可以部署、管理来自任何地方的 Kubernetes 集群。这些集群可以来自 Google、Amazon、Azure、阿里云、华为云、腾讯云等等,可以在云节点上、数据中心里,甚至是运行在你笔记本上的 VM 中。这是 Rancher 最出色的一点。这次我们会使用到 GKE。在点击 Add Cluster 之后,选择 Google Container Engine。


针对本 demo,将 name 设置成 jfrog-artifactory。


要创建集群,Rancher 需要访问 Google Cloud Platform 的权限。这些权限可以通过 Service Account 的私钥 JSON 文件获得。如何产生它呢,首先找到 service account 的 name(根据你的情况修改 project 的 name):



输出的 service account 会代替<SA>。复制整个地址并把它用到下面的命令:



这样会在当前文件夹下创建一个名为 key.json 的文件。这就是 Service Account 私钥,Rancher 将用它来创建集群:



你可以把文件的内容粘贴到文本框中,也可以点击 Read from a file,选择 key.json 文件。Rancher 将使用该信息生成一个页面,在页面中配置你的新集群:



设置你想要的 Zone、Machine Type、Node Count 以及 Root Disk Size。当然你可以参考上图 demo 中使用的默认值。


点击 Create ,集群就会部署到 GKE 上,一切 ok 后你可以在 UI 界面上看到它已经是活跃状态的了。


安装 JFrog Artifactory

接下来我们将通过 JFrog 的 Helm chart 仓库来安装 Artifactory。Helm charts,就像 OS 包管理系统一样,在 Kubernetes 环境中提供给你稳定的部署容器应用程序的方式,并且让你可以更新或者回滚应用程序。chart 保证你给容器安装了特定的版本或者标记,在应用程度有多个组件的情况下,Helm chart 能够确保你的全部组件都安装了正确的版本。

安装 JFrog Helm 仓库

Rancher 在其应用程序目录中附带了一个 Helm charts 库,不过为了满足 Rancher 用户对灵活性的要求,你还可以安装任何第三方的 Helm 仓库来部署这些应用程序到集群中。我们今天将使用 JFrog 仓库。


在 Rancher 的 Global Cluster 视图中,单击 Catalogs,接着点击 Add Catalog,在弹出的窗口中,输入一个名称,比如 jfrog-artifactory,然后输入官方 JFrog 仓库的位置。



点击 Create ,JFrog 仓库就会出现在自定义目录的列表中了。


部署 Artifactory

我们接着部署 Artifactory。在 Global 视图中,选择 jfrog-artifactory 集群下的默认项目:



进入默认项目后,选择 Catalog Apps,点击 Launch。Rancher 将从 Application Catalogs 中显示可用于安装的应用程序。这里你可能发现 artifactory-ha 出现了两次,一次是作为合作伙伴提供的 chart 出现在 Rancher 附带的默认应用程序库中,另一次是来自 JFrog 仓库本身。我们安装 Helm 仓库是因为我们想安装常规的、非 HA 的 Artifactory,我们就喊它 artifactory。所有目录下的应用程序都指明了它们来自哪个库,所有在多个库中都有 chart 的情况下,你仍然可以选择安装哪个库



当你选择 View Details 时,你可以更改有关如何安装应用程序的选项。在默认情况下,此目录项将部署已授权的 Artifactory 商业版本,为此你需要证书。如果你已经拥有证书,那么可以保留默认选项;但是,我们想安装 OSS 版本,所以我们将更改 chart 安装的镜像。


我们在 Configuration Options 界面进行操作,选择 Add Answer,设置好 artifactory.image.repository 的变量名以及 docker.bintray.io/jfrog/artifactory-oss 的值。



现在,当你点击 Launch,Rancher 就会把 Artifactory 部署到你的集群上。



当安装完成后,红色的进度条会变更为绿色。这时如果你点到 artifactory 上,它会展示 Rancher 给你创建好的资源。在本例中,它在 Kubernetes 中创建了三个工作负载,三个服务,一个卷以及一个加密。


选择 Workloads,你可以看到它们都在运行:


解决 Pending Ingress

在本文发布时,出现了一个 bug 导致 Ingress 一直是 Pendding 状态。如果你在单击 Load Balancing 时看到这一点,请你阅读解决方案。



想要解决 pendding Ingress 问题,我们需要创建 Ingress 能发送流量的服务。点击右上角的 Import YAML ,在打开的窗口中,粘贴下面的信息,然后单击 Import


访问 Artifactory

现在在 WordLoads 界面,artifactory-artifactory-nginx 工作负载下会显示出用于查看 443/tcp 和 80/tcp 端口的可点击链接:



当你选择 443/tcp 时,它会在浏览器的新标签页中打开 Artifactory UI。因为默认情况下它使用了 self-signed 证书,你的浏览器可能会弹出一个警告,要求在执行之前接受证书。


让 Artifactory 工作起来

现在你已经有了一个功能齐全的二进制工件仓库可供差遣。过程不是很复杂不是吗!接下来在开始使用它之前,还需要进行一些配置。


首先,需要设置管理密码。当它询问有关代理服务器的信息时,除非你已经将它部署到需要代理配置的位置上了,否则就选择 skip。创建一个通用仓库,选择 Finish。


现在,我们来快速过一下一些基本用法。


首先,我们上传之前用于创建 Artifactory 安装的 helm chart。


在左侧菜单中选择 Artifacts ,可以看到刚刚创建的通用仓库。选择它,然后在右上角选择 Deploy ,将 Helm chart 的 zipfile(或任何其他文件)上传到仓库中。



等部署完毕之后,你就能在仓库中的 Tree 选项下看到它了。



虽然这只是对 Artifactory 的一个简单测试,但它已经是完全能使用的了。


你可以将 Artifactory 用于二进制工件存储和分发,并使用 Rancher 轻松地管理工作负载、集群以及与部署本身相关的内容。

清理

如果你已经完成了本文中的 demo,那么就可以从 Rancher 的 Global Cluster 视图中删除 Kubernetes 集群。这步操作将会从 GKE 中把它移除掉。这之后,你就可以直接从 GCE 中删除 Rancher Server 的实例了。

关闭

JFrog Artifactory 非常的强大。每天都有大量的组织使用它,掌握快速且安全地将它部署到 Kubernetes 集群中的能力是非常有用的。


根据他们的文献所述,Artifactory 让用户可以“快速发布或快速清除”。同样的,Rancher 让你能快速部署,同时控制资源和周围环境的安全性。你可以在世界任何地方构建、部署、拆卸、加密、监控 Kubernetes 集群以及与之交互,而所有的这些都只来自于一个简单的、方便的、安全的接口。


没什么比这更容易的了!


2020-04-22 18:32746

评论

发布
暂无评论
发现更多内容

重塑价值:新一代ITSM平台的建设、咨询与实施

云智慧AIOps社区

ITSM 智能运维

GitOps系列二|如何借助极狐GitLab 和Terraform以代码形式构建基础设施?

极狐GitLab

kubernete

为什么智能作业灯突然成为教育行业的趋势?

anyRTC开发者

音视频 WebRTC 智能硬件

2021年,Java开发者值得学习的13项技能

百度开发者中心

Java

用 Go struct 不能犯的一个低级错误!

煎鱼

Go 语言

为了不写接口文档,我肝了个 IDEA 插件!

程序员小航

Java IDEA idea插件 YAPI 文档

[译] R8 优化: Staticization

Antway

6月日更

朋友乔迁住新房 禧大福酒竟成为宴席最大赢家

Geek_50a546

阿里JAVA架构师面试136题含答案:JVM+spring+分布式+并发编程!

Java 程序员 架构 面试

openEuler开源之后:引领新的技术变革

花花

试用期 签约计划

【 Meetup 推荐】6月26日,邀请您相聚西子湖畔,探讨 2021 音视频技术最佳实践

七牛云

音视频 直播 RTC Meetup

校友会小程序开发笔记五:找校友功能模块设计与实现

CC同学

校友录小程序

Linux 中实用但很小众的 11 个炫酷终端命令

学神来啦

云计算 Linux 运维 linux运维 网络运维

失业这件事,你认真考虑过吗?| 话题

Albert

6月日更

百度C++工程师的那些极限优化(并发篇)

百度Geek说

c++ 性能优化

多种数据形式下智能问答的应用解读

百度大脑

微博、快手纷纷整治饭圈乱象:抵制不良饭圈风气是全网的责任

石头IT视角

程序员上班“划水”向阿里猛投简历,两次被刷后,终成“菜鸟”P6

Java 程序员 架构 面试

保姆级教学,22张图揭开ThreadLocal

程序猿阿星

内存泄露 ThreadLocal 线程安全 弱引用 ThreadLocalMap

算法导论的道与术、工程师思维奠定能走多远-John 易筋 ARTS 打卡 Week 51

John(易筋)

ARTS 打卡计划

第一次见家长送禧大福酒好吗?

Geek_50a546

从零开始学习3D可视化之爆炸图

ThingJS数字孪生引擎

科技 3D 3D可视化

作为一名程序员如何开展自己的副业呢?

Changing Lin

话题讨论 6月日更

技术实践 | 如何基于 Flink 实现通用的聚合指标计算框架

网易云信

框架 flink 执行

公安情指勤合成作战系统搭建,情报指挥系统搭建

为什么一款看似美好的产品会没有市场?

boshi

创业心态 产品经历

向996宣战!快乐工作,健康生活的互联网要来了吗?

架构精进之路

话题讨论 话题 996 6月日更

Java 连接操作 MySQL 数据库(增删查改操作)

若尘

MySQL 数据库 java编程 驱动 6月日更

Cocos 大表姐:所有技术的本质都是数学问题丨ECUG Meetup 讲师专访

七牛云

音视频 游戏开发 Cocos Meetup

让开发更丝滑,KodeRover开源分布式持续交付项目Zadig | TGO喜报

花花

试用期 签约计划

能否借鉴鸿蒙思路实现物联网燃气泄露监控?

老猿Python

鸿蒙 物联网 北向接口 远程监控

如何在多Kubernetes集群和多租户环境中使用Prometheus监控_文化 & 方法_Rancher_InfoQ精选文章