写点什么

如何在多 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:32908

评论

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

【Java秋招面试宝典300题】阿里P8爆肝2个月呕心整理,挑战30天打卡秋招上岸!(基础、Spring、MySQL、JVM、微服务分布式)

退休的汤姆

Java 面经 校招 Java工程师 秋招

青软集团蝉联华为云「千万俱乐部奖」「最佳销售黑钻奖」两大奖项

神奇视野

开源一夏 | SSO单点登录流程源码学习

六月的雨在InfoQ

redis 开源 SSO 单点登录 8月月更

注册荣耀开发者,惊喜抽好礼!邀请5位好友赢50元购物卡~

荣耀开发者服务平台

开发者 手机 智慧屏 荣耀 honor

如何实现跨数百个K8s集群的管理

云原生技术社区

istio 服务网格 K8s 多集群管理 Istio流量管理

深入解析Flutter下一代渲染引擎Impeller

字节跳动终端技术

flutter 字节跳动 渲染器 Impeller 渲染方案

兆骑科创创新创业服务平台,云路演,人才引进平台

兆骑科创凤阁

"教练,我想打篮球!" —— 给做系统的同学们准备的 AI 学习系列小册

Zilliz

人工智能开源

云上开发如何实现持续代码提交

华为云开发者联盟

云计算 后端 代码

翻译|是否应该在 Kubernetes 上运行数据库

RadonDB

MySQL Kubernetes RadonDB 数据库·

签约计划第三季获奖名单公布,一起见证百人成团!

InfoQ写作社区官方

热门活动 签约计划第三季

Zebec社区利好频传,Galaxy Project上领取专属Zebec OAT

股市老人

金融机构求索数据价值,“数牍方案”提供可行解 数牍科技

Jessica@数牍

隐私计算 金融行业 数据隐私安全

重庆邮电大学新工科训练营 实践Java和大数据方向全真产业项目

神奇视野

Bytebase 1.3.1 - 2022.8.18

Bytebase

SQL优化 database SQL审批

出海季收官,速来 Get 全球化发展实操手册

融云 RongCloud

参与开源共建,你不可不知的贡献技巧

OpenHarmony开发者

OpenHarmony

2000字带您了解什么是 SD-WAN,它是如何工作的?

wljslmz

SD-WAN 网络技术 8月月更

App Deploy as Code! SAE & Terraform 实现 IaC 式部署应用

阿里巴巴中间件

阿里云 Serverless Terraform 阿里云云原生

Mysql和Redis数据如何保持一致

京东科技开发者

数据 数据一致性 MySQL 数据库 数据库· redis 底层原理

关于Copy On Write Array List,你会安全使用么

华为云开发者联盟

List 开发

翻译 | Kubernetes Operator 对数据库的重要性

RadonDB

Kubernetes operator RadonDB 数据库·

Go Go 简单的很,标准库之 fmt 包的一键入门

梦想橡皮擦

Python 爬虫 8月月更

2022秋招,Java岗最全面试攻略,吃透25个技术栈Offer拿到手软

退休的汤姆

面经 社招 Java工程师 秋招 Java八股文

Python 教程之输入输出(8)—— print() 中的 Python 结束参数

海拥(haiyong.site)

Python io 8月月更

第一时间快速了解 Kubernetes 1.25

云原生技术社区

容器 云原生 kubernetes入门 kubenetes Kubernetes, 云原生, eBPF

阿里三面被面试官狂问Redis,简历上再也不敢写"精通"了

退休的汤姆

面试题 阿里 秋招 redis 底层原理

Shopee商家数字商品可配置系统设计与实现

Shopee技术团队

前端 Shopee

工业智能化转型升级难?华为云这三招,加速商业变现

华为云开发者联盟

云计算 后端 华为云 工业智能化

前端mcok原来可以如此丝滑

Liam

前端 前端开发 Postman Mock 前端工具

嘎嘎牛逼!对标P7+)互联网Java高级架构师面试标准手册

Geek_Yin

阿里巴巴 程序员人生 P7架构师 #java 程序员面试、

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