我正在尝试将代码从gitlab下载到kubernetes。我已经创建了一个ubuntu docker镜像。
这是yaml文件。我已经从gitlab创建了一个令牌来下载代表。问题是我不知道将gitlab令牌复制到哪里,以允许kubernetes下载代码??
apiVersion: v1
kind: Pod
metadata:
name: syncrepo-gitlab
spec:
containers:
- image: fake.eu.io/testseq-362663/ubuntu:latest
name: gitlab
volumeMounts:
- name: git-source
mountPath: /tmp/git
env:
- name: GIT_SYNC_REPO
value: https://myrep/scripts.git
- name: GIT_SYNC_DEST
value: git-sync
- name: GIT_SYNC_SSH
value: "true"
volumes:
- name: git-source
emptyDir: {}
答案 0 :(得分:3)
选项1 :直接将其作为环境变量传递:
env:
- name: GIT_DEPLOY_TOKEN_USERNAME
value: <deploy_token_username>
- name: GIT_DEPLOY_TOKEN_PASSWORD
value: <deploy_token_password>
不建议这样做,因为任何可以看到您的Pod清单的人都会看到您的Gitlab令牌。
选项2 为令牌创建secret并将其安装到吊舱。
kubectl create secret generic gitlab-deploy-token -–from-literal=username=<deploy_token_username> -–from-literal=password=<deploy_token_password>
这将在您的k8s命名空间中创建一个编码机密。
安装秘密:
- name: GITLAB_DEPLOY_TOKEN_USERNAME
valueFrom:
secretKeyRef:
name: gitlab-deploy-token
key: username
- name: GITLAB_DEPLOY_TOKEN_PASSWORD
valueFrom:
secretKeyRef:
name: gitlab-deploy-token
key: password
现在,在您的窗格中,您可以:
git clone http://$GITLAB_DEPLOY_TOKEN_USERNAME:$GITLAB_DEPLOY_TOKEN_PASSWORD@gitlab.example.com/tanuki/awesome_project.git
注:特殊字符,例如$,*和!需要转义。如果 您使用的密码具有特殊字符,您需要对其进行转义 使用\字符。例如,如果您的实际密码是 S!B * d $ zDsb,您应该以这种方式执行命令:kubectl create 秘密通用dev-db-secret --from-literal = username = devuser --from-literal = password = S!B \ * d \ $ zDsb您无需转义 文件密码(--from-file)中的特殊字符。