Gitlab 10.1部署到Google Kubernetes引擎
如何将节点应用程序从Gitlab ci部署到GKE?我已经启用了群集集成,并且功能正常。但关于这意味着什么的文件几乎不存在。我不知道连接了GKE集群的变量给了我什么,也不知道如何在我的CI中使用它 这是我的gitlab-ci.yml,它将图像放在gitlabhq注册表中,这意味着我必须将其复制到谷歌或以某种方式设置GKE以使用私有注册表,这似乎没有人能够做到Gitlab 10.1部署到Google Kubernetes引擎,kubernetes,gitlab,gitlab-ci,google-kubernetes-engine,Kubernetes,Gitlab,Gitlab Ci,Google Kubernetes Engine,如何将节点应用程序从Gitlab ci部署到GKE?我已经启用了群集集成,并且功能正常。但关于这意味着什么的文件几乎不存在。我不知道连接了GKE集群的变量给了我什么,也不知道如何在我的CI中使用它 这是我的gitlab-ci.yml,它将图像放在gitlabhq注册表中,这意味着我必须将其复制到谷歌或以某种方式设置GKE以使用私有注册表,这似乎没有人能够做到 image: docker:git services: - docker:dind stages: - build - test -
image: docker:git
services:
- docker:dind
stages:
- build
- test
- release
- deploy
variables:
DOCKER_DRIVER: overlay2
CONTAINER_TEST_IMAGE: registry.gitlab.com/my-proj:$CI_BUILD_REF_NAME
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/my-proj:latest
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
build:
stage: build
script:
- docker build -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
.test1:
stage: test
script:
- docker run $CONTAINER_TEST_IMAGE npm run eslint
.test2:
stage: test
script:
- docker run $CONTAINER_TEST_IMAGE npm run mocha
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
deploy:
??????
我没有使用Auto DevOps集成,但我可以尝试推广一种有效的方法 如果您在k8s集群上安装了tiller,最好为您的应用程序创建舵图。如果您还没有这样做,这里有一个关于如何这样做的教程: (检查是否使用头盔管理图表) helm管理的基本deployment.yaml如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "name" . }}
labels:
app: {{ template "name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
app: {{ template "name" . }}
release: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
...
deploy:
stage: deploy
script:
- helm upgrade <your-app-name> <path-to-the-helm-chart> --install --set image.tag=$CI_BUILD_REF_NAME
以及.values文件中的相应值:
image:
repository: registry.gitlab.com/my-proj
tag: latest
示例.gitlab-ci.yml文件应如下所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "name" . }}
labels:
app: {{ template "name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
template:
metadata:
labels:
app: {{ template "name" . }}
release: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
...
deploy:
stage: deploy
script:
- helm upgrade <your-app-name> <path-to-the-helm-chart> --install --set image.tag=$CI_BUILD_REF_NAME
。。。
部署:
阶段:部署
脚本:
-掌舵升级--安装--设置映像.tag=$CI\u BUILD\u REF\u NAME
构建阶段发布docker映像,部署阶段安装helm图表,尝试从registry.gitlab.com/my proj
下载该映像
我认为k8s集群可以访问该注册表。如果注册表是私有的,则需要在kubernetes中创建一个包含授权令牌的密钥(除非它是自动创建的):
您正在使用的默认管道映像(image:docker:git
)没有安装helm CLI,因此您应该将该映像更改为安装了helm和kubectl的映像。
在gitlab教程中,他们似乎在每次运行时进行安装:
(检查
函数install_dependencies()
)这是一个已知的粗糙点,如果您在容器上获得未就绪状态并在pod上崩溃,这可能是因为您正在使用自己的docker文件,而helm chart希望您发布到端口5000,因为我有一个私有docker映像存储库。我走的是Auto DevOps路线,因为它负责将秘密转移到k8s。它根据Dockerfile生成图表,并假设您使用端口5000。它制造的秘密不是永久的,这会破坏自动缩放,但他们正在努力。