Уникальные сервисные имена для gitlab auto devops

При использовании 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 и мне нужны уникальные имена служб для обнаружения ленты с использованием симулированных клиентов.

Кроме того, мне интересно, почему каждому проекту присваивается свое пространство имен, это своего рода передовая практика? Можно ли настроить auto devops для развертывания всех проектов в одном пространстве имен?

2 ответа

Можно ли настроить это название сервиса?

Да, это может быть, используя пользовательскую схему рулевого управления.

Упрощенно, имя службы генерируется из двух переменных (имя выпуска + имя диаграммы)

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

По умолчанию Auto DevOps использует собственную таблицу рулевого управления, исходный код которой доступен здесь.

И, изменяя имя в файле Chart.yaml (который содержит метаданные диаграммы), вы можете влиять на окончательное имя службы.

Существует также другой способ настройки имени службы: использование значений переопределений для команды 'helm upgrade' внутри шаблона Deploy.gitlab-ci.yml с '--set nameOverride=<CUSTOM_SVC_NAME>'

Кроме того, мне интересно, почему каждому проекту присваивается свое пространство имен, это своего рода передовая практика? Можно ли настроить auto devops для развертывания всех проектов в одном пространстве имен?

По умолчанию Auto Deploy использует эту технику и соглашение об именах для пространств имен K8S во время развертывания приложений (как описано здесь), и нет никакой возможности изменить его в соответствии с официальной документацией.

Вы можете попробовать на свой страх и риск переопределить его с помощью пользовательской переменной проекта: KUBE_NAMESPACE

Искал повсюду, в итоге очень глубоко погрузился в документацию. Все, что вам нужно, это переопределить шаблон Autodevops. Вот как я изменил имя пространства имен для каждого проекта, а также само имя проекта, чтобы оно использовало имя проекта, а не слаг проекта. Откройте ваш .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". Для такой опции есть флажок.

Другие вопросы по тегам