Администратор или разработчик Code Stream могут использовать Code Stream и решение VMware Tanzu Kubernetes Grid Integrated Edition (ранее известное как VMware Enterprise PKS) для автоматизации развертывания программных приложений в кластере Kubernetes. В этом примере упоминаются другие методы, которые также можно использовать для автоматизации выпуска приложения.
В данном примере создается конвейер, состоящий из двух этапов и использующий Jenkins для сборки и развертывания приложения.
- Первый этап — разработка. На этом этапе Jenkins извлекает код из ветви репозитория GitHub, а затем выполняет его сборку, тестирование и публикацию.
- Второй этап — развертывание. В рамках этого этапа запускается задача по выполнению пользовательского действия: прежде чем конвейер сможет выполнить развертывание приложения в кластере Kubernetes, потребуется утверждение со стороны ключевых пользователей.
При использовании конечной точки API-интерфейса Kubernetes в рабочей области конвейера Code Stream создает необходимые для выполнения задачи непрерывной интеграции или настраиваемой задачи ресурсы Kubernetes, такие как ConfigMap, Secret и Pod. Code Stream обменивается данными с контейнером с помощью порта узла.
Чтобы предоставить общий доступ к данным для всех циклов выполнения конвейера, необходимо указать запрос постоянного тома. Code Stream подключит запрос постоянного тома к контейнеру, чтобы обеспечить хранение данных и его использование для последующих циклов выполнения конвейера.
Рабочая область конвейера Code Stream поддерживает Docker и Kubernetes для выполнения задач непрерывной интеграции и настраиваемых задач.
Дополнительные сведения о настройке рабочей области см. в разделе Настройка рабочей области конвейера.
Чтобы конвейер мог выполнить сборку, тестирование, публикацию и развертывание приложения, должны быть доступны средства разработки, экземпляры развертывания и файл YAML. Конвейер выполнит развертывание приложения в экземплярах разработки и производства кластеров Kubernetes.
Другие методы, позволяющие автоматизировать выпуск приложения.
- Вместо сборки приложения с помощью Jenkins можно использовать встроенные возможности сборки Code Stream и узел сборки Docker.
- Вместо развертывания приложения в кластере Kubernetes можно развернуть его в кластере Amazon Web Services (AWS).
Дополнительные сведения об использовании встроенных средств сборки Code Stream и узла Docker см. в разделе
Необходимые условия
- Убедитесь, что развертываемый код приложения находится в работоспособном репозитории GitHub.
- Убедитесь в наличии работоспособного экземпляра Jenkins.
- Убедитесь в наличии работоспособного почтового сервера.
- В Code Stream создайте конечную точку службы электронной почты для подключения к почтовому серверу.
- Настройте два кластера Kubernetes (для разработки и производственной среды) в службе Amazon Web Services (AWS), в которые конвейер будет развертывать приложение.
- Убедитесь, что репозиторий GitHub содержит либо код YAML для конвейера, либо файл YAML, в котором определены метаданные и характеристики среды.
Процедура
Результаты
Поздравляем! Автоматизация развертывания программного приложения в кластере Kubernetes завершена.
Пример: Пример кода YAML конвейера, выполняющего развертывание приложения в кластере Kubernetes
В конвейерах, аналогичных приведенному в данному примере, код YAML выглядит следующим образом:
apiVersion: v1 kind: Namespace metadata: name: ${input.GIT_BRANCH_NAME} namespace: ${input.GIT_BRANCH_NAME} --- apiVersion: v1 data: .dockercfg: eyJzeW1waG9ueS10YW5nby1iZXRhMi5qZnJvZy5pbyI6eyJ1c2VybmFtZSI6InRhbmdvLWJldGEyIiwicGFzc3dvcmQiOiJhRGstcmVOLW1UQi1IejciLCJlbWFpbCI6InRhbmdvLWJldGEyQHZtd2FyZS5jb20iLCJhdXRoIjoiZEdGdVoyOHRZbVYwWVRJNllVUnJMWEpsVGkxdFZFSXRTSG8zIn19 kind: Secret metadata: name: jfrog namespace: ${input.GIT_BRANCH_NAME} type: kubernetes.io/dockercfg --- apiVersion: v1 kind: Service metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: ports: - port: 80 selector: app: codestream tier: frontend type: LoadBalancer --- apiVersion: extensions/v1 kind: Deployment metadata: name: codestream namespace: ${input.GIT_BRANCH_NAME} labels: app: codestream spec: selector: matchLabels: app: codestream tier: frontend strategy: type: Recreate template: metadata: labels: app: codestream tier: frontend spec: containers: - name: codestream image: cas.jfrog.io/codestream:${input.GIT_BRANCH_NAME}-${Dev.PublishApp.output.jobId} ports: - containerPort: 80 name: codestream imagePullSecrets: - name: jfrog
Дальнейшие действия
Чтобы провести развертывание программного приложения в производственном кластере Kubernetes, выполните приведенные выше шаги снова, на этот раз выбрав производственный кластер.
Дополнительные сведения об интеграции Jenkins и Code Stream см. в разделе Интеграция Jenkins со службой Code Stream.