写点什么

把 JFrog Artifactory 作为 Docker 镜像仓库

  • 2020-04-23
  • 本文字数:3232 字

    阅读完需:约 11 分钟

把JFrog Artifactory作为Docker镜像仓库

本文是使用Rancher部署JFrog Artifactory的续集。本文中我们将演示如何把 JFrog Artifctory 作为你 Docker 镜像的私有仓库。


注意: 使用 JFrog Artifactory 的功能前需要获得证书, 不过你可以先选择试用 30 天 ,然后继续按照下文的流程操作。


##为部署工作准备 GCP


如果你想在本地网络以外的地方使用 Artifactory,首先要有一个公有 IP 地址。在这一系列文章的上篇中,我们将集群部署到谷歌云,本文中我们将继续使用 GCP 资源。当然,你要使用其他公有云都是一样的。


你可以通过谷歌云 Shell 或者 gcloud 命令在本地环境中运行下面的命令,申请公共 IP:


gcloud compute addresses create artifactory-demo --global
复制代码


输入名称用于取回 IP 地址(此次教程中我们取的名字是 artifactory-demo)


gcloud compute addresses describe artifactory-demo --global
复制代码


在 output 中查找 address 标签


address: 35.190.61.62
复制代码


为了给我们的部署服务获得满足需求的域名,我们将使用 Basecamp 的 xip.io 服务,在本教程中它的地址是 35.190.61.62.xip.io。

部署 Artifactory

你可以按照上一篇文章中的步骤来部署 Rancher 和 Artifactory,但是当你进入到应用程序部署页面中的配置部分时,还需要添加及修改下面的变量:


ingress.enabled=trueingress.hosts[0]=35.190.61.62.xip.ioartifactory.service.type=NodePortnginx.enabled=falseingress.annotations."kubernetes\.io/ingress\.global-static-ip-name"=artifactory-demo
复制代码


(可以复制/粘贴这块的文本到输入框里,Rancher 会自动转换)


一切完成后,应该会看到下面的样子:



点击 Launch 开始部署资源。

变量的概念解释

新 Artifactory 实例启动起来了,现在来看看刚刚我们都配置了什么。


ingress.enable=true


该变量允许创建一个 ingress 资源,它将作为 Artifactory 的代理,在我们的例子中,Ingresss 是带有 GCP 的负载均衡器。


ingress.hosts[0]=35.190.61.62.xip.io


这设置了 Artifactory 的主机名。xip.io 的一个神奇之处在于,我们可以创建任何子域并将其解析成 IP 地址,因此当我们使用 docker-demo.35.190.61.62.xip.io 时,在后面它都会被解析成 35.190.61.62。


artifactory.service.type=NodePort


在 Kubernetes 节点上的随机端口公开 Artifactory 的服务。Ingress 资源将向该端口发送流量。


nginx.enabled=false


我们是通过 Service 资源,利用 Ingress 和 Artifactory 进行通信的,因此我们希望禁止掉 nginx 代理,因为 Artifactory 在某些情况下会启动它。


ingress.annotations…


这就好比是将 Kubernetes 绑定到静态公共 IP 地址的粘合剂。我们将它设置成你保留的地址的名称,便于 Ingress 查找和使用正确的 IP。我们必须避免使用长长的内容,因为那是标注(annotations)的 name。如果不是这样的话,Kubernetes 可能会误解我们想要做什么。

检查部署

当部署完成后,查看 Workloads 选项卡。这里你会看到两个工作负载,一个是应用程序(artifactory-artifactory),另一个是 artifactory 使用的 PostgreSQL 数据库(artifactory-postgresql)



下一步查看 Load Balancing 选项卡,你会看到 Ingress 对象已经有了我们提供的主机名。



如果选择 View/Edit YAML 并滚动到下面,你可以看到指向 GCP 中地址名的标注(图片中的第 10 行)



在 Ingress 定义的下面你还可以看到 spec.rules.host 中的主机名匹配到了 status.loadBalancer.ingress.ip 的 IP 地址。

配置 Artifactory

