特邀博客:与Nutanix Karbon一起部署JFrog Artifactory

任何使用容器和Kubernetes的人都知道一个坚如磐石的容器注册表.我们将向您展示如何部署JFrog Artifactory企业在一个高度可用的配置中Kubernetes码头工人注册表与Nutanix Karbon.
本企业级Kubernetes认证发行由Nutanix通过原生K8s体验简化了Kubernetes的供应、操作和生命周期管理。Karbon使得部署高可用的Kubernetes集群和操作网络规模的工作负载变得简单。
任何有状态K8s应用程序最具挑战性的方面之一是管理持久存储。然而,与Nutanix卡邦和集成CSI体积司机,管理持久存储非常简单。在本演练中,我们将使用为每个Karbon集群部署创建的默认存储类,它在后端使用Nutanix卷。
在开始之前
我们将在HA模式下安装Artifactory Enterprise执掌图表,因此建议了解Helm的基本知识,但不是必须的。如果你刚刚开始看赫尔姆,看看这篇Nutanix社区论坛帖子这是通过使用无蒂勒尔头盔和Nutanix碳。
您还需要一个Artifactory Enterprise许可证。如果你还没买,你可以买一个Artifactory免费试用,并确保为Artifactory Enterprise设置选择“I want a multi-server trial…”复选框。
默认的Artifactory HA Helm chart安装NGINX服务器,它利用了内置的loadbalance Kubernetes资源.要给NGINX分配一个外部IP,MetalLB在第2层模式是必需的。要安装MetalLB,首先应用MetalLB清单,然后创建一个Config Map,其中包含一个可供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 metallb-config。yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 10.45.100.11-10.45.100.15 # replace your IPs here $ kubectl apply -f metallb-config.yaml .yaml . properties
步骤
要在Nutanix上部署Artifactory,并为Karbon上的容器创建Kubernetes Docker注册表,请执行以下步骤。
部署Artifactory
要启动Artifactory部署,请从安装了Helm的MacOS或Linux机器上打开一个终端。如需更多信息,请参阅我们的无蒂勒斯掌舵卡本博客文章。我们先启动无分蘖舵,然后启动服务。
$ helm init——仅客户端$ helm tiller启动
接下来,我们将向helm添加JFrog回购,然后使用一个简单的命令安装Artifactory HA。因为每个Karbon集群都有一个默认的基于在集群创建时自动创建的Nutanix卷的Storage Class,所以不需要配置存储,这通常是k8最具挑战性的方面。
$ helm repo add jfrog https://charts.jfrog.io $ helm install——name artifactory-demo jfrog/artifactory-ha
接下来,监视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 NAME STATUS 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-0绑定pvc-227e62e2-4042-11e9-aafc-506b8d53468e 200Gi RWO default-storageclass 4m52s volume-artifactory-demo-artifactory-ha-member-1绑定pvc-80ca05f3-4042-11e9-aafc-506b8d53468e 200Gi RWO default-storageclass 2m14s volume-artifactory-demo-artifactory-ha-primary-0绑定pvc-2282341f-4042-11e9-aafc-506b8d53468e 200Gi RWO default-storageclass 4m52s
请注意,所有持久性卷声明都是从默认存储类创建的,该存储类与每个碳集群一起创建。你还会在Karbon UI中看到匹配的卷:

您会注意到,持久卷声明的默认大小是200GiB。如果这对您的环境还不够,您还有几个选项。一种选择是在部署时将PVC的大小设置为更大的数量:
$ helm install——name artifactory-demo——set artifactory.persistence。=“1 ti“jfrog / artifactory-ha大小
另一种选择是添加NFS存储,如Nutanix Files,或兼容S3的对象存储,如Nutanix Buckets。这些也可以通过头盔设置来设置,并且可以在初始部署之前或之后使用执掌升级命令。有关更多信息,请参阅Artifactory存储部分舵手图。
如果出于任何原因,您需要查看一个pod的日志,以排除故障或验证配置,您可以使用以下命令。
$ kubectl日志少于|
一旦所有的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添加到公司的域服务器中。
设置Artifactory
输入刚刚收集到web浏览器中的域名或IP,在那里您应该会看到“欢迎来到JFrog Artifactory”消息。
点击下一个,在那里你会被提示输入许可密钥。
将密钥粘贴进去,然后单击next,系统将提示您设置新的管理密码。
输入强密码后,单击下一个.根据您的环境,可能需要一个代理服务器来访问internet。如果是,请在出现的页面中输入代理服务器信息。如果不需要使用代理服务器,请单击跳过.
在下一个页面中,您可以选择希望为其创建存储库的包类型。选择您的包并单击创造。
最后,您应该会收到一个通知,声明“Artifactory上板完成!”点击完成开始使用Artifactory。
创建Kubernetes Docker注册表
对于上一步中添加的每个存储库,您将在陷害我主页中间的方框。我们将介绍如何设置码头工人,但对于任何其他注册表,我们建议从这里开始。
作为一个例子,我们将把Artifactory配置为容器的Kubernetes Docker注册表。如果你没有加码头工人在上一步,并希望跟随,导航到管理>存储库>当地的,然后单击+新按钮在右上角。
为了使用Artifactory作为码头工人注册表必须使用反向代理。幸运的是,默认的舵机图部署了一个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} Password: login Succeeded
最后,我们将标记我们的python映像,并将映像推入我们的Artifactory存储库。
$ docker标签python:3.5 ${ARTIFACTORY}/docker/python:3.5 $ docker push ${ARTIFACTORY}/docker/python:3.5 push指存储库[jfrog.nutanix.com/docker/python] a83742433b45: pushing 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 Karbon上部署Artifactory HA是多么容易。然后,我们逐步介绍了一个创建Artifactory Docker Repository的示例用例,并推送Docker映像。然而,Docker只是Artifactory可以管理的几十种不同包中的一种。感谢您今天的宝贵时间!
