Vault与gitlab集成,并在gitlab-ci.yaml中定义



我尝试整合vault和gitlab

Vaultside是ok的,我尝试在我们的gitlab-ci中找到Vault。yaml但是我弄混了一些东西。

vaultyaml中的位置在哪里?

我们使用gitlab ee(community)。

我们的<<p> em> yaml :
.kaniko-build:
stage: build
before_script:
- mkdir -p /kaniko/.docker
- |
cat <<EOF > /kaniko/.docker/config.json
{
"auths":{
"${CI_REGISTRY}":{
"auth":"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d 'n')"
},
"https://index.docker.io/v1/":{
"auth":"$(printf "%s:%s" "${DOCKERHUB_USERNAME}" "${DOCKERHUB_PASSWORD}" | base64 | tr -d 'n')"
}
}
}
EOF
- cat /kaniko/.docker/config.json
script:
- >-
/kaniko/executor
--context "${CI_PROJECT_DIR}"
--dockerfile "${DOCKERFILE_PATH}"
--destination "${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}"
--destination "${CI_REGISTRY_IMAGE}:latest"
--cache
- echo $(date) $(date)
image:     
name: gcr.io/kaniko-project/executor:v1.8.0-debug
entrypoint: [""]
test-build:
extends: .kaniko-build
when: manual
variables:
DOCKERFILE_PATH: "devops/test/Dockerfile"

rules:
- if: $CI_COMMIT_BRANCH
exists:
- devops/test/Dockerfile
interruptible: true

如果您还没有这样做,那么首先需要为jwt身份验证配置vault。

vault auth enable -path=jwt/gitlab jwt

然后用一个引用你的gitlab实例的令牌验证端点配置新的jwt验证。

vault write auth/jwt/config 
jwks_url="https://gitlab.example.com/-/jwks" 
bound_issuer="gitlab.example.com"

现在在您的gitlab-ci。Yml,登录到vault

- export VAULT_ADDR="https://gitlab.example.com"
- export VAULT_TOKEN="$(vault write -field=token auth/jwt/gitlab/login role=SOME_ROLE_NAME jwt=$CI_JOB_JWT)"

下一个在你的gitlab-ci。Yml,检索秘密。

- export EXAMPLE_SECRET="$(vault kv get -field=EXAMPLE_SECRET_KEY kv-v2/example/secret/path)"

在这里的官方GitLab文档中有更详细的介绍

最新更新