Kubernetes中的Gitsync无法正确部署

时间:2020-07-11 17:42:35

标签: git github kubernetes containers google-kubernetes-engine

我正在kubernetes中运行gitsync容器,并尝试从github同步存储库。我已经使用known_hosts和ssh创建了秘密。但是我遇到以下错误。

“ msg” =“无法同步回购,中止”“ error” =“错误正在运行的命令:退出状态128:”克隆到'/tmp/git'...\nfatal:无法从远程存储库读取。 \ n \ n请确保您具有正确的访问权限\ n并且存储库存在。\ 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: "git@github.com: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

1 个答案:

答案 0 :(得分:1)

似乎您遵循了official documentation

但是事实证明,本文档完全没有提到将公钥放在何处。

实际上,通过SSH进行git身份验证需要执行以下步骤:

1。生成SSH密钥对:

ssh-keygen -t rsa -N "" -f mykey

此cmd生成2个文件:

  • 私钥:./mykey
  • 公钥:./mykey.pub

2。将公共密钥放在您的Github帐户的“设置”>“ SSH密钥”下

复制./mykey.pub的内容并将其添加到您的github帐户中。

3。将私钥放入k8s机密

官方文档从此处开始,并且将$HOME/.ssh/id_rsa作为私钥。

kubectl create secret generic git-creds \
    --from-file=ssh=./mykey \ 
  ....

其余部分应与官方说明的文件相同。