Внедряване на приложение за пролетно стартиране в Cloud Foundry

1. Общ преглед

Внедряването на приложението Spring Boot в Cloud Foundry е просто упражнение. В този урок ще ви покажем как да го направите.

2. Пролетни облачни зависимости

Тъй като този проект ще изисква нови зависимости за проекта Spring Cloud, ние ще добавим спецификацията на Spring Cloud Dependencies:

   org.springframework.cloud spring-cloud-dependencies Greenwhich.RELEASE pom import   

Можем да намерим най-новата версия на библиотеката за пролетни зависимости в облака в Maven Central.

Сега искаме да поддържаме отделна компилация за Cloud Foundry, така че ще създадем профил на име cloudfoundry в Maven pom.xml.

Също така ще добавим изключения на компилатора и приставката Spring Boot, за да конфигурираме името на пакета:

   src/main/resources  **/logback.xml      org.springframework.boot spring-boot-maven-plugin  ${project.name}-cf    org.apache.maven.plugins maven-compiler-plugin   **/cloud/config/*.java     

Също така искаме да изключим специфичните за облака файлове от нормалната компилация, така че добавяме глобално изключване на профила към приставката на Maven compiler:

   org.apache.maven.plugins maven-compiler-plugin   **/cloud/*.java     

След това трябва да добавим библиотеките Spring Cloud Starter и Spring Cloud Connectors, които осигуряват поддръжка за Cloud Foundry:

 org.springframework.cloud spring-cloud-starter   org.springframework.boot spring-boot-starter-cloud-connectors 

3. Конфигурация на Cloud Foundry

За да преминем през този урок, трябва да се регистрираме за пробна версия тук или да изтеглим предварително конфигурираната среда за разработка за Native Linux или Virtual Box.

Освен това трябва да се инсталира CLI на Cloud Foundry. Инструкциите са тук.

След регистрация при доставчик на Cloud Foundry, URL адресът на API ще бъде достъпен (можете да се върнете към него, като следвате опцията Tools отляво).

Контейнерът за приложения ни позволява да обвързваме услугите с приложенията. След това нека влезем в средата на Cloud Foundry:

cf login -a 

Cloud Foundry Marketplace е каталог от услуги като бази данни, съобщения, електронна поща, мониторинг, регистриране и много други. Повечето услуги предоставят безплатен или пробен план.

Нека да търсим на пазара „MySQL“ и да създадем услуга за нашето приложение:

cf marketplace | grep MySQL
> cleardb spark, boost*, amp*, shock* Highly available MySQL for your Apps. 

Резултатът изброява услугите с “MySQL” в описанието. На PCF услугата MySQL е наречена cleardb и несвободните планове са маркирани със звездичка.

След това изброяваме подробности за услуга, като използваме:

cf marketplace -s cleardb
> service plan description free or paid spark Great for getting started and developing your apps free boost Best for light production or staging your applications paid amp For apps with moderate data requirements paid shock Designed for apps where you need real MySQL reliability, power and throughput paid

Сега създаваме безплатен екземпляр на услугата MySQL, наречен spring-bootstrap-db :

cf create-service cleardb spark spring-bootstrap-db

4. Конфигурация на приложението

След това добавяме анотиран клас @Configuration, който разширява AbstractCloudConfig, за да създаде DataSource в пакета с име org.baeldung.cloud.config :

@Configuration @Profile("cloud") public class CloudDataSourceConfig extends AbstractCloudConfig { @Bean public DataSource dataSource() { return connectionFactory().dataSource(); } }

Добавянето на @Profile („облак“) гарантира, че Cloud Connector не е активен, когато правим локално тестване. Също така добавяме @ActiveProfiles (профили = {“local”}) към тестовете за интеграция.

След това изградете приложението с:

mvn clean install spring-boot:repackage -P cloudfoundry

Също така трябва да предоставим файл manifest.yml , за да обвържем услугата с приложението.

We usually place the manifest.yml file in the project folder but in this case, we'll create a cloudfoundry folder since we're going to demonstrate deploying to multiple cloud-native providers:

--- applications: - name: spring-boot-bootstrap memory: 768M random-route: true path: ../target/spring-boot-bootstrap-cf.jar env: SPRING_PROFILES_ACTIVE: cloud,mysql services: - spring-bootstrap-db

5. Deployment

Deploying the application is now as easy as:

cd cloudfoundry cf push

Cloud Foundry will use the Java buildpack to deploy the application and create a random route to the application.

We can view the last few entries in the log file using:

cf logs spring-boot-bootstrap --recent

Or we can tail the log file:

cf logs spring-boot-bootstrap

Finally, we need the route name to test the application:

cf app spring-boot-bootstrap
> name: spring-boot-bootstrap requested state: started routes: spring-boot-bootstrap-delightful-chimpanzee.cfapps.io last uploaded: Thu 23 Aug 08:57:20 SAST 2018 stack: cflinuxfs2 buildpacks: java-buildpack=v4.15-offline-... type: web instances: 1/1 memory usage: 768M state since cpu memory disk #0 running 2018-08-23T06:57:57Z 0.5% 290.9M of 768M 164.7M of 1G 

Executing the following command will add a new book:

curl -i --request POST \ --header "Content-Type: application/json" \ --data '{"title": "The Player of Games", "author": "Iain M. Banks"}' \ ///api/books #OR http POST ///api/books author="Iain M. Banks" 

And this command will list all books:

curl -i ///api/books #OR http ///api/books
> HTTP/1.1 200 OK [ { "author": "Iain M. Banks", "id": 1, "title": "Player of Games" }, { "author": "J.R.R. Tolkien", "id": 2, "title": "The Hobbit" } ] 

6. Scaling the Application

Lastly, scaling an application on Cloud Foundry is as simple as using the scale command:

cf scale spring-cloud-bootstrap-cloudfoundry  Options: -i  -m  # Like 512M or 1G -k  # Like 1G or 2G -f # Force restart without prompt

Не забравяйте да изтриете приложението, когато вече не се нуждаем от него:

cf delete spring-cloud-bootstrap-cloudfoundry

7. Заключение

В тази статия разгледахме библиотеките на Spring Cloud, които опростяват разработването на собствено облачно приложение, използващо Spring Boot. Внедряването с Cloud Foundry CLI е добре документирано тук.

Допълнителни приставки за CLI са налични в хранилището на приставки.

Пълният изходен код на нашите примери тук е, както винаги, върху GitHub.