kubernetes - 无法从 Ldapmain 对您进行身份验证,因为 "Invalid credentials for <username>"- 通过 Helm Chart 安装的 Gitlab 社区版

标签 kubernetes ldap gitlab kubernetes-helm gitlab-ce

我有installed Gitlab CE using Helm ,但是我们的AD用户无法登录平台。登录 UI 中显示以下错误:Could not authenticate you from Ldapmain because "Invalid credentials for userX" Invalid credentials for user (但凭据没问题!)

安装:

helm upgrade --install gitlab gitlab/gitlab --namespace my-ns --tiller-namespace tiller-ns  --timeout 600 --set global.edition=ce --set global.hosts.domain=example.com --set global.hosts.externalIP=<ExternalIPAddressAllocatedToTheNGINXIngressControllerLBService> --set nginx-ingress.enabled=false --set global.ingress.class=mynginx-ic --set certmanager.install=false --set global.ingress.configureCertmanager=false --set gitlab-runner.install=false --set prometheus.install=false --set registry.enabled=false --set gitlab.gitaly.persistence.enabled=false --set postgresql.persistence.enabled=false --set redis.persistence.enabled=false --set minio.persistence.enabled=false --set global.appConfig.ldap.servers.main.label='LDAP' --set global.appConfig.ldap.servers.main.host=<IPAddressOfMyDomainController> --set global.appConfig.ldap.servers.main.port='389' --set global.appConfig.ldap.servers.main.uid='sAMAccountName' --set global.appConfig.ldap.servers.main.bind_dn='CN=testuser,OU=sampleOU3,OU=sampleOU2,OU=sampleOU1,DC=example,DC=com' --set global.appConfig.ldap.servers.main.password.secret='gitlab-ldap-secret' --set global.appConfig.ldap.servers.main.password.key='password' 

注释:
-我之前已经单独安装了我自己的 NGINX Ingress Controller:

helm install stable/nginx-ingress --name nginx-ingress --namespace my-ns --tiller-namespace tiller-ns --set controller.ingressClass=mynginx-ic  

- 我之前已经创建了一个 secret ,其密码配置为 bind_dn ('CN=testuser,OU=sampleOU3,OU=sampleOU2,OU=sampleOU1,DC=example,DC=com')。密码使用 base64 进行编码,如 the documentation 中所示。

文件:gitlab-ldap-secret.yaml

apiVersion: v1  
kind: Secret  
metadata:  
 name: gitlab-ldap-secret  
data:  
 password: encodedpass-blablabla 

-我没有在图表安装过程中在命令行中提供所有这些参数,而是尝试在 this Gitlab Helm chart 的各种 value.yaml 中配置所有内容。提供,但出于复制目的,以这种方式记录似乎更容易。

-我尝试添加这些参数,但没有成功:

--set global.appConfig.ldap.servers.main.encryption='plain'  
--set global.appConfig.ldap.servers.main.base='OU=sampleOU1,DC=example,DC=com'  

-为了更简单,我们不考虑任何组件的持久性。这就是为什么,这些都设置为 false:

--set gitlab.gitaly.persistence.enabled=false  
--set postgresql.persistence.enabled=false  
--set redis.persistence.enabled=false  
--set minio.persistence.enabled=false   

*我确实需要持久性,但是这次我们只关注 LDAP 身份验证,这是我目前的主要问题。

-我已与系统管理员核实,我们在 Active Directory 中使用普通 389。没有加密

我的环境

kubectl.exe version  
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:18:22Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"windows/amd64"}  
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.1", GitCommit:"4485c6f18cee9a5d3c3b4e523bd27972b1b53892", GitTreeState:"clean", BuildDate:"2019-07-18T09:09:21Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}  

helm version  
Client: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}  
Server: &version.Version{SemVer:"v2.14.3", GitCommit:"0e7f3b6637f7af8fcfddb3d2941fcc7cbebb0085", GitTreeState:"clean"}  

helm ls --tiller-namespace tiller-ns  
NAME                    REVISION        UPDATED                         STATUS          CHART                   APP VERSION     NAMESPACE
gitlab                  1               Tue Oct 29 18:16:06 2019        DEPLOYED        gitlab-2.3.7            12.3.5          my-ns

kubectl.exe get nodes
NAME                                    STATUS   ROLES    AGE     VERSION
kubernetes01.example.com                Ready    master   102d    v1.15.1
kubernetes02.example.com                Ready    <none>   7h16m   v1.15.1
kubernetes03.example.com                Ready    <none>   102d    v1.15.1
kubernetes04.example.com                Ready    <none>   11d     v1.15.1

