在Kubernetes集群上部署和管理JFrog Artifactory

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集群以及与之交互,而所有的这些都只来自于一个简单的、方便的、安全的接口。

没什么比这更容易的了!

原文地址:http://blog.51cto.com/12462495/2335475

时间: 2024-11-07 08:36:32

在Kubernetes集群上部署和管理JFrog Artifactory的相关文章

在 Kubernetes 集群快速部署 KubeSphere 容器平台

KubeSphere 不仅支持部署在 Linux 之上,还支持在已有 Kubernetes 集群之上部署 KubeSphere,自动纳管 Kubernetes 集群的已有资源与容器. 前提条件 Kubernetes 版本: 1.13.0 ≤ K8s version < 1.16: Helm,版本 >= 2.10.0(不支持 helm 2.16.0 #6894),且已安装了 Tiller,参考 如何安装与配置 Helm: 集群的可用 CPU > 1 C,可用内存 > 2 G: 集群已

kubernetes集群安装部署

部署环境说明: 1.CENTOS 7.4 2.Docker version 17.05.0 3.etcd Version: 3.3.8 4.flannel-v0.10.0 node节点上运行: Kubelet kube-proxy Docker flannel MASTER节点上运行: Etcd flannel kube-apiserver kube-controller-manager kube-scheduler IP    Address Role CPU Memory 192.168.1

kubernetes有状态集群服务部署与管理

有状态集群服务的两个需求:一个是存储需求,另一个是集群需求.对存储需求,Kubernetes的解决方案是:Volume.Persistent Volume .对PV,除了手动创建PV池外,还可以通过Storage Class来让存储系统自动创建. 对集群需求,Kubernetes的解决方案是Pet Set.Pet Set 又通过Init Container来做集群初始化,通过Headless Service来为集群成员提供稳定 的网络身份. 在K8S运行的服务,从简单到复杂可以分成三类:无状态服

在kubernetes集群中部署mysql主从

本文介绍在kubernetes环境中部署mysql主从集群,数据持久化采用nfs. 一.环境介绍Mysql版本:5.7 Mysql master节点: 主机名:vm1IP地址:192.168.115.5/24 Mysql slave节点: 主机名:vm2IP地址:192.168.115.6/24 NFS节点:主机名:vm2IP地址:192.168.115.6/24共享目录:/home/mysql_master./home/mysql_slave 二.准备mysql主从的镜像环境dockerfil

解决 Prometheus 不能获取 Kubernetes 集群上 Windows 节点的 Metrics

背景 接上一篇 快速搭建 Windows Kubernetes , 我们发现原来在 Windows Kubernetes 会有一些与在 Linux 上使用不一样的体验,俗称坑,例如 hostAliases.对于我们希望真的把 Windows 放入生产,感觉除了基本的 Pod.Volume.Service .Log 以外,我们还需要监控.一般来讲我们会用 Prometheus 来做监控,然后通过 Grafana 来展示,但是 Prometheus 的 Node Exporter 是为 *nix 设

在kubernetes集群中部署php应用

本文将介绍在kubernetes环境中部署一套php应用系统.前端web采用nginx.中间件php以fastcgi的方式运行,后台数据库由mysql主从提供支撑.各服务组件之间的调用采用dns解析服务名的方式进行,数据和配置文件持久化采用pv和pvc(基于nfs). 一.通过dockerfile创建php镜像文件 # cat dockerfile FROM docker.io/openshift/base-centos7:latest MAINTAINER ylw "[email protec

Longhorn:实现Kubernetes集群的持久化存储

Longhorn项目是Rancher Labs推出的开源的基于云和容器部署的分布式块存储新方式.Longhorn遵循微服务的原则,利用容器将小型独立组件构建为分布式块存储,并使用容器编排来协调这些组件,形成弹性分布式系统. 自2017年4月Longhorn项目发布以来,人们对在Kubernetes集群上运行Longhorn存储就产生了极大的兴趣.近日,Longhorn v0.2版本发布了,它可支持任何Kubernetes集群的持久化存储实现! Why Longhorn 如今,基于云和容器的部署规

基于Python+Django的Kubernetes集群管理平台

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/1345 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调度管理等方面都有其难以言喻的优势,但是随着业务的不断增长,以及服务的多元化,容器的体量与管理的难度也随之增长. 浅述Kubernetes集群日常管理维护中的一些痛点: 1.较为庞大的集群规模及容器数量维护管理

使用kubeadm部署kubernetes集群

使用kubeadm部署kubernetes集群 通过docker,我们可以在单个主机上快速部署各个应用,但是实际的生产环境里,不会单单存在一台主机,这就需要用到docker集群管理工具了,本文将简单介绍使用docker集群管理工具kubernetes进行集群部署. 1 环境规划与准备 本次搭建使用了三台主机,其环境信息如下:| 节点功能 | 主机名 | IP || ------|:------:|-------:|| master | master |192.168.1.11 || slave1