git - Kubernetes 集群上的 Gitlab - 无法使用 git 克隆或推送
问题描述
我已经在我的 Linode Kubernetes 集群上安装了 gitlab,并且 UI 工作正常。但我无法克隆/推送任何存储库,因为 ssh 访问失败。
git clone ssh://git@gitlab.example.com:6022/v2o/prova.git
Clone in 'prova' in corso...
git@example.com: Permission denied (publickey,password).
我已经创建了 SSH 密钥对,并在 Gitlab 上添加了公共密钥对,但什么也没有。
我从互联网上阅读了一些建议,并尝试运行ssh -Tv ssh://git@gitlab.example.com:6022
debug1: Will attempt key: /Users/v20/.ssh/id_ed25519 ED25519 SHA256:1246872361472618746238bdhahdahsdhjfa explicit
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/v2o/.ssh/id_ed25519 ED25519 SHA256:5fTy/hjLhfZ7xvLQmkxxjdddMNFiIV7auC2/U7nxsEo explicit
debug1: Authentications that can continue: publickey,password
debug1: No more authentication methods to try.
git@gitlab.example.com: Permission denied (publickey,password).
它选择了正确的密钥(/Users/v20/.ssh/id_ed25519),但看起来无论如何都无法连接。
注意 1我使用了一个 NodeBalancer,它暴露了 6022:22 端口 - 我不知道这个配置是否正确,但它在 Linode 上是 UP 所以我猜是
注意 2如果我在运行任务 pod 上执行,我会得到未知版本的 git、redis 和 go。虽然 GO 很好,但我不知道 git/redis。
git@gitlab-task-runner-7869d8d675-k4s4l:/$ gitlab-rake gitlab:env:info
System information
System:
Current User: git
Using RVM: no
Ruby Version: 2.6.6p146
Gem Version: 2.7.10
Bundler Version:1.17.3
Rake Version: 12.3.3
Redis Version: unknown
Git Version: unknown
Sidekiq Version:5.2.9
Go Version: unknown
GitLab information
Version: 13.5.3
Revision:
Directory: /srv/gitlab
DB Adapter: PostgreSQL
DB Version: 13.0
URL: https://gitlab.example.com
HTTP Clone URL: https://gitlab.example.com/some-group/some-project.git
SSH Clone URL: git@gitlab.example.com:some-group/some-project.git
Using LDAP: no
Using Omniauth: no
GitLab Shell
Version: 13.11.0
Repository storage paths:
- default: /var/opt/gitlab/repo
GitLab Shell path: /home/git/gitlab-shell
Git: /usr/bin/git
注意 3上面消息中的 git 路径是错误的,这可能是一个问题,但我不知道如何更改它:/
解决方案
我设法解决了这个问题。
- 我需要在 GitLab 配置(values.yaml)中指定 shell 将在高端口 3xxxx 上公开,所以我添加了这部分:
gitlab-shell:
enabled: true
minReplicas: 1
maxReplicas: 1
# Map gitlab-shell to a high-numbered NodePort to support cloning over SSH
service:
type: NodePort
nodePort: 32022
然后我需要设置另一个变量(在同一个文件中)
global.shell.port = 22
。节点平衡器需要在端口 22 -> 32022
......最后它就像一个魅力!
推荐阅读
- mongodb - MongoDB 聚合框架分组并与数组中的嵌套文档合并
- image - Android Studio:是否可以从图库中自动上传图片?
- python - 列表的Python问题 - 删除重复项
- c# - 如何修复弹出按钮逻辑
- apache-spark - 在 Spark 结构化流中从 Kafka 反序列化 Protobuf
- android - 如何使用片段从后端 API 获取 Map API 密钥
- python - 从单个数据框创建多个数据框
- java - 使用 Java 部署 AWS Lambda Python 包
- storage - 关于 NAS 和 SAN(协议、架构等)
- r - 使用 lubridate 计算日期间隔内的日历天数