Как развернуть приложение Java в облачном экземпляре с нуля до продвинутой архитектуры? - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужно развернуть мое приложение весенней загрузки на вычислительном движке в облачной платформе Google.Я уже создал экземпляр и через SSH были установлены Apache и Maven.Далее, файл войны был загружен в корзину.Кто-нибудь может предоставить мне оставшиеся команды для развертывания файла war на экземпляре tomcat или любых других облачных платформах с linux?

Спасибо

1 Ответ

0 голосов
/ 28 декабря 2018

Развертывание в Google Compute Engine практически не отличается от AWS, Azure или другого хост-провайдера Linux.

Вам просто нужно ssh-соединение с удаленным компьютером и установить необходимое программное обеспечение для компиляции, сборки, архивирования, развертывания и т. Д.

Я перечислю некоторые подходы от базового (вручную) до продвинутого (автоматизировано):

# 1 Bash-скриптинг

  • распаковать и настроить git
  • распаковать и настроить java
  • распаковать и настроить maven
  • распаковать и настроить tomcat (это не требуется, если используется весенняя загрузка)
  • настроить хост linux для открытия порта 8080
  • создать скрипт с именем /devops/pipeline.sh

Для развертывания на войне:

# get the source code
cd /tmp/folder/3dac58b7
git clone http://github.com/myrepo.git .
# create war
mvn clean package
# move war to deploy tomcat folder
cp target/my_app.war /my/tomcat/webapps
# stop tomcat
bash /my/tomcat/shutdown.sh
# start tomcat
bash /my/tomcat/startup.sh

Или запуск с пружинной загрузкой

# get the source code
cd /tmp/folder/3dac58b7
git clone http://github.com/myrepo.git .
# create jar
mvn clean package
# kill or stop the application
killall java
# start the application
java $JAVA_OPTS -jar $jar_file_name

  • После нажатия на git просто подключитесь к своему экземпляру с помощью ssh и выполните

bash /devops/pipeline.sh

Улучшения: Параметризация имени репозитория, имени ветви, профиля mvn, учетных данных базы данных, создание tmp / uпапку uid при каждом выполнении, удаляйте tmp / uuid после развертывания, оптимизируйте запуск и остановку приложения с помощью pid и т. д.

# 2 Docker

  • Установка docker в вашем случае
  • Создайте Docker-контейнер с именем my-container-name , содержащий все шаги подхода # 1
  • После нажатия на git просто подключитесь к вашему экземпляруиспользуя ssh и выполните команду:

docker rm my_app -f
docker run -d --name my_app -p 8080:8080 my-container-name

# 3 Хранилище артефактов (требуется дополнительный экземпляр)

  • Настроить Nexus или JFrog Artifactory в новом экземпляре.

  • Укажите настройки maven на компьютере разработчика по URL, предоставленномунастроен репозиторий артефактов.

  • Измените скрипт # 1 или Dockerfile # 2 так:

    • избегайте установки git
    • избегайте git clone
    • избегать пакета mvn clean (больше не требуется, потому что будет создан файл войныредактировать в машине разработки)
    • загрузить файл войны или jar из Репозиторий артефактов
  • Использовать подходы # 1 или # 2

  • Когда вы будете готовы к развертыванию, нажмите на git и выполните на компьютере разработчика:

# This will generate the war file and upload to the Artifact Repository.
mvn clean install

# 4 Использовать сервер непрерывной интеграции (требуется дополнительный экземпляр)

  • Установить Jenkins в новом экземпляре
  • Настроить плагины и другие необходимые вещи в jenkins вЧтобы включить URL-адрес webhook : https://jrichardsz.github.io/devops/configure-webhooks-in-github-bitbucket-gitlab
  • Создать задание в jenkins для вызова сценария подхода # 1 или выполнения команд docker для подхода № 2.Если бы вы могли, подход №3 был бы идеальным.
  • Настройте свой SCM (github, bitbucket, gitlab и т. Д.) Так, чтобы он указывал на URL-адрес webhook , опубликованный Jenkins.

Когда вы будете готовы к развертыванию, просто отправьте код в вашу scm, jenkins будет уведомлен и выполнит предыдущее созданное задание.Как видите, для развертывания приложения на сервере не требуется человек (за исключением push разработчика)

Примечание: На этом этапе вы можете перенести сценарии подходов№ 1 и № 2 до:

Это более продвинутые и масштабируемые подходы для сопоставления всех команд и конфигураций, необходимых от начала до развертывания.

# 5 Advanced (Sysadminтребуется команда или дополнительные люди и знания)

Потребуются дополнительные экземпляры и технологии.

  • Kubernetes
  • Ansible
  • Высокая доступность / нагрузкаБалансировщик
  • Резервные копии
  • Управление конфигурациями
  • И еще автоматизации

Это будет необходимо, когда все больше и больше веб-приложений, микросервисов требуются в вашей компании / предприятии.

#6 Saas

  • Все предыдущие подходы могут быть упрощенными с использованием платформ WORLD CLASS, таких как:

  • Jelastic

  • Heroku
  • Openshift и т. Д.
...