1

在使用 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,并且我需要使用 feign 客户端进行功能区发现的唯一服务名称。

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

4

2 回答 2

1

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

是的,可以,通过使用自定义舵图。

简而言之,服务名称由两个变量生成(版本名称 + 图表名称)

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

默认情况下,Auto DevOps 使用自己的掌舵图,源代码可在此处获得。

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

还有另一种自定义服务名称的方法:通过在 'Deploy.gitlab-ci.yml' 模板中使用覆盖值到 'helm upgrade' 命令'--set nameOverride=<CUSTOM_SVC_NAME>'

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

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

您可以尝试使用自定义项目变量覆盖它,风险自负:KUBE_NAMESPACE

于 2019-07-01T14:33:03.080 回答
0

到处寻找,最终深入研究文档。您只需要覆盖 Autodevops 模板。以下是我如何将每个项目的命名空间名称也更改为项目名称本身,因此它将使用项目名称而不是项目 slug。打开你的 .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”选项卡配置中执行此操作。那里有一个用于此类选项的复选框。

于 2021-09-22T08:18:12.680 回答