在Kubernetes上使用GoCenter Upstream引导Athens

更新:截至2021年5月1日,GoCenter中央存储库已经关闭,所有功能都已弃用。有关中心日落的更多信息,请阅读弃用博客文章
在JFrog之前的一篇博文中,我们对此进行了探讨如何使用雅典项目Go模块与GoCenter作为上游代理。在这篇后续文章中,我们将研究如何将Athens安装到Kubernetes集群中,并将GoCenter设置为上游代理。
雅典是一个去模块您可以在自己的基础结构上私有托管的存储库。GoCenter是Go模块的公共存储库,Artifactory的创建者JFrog正在进行的几个社区项目贡献之一。当您配置Athens使用GoCenter作为上游存储库,Athens将尝试从GoCenter的超过60,000个公共模块的公共存储库中满足每个Go模块的请求。
正如在之前的博客文章中看到的,Athens的上游代理是通过过滤器文件配置的。当我们将Athens安装到K8s集群中时通过它的掌舵图但是,我们不直接创建过滤器文件。相反,我们必须为Helm图表提供覆盖设置,以便它可以在Athens运行的pod中为我们正确创建过滤器文件。
开始之前
要将Athens安装到Kubernetes集群,您需要确保具备以下先决条件:
- 启用了RBAC的K8s集群
- 舵安装了' helm init '或Tillerless舵道路
另外,你要通过安全通道为雅典服务https协议使用TLS证书。虽然雅典不需要运行,但强烈建议将其作为最佳实践。遵守此规定还需要:
- 一个Nginx-ingress控制器安装了外部LoadBalancer
- Cert-manager安装
安装雅典与GoCenter支持
的雅典公共Helm图表存储库提供了将Athens安装到K8s集群的最快和最可靠的图表。
步骤1:添加Helm Chart Repository
使用舵手回购命令,添加Athens公共Helm图表存储库。
$ helm回购添加商品https://athens.blob.core.windows.net/charts $ helm回购更新
步骤2:定义舵图覆盖
将GoCenter配置为Athens的上游代理,并将Athens配置为TLS (https)协议。你必须准备一份override-values.yaml文件:
注释:certmanager.k8s。Io /cluster-issuer: "letsencrypt-prod" kubernetesIo /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用你的域。您还需要将nginx-ingress控制器的LoadBalancer IP地址添加到域DNS A记录中,并分配给它雅典。mydomain.com.
步骤3:安装Athens
现在您已经准备好通过Helm图安装Athens了:
命名空间:Athens goods / Athens -proxy -f overrides -valuesyaml NAME: athens最后部署:星期二5月7日20:33:57 2019命名空间:athens状态:已部署资源: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 - update - 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
将Athens安装到Kubernetes集群后,您可以将GOPROXY环境变量设置为mydomain.com雅典的URL。
$ export GOPROXY=https://athens.mydomain.com
注意:记得更换mydomain.com用你的域。
一旦设置好,去客户端将向Athens解析所有模块请求,Athens将依次满足来自GoCenter的请求。
验证结果
一旦雅典安装好,你就可以使用了kubectl要检查pods是否正在运行:
$ kubectl -n athens get pods NAME READY STATUS重启AGE athens-athens-proxy-59977f698b-lslhw 1/1运行0 54s athens-athens-proxy-jaeger-55964f675c-nvgz9 1/1运行0 54s
现在Kubernetes已经准备好在其集群中引导Athens,您的开发团队可以一起分享Athens和GoCenter的全部好处。
