Автор оригинала: Sheena.
Добро пожаловать назад. Это третий и заключительная часть нашей серии на развертывание микросервисов.
В Часть 1 Мы познакомились с Docker, создавая изображение для простого веб-приложения, а затем запустить это изображение. Мы до сих пор работаем с Это репо Отказ
В части 2 мы получили наше приложение в Интернете, развернув его к кластеру Kubernetes, которые мы сами настроили на облако Google. Мы также имеем дело с основами масштабирования и обновления нашего приложения.
В этой части мы получим простой CI/CD-CD-конвейер вверх и работая так, чтобы наш код изменения автоматически проверяются и развернуты, как только мы нажимаем их.
Так в чем в чем дело с CI/CD?
Непрерывная интеграция и непрерывное развертывание являются следующим шагом, чтобы пройти, если вы хотите, если вы хотите, если вы хотите, чтобы приложение микровисского производства. Давайте пересмотрим Webflix, чтобы сделать эту точку зрения.
Webflix работает много услуг в K8S. Каждый из этих услуг связан с некоторым кодом, хранящимся в репозитории где-то. Допустим, Webflix мудро выбирает для использования Git для хранения их кода, и они следуют на стратегии разветвления функций.
Стратегии ветвления немного (много) за пределами объема этой статьи, но в основном, что это означает, что если разработчик хочет сделать новую функцию, они кодируют эту функцию на новой ветви Git.
После того, как разработчик уверен, что их функция завершена, они требуют, чтобы их филиал функционал объединял в главную ветку. После того, как код объединен на ветвь Master, следует означать, что он готов к развернутому в производство.
Если все это звучит довольно загадочно, я бы предложил вам занять некоторое время на Узнайте о Git Отказ Git мощный. Давно живут git.
Процесс развертывания кода к продукции не так просто. Во-первых, мы должны убедиться, что все тесты модули проходят и имеют хорошее покрытие. Тогда, поскольку мы работаем с микросервисами, вероятно, есть изображение докера для создания и нажатия.
После того, как это сделано, было бы приятно убедиться, что изображение Docker на самом деле работает, выполняя некоторые тесты против живого контейнера (возможно, группа живых контейнеров). Также может потребоваться измерить производительность нового изображения, запустив несколько тестов с помощью инструмента, такими как Саранча Отказ Процесс развертывания может стать очень сложен, если есть несколько разработчиков, работающих на нескольких службах, поскольку нам нужно будет отслеживать совместимость версий для различных услуг.
CI/CD. Все о автоматизации такого рода вещи.
Существуют множество инструментов CI/CD, и они имеют свои собственные способы настройки своих трубопроводов (трубопровод представляет собой серию кода шагов должен пройти, когда он нажат). Есть много хороших книг (например, этот ), посвященный проектированию трубопроводов развертывания, но, в целом, вы захотите сделать что-то вроде этого:
- Устройство тестирования кода
- построить контейнер
- Настройте тестовую среду, в которой новый контейнер может работать в реалистичном контексте
- Запустите некоторые интеграционные тесты
- Может быть, запустите еще несколько тестов, например, тесты на насыщенности с помощью Locust.io или подобные
- Развертывание в производственной системе
- Уведомить команду успеха/неудачи
Если, например, один из тестовых шагов не удается, то код не будет развернут до производства. Трубопровод пропустит до конца процесса и уведомляет команду, что развертывание было неудачным.
Вы также можете настроить трубопроводы для запросов слияния/тяги, например, если разработчик запрашивает слияние, выполнить вышеуказанный трубопровод, но оставьте шаг 6 (развертывание до производства).
Drone.io
Дрон — это контейнерная система непрерывной доставки. Это открытый источник, очень настраиваемый (каждый шаг сборки выполнен контейнером!) И имеет много плагины доступный. Это также один из самых простых систем CI/CD для изучения.
Практично: Настройка дронов
В этом разделе мы собираемся настроить беспилотник на VM в облачном облаке Google и получить его, чтобы играть в хорошую игру с GitLab. Он отлично работает с GitHub и другими популярными приложениями Git. Мне просто нравится Gitlab.
Теперь я буду работать над предположением, что вы следуете наряду с частью 1 этой серии. У нас уже есть кластер K8S, настраиваемый в Google Cloud, и он работает развертывание, содержащее действительно простое веб-приложение. До сих пор мы взаимодействовали с нашим кластером через оболочку Google Cloud, поэтому мы собираемся делать это. Если какой-то из этого материала вас беспокоит, пожалуйста, посмотрите на часть 2.
Установить инфраструктуру
Первое, что мы сделаем, это настроить VM (облако Google вызывает этот выпускной экземпляр) со статическим IP-адресом. Мы убедимся, что брандмауэр Google позволяет в HTTP трафик.
При работе с вычислением экземпляров нам нужно постоянно знать регионы и зоны. Это не слишком сложно. В целом, вы просто хотите поставить свои вычисление экземпляры, близкие к тому, где они будут доступны.
Я буду использовать Europe-West1-D
Как моя зона, и Europe-West1
как мой регион. Не стесняйтесь просто скопировать меня на этот учебник. В качестве альтернативы взгляните на Документация Google И выберите, что лучше всего подходит для вас.
Первый шаг — зарезервировать статический IP-адрес. Мы назвали нашими Дрон-IP
Отказ
gcloud compute addresses create drone-ip --region europe-west1
Это выходы:
Created [https://www.googleapis.com/compute/v1/projects/codementor-tutorial/regions/europe-west1/addresses/drone-ip].
Теперь посмотрите на него и обратите внимание на фактический IP-адрес. Нам понадобится позже:
gcloud compute addresses describe drone-ip --region europe-west1
Это выводит что-то вроде:
address: 35.233.66.226 creationTimestamp: '2018-06-21T02:40:37.744-07:00' description: '' id: '431436906006760570' kind: compute#address name: drone-ip region: https://www.googleapis.com/compute/v1/projects/codementor-tutorial/regions/europe-west1 selfLink: https://www.googleapis.com/compute/v1/projects/codementor-tutorial/regions/europe-west1/addresses/drone-ip status: RESERVED
Так что IP-адрес, который я только что зарезервировал 35.233.66.226
. Твои будут отличаться.
Хорошо, теперь создайте виртуальную машину:
gcloud compute instances create drone-vm --zone=europe-west1-d
Это выходы:
Created [https://www.googleapis.com/compute/v1/projects/codementor-tutorial/zones/europe-west1-d/instances/drone-vm]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS drone-vm europe-west1-d n1-standard-1 10.132.0.6 35.195.196.332 RUNNING
Хорошо, теперь у нас есть VM и статический IP. Нам нужно связать их вместе:
Сначала давайте посмотрим на существующую конфигурацию для нашего VM:
gcloud compute instances describe drone-vm --zone=europe-west1-d
Это выводит много вещей. Самое главное:
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 35.195.196.332 type: ONE_TO_ONE_NAT
VM может, максимально иметь один из AccessConfig. Нам нужно будет удалить существующий и заменить его статическим IP-адресом конфигурации. Во-первых, мы удаляем это:
gcloud compute instances delete-access-config drone-vm \ --access-config-name "external-nat" --zone=europe-west1-d
Это выходы:
Updated [https://www.googleapis.com/compute/v1/projects/codementor-tutorial/zones/europe-west1-d/instances/drone-vm].
Теперь добавляем новую конфигурацию сети:
gcloud compute instances add-access-config drone-vm \ --access-config-name "drone-access-config" --address 35.233.66.226 --zone=europe-west1-d
Это выходы:
Updated [https://www.googleapis.com/compute/v1/projects/codementor-tutorial/zones/europe-west1-d/instances/drone-vm].
И теперь нам нужно настроить брандмауэр, чтобы обеспечить HTTP-трафик. Правила брандмауэра Google могут быть добавлены и удалены из определенных экземпляров через использование тегов.
gcloud compute instances add-tags drone-vm --tags http-server --zone=europe-west1-d
Это выходы:
Updated [https://www.googleapis.com/compute/v1/projects/codementor-tutorial/zones/europe-west1-d/instances/drone-vm].
Если вы хотите позволить трафику HTTPS, также есть тег для этого, но настройка HTTPS немного за пределами объема этой статьи.
Потрясающие! Теперь у нас есть VM со статическим IP-адресом, и он может говорить с внешним миром через http.
Установить предварительные условия
Чтобы получить беспилочку для бега, нам нужно установить Docker и Docker-Compose. Давайте сделаем это сейчас:
SSH в нашу виртуальную машину от вашей области Google Cloud Shell так:
export PROJECT_ID="$(gcloud config get-value project -q)" gcloud compute --project ${PROJECT_ID} ssh --zone "europe-west1-d" "drone-vm"
Когда он просит паросы, вы можете оставить их пробел с целью этого учебника. Это сказано, это не очень хорошая практика.
Хорошо, теперь у вас есть раковина в новом виртуальной машине. Блестящий.
Теперь введите:
uname -a
Это выводят что-то вроде
Linux drone-vm 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64 GNU/Linux
Далее мы Установить Docker и докер-состав
Генерация учетных данных GitLab Oauth
В GitLab перейдите к вашим параметрам пользователей и нажмите на приложения. Вы хотите создать новое приложение. Введите Дрон
как имя. Как URL обратного вызова, используйте http://35.233.66.226/authorize
Отказ IP-адрес Существует статический IP-адрес, который мы только что сгенерировали.
GitLab теперь выпустит идентификатор приложения и секрет и некоторые другие вещи. Примите к сведению эти значения, дрон понадобится им.
Создайте репо на GitLab
Вам также потребуется создать Git Repo, который у вас есть. До сих пор мы использовали https://gitlab.com/shena.Oconnell/tutorial-codentementor-deploying-microservices.git
Отказ Вы бы хотели что-то вроде https://gitlab.com/$ {ueour_gitlab_user retorial-codementor-deploying-microservices.git
существовать. Еще ничего не кладите ничего в вашу репо, мы доберемся до этого немного позже.
Настроить дрон
Вы можете обратиться к Дрон Документация Для полных инструкций.
Во-первых, нам нужно настроить некоторые экологические переменные. Давайте сделаем новый файл под названием .drone_secrets.sh.
nano .drone_secrets.sh
Это открывает редактор. Вставьте следующее в редактор
#!/bin/sh export DRONE_HOST=http://35.233.66.226 export DRONE_SECRET="some random string of your choosing" export DRONE_ADMIN="sheena.oconnell" export DRONE_GITLAB_CLIENT=export DRONE_GITLAB_SECRET=
Вам нужно будет обновить немного:
Drone_host
: Это должно содержать ваш статический IP-адрес. Drone_secret
: Любая случайная строка будет работать. Просто сделайте что-нибудь вверх или используйте генератор случайных паролей, как Это один Drone_admin
: Ваше имя пользователя GitLab. Мой это Shena.Oconnell.
. Drone_gitlab_client
: Скопируйте свой идентификатор приложения GitLab здесь Drone_gitlab_secret.
: Скопируйте секрет вашего клиента Gitlab здесь
Как только вы закончите редактирование файла, нажмите: Ctrl + X
Тогда y
Тогда Введите
Сохранить и выйти.
Теперь сделайте его исполняемым
chmod +x .drone_secrets.sh
И загрузить секреты в вашу среду
source .drone_secrets.sh
Cool, теперь давайте сделаем другой файл:
nano Docker-compose.yml
Вставить следующее:
version: '2' services: drone-server: image: drone/drone:0.8 ports: - 80:8000 - 9000 volumes: - /var/lib/drone:/var/lib/drone/ restart: always environment: - DRONE_HOST=${DRONE_HOST} - DRONE_SECRET=${DRONE_SECRET} - DRONE_ADMIN=${DRONE_ADMIN} - DRONE_GITLAB=true - DRONE_GITLAB_CLIENT=${DRONE_GITLAB_CLIENT} - DRONE_GITLAB_SECRET=${DRONE_GITLAB_SECRET} drone-agent: image: drone/agent:0.8 command: agent restart: always depends_on: - drone-server volumes: - /var/run/Docker.sock:/var/run/Docker.sock environment: - DRONE_SERVER=drone-server:9000 - DRONE_SECRET=${DRONE_SECRET}
Теперь этот файл Compose требуется несколько настроек окружающей среды. К счастью, мы уже установили те. Сохранить и выйти так же, как раньше.
Теперь запустить
docker-compose up
Там будет много выходов. Откройте новое окно браузера и перейдите к Host Drone. В моем случае то есть: http://35.233.66.226
Отказ Вы будете перенаправлены на страницу авторизации ОАУТ на GitLab. Выберите, чтобы авторизовать доступ к вашей учетной записи. Затем вы будете перенаправлены обратно в экземпляр вашего дрона. Через некоторое время вы увидите список ваших REPOS.
Каждое репо будет иметь кнопку переключения справа от страницы. Переключите любые (ы) Вы хотите настроить CI/CD для. Если вы следовали, там должен быть репо, называемый $ {Your_gitlab_user}/Учебное пособие - развертывание - микросервисы
Отказ Идите вперед и активируйте этот.
Реконструировать
Хорошо! Все идет нормально. У нас есть Drone.ci все настроили и разговаривая с GitLab.
Практично: давая беспилотный доступ к облако Google
Прежде чем мы попадем в мясо фактического запуска трубопровода с беспилотником, нам понадобится способ для того, чтобы дрон был аутентифицироваться с нашим проектом Google. Раньше мы просто взаимодействовали как сами через gcloud
Инструментарий встроен в оболочку Google Cloud (или установлен локально, если вы хотели сделать такие вещи). Мы хотим, чтобы дрон иметь подмножество прав наших пользователей.
Мы начинаем, создавая учетную запись услуг. Это как пользователь. Как пользователи, Сервисные учетные записи имеют учетные данные и права, и они могут аутентифицироваться с Google Cloud. Чтобы узнать все о сервисном счетах, вы можете обратиться к Официальные документы Google Отказ
Откройте еще одну оболочку Google Cloud и выполните следующие действия:
gcloud iam service-accounts create drone-sa \ --display-name "drone-sa"
Это выходы:
Created service account [drone-sa].
Теперь мы хотим дать разрешения этой учетной записи услуг. Ему нужно будет подтолкнуть изображения в реестр контейнера облака Google (который основан на хранилище Google), и ему нужно будет развернуть обновления до нашего развертывания приложений.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:drone-sa@${PROJECT_ID}.iam.gserviceaccount.com --role roles/storage.admin gcloud projects add-iam-policy-binding ${PROJECT_ID} \ --member serviceAccount:drone-sa@${PROJECT_ID}.iam.gserviceaccount.com --role roles/container.developer
Эти команды выходные вещи как:
bindings: - members: - serviceAccount:service-241386104325@compute-system.iam.gserviceaccount.com role: roles/compute.serviceAgent - members: - serviceAccount:drone-sa@codementor-tutorial.iam.gserviceaccount.com role: roles/container.developer - members: - serviceAccount:service-241386104325@container-engine-robot.iam.gserviceaccount.com role: roles/container.serviceAgent - members: - serviceAccount:241386104325-compute@developer.gserviceaccount.com - serviceAccount:241386104325@cloudservices.gserviceaccount.com - serviceAccount:service-241386104325@containerregistry.iam.gserviceaccount.com role: roles/editor - members: - user:yourname@gmail.com role: roles/owner - members: - serviceAccount:drone-sa@codementor-tutorial.iam.gserviceaccount.com role: roles/storage.admin etag: BwVvOooDQaI= version: 1
Если вы хотите предоставить свой экземпляр Drone Accured к другим функциям облака Google (например, если вам нужно было взаимодействовать с приложенным двигателем), вы можете получить полный список доступных ролей так:
gcloud iam roles list
Теперь мы создаем некоторые учетные данные для нашей службы. Любое устройство с этим ключевым файлом будет иметь все права, предоставленные нашу учетную запись обслуживания. Вы можете неверно использовать ключевые файлы в любое время. Мы собираемся назвать наш ключ key.json.
gcloud iam service-accounts keys create ~/key.json \ --iam-account drone-sa@${PROJECT_ID}.iam.gserviceaccount.com
Это выходы:
created key [7ce29ec3d260c55c5ff1b32aad40a331f15edc63] of type [json] as [/home/sheenaprelude/key.json] for [drone-sa@codementor-tutorial.iam.gserviceaccount.com]
Теперь нам нужно сделать ключ доступным для дрона. Мы сделаем это, используя интерфейс Дрона. Укажите свой браузер на беспилоте в интернет-конце (в моем случае http://35.233.66.226). Перейдите к репозиторию, который вы хотите развернуть. Нажмите на кнопку меню в правом верхнем углу экрана и выберите Секреты.
Теперь создайте новый секрет под названием Google_credentials.
Сейчас в вашей облачной оболочке Google:
cat key.json
Вывод должен быть что-то вроде этого:
{ "type": "service_account", "project_id": "codementor-tutorial", "private_key_id": "111111111111111111111111", "private_key": "-----BEGIN PRIVATE KEY-----\n lots and lots of stuff =\n-----END PRIVATE KEY-----\n", "client_email": "drone-sa@codementor-tutorial.iam.gserviceaccount.com", "client_id": "xxxxxxxxxxxxxxxx", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/drone-sa%40codementor-tutorial.iam.gserviceaccount.com" }
Скопируйте его и вставьте его в секретная стоимость
поле и нажмите на Сохранить
Отказ
Практично: Наконец, трубопровод !!
Теперь Drone имеет доступ к нашим облачным ресурсам Google (хотя нам все еще нужно сказать, как получить доступ к файлу ключа), и он знает о нашем репо. Теперь нам нужно сказать Drone, что именно нам нужно сделать, когда мы нажимаем код на наш проект. Мы делаем это, указав трубопровод в файле с именем .drone.yml.yml.
В корне нашего Git Reppo. .drone.yml.yml.
написано в формате YAML. Здесь это чит-лист, который я нашел вполне полезным.
Пришло время поставить что-то в вашим репо, развертывающему развертыванию. Мы просто скопируем все из репо, созданного для этой серии статей. В терминале где-то (ваш локальный компьютер, оболочка Google Cloud, или где):
# clone the repo if you havent already and cd in git clone https://gitlab.com/sheena.oconnell/tutorial-codementor-deploying-microservices.git cd tutorial-codementor-deploying-microservices # set the git repo origin to your very own repo git remote remove origin git remote add origin https://gitlab.com/${YOUR_GITLAB_USER}/tutorial-codementor-deploying-microservices.git # and push your changes. This will trigger the deployment pipeline already specified by my .drone.yml git checkout master git push --set-upstream origin master
Это забивает наш трубопровод. Вы можете посмотреть, что это произойдет в беспилоте веб-интерфейс.
Вот наш полный спецификация трубопровода:
pipeline: unit-test: image: python:3 commands: - pip install -r requirements.txt - python -m pytest gcr: image: plugins/gcr registry: eu.gcr.io repo: codementor-tutorial/codementor-tutorial tags: ["commit_${DRONE_COMMIT}","build_${DRONE_BUILD_NUMBER}", "latest"] secrets: [GOOGLE_CREDENTIALS] when: branch: master deploy: image: Google/cloud-sdk:latest environment: PROJECT_ID: codementor-tutorial COMPUTE_ZONE: europe-west1-d CLUSTER_NAME: hello-codementor secrets: [GOOGLE_CREDENTIALS] commands: - yes | apt-get install python3 - python3 generate_key.py key.json - gcloud config set project $PROJECT_ID - gcloud config set compute/zone $COMPUTE_ZONE - gcloud auth activate-service-account --key-file key.json - gcloud container clusters get-credentials $CLUSTER_NAME - kubectl set image deployment/codementor-tutorial codementor-tutorial=eu.gcr.io/${PROJECT_ID}/app:${DRONE_BUILD_NUMBER} when: branch: master
Как проходят трубопроводы, это довольно маленький. Мы указали три шага: Тест подразделения
, GCR
и Развертывание
Отказ Это помогает удержать докер — составлять в уме при работе с дроном. Каждый шаг работает как контейнер докера. Таким образом, каждый шаг основан на образе докера. По большей части вы точно указываете, что происходит на этих контейнерах через команды
.
Давайте начнем с вершины.
unit-test: image: python:3 commands: - pip install -r requirements.txt - python -m pytest
Этот шаг довольно прост. Всякий раз, когда любые изменения внесены в репо (на любом ветке), то тесты модуля запускаются. Если проходят тесты, дрон перейдет на следующий шаг. В нашем случае все остальные шаги происходят только в главной ветке, поэтому, если вы находитесь в филиале функции, единственное, что этот трубопровод будет делать, это запустить тесты подразделения.
gcr: image: plugins/gcr registry: eu.gcr.io repo: codementor-tutorial/codementor-tutorial tags: ["commit_${DRONE_COMMIT}","build_${DRONE_BUILD_NUMBER}", "latest"] secrets: [GOOGLE_CREDENTIALS] when: branch: master
GCR
Шаг — это все о создании нашего образа докера приложения и нажимая его в облачный реестр Google (GCR). Это особый вид шага, как он основан на плагине. Мы не будем подробно описаны на том, как плагины работают здесь. Просто подумайте об этом как об этом как изображение, которое принимает специальные параметры. Этот настроен на подтолкнуть изображения в eu.gcr.io/Codentementor-Tutorial/Codentor-Tutorial
Отказ
Теги
Аргумент содержит список тегов для применения. Здесь мы используем некоторые переменные, поставляемые дроном. Drone_commit
Является ли Git Compate Hash. Каждая сборка каждого репо, пронумерована, поэтому мы также используем это как тег. Дрон поставляет много переменных, посмотрите здесь для приятного списка.
Следующая вещь — секреты
. Помните, что секрет мы скопировали, встаивали в дрон всего несколько минут назад? Это имя было Google_credentials.
. Эта линия гарантирует, что содержимое этого секрета доступно для контейнера для шага в виде окружающей среды с именем Google_credentials
Отказ
Последний шаг — это немного сложнее:
deploy: image: Google/cloud-sdk:latest environment: PROJECT_ID: codementor-tutorial COMPUTE_ZONE: europe-west1-d CLUSTER_NAME: hello-codementor secrets: [GOOGLE_CREDENTIALS] commands: - yes | apt-get install python3 - python3 generate_key.py key.json - gcloud config set project $PROJECT_ID - gcloud config set compute/zone $COMPUTE_ZONE - gcloud auth activate-service-account --key-file key.json - gcloud container clusters get-credentials $CLUSTER_NAME - kubectl set image deployment/codementor-tutorial codementor-tutorial=eu.gcr.io/${PROJECT_ID}/app:${DRONE_BUILD_NUMBER} when: branch: master
Здесь наше базовое изображение поставляется в Google. Это дает нам gcloud
и несколько колоколов и свистков.
окружающая среда
Давайте настроим экологические переменные, которые будут доступны в беговой контейнере, а Секреты
работать как раньше.
Теперь у нас есть куча команд. Эти выполняются по порядку, и вы должны распознать большую часть этого. Единственная действительно странная часть — это то, как мы аутентифицируемся как наш сервисный счет ( Drone-Sa
). Линия, которая делает фактическую проверку подлинности GCloud Auth Activate-Service-Account - Key-key.json
. Это требует ключевого файла. Сейчас в идеале мы бы просто сделали что-то подобное:
- echo $GOOGLE_CREDENTIALS > key.json - gcloud auth activate-service-account --key-file key.json
Но, к сожалению, дрон полностью пробел пробел нашего секрета. Таким образом generate_key.py
Существует для De-Manle Key, чтобы на самом деле было полезно (Gee, спасибо Дрон!). И, конечно, Python должен быть доступен, поэтому мы можем запустить этот скрипт. Таким образом Да |. apt-get install python3
.
Теперь, когда все настроен, если вы вступите в изменение в свой код и нажимаете его на мастер, вы сможете просмотреть трубопровод выполняться, сохраняя глаза на беспилоте.
После завершения трубопровода вы сможете убедиться, что ваше развертывание обновляется, посмотрите на стручки на командной строке GCloud:
kubectl get pods
Выходы:
NAME READY STATUS RESTARTS AGE codementor-tutorial-77d67cbfb8-flfxl 1/1 Running 0 49s codementor-tutorial-77d67cbfb8-gfl7z 1/1 Running 0 49s codementor-tutorial-77d67cbfb8-p9bcd 1/1 Running 0 40s
Теперь выберите один и опишите это:
kubectl describe pod codementor-tutorial-77d67cbfb8-flfxl
Мы получим множество выходов здесь. Часть, которая нам интересна:
Containers: codementor-tutorial: Image: eu.gcr.io/codementor-tutorial/codementor-tutorial:commit_cb5d5ca61661954d7d139b2a1d60060cba5c4f2f
Теперь, если вы должны были проверить свой журнал GIT, последний коммит, чтобы учить, что вы толкнули, будут иметь фиксацию SHA CB5D5CA61661954D7D139B2A1D60060CBA5C4F2F.
. Разве это не аккуратно?
Заключение
Вау, мы сделали это! Если вы работали через все практические примеры, вы многое достигли.
Теперь вы справляетесь с Docker — вы построили изображение и создали контейнер для этого изображения. Затем вы получили свои изображения, работающие на кластере Kubernetes, которые вы настраиваете. Затем вы вручную масштабировались и выкатили обновления на ваше приложение.
В этой части у вас есть простой CI/CD-конвейер вверх и работает с нуля, обеспечивая виртуальную машину, устанавливая дрон и его предварительные условия и добивая его воспроизведения с GitLab и Google Kurbenetes Engine.
С другой стороны, если вы работали через все практические примеры, это только начало. Я искренне надеюсь, что эта статья была полезна для вашего путешествия в направлении Micreetervice Mastery.
Ура, Шина
PS — очистка (важно!)
Клаустеры стоят денег, поэтому было бы лучше отключить его, если вы не используете его. Вернитесь к Google Cloud Shell и сделайте следующее:
kubectl delete service hello-codementor-service ## now we need to wait a bit for Google to delete some forwarding rules for us. Keep an eye on them by executing this command: gcloud compute forwarding-rules list ## once the forwarding rules are deleted then it is safe to delete the cluster: gcloud container clusters delete hello-codementor ## and delete the drone VM and it's ip address yes | gcloud compute instances delete drone-vm --zone=europe-west1-d yes | gcloud compute addresses delete drone-ip --region=europe-west1
Этот пост содержит партнерские ссылки на книги, которые мне действительно нравится, что означает, что я могу получить комиссию, если вы приобретете что-то через эти ссылки.
Оригинал: «https://www.codementor.io/@sheena/hello-microservice-deployment-part-3-ci-cd-with-drone-io-kw9so3nn2»