安装此图表后,一切似乎都工作正常:

kubectl.exe get pods
NAME                                                   READY   STATUS      RESTARTS   AGE
gitlab-gitaly-0                                        1/1     Running     0          65m
gitlab-gitlab-exporter-5b649bfbb-5pn7q                 1/1     Running     0          65m
gitlab-gitlab-shell-7d9497fcd7-h5478                   1/1     Running     0          65m
gitlab-gitlab-shell-7d9497fcd7-jvt9p                   1/1     Running     0          64m
gitlab-migrations.1-gf8jr                              0/1     Completed   0          65m
gitlab-minio-cb5945f79-kztmj                           1/1     Running     0          65m
gitlab-minio-create-buckets.1-d2bh5                    0/1     Completed   0          65m
gitlab-postgresql-685b68b4d7-ns2rw                     2/2     Running     0          65m
gitlab-redis-5cb5c8b4c6-jtfnr                          2/2     Running     0          65m
gitlab-sidekiq-all-in-1-5b997fdffd-n5cj2               1/1     Running     0          65m
gitlab-task-runner-5777748f59-gkf9v                    1/1     Running     0          65m
gitlab-unicorn-764f6548d5-fmggl                        2/2     Running     0          65m
gitlab-unicorn-764f6548d5-pqcm9                        2/2     Running     0          64m

现在,如果我尝试使用 LDAP 用户登录,则会收到前面提到的错误。如果我进入 unicorn pod 内部,我可以在 /var/log/gitlab/production.log 中看到以下消息: Production.log

我错过了什么?我还需要配置其他东西吗?我已经配置了提到的 LDAP 身份验证的所有参数 here但我在尝试验证时仍然遇到困难。

抱歉,但我对 Gitlab 及其所有内部组件还不熟悉。我似乎找不到在哪里编辑此文件,例如:/etc/gitlab/gitlab.rb (我应该进入哪个 pod?我逐字输入了其中每一个,但没有找到这个配置文件)。另外,我注意到一些文档说可以执行一些诊断工具,例如 gitlab-rake gitlab:ldap:check ,或实用程序,例如 gitlab-ctl reconfigure ,但是再次......在哪里运行这些?在 unicorn pods 上? gitlab-shell?我注意到各种 Gitlab 文档页面引用了其中一些工具来解决事件问题,但我不认为该图表遵循相同的架构。

我看过this post例如,因为它似乎是同一个问题,但我找不到 /etc/gitlab/gitlab.rb

任何帮助将不胜感激。我处理这个问题已经有几个星期了。

最佳答案

我忘了回答这个问题了。我通过再次添加基本参数成功解决了这个问题。

我已经按照我原来的帖子中的解释尝试了这一点,但事实证明我需要转义逗号:

--set global.appConfig.ldap.servers.main.base='OU=sampleOU1\,DC=example\,DC=com'

*与你的bind_dn相同,逗号需要转义。

多亏了 LDAP 诊断工具 gitlab-rake,我才意识到这一点,在这个 helm 图表中它有点不同。您必须进入 unicorn 容器上的 /srv/gitlab 目录,并执行 ./bin/rake gitlab:ldap:check。这帮助我理解了问题出在哪里。您还可以检查 /srv/gitlab/config/gitlab.yaml 文件来查看您的 LDAP 参数是否已成功加载/解析。

您还可以运行以下命令来查看有关 Gitlab 部署的更多信息:./bin/rake gitlab:env:info

关于kubernetes - 无法从 Ldapmain 对您进行身份验证,因为 "Invalid credentials for <username>"- 通过 Helm Chart 安装的 Gitlab 社区版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618646/

相关文章:

kubernetes:是否可以为单个容器添加标签?

python - Django 可以将多个 LDAP 身份验证映射到单个 User 对象吗?

docker - 尝试将 GitLab-CE docker 容器连接到 OpenLDAP docker 容器

docker - 如何将dockerfile添加到部署到gitlab的jekyll中

Kubernetes 入口 Controller 返回 503 服务不可用

kubernetes - 尽管启用了自动缩放,节点池不会将其节点大小减少到零

linux - nslookup和awk获得第二个地址

python - 使用 Python 对 AD dnsRecord 值进行编码/解码

Spring LDAP 示例需要持久性吗?

redirect - Gitlab 综合 : how to redirect all requests to another domain