客座博客:使用Nutanix Karbon部署JFrog Artifactory

任何使用容器和Kubernetes的人都知道坚如磐石的容器注册表。我们将向您展示如何部署JFrog工艺品企业在高度可用的配置中作为Kubernetes Docker注册表与Nutanix Karbon。
这个企业级Kubernetes认证发行版由Nutanix通过原生K8s体验简化了Kubernetes的配置、操作和生命周期管理。carbon使部署高可用性的Kubernetes集群和操作web级工作负载变得简单。
任何有状态K8s应用程序最具挑战性的方面之一是管理持久存储。然而,与Nutanix碳素和集成CSI卷驱动,管理持久存储非常简单。在本演练中,我们将使用为每个carbon集群部署创建的默认存储类,它在后端使用Nutanix卷。
开始之前
我们将通过a在HA模式下安装Artifactory Enterprise执掌图表,所以建议有基本的Helm知识,但不是必需的。如果你刚刚开始使用Helm,看看这个Nutanix社区论坛帖子它贯穿于使用无舵舵和Nutanix Karbon。
你还需要一个人工企业许可证。如果你还没有买,你可以买一个Artifactory免费试用,对于Artifactory Enterprise设置,请确保选中“我想要多服务器试用…”复选框。
默认的人工HA舵图安装一个NGINX服务器,它利用内置的LoadBalancer Kubernetes资源。要为NGINX分配外部IP,金属b在第2层模式是必需的。要安装MetalLB,首先应用MetalLB清单,然后创建一个配置映射,其中包含一个可供MetalLB分发的IP地址池。
$ kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml> $ kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.7.3/manifests/metallb.yaml $ cat metal -config. confyaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name:默认协议:layer2 addresses: - 10.45.100.11-10.45.100.15 #在这里替换你的ip $ kubectl apply -f metallb-config.yaml
遵循的步骤
要在Nutanix上部署Artifactory,并在carbon上为容器创建Kubernetes Docker注册表,请执行以下步骤。
部署Artifactory
要启动Artifactory部署,请在安装了Helm的MacOS或Linux机器上打开一个终端。欲了解更多信息,请参阅我们的无舵舵博客文章。我们将首先初始化无舵柄,然后启动服务。
$ helm init——客户端专用$ helm舵柄启动
接下来,我们将添加JFrog repo到helm,然后使用一个简单的命令安装Artifactory HA。由于每个carbon集群都有一个默认的基于Nutanix卷的存储类,在集群创建时自动创建,因此不需要配置存储,这通常是k8中最具挑战性的方面。
$ helm install——name artifactory-demo jfrog/artifactory-ha
接下来,监视pod、服务和持久卷声明。确保所有pod都变为a运行状态时,NGINX服务获得一个外部ip,所有的批量索赔都是绑定。
美元kubectl豆荚名字就绪状态重新启动年龄artifactory-demo-artifactory-ha-member-0 1/1运行0 4 m52 artifactory-demo-artifactory-ha-member-1 1/1运行0 2 m14s artifactory-demo-artifactory-ha-primary-0 1/1运行0 4 m52 artifactory演示- nginx - 548 c7b744d czngv 1/1运行0 4 m52 artifactory-demo-postgresql-6f66bb8c8b-k5zkf 1/1运行0 4美元m52 kubectl svc名字类型集群ip外部ip端口(S)年龄artifactory-demo-artifactory-ha ClusterIP 172.19.188.165 8081 / TCP 4 m52artifactory-demo-artifactory-ha-primary ClusterIP 172.19.245.160 8081/TCP 4m52s artifactory-demo-nginx LoadBalancer 172.19.254.27 10.45.100.11 80:31895/TCP,443:30121/TCP 4m52s artifactory-demo-postgresql ClusterIP 172.19.101.143 5432/TCP 4m52s kubernetes ClusterIP 172.19.0.1 443/TCP 16m $ kubectl get pvc名称状态VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE artifactory-demo-postgresql Bound pvc-22558e21-4042-11e9-aafc-506b8d53468e 50Gi RWO default-storageclass 4m53svolume-artifactory-demo-artifactory-ha-member-1 Bound pvc-80ca05f3-4042-11e9-aafc-506b8d53468e 200Gi RWO default-storageclass 2m14s volume-artifactory-demo-artifactory-ha-primary-0 Bound pvc-2282341f-4042-11e9-aafc-506b8d53468e 200Gi RWO default-storageclass 4m52s
请注意,所有的持久卷声明都是从每个carbon集群创建的默认存储类中创建的。您还可以在carbon UI中看到匹配的卷:

您会注意到,持久性卷声明的默认大小是200GiB。如果这对您的环境来说还不够,您还有几个选择。一种选择是在部署时将PVC的大小设置为更大的数字:
$ helm install——name artifactory-demo——set artifactory.persistence。=“1 ti“jfrog / artifactory-ha大小
另一种选择是添加NFS存储,如Nutanix Files,或S3兼容的对象存储,如Nutanix Buckets。这些也可以通过helm设置来设置,可以在初始部署之前定义,也可以在之后使用执掌升级命令。欲了解更多信息,请参阅人工储存区舵图。
如果出于任何原因需要查看pod的日志,以便排除故障或验证配置,可以使用以下命令。
$ kubectl logs | less
一旦您的所有pod都运行起来,并且绑定了pvc,您就可以通过上面列出的LoadBalancer External IP访问Artifactory HA,或者运行以下两个命令。
$ export SERVICE_IP=$(kubectl get svc——namespace default artifactory-demo-nginx -o jsonpath='{.status.loadBalancer.ingress[0].ip}') $ echo https://$SERVICE_IP/
建议将此IP添加到贵公司的域服务器中。
设立工厂
输入刚刚收集到web浏览器中的域名或IP,您应该会看到“欢迎来到JFrog Artifactory”消息。
点击下一个,系统将提示您输入许可密钥。
将密钥粘贴进去,然后单击下一步,系统将提示您设置新的管理员密码。
输入强密码后,单击下一个。根据您的环境,可能需要代理服务器来访问internet。如果是,请在出现的页面上输入代理服务器信息。如果不需要代理服务器,请单击跳过。
在下一页中,您可以选择希望为其创建存储库的包类型。选择您的软件包并单击创造。
最后,您应该收到一个通知,说明“人工入职完成!”点击完成开始使用Artifactory。
创建Kubernetes Docker注册表
对于在上一步中添加的每个存储库,您将在帮我介绍框在主页的中间。我们将会进行设置码头工人,但对于任何其他注册表,我们建议从这里开始。
作为一个例子,我们将介绍如何将Artifactory配置为容器的Kubernetes Docker注册表。如果你没有加码头工人在上一步中,如果希望继续,请导航到管理>存储库>当地的,然后单击+新按钮在右上方。
为了使用Artifactory作为码头工人注册表使用反向代理是强制性的。幸运的是,默认的helm图表部署了一个我们可以使用的NGINX服务器。如ReverseProxyConfiguration.md,在Artifactory中可以采取几个步骤。
导航到管理>配置>HTTP的设置,并更改或填写以下字段,其余字段均为默认值:
- Docker访问方式:存储库路径
- 反向代理服务器提供商:NGINX
- 内部主机名:在我的情况下,Artifactory Kubernetes服务的名称artifactory-demo-artifactory-ha

HTTP设置:反向代理设置点击保存,在此之后,更改将自动推送到NGINX服务器。回到MacOS或Linux终端,我们将把Docker映像推送到我们的新存储库。如果您没有本地映像,让我们先拉一个。
$ docker pull python:3.5
接下来,我们将设置一个变量以使复制和粘贴更容易(一定要用我们的主机名替换您的主机名或IP),然后使用码头工人登录。在密码提示符处,输入上一步中的Artifactory凭据。
$ export ARTIFACTORY="jfrog.nutanix.com" $ docker login -u admin ${ARTIFACTORY}密码:login Succeeded
最后,我们将标记python映像,并将映像推送到Artifactory存储库。
$ docker tag python:3.5 ${ARTIFACTORY}/docker/python:3.5 $ docker push ${ARTIFACTORY}/docker/python:3.5 push指存储库[jfrog.nutanix.com/docker/python] a83742433b45: push 319fab820b58: pushing 3c74ba240996: pushing 526dede64623: pushing 7de462056991: pushing 3443d6cf0f1f: pushing f3a38968d075: pushing a327787b3c73: pushing 5bb0785f2eee: pushing 3.5: digest: sha256:4c257cd3a276806e90aacd7d470b361869178ee023613b2d942fdc292a3068b4 size: 2218
回到Artifactory UI,我们应该看到我们的新图像:
总结
在这篇博客中,我们展示了通过使用JFrog的Helm Chart和内置的Nutanix CSI驱动程序,在Nutanix carbon上部署Artifactory HA是多么容易。然后,我们逐步通过一个示例用例来创建一个Artifactory Docker Repository,并推送一个Docker映像。然而,Docker只是Artifactory可以管理的数十种不同包中的一种。谢谢你今天的时间!