关闭 View/Edit YAML 窗口,会返回 Load Balancing 选项卡,这里你可以看到一个带 xip.io 地址的链接。点开它打开 Artifactory,或者在浏览器中输入主机名。


单击 wizard,首先添加证书密钥,接着设置管理员密码。点击其余部分一直到 wizard 完成。


在左侧的菜单中,选择 Admin ,然后在 Repositories 下选择 Local



在这你可以看到经设置 wizard 后创建的默认仓库。在右上角选择+New 创建一个新的仓库,用 Docker 作为 package 类型,输入仓库的名称。在本例中,我们选择了 docker-demo,其余内容都使用的是默认值,然后选择 Save & Finish 来创建新的仓库。



这样一来,你选择的名称(即我们这里的 docker-demo)就成为了 xip.io 域名的子域。在我们此次的安装中,我们使用的是 docker-demo.35.190.61.62.xip.io。当然你配置的会和我不同,不过格式是相同的。

对镜像仓库进行测试

拥有了私有的 Docker 镜像仓库后,如果不使用它,那还有什么意义?


对生产部署,你将通过 SSL 证书来保护仓库的安全,这需要真实域名中的一个真实主机名。在本教程中,你可以直接使用新创建的仓库,不过要告诉 Docker 这是一个不安全的仓库。


按照文档创建或编辑 daemon.json:https://docs.docker.com/registry/insecure/。然后按照下面我的例子这样添加你的主机:


{ "insecure-registries": ["docker-demo.35.190.61.62.xip.io:80"]}
复制代码


如果你使用的是 Windows 或者 Mac 的 Docker,在应用的偏好中进行设置:



重启 Docker 应用更改的内容,在启动之后,你就可以使用仓库:


docker login docker-demo.35.190.61.62.xip.ioUsername: adminPassword:Login Succeeded
复制代码


继续我们的测试,pull 一个公共的容器镜像,re-tag 它,接着把它 push 到新的私有仓库中。

Pull 一个公共的容器镜像

Pull a Public Container Image$ docker pull nginxUsing default tag: latestlatest: Pulling from library/nginxf17d81b4b692: Pull completed5c237920c39: Pull completea381f92f36de: Pull completeDigest: sha256:b73f527d86e3461fd652f62cf47e7b375196063bbbd503e853af5be16597cb2eStatus: Downloaded newer image for nginx:latest
复制代码

Re-tag 镜像

你可以在系统中看到当前的镜像 id 和信息了:


$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              dbfc48660aeb        2 days ago          109MB
复制代码


Re-tag 它,这样 Docker 就知道要把它 push 到你的私有仓库了:


$ docker tag nginx docker-demo.35.190.61.62.xip.io:80/nginx:latest
复制代码

Push 镜像到私有仓库

当镜像有了 re-tag,使用 docker push 传到私有仓库:


$ docker push docker-demo.35.190.61.62.xip.io:80/nginx:latestThe push refers to repository [docker-demo.35.190.61.62.xip.io:80/nginx]86df2a1b653b: Pushedbc5b41ec0cfa: Pushed237472299760: Pushedlatest: digest: sha256:d98b66402922eccdbee49ef093edb2d2c5001637bd291ae0a8cd21bb4c36bebe size: 948
复制代码

在 Artifactory 中验证 Push

返回到 Artifactory UI,在菜单中选择 Artifacts:



这里就可以看到 nginx 镜像以及它的信息了。


下一步可以做什么

如果你有 Artifactory 的证书并且希望运行私有仓库,只需使用你自己的域名以及 ingress 上的 SSL 证书重复上面的教程即可。完成这些附加项之后,你就可以在任何 Docker 或者 Kubernetes 安装中使用私有仓库,而无需告诉主机它可能会出现和不安全仓库的通信。

清理

要想清理掉文中出现的资源,先从 Rancher 中删除 Kubernetes 集群,并且从 GCP 中删除 Rancher 服务器:


gcloud compute --project=rancher-20 instances delete \ rancher-instance --zone=europe-west2-c
复制代码


你还需要删除公共 IP 地址的分配:


gcloud compute addresses delete artifactory-demo --global
复制代码

结语

