本文介绍了如何通过k8s gitlab-ci Runner将某些东西部署到k8s集群?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

猫/etc/redhat-release:

CentOS Linux release 7.2.1511 (Core)

docker版本:

Client:
 Version:         1.13.1
 API version:     1.26
 Package version: <unknown>
 Go version:      go1.8.3
 Git commit:      774336d/1.13.1
 Built:           Wed Mar  7 17:06:16 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: <unknown>
 Go version:      go1.8.3
 Git commit:      774336d/1.13.1
 Built:           Wed Mar  7 17:06:16 2018
 OS/Arch:         linux/amd64
 Experimental:    false

kubectl版本:

Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.5", GitCommit:"f01a2bf98249a4db383560443a59bed0c13575df", GitTreeState:"clean", BuildDate:"2018-03-19T15:59:24Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

gitlab版本: 10.6-ce

gitlab运行器图像:gitlab/gitlab-runner:alpine-v10.3.0

gitlab runner image: gitlab/gitlab-runner:alpine-v10.3.0

我只是将kubernetes集群(不是GKE,而是我自己部署的k8s集群)集成到了gitlab项目中,然后在其上安装了gitlab-runner.

I just integrated a kubernetes cluster (not GKE, just a k8s cluster deployed by myself) to a gitlab project, and then installed a gitlab-runner on which.

所有这些,然后跟随添加现有的Kubernetes集群.

在那之后,我添加了一个带有单个阶段的.gitlab-ci.yml,并将其推送到了仓库中.这里是内容:

After that, I added a .gitlab-ci.yml with a single stage, and pushed it to the repo. Here is the contents:

build-img:
  stage: docker-build
  script:
#    - docker build -t $CONTAINER_RELEASE_IMAGE .
#    - docker tag $CONTAINER_RELEASE_IMAGE $CONTAINER_LATEST_IMAGE
#    - docker push $CONTAINER_IMAGE
    - env | grep KUBE
    - kubectl --help
  tags:
    - kubernetes
  only:
    - develop

然后我得到了:

$ env | grep KUBE
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
$ kubectl --help
/bin/bash: line 62: kubectl: command not found
ERROR: Job failed: error executing remote command: command terminated with non-zero exit code: Error executing in Docker Container: 1

kubectl尚未安装在流道中,也未找到某些环境变量,例如KUBE_TOKENKUBE_CA_PEM_FILEKUBECONFIG(请参见部署变量).

The kubectl was not installed in the runner yet, and some env vars like KUBE_TOKEN, KUBE_CA_PEM_FILE or KUBECONFIG are not found, neither(see Deployment variables).

搜索了gitlab的官方文档,一无所获.

Searched the official docs of gitlab, got nothing.

那么,我该如何通过该运行器部署项目?

So, how could I deploy a project via this runner?

推荐答案

gitlab-runner没有内置命令,它旋转具有预定义图像的容器,然后从该容器中的脚本中远程执行命令

The gitlab-runner has no build-in commands, it spin's of a container with a predefined image and then remotely executes the commands from your script, in that container.

您尚未定义图片,因此将使用gitlab-runner设置中定义的默认图片.

You have not defined an image, so the default image will be used as defined in the setup of the gitlab-runner.

所以,您可以使用curl安装kubectl二进制文件,然后在script:before_script:

So,You could Install kubectl binary using curl before you use it in your script:, or before_script:

build-img:
  stage: docker-build
  before_script:
   - curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
   - chmod +x ./kubectl
  script:
   - ...
   - ./kubectl --version

或使用带有kubectl的映像创建单独的部署阶段,例如roffe/kubectl:

Or create a seperate deployment stage, with an image that has kubectl, e.g. roffe/kubectl :

stages:
- docker-build
- deploy

build-img:
  stage: docker-build
  script:
   - docker build -t $CONTAINER_RELEASE_IMAGE .
   - docker tag $CONTAINER_RELEASE_IMAGE $CONTAINER_LATEST_IMAGE
   - docker push $CONTAINER_IMAGE
  tags:
   - kubernetes

deploy:dev:
  stage: deploy
  image: roffe/kubectl
  script:
   - kubectl .....
  tags:
   - kubernetes

这篇关于如何通过k8s gitlab-ci Runner将某些东西部署到k8s集群?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-19 11:15