У вас нет разрешения на просмотр всех пространств имен в кластере

Я попытался добавить gitlab-агент в среду и выбрать там пространство имен и настройку флюса, но получаю ошибки.

Я использую версию Self-Manager, размещенную на Gitlab, в Kubernetes.

Установите команду gitlab-агента

helm upgrade --install h gitlab/gitlab-agent \
    --namespace gitlab-agent-h \
    --create-namespace \
    --set image.tag=v17.2.2 \
    --set config.token=token \
    --set config.kasAddress=wss://kas.domain.com

Настройте gitlab-agent по пути .gitlab/agents/my-agent/config.yaml в репозитории.

user_access:
  access_as:
    agent: {}
  groups:
    - id: LearnHub
    - id: LearnHub/Frontend
    - id: LearnHub/Identity
ci_access:
  groups:
    - id: LearnHub
    - id: LearnHub/Frontend
    - id: LearnHub/Identity

Установить поток команд

flux bootstrap gitlab \
--hostname=gitlab.domain.com \
--owner=Flux-LearnHub \
--repository=Flux \
--branch=main \
--path=clusters/production \
--deploy-token-auth

Добавление репозитория

flux create source git learnhub-mainpage \
  --url=https://gitlab.domain.com/learnhub/frontend/mainpage.git \
  --branch=main \
  --interval=1m \
  --namespace=flux-system \
  --username=username \
  --password=token
flux create kustomization learnhub-mainpage-kustomization \
  --source=GitRepository/learnhub-mainpage.flux-system \
  --path = "./manifests" \
  --prune=true \
  --interval=5m \
  --namespace=flux-system

И я не вижу в выборе настройки Flux или пространства имен.

Я попытался вручную предоставить роль администратора кластера gitlab-agent для тестирования.

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gitlab-agent-cluster-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: learnhub-gitlab-agent # name ServiceAccount
  namespace: gitlab-agent

И я убедился, что gitlab-agent имеет права на все неймспейсы, но в списке все равно ничего не появляется, подскажите как это исправить.

Еще я заметил, что все запросы на доступ к gitlab kas возвращаются с ошибкой 401, причем это касается конкретно тех запросов, по которым я создал вопрос.

https://kas.domain.com/k8s-proxy/api/v1/namespaces
https://kas.domain.com/k8s-proxy/apis/kustomize.toolkit.fluxcd.io/v1/namespaces/gitlab-agent/kustomizations
https://kas.domain.com/k8s-proxy/apis/helm.toolkit.fluxcd.io/v2beta1/namespaces/gitlab-agent/helmreleases

Общий ответ

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "GitLab Agent Server: Unauthorized: no valid credentials provided",
  "reason": "Unauthorized",
  "code": 401
}

Вместо этого рассмотрите возможность задать вопросы системному администратору (например, об установке готового программного обеспечения) на serverfault.com. Stack Overflow предназначен для вопросов по программированию.

Jonas 18.08.2024 16:52
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
1
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

От Gitlab у нас есть рекомендация ниже:

An error like GitLab Agent Server: Unauthorized. Trace ID: <...> on the Dashboard for Kubernetes page might be caused by one of the following:

The user_access entry in the agent configuration file doesn’t exist or is wrong. 
To resolve, see Grant users Kubernetes access.

There are multiple _gitlab_kas cookies in the browser and sent to KAS. The most likely cause is multiple GitLab instances hosted on the same site.

For example, gitlab.com set a _gitlab_kas cookie targeted for kas.gitlab.com, but the cookie is also sent to kas.staging.gitlab.com, which causes the error on staging.gitlab.com.
To temporarily resolve, delete the _gitlab_kas cookie for gitlab.com from the browser cookie store. Issue 418998 proposes a fix for this known issue.

GitLab and KAS run on different sites. For example, GitLab on gitlab.example.com and KAS on kas.example.com. GitLab does not support this use case. For details, see issue 416436.

Справочная ссылка:

https://docs.gitlab.com/ee/user/clusters/agent/troubleshooting.html

Я проверил все описанные вами варианты, кроме объединения домена kas.example.com и gitlab.example.com, потому что даже если я создам ингресс и изменю URL в агенте gitlab, я не смогу повлиять на домен, к которому веб-сервис делает запросы. Все остальные варианты не помогли. Спасибо

SyntaxJuggler 19.08.2024 01:14

Значит, у вас другой адрес?

David Corino 19.08.2024 01:55

Если вы имеете в виду зеркало основного домена, то нет. Если вы имеете в виду разделение домена на kas.domain.com и gitlab.domain.com, то да, они разделены разными поддоменами.

SyntaxJuggler 19.08.2024 16:04

Да. Я говорил о разных поддоменах.

David Corino 20.08.2024 01:45
Ответ принят как подходящий

В моем случае возникла проблема с разделением доменов как указано в ответе, мне помогло решение объединения домена выше kas.domain.com и gitlab.domain.com в 1 домен. И в этом случае запрос будет соответствовать этому URL.

https://gitlab.domain.com/k8s-proxy/api/v1/namespaces

Вместо

https://kas.domain.com/k8s-proxy/api/v1/namespaces

Проблема у меня была в том, что если бы у меня было всего 2 входа, которые отвечают за gitlab и kas, веб-сервер обращался бы к старому домену и получал бы 404. Это исправлялось такими параметрами при обновлении gitlab.

--set global.hosts.kas.name=gitlab.domain.com

диаграмма управления рулем kas встроена в диаграмма управления рулем gitlab

И после вышеописанного действия меняем ингресс, объединив 2 домена в 1 и получаем нечто похожее.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: gitlab-ingress
  namespace: gitlab
  annotations:
    cert-manager.io/issuer: "letsencrypt-prod"
spec:
  ingressClassName: nginx
  rules:
    - host: gitlab.domain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: gitlab-webservice-default
                port:
                  number: 8181
          - path: /k8s-proxy/
            pathType: Prefix
            backend:
              service:
                name: gitlab-kas
                port:
                  number: 8154
          - path: /kas
            pathType: Prefix
            backend:
              service:
                name: gitlab-kas
                port:
                  number: 8150
  tls:
    - hosts:
        - gitlab.domain.com
      secretName: gitlab-tls

Другие возможные проблемы, связанные с этой ошибкой

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