我正在设置一个管道,该管道编译和构建新的坞映像,然后将这些映像部署到测试kubernetes集群。
我用的是弹壳机。
我需要设置我的kubectl
客户机来指向测试kubernetes集群。(即)设置群集和上下文)。
据我所知-我只需要运行一次。是否有一种方法可以让它运行一次,就像.gitlab-ci.yaml
中定义的那样?还是应该每次在before_script
中重复设置步骤?
发布于 2018-04-16 07:24:04
我也处理过同样的问题。一些人建议使用Gitlab组“机密”和before_script
。因为我知道我也要部署,而且我的跑步者需要其他工具,比如"helm",所以我做了我自己的码头容器。我仍然在base64编码组中为集群保留配置,但是我在dockerfile中这样设置它。
ENV kube_config=$kube_config
RUN echo -n ${kube_config} | base64 -d > ~/.kube/config
现在,只需为gitlab运行程序设置一个环境变量,以指向您的新映像。
KUBERNETES_IMAGE: registry.gitlab.com/MY_USERNAME/MY_REPO_NAME/MY_IMAGE_NAME:latest
别忘了测试你的新容器!
stages:
- build
- test
- release
variables:
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE/gitlab_runner:$CI_COMMIT_REF_NAME
CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE/gitlab_runner:latest
before_script:
- apt-get update && apt-get install docker.io -y
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
Build Image:
stage: build
script:
- docker build --build-arg kube_config=${kube_config} -t ${CONTAINER_TEST_IMAGE} .
- docker push ${CONTAINER_TEST_IMAGE}
except:
- master
Test Kubectl:
stage: test
script:
- docker pull ${CONTAINER_TEST_IMAGE}
- docker run --rm ${CONTAINER_TEST_IMAGE} kubectl get deployments -n kube-system
except:
- master
Test Helm:
stage: test
script:
- docker pull ${CONTAINER_TEST_IMAGE}
- docker run --rm ${CONTAINER_TEST_IMAGE} helm ls
except:
- master
Test Docker:
stage: test
script:
- docker pull ${CONTAINER_TEST_IMAGE}
- docker run --rm -v /var/run/docker.sock:/var/run/docker.sock ${CONTAINER_TEST_IMAGE} docker images
except:
- master
release-image:
stage: release
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master
编辑:错过了这部分。我正在使用shell运行程序。
所以,我所说的文章可能与此无关。然而,我认为直接在集群上构建和部署gitlab运行程序有一些好处。
https://devops.stackexchange.com/questions/3857
复制相似问题