用GoCenter Upstream在Kubernetes上引导雅典

更新:自2021年5月1日起,GoCenter中央存储库已被淘汰,所有功能已弃用。有关中心日落的更多信息,请阅读弃用博客文章
在之前的JFrog博客文章中,我们探讨过如何使用GoCenter的雅典项目的Go模块作为上游代理。在这篇后续文章中,我们将研究如何在GoCenter设置为上游代理的情况下将Athens安装到Kubernetes集群中。
雅典是一个去模块可以在自己的基础设施上私下托管的存储库。GoCenter是围棋模块的公共存储库,这是Artifactory的创建者JFrog正在进行的几个社区项目之一。当你配置雅典使用GoCenter作为上游存储库,Athens将尝试满足GoCenter公共存储库中超过60,000个公共模块的每个Go模块请求。
如前一篇博客文章所述,Athens的上游代理是通过过滤器文件配置的。当我们将Athens安装到K8s集群时通过其可用的Helm图,但是,我们不直接创建过滤器文件。相反,我们必须为Helm图表提供覆盖设置,这样它就可以在Athens运行的pod中正确地为我们创建过滤器文件。
开始之前
要将Athens安装到Kubernetes集群,您需要确保具备以下先决条件:
- 启用RBAC的K8s集群
- 舵安装与' helm init '或Tillerless舵道路
另外,你要通过安全的https协议使用TLS证书。虽然不要求雅典发挥作用,但强烈建议将其作为最佳实践。遵守这一点还需要:
- 一个Nginx-ingress控制器安装了外部LoadBalancer
- Cert-manager安装
安装带有GoCenter支持的Athens
的雅典公共舵图库为将Athens安装到K8s集群提供了最快和最可靠的图表。
步骤1:添加Helm Chart Repository
使用Helm repo添加命令Helm客户端,添加Athens公共Helm图表存储库。
$ helm repo添加gomods https://athens.blob.core.windows.net/charts $ helm repo更新
步骤2:定义舵图覆盖
要将GoCenter配置为Athens的上游代理,并将Athens配置为TLS (https)协议,你必须准备一份override-values.yaml文件:
Ingress: enabled: true注解:certmanager.k8s。Io /cluster-issuer: "letsencrypt-prod" kubernetes。Io /tls-acme: "true" ingress.kubernetes。kubernetes.io/ingress.class: nginx hosts: - athens.mydomain.com tls: - secretName: athens.mydomain.com hosts: - "athens.mydomain.com" upstreamProxy: enabled: true url: "https://gocenter.io"
这个例子override值。yaml的文件上面设置TLS证书的自动创建/检索让我们加密与cert-manager并使用nginx-ingress控制器让雅典对外暴露在互联网之下它还设置了https://gocenter.io作为雅典上游的代理。
注意:取代mydomain.com用你的域名。您还需要添加到您的域DNS A记录nginx-ingress控制器的LoadBalancer IP地址,并分配给它雅典。mydomain.com.
步骤3:安装Athens
现在你已经准备好通过头盔图安装雅典了:
$ helm upgrade—install Athens—命名空间Athens gomods/ Athens -proxy -f overrides -values。yaml名称:雅典最后部署:周二5月7日20:33:57 2019命名空间:雅典状态:部署资源:2022世界杯阿根廷预选赛赛程= = > v1 / ConfigMap姓名数据年龄athens-athens-proxy-upstream 1 2 S = = > v1 /部署名准备最新的可用年龄athens-athens-proxy 0/1 1 0 2 S = = > v1 / Pod(相关)名称就绪状态重启时代雅典-雅典-代理- 59977 - f698b lslhw 0/1 ContainerCreating 0 2 S雅典雅典-代理jaeger - 55964 - f675c nvgz9 0/1 ContainerCreating 0 2 S = = > v1 /服务名称类型集群ip外部ip端口(S)年龄athens-athens-proxy ClusterIP 10.44.5.31 80 / TCP 2 S athens-athens-proxy-jaeger ClusterIP 10.44.2.2714268/TCP,5775/UDP,6831/UDP,6832/UDP,5778/TCP,16686/TCP 2s ==> v1beta1/部署名称READY - known - AVAILABLE AGE athens-athens-proxy-jaeger 0/1 1 0 2s ==> v1beta1/入口名称主机地址端口AGE athens-athens-proxy athens.mydomain.com 80,443 2s
可以通过URL访问Athens实例https://athens.mydomain.com.
步骤4:设置GOPROXY为雅典
在将Athens安装到Kubernetes集群后,可以将GOPROXY环境变量设置为mydomain.com雅典的URL。
$ export GOPROXY=https://athens.mydomain.com
注意:记得更换mydomain.com用你的域名。
设置好后,去客户端将所有模块请求解析到Athens,而Athens将依次完成来自GoCenter的请求。
验证结果
一旦安装了Athens,您就可以使用了kubectl检查豆荚是否正在运行:
$ kubectl -n athens get pods NAME READY STATUS重启AGE athens-athens-proxy-59977f698b-lslhw 1/1 Running 0 54s athens-athens-proxy-jaeger-55964f675c-nvgz9 1/1 Running 0 54s
现在Kubernetes已经准备好在集群中引导Athens,您的开发团队可以一起分享Athens和GoCenter的全部好处。