JFrog Artifactory 提供了用于开发生命周期核心部分的服务,你几乎可以存储和检索到开发团队产生的任何类型的工件,并把这些工件存在一个集中的、受管理的地方,这样对于任何 IP 基础设施,Artifactory 都是它重要的部分。


Rancher 可以轻松地将 Artifactory 部署到 Kubernetes 安装中。短短几分钟内,我们就创建并运行了 Artifactory,这安装所花费的时间甚至可能比实际上配置 Artifactory 本身所需的时间还短!


Rancher 的出现让 Kubernetes 更容易上手,Artifactory 更容易管理 binary 资源,把这两者结合起来,就能把你从繁琐的工序中解放出来,专注于你工作的中心,这种自由才是最重要的!


2020-04-23 17:213597

评论

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

捷途山海T2:通勤低成本,日常出行更经济

Geek_2d6073

高通将支持 Meta Llama 3 在骁龙终端运行;特斯拉中国全系车型降价 1.4 万元丨 RTE 开发者日报 Vol.189

声网

OpenTiny 亮相 W3C 2024春季顾问委员会会议,共话行业新趋势。

OpenTiny社区

开源 前端 Web

系统架构基础知识入门指南-下

老张

系统架构 业务流 端到端 技术实践

SD-WAN为什么在亚太地区普及?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

Saturn 4 Ultra土星引领光固化3D打印消费新风尚,大众普及指日可待

科技热闻

一文读懂Partisia Blockhain:兼顾去中心化、安全性与可扩展性

西柚子

混淆原理与实践指南

雪奈椰子

“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?

阿里云云效

阿里云 云原生

直播回顾|6个实例带你解读TinyVue 组件库跨框架技术

OpenTiny社区

开源 Vue 前端 组件库

回归测试的四个步骤

FunTester

​下载量超 200 万,最近频繁登上热搜的 AI 程序员,大家怎么看

阿里云云效

阿里云 AI 云原生

下载量超 200 万,最近频繁登上热搜的 AI 程序员,大家怎么看

阿里巴巴云原生

阿里云 云原生 通义灵码

软件测试学习笔记丨后端接口基本开发 - spring boot发送 POST请求

测试人

软件测试

AIGC在设计中的应用实践

智在碧得

AI 设计 AIGC AIGC技术探索

OpenAI创始人Sam独家专访!GPT5升级时间确定!

蓉蓉

人工智能 openai ChatGPT

「杭州*康恩贝」4月26日PolarDB开源数据库沙龙,开启报名!

阿里云数据库开源

阿里云 技术交流 开源数据库 polarDB 康恩贝

数栈+AI:数栈V6.2创新发布,让数据开发更智能

袋鼠云数栈

大数据 AI 信创 AI技术 大模型

牛批!大三就冲进腾讯了!2024最新大厂面经

王中阳Go

面试 面试题 大厂面经 Java 面试题 go面试题

万界星空科技工时管理系统功能介绍

万界星空科技

mes 工时管理 生产管理 车间管理 工时绩效

软件测试学习笔记丨Selenium多窗口处理

测试人

软件测试 自动化测试 测试开发 selenium

“AI 程序员入职系列”第二弹:如何利用通义灵码光速改写项目编程语言?

阿里巴巴云原生

阿里云 云原生

EasyMR6.2 全面解读:四大功能深度优化,解锁全新大数据处理和计算体验

袋鼠云数栈

hadoop 数据处理 计算引擎 数据计算 国产化替代

SD-WAN在国际教育机构中的应用

Ogcloud

SD-WAN 网络sdn 企业组网 SD-WAN组网 SD-WAN服务商

NFTScan | 04.15~04.21 NFT 市场热点汇总

NFT Research

NFT\ NFTScan

MES系统 DE 生产绩效功能及分析

万界星空科技

绩效管理 生产管理系统 mes 工时管理 生产绩效

华为Mate X5升级HarmonyOS 4.2 大屏互动超有趣

最新动态

Taylor Swift全新专辑上线华为音乐,谱写爱与诗歌音符

最新动态

把JFrog Artifactory作为Docker镜像仓库_文化 & 方法_Rancher_InfoQ精选文章