gitlab auto devops的唯一服务名称

时间:2019-06-30 09:25:37

标签: kubernetes gitlab gitlab-ci spring-cloud-kubernetes

使用gitlab auto devops时,我注意到每个项目都是在其自己的名称空间中创建的,将服务名称定义为production-auto-deploy

$kubectl get services --all-namespaces

NAMESPACE                NAME                                     TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                      AGE
app-13094854             production-auto-deploy                   ClusterIP      10.245.23.224    <none>           5000/TCP                     11h
app-13094854             production-postgres                      ClusterIP      10.245.202.205   <none>           5432/TCP                     11h
config-server-13051179   production-auto-deploy                   ClusterIP      10.245.138.49    <none>           5000/TCP                     40m
default                  kubernetes                               ClusterIP      10.245.0.1       <none>           443/TCP                      11h
gitlab-managed-apps      ingress-nginx-ingress-controller         LoadBalancer   10.245.200.23    206.189.243.26   80:30888/TCP,443:30962/TCP   11h
gitlab-managed-apps      ingress-nginx-ingress-controller-stats   ClusterIP      10.245.104.211   <none>           18080/TCP                    11h
gitlab-managed-apps      ingress-nginx-ingress-default-backend    ClusterIP      10.245.202.171   <none>           80/TCP                       11h
gitlab-managed-apps      tiller-deploy                            ClusterIP      10.245.31.107    <none>           44134/TCP                    11h
kube-system              kube-dns                                 ClusterIP      10.245.0.10      <none>           53/UDP,53/TCP,9153/TCP       11h
some-microservice-13093883          production-auto-deploy                   ClusterIP      10.245.97.62     <none>           5000/TCP                     11h
some-microservice-13093883          production-postgres                      ClusterIP      10.245.245.253   <none>           5432/TCP                     11h

此服务名称可以自定义吗?例如,我希望它包含项目名称,从而映射production-auto-deploy-> app-production-auto-deploysome-microservice-production-auto-deploy

我希望这些服务名称唯一的原因是因为我正在评估spring-cloud-kubernetes,并且需要使用虚假客户端进行功能区发现的唯一服务名称。

另外,我想知道为什么每个项目都有自己的名称空间,这是最佳做法吗?可以将auto devop配置为在同一名称空间中部署所有项目吗?

1 个答案:

答案 0 :(得分:0)

  

此服务名称可以自定义吗?

是的,可以使用custom helm图表。

为简化起见,服务名称由两个变量(发布名称+图表名称)生成

printf "%s-%s" .Release.Name $name | trimSuffix "-app" ...

默认情况下,Auto DevOps使用其自己的头盔图表,源代码可用here

然后通过更改Chart.yaml文件(包含图表的元数据)中的“名称”,可以影响最终服务名称。

还有另一种自定义服务名称的方法:通过使用'--set nameOverride=<CUSTOM_SVC_NAME>'

在'Deploy.gitlab-ci.yml'模板中使用覆盖值来'helm upgrade'命令
  

我还想知道为什么每个项目都有自己的项目   命名空间,这是某种最佳实践吗?自动开发可以吗   配置为将所有项目部署在同一个命名空间中?

默认情况下,Auto Deploy在应用程序部署期间对K8S命名空间使用此技术和命名约定(如here所述),并且无法根据官方文档进行更改。

您可以使用custom project变量:KUBE_NAMESPACE

自行承担将其覆盖的风险。