在使用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-deploy
和some-microservice-production-auto-deploy
。
我希望这些服务名称唯一的原因是因为我正在评估Spring-Cloud-kubernetes,并且我需要使用Feign客户端发现唯一的服务名称。
此外,我想知道为什么每个项目都会得到自己的名称空间,这是某种最佳实践吗?可以将自动DevOps配置为在同一名称空间中部署所有项目吗?
可以自定义此服务名称?
是的,可以通过使用自定义掌舵图。
在简化中,服务名称是从两个变量(发行名称 图表名称(生成的
printf "%s-%s" .Release.Name $name | trimSuffix "-app" ...
默认情况下,自动devops使用自己的掌舵图,可在此处提供的源代码。
并通过更改"名称"内部图表。yaml文件(包含图表的元数据(,您可以影响最终的服务名称。
还有另一种自定义服务名称的方法:通过使用覆盖值来'helm升级'declovy.gitlab-ci.yml'模板与 '--set nameOverride=<CUSTOM_SVC_NAME>'
此外,我想知道为什么每个项目都得到自己的 名称空间,这是某种最佳实践吗?可以自动开车是 配置为在同一名称空间中部署所有项目?
默认情况下,自动部署在应用程序部署期间使用此技术和命名K8S名称空间的命名约定(如下所述(,并且无法根据官方文档进行更改。
您可以自行尝试使用自定义项目变量覆盖它:KUBE_NAMESPACE
到处都是,最终深入到文档中。您所需要的只是覆盖自动Vops模板。这是我也将每个项目更改为项目名称本身的名称名称的方式,因此它将使用项目名称而不是项目名称。打开您的.gitlab-ci.yml,然后添加以下内容:
include:
- template: Auto-DevOps.gitlab-ci.yml
production:
environment:
url: http://$CI_PROJECT_NAME.$KUBE_INGRESS_BASE_DOMAIN
kubernetes:
namespace: $CI_PROJECT_NAME
如果您只想将环境用作名称空间,则可以在gitlab" kubernetes"中执行此操作。选项卡配置。那里有一个复选框以供此类选项。