Рубрики
Uncategorized

Узел JS Непрерывное развертывание в Облако Google с Kubernetes и Container Builder

Создайте простой в использовании CD для вашего узла приложения с контейнером и двигателем Kubernetes в Google Cloud. Теги с DevOps, Kubernetes, Node, Docker.

Таким образом, вы хотите, чтобы ваше приложение было развернуто для вашего кластера Kubernetes, не заботясь о любом ручном шаге? Я забрал вас, это супер просто, чтобы создать постоянный конвейер развертывания с облаком Google. Ради понимания я выбираю приложение Nodejs Express, но он также работает с реагированием или PHP или любым другим уровнем приложений.

Давайте начнем:

Потому что я админ

Сначала нам нужно дать контейнер построить права доступа к нашим API Kubernetes. Помните, что это не дает доступа к определенному кластеру. Это просто позволяет учетной записи службы CloudBuilder для доступа к нашему кластеру Kubernetes. Так что прыгай к IAM Настройки страницы и искать учетную запись службы CloudBuitild. Если это не существует, вам, возможно, придется включить CloudBuild API.

Это должно выглядеть так

Нам нужно добавить права на доступ к API Kubernetes наших кластеров, так что Klick на ручке и ищете следующее.

Подготовьте заявку

Я не буду вспоминаю детали о том, как настроить экспресс-приложение и ввести тестирование к нему. Я создал репозиторий с примером приложения, что мы можем использовать

Mfahlandt/GCP-непрерывное развертывание-узел-демонстрация

Это пример проекта, чтобы показать, как вы можете легко создать постоянное развертывание в Google Cloud

Nodejs непрерывное развертывание, выполненное с контейнером-строителем и двигателем Kubernetes

Чтобы найти все детали о том, как использовать этот репозиторий, пожалуйста, смотрите относится к соответствующему блоку пост на dev.to

Чтобы дать вам обзор, у нас есть приложение Basic Express с двумя пусними маршрутами для получения пользователей или пользователей по ID. Также у нас есть тестовая папка, имеющая тесты на две маршруты в нем. Эти тесты написаны с помощью Чай и Мока. Если вы загрузите репозиторий, вы можете сделать следующее, чтобы увидеть, работают ли тесты.

npm install
npm test

До приложения может работать, нам нужна услуга и развертывание в кластере Kubernetes. Итак, давайте быстро создадим услугу и развертывание. Все файлы вы также можете найти в репозитории.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: server-production
  labels:
    app: YOUR-PROJECT-ID
spec:
  replicas: 2
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  template:
    metadata:
      labels:
        app: server
    spec:
      containers:
        - name: server
          image: gcr.io/PROJECT_ID/REPOSITORY:master
          imagePullPolicy: Always
          ports:
            - containerPort: 3000
          env:
            - name: NODE_ENV
              value: "production"

Единственная важная часть здесь заключается в том, что вы изменяете идентификатор проекта и хранилище к пути, которое будет иметь репозиторий.

После этого нам нужен только услуга, чтобы открыть наше приложение в Интернет. Так быстро примените услугу.

kind: Service
apiVersion: v1
metadata:
  name:  server
spec:
  selector:
    app:  server
  ports:
    - name:  server
      protocol: TCP
      port: 80
      targetPort: 3000
  type: LoadBalancer

Готов развернуть

Теперь нам нужно перейти к самой важной части всей настроек. CloudBuild.yaml. Там мы определим все для наших постоянных шагов развертывания.

Первая удивительная часть будет, что можно поставить все важные данные в переменных среды, определенные в сборке, поэтому вы можете использовать облачную сборку для разных установок.

Сначала мы устанавливаем все зависимости узла и запустите тест.

  - name: 'gcr.io/cloud-builders/npm'
    args: ['install']
  - name: 'gcr.io/cloud-builders/npm'
    args: ['run', 'test']

После этого мы создаем документ Docker со всеми файлами репозиториев внутри и правильной определенной средой, поэтому вы также можете легко выполнить развертывание постановки или даже развертывание ветви. И мы нажимаем его на репозиторий Google Image.

  - name: 'gcr.io/cloud-builders/docker'
    args:
      - build
      - '--build-arg'
      - 'buildtime_variable=$_NODE_ENV'
      - '-t'
      - gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID
      - '.'
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID']

Также важно увидеть, мы пометим изображение с уникальным идентификатором сборки, чтобы использовать применить способность Kubernetes, поэтому изображение фактически изменяется.

  - name: 'gcr.io/cloud-builders/kubectl'
    args:
      - set
      - image
      - deployment
      - $_DEPLOYMENT
      - $_DEPLOYMENT=gcr.io/$PROJECT_ID/$REPO_NAME:$BUILD_ID
    env:
      - 'CLOUDSDK_COMPUTE_ZONE=$_CLUSTER_ZONE'
      - 'CLOUDSDK_CONTAINER_CLUSTER=$_CLUSTER_NAME'

И, наконец, мы установили изображение в кластере Kubernetes. БАМ! Крюк, автоматизированное тестирование, если успешно автоматизированное развертывание, без простоя.

Теперь мы открываем Контейнерный строитель триггер и выберите, где находится наш код.

На последнем шаге триггера мы теперь можем добавить пользовательские переменные. Это первая точка, когда мы на самом деле определяем кластер. Так что все агрегировано в одном месте и готово к работе.

Теперь нам просто нужно обрести мастеру, а триггер начнется.

Yiha теперь у нас есть постоянное развертывание, не создавая дополнительных услуг, таких как Дженкинс, Муравей или шеф-повар. Довольно удивительно

Я думаю о создании серии учебных пособий от нуля до героя в облаке. Оставьте мне комментарий!

Оригинал: «https://dev.to/mfahlandt/nodejs-continuous-deployment-done-with-container-builder-and-kubernetes-engine-in-google-cloud-570p»