Как написать развертывание kubernetes, чтобы получить последний образ, созданный с помощью облачной сборки GCP - PullRequest
2 голосов
/ 16 октября 2019

Я пытаюсь сделать CI / CD с GCP cloudbuild.

  1. У меня готов кластер k8s в GCP. проверьте приведенный ниже манифест развертывания.
  2. У меня есть cloudbuild.yaml, готовый для создания нового образа и отправки его в реестр и команда для изменения образа развертывания. проверьте облачность yaml ниже.

Раньше я выдвигал образ, используя TAG последний для образа докера, и использовал тот же тег в развертывании, но он не тянулпоследнее изображение, так что теперь я изменил его, чтобы использовать TAG $ COMMIT_SHA . Теперь я не могу выяснить способ передачи нового образа с помощью TAG на основе commit_sha для развертывания.

nginx-deploy.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: mynginx
spec:
  replicas: 3
  minReadySeconds: 50
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  selector:
    matchLabels:
      app: nginx

  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - image: gcr.io/foods-io/cloudbuildtest-image:latest
          name: nginx
          ports:
            - containerPort: 80

cloudbuild.yaml

steps:
  #step1      
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/cloudbuildtest-image:$COMMIT_SHA', '.' ]
  #step 2
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'gcr.io/$PROJECT_ID/cloudbuildtest-image:$COMMIT_SHA']
  #STEP-3
- name: 'gcr.io/cloud-builders/kubectl'
  args: ['set', 'image', 'deployment/mynginx', 'nginx=gcr.io/foods-io/cloudbuildtest-image:$COMMIT_SHA']
  env:
  - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
  - 'CLOUDSDK_CONTAINER_CLUSTER=cloudbuild-test'
images:
- 'gcr.io/$PROJECT_ID/cloudbuildtest-image'

Примечание. Повторяю ранее, я использовал последний тег на изображении и както же самое в развертывании, что я ожидал получить новый образ с помощью 3-го шага в облачной сборке, но этого не произошло, поэтому я внес вышеуказанные изменения в TAG, но теперь задаюсь вопросом, как мне внести изменения в манифест развертывания. Здесь используется только решение helm ?

1 Ответ

2 голосов
/ 16 октября 2019

Вам необходим шаг для замены тега в вашем deploy.yaml, один из способов сделать это - использовать переменную окружения и использовать envsubst для ее замены.

Изменить deploy.yaml:

    - image: gcr.io/foods-io/cloudbuildtest-image:$COMMIT_SHA

Используйте некоторый сценарий bash для замены переменной (например, используя ubuntu step ):

envsubst '$COMMIT_SHA' < deployment.yaml > nginx-deployment.yaml

Альтернативное использование sed:

sed -e 's/$COMMIT_SHA/'"$COMMIT_SHA"'/g' deployment.yaml > /workspace/nginx-deployment.yaml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...