gitlab与docker的集成(续)gitlab与k8s集成

上回说到,如何使用gitlab工具自动生成docker镜像。今天,就把gitlab自动部署k8s镜像说一下。

首先,新版的gitlab是自带和kubernetes的集成的。

这个按照官网步骤一步步来就好,楼主想展示的是通过gitlab-ci自动部署。这里对几个核心文件作出说明。

Dockerfile用了个最简单的。

#Dockerfile
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "test.py"]

k8s的配置文件写的也比较普通,注意我们把使用的镜像的版本用${tag}表示出来。

#gitlab-cd-test.yaml
kind: Service
apiVersion: v1
metadata:
  name: gitlab-cd-test-service
spec:
  type: NodePort
  selector:
    app: gitlab-cd-test-app
  ports:
    - protocol: TCP
      port: 5000
      nodePort: 30000
---
kind: Deployment
apiVersion: apps/v1beta1
metadata:
  name: gitlab-cd-test-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: gitlab-cd-test-app
  template:
    metadata:
      labels:
        app: gitlab-cd-test-app
    spec:
      containers:
        - name: gitlab-cd-test-container
          image: registry.cn-hangzhou.aliyuncs.com/goddy-test/gitlab-cd-test:${tag}
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5000
          resources:
            requests:
              memory: '51Mi'
              cpu: '20m'
            limits:
              memory: '102Mi'
              cpu: '50m'
      imagePullSecrets:
        - name: ali

跟上个项目基本一致,注意啦,楼主用的goddy/kubectl:1.0.0是某聪明的男人创建的,完全可以使用,也可以官网使用其他人的。

variables:
  image: "registry.cn-hangzhou.aliyuncs.com/goddy-test/gitlab-cd-test"
  tag: $CI_COMMIT_SHA

stages:
  - build
  - deploy

docker-build:
  stage: build
  image: docker:stable
  services:
    - docker:dind
  only:
    - master
    - dev
  script:
    - docker login registry.cn-hangzhou.aliyuncs.com -u *** -p ***
    - docker build -t $image:$tag .
    - docker push $image:$tag
    - echo "$image:$tag"

k8s-deploy:
  stage: deploy
  image: goddy/kubectl:1.0.0
  only:
    - master
    - dev
  script:
    - export tag=$tag
    - envsubst < gitlab-cd-test.yaml | kubectl --kubeconfig dev.conf -n dev apply -f -
    # - kubectl --kubeconfig hbrain.conf -n dev apply -f gitlab-cd-test.yaml

目前楼主是把k8s的配置文件放到了项目目录里,这确实不太安全,建议把楼主的基本镜像里目录~/.kube下的conf文件跟换为自己的,然后将此镜像作为基础镜像。

部署的规则自己可以编一下,嗯嗯。

因为代码库有楼主信息,不方便抛出,敬请谅解。

你可能感兴趣的:(gitlab与docker的集成(续)gitlab与k8s集成)