Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gitlab 10.1部署到Google Kubernetes引擎_Kubernetes_Gitlab_Gitlab Ci_Google Kubernetes Engine - Fatal编程技术网

Gitlab 10.1部署到Google Kubernetes引擎

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 -

如何将节点应用程序从Gitlab ci部署到GKE?我已经启用了群集集成,并且功能正常。但关于这意味着什么的文件几乎不存在。我不知道连接了GKE集群的变量给了我什么,也不知道如何在我的CI中使用它

这是我的gitlab-ci.yml,它将图像放在gitlabhq注册表中,这意味着我必须将其复制到谷歌或以某种方式设置GKE以使用私有注册表,这似乎没有人能够做到

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。它制造的秘密不是永久的,这会破坏自动缩放,但他们正在努力。