我正在 kubernetes 中运行 gitsync 容器并尝试从 github 同步存储库。我已经使用known_hosts和ssh创建了 secret 。但是我面临以下错误。
"msg"="failed to sync repo, aborting" "error"="error running command: exit status 128: "Cloning into '/tmp/git'...\nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\nand the repository exists.\n""
这是我的部署文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitsync-deployment
labels:
app: gitsync
spec:
replicas: 1
selector:
matchLabels:
app: gitsync
template:
metadata:
labels:
app: gitsync
spec:
containers:
- name: git-sync
image: k8s.gcr.io/git-sync:v3.1.5
# command: ["cat"]
# args: ["/etc/git-secret/ssh"]
imagePullPolicy: Always
volumeMounts:
- name: git-secret
mountPath: /etc/git-secret
env:
- name: GIT_SYNC_REPO
value: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="b3d4dac7f3d4dac7dbc6d19dd0dcde" rel="noreferrer noopener nofollow">[email protected]</a>:username/test.git"
- name: GIT_SYNC_SSH
value: "true"
- name: GIT_SYNC_BRANCH
value: master
- name: GIT_SYNC_DEST
value: git
- name: GIT_SYNC_DEPTH
value: "1"
volumes:
- name: html
emptyDir: {}
- name: git-secret
secret:
secretName: git-creds
defaultMode: 256
最佳答案
您似乎遵循了official documentation .
但事实证明,该文档根本没有提及将公钥放在哪里。
实际上,通过 SSH 进行 git 身份验证需要以下步骤:
<强>1。生成 SSH key 对:
ssh-keygen -t rsa -N "" -f mykey
此命令生成 2 个文件:
- 私钥:
./mykey
- 公钥:
./mykey.pub
<强>2。将公钥放入您的 Github 帐户中的“设置”>“SSH key ”
下复制./mykey.pub
的内容并将其添加到您的github帐户中。
<强>3。将私钥放入k8s Secret中
官方文档从这里开始,将$HOME/.ssh/id_rsa
视为私钥。
kubectl create secret generic git-creds \
--from-file=ssh=./mykey \
....
其余的应该和官方文档解释的一样。
关于kubernetes 中的 Gitsync 部署不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62852561/