首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Kubernetes和Gitlab CI/CD在Google平台上部署暂存?

如何使用Kubernetes和Gitlab CI/CD在Google平台上部署暂存?
EN

Stack Overflow用户
提问于 2017-12-19 13:24:09
回答 3查看 2.9K关注 0票数 3

我最近和DockerKubernetesGoogle Cloud Platform(GCP)Gitlab一起玩,以实现从commitstagingCI/CD。到目前为止,我已经成功地将testingbuildingpushing的图像传给了Container registry of Gitlab

我有一个小节点和码头应用程序,它输出'Hello world'。此外,我已经建立了我的码头形象在Container registry of Gitlab。在这个时刻,这个过程是码头-在码头。我想把我的形象从Gitlab container registry推到Kubernetes engine。我已经安装了kubectlgcloud sdk自动DevOps看起来很有希望,但我想实现自己的.gitlab-ci.yml文件。

下面是我的.gitlab-ci.yml

代码语言:javascript
复制
stages:
  - testing
  - build
  - staging

variables:
  CONTAINER_TEST_IMAGE: registry.gitlab.com/surajneupane55/node-app-
  testing
 CONTAINER_RELEASE_IMAGE: registry.gitlab.com/surajneupane55/node-
 app-testing:latest


test:
  stage: testing
  image: node:boron
  script:
  - npm install
  - npm test


build_image:
  stage: build
  only: [master]
  image: docker:git
  services:
    - docker:dind
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN 
      registry.gitlab.com/surajneupane55
    - docker build -t $CONTAINER_TEST_IMAGE .
    - docker push $CONTAINER_TEST_IMAGE


staging_site:

//I need help here!!!
//For staging my project in Kubernetes cluster in GCP
//Already created node-app Kubernetes cluster

请告诉我,如果我的方法是错误的,因为这是我的第一个学习项目与CI/CD。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-12-29 20:17:30

一个简单的gitlab-ci.yml文件,可以用Google Container Registry(GCR)在GKE中构建和部署。首先,我们建立图像并将其推送到GCR。使用有效的凭据,我们可以轻松地将GKE与GCR连接起来并进行部署。

代码语言:javascript
复制
stages:
  - build
  - deploy

variables:
  CONTAINER_TEST_IMAGE: gcr.io/node-testing-189614/node-testing:latest




build_image:
  stage: build
  only: [master]
  image: google/cloud-sdk
  services:
    - docker:dind

  script:
    - echo "$GOOGLE_KEY_SECRET" > key.json # Google Cloud service accounts
    - gcloud auth activate-service-account --key-file key.json
    - gcloud config set project node-testing-189614
    - gcloud container builds submit -t $CONTAINER_TEST_IMAGE .




deploy_staging:
  image: google/cloud-sdk
  stage: deploy
  script:
    - echo "$GOOGLE_KEY_SECRET" > key.json # Google Cloud service accounts
    - gcloud auth activate-service-account --key-file key.json
    - gcloud config set project node-testing-189614
    - gcloud config set compute/zone europe-west1-b
    - gcloud config set container/use_client_certificate True
    - gcloud container clusters get-credentials node-testing
    - kubectl delete pods --all
    - kubectl apply -f staging.yml

  environment:
    name: staging
    url: http://***.***.**.***:****/ //External IP from Kubernetes
  only:
  - master

上面我们删除了GKE中的豆荚,因为我们总是想用最新的标签来更新图像。到目前为止,最好的解决方案是删除豆荚,让staging.yml文件在不可用的情况下创建新的文件。

最后,staging.yml看起来如下所示:

代码语言:javascript
复制
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: node-testing
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: node-testing
    spec:
      containers:
      - name: node-testing
        image: gcr.io/node-testing-189614/node-testing:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 8080
      imagePullSecrets:
        - name: gcr.io/node-testing-189614/node-testing
票数 6
EN

Stack Overflow用户

发布于 2017-12-19 15:12:11

宇不需要图像实际上被存储在GCR中才能在您的GKE中使用它,尽管有它在附近是很好的。您需要在gcloud上设置一个服务帐户,这样您的GCR就可以有一个未到期的auth (或者您需要使用gcloud cli对GCR进行标记),然后标记图像并将其推送。

在kubernetes上运行它是另一回事,我强烈要求您也查看Helm,以便为您的应用程序创建可在多个环境中重用的安装图表。

票数 0
EN

Stack Overflow用户

发布于 2018-01-15 18:18:15

如果您遵循GitOps方法,您可以将您的配置与CI分离,使其更加可靠和安全。

请看我对另一个非常相似问题的答复。

有关更高级别的概述,请参见:

免责声明:我是Kubernetes贡献者和Weaveworks员工。我们构建了开放源码和商业工具,帮助人们更快地使用Kubernetes进行生产。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47888027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档