Niewątpliwie istotną rzeczą od jakiegoś czasu w programowaniu są chmury. Załóżmy, że wszystkim się już obiło o uszy czym jest chmura i o co mniej więcej w tym chodzi. Dzisiaj bez przydługich wstępów zajmiemy się deployem aplikacji na OpenShift.

Aplikacja

Aplikacje, którą będziemy wrzucać do naszej chmury możemy znaleźć tutaj: https://github.com/lukaszantkowiak/openshift-hello-world
Kilka słów o samej aplikacji: najprostsza aplikacja w SpringBoot z jednym REST kontrolerem. Zero magii 🙂

OpenShift

Rejestracja

Na początku musimy oczywiście wejść na stronę OpenShifti założyć konto. Serwis oferuję nam 60 dniowy okres próbny i z tego planu właśnie skorzystamy 🙂

Command Line Tool

Po założeniu konta, zalogowaniu oraz wybraniu planu przechodzimy do Web Console – link do konsoli możemy znaleźć pod tym linkiem: https://manage.openshift.com/account/index.
Aplikacje będziemy wrzucać do naszej chmury przy użyciu linii komend. Musimy zatem zacząć najpierw od instalacji OpenShift CLI, w skrócie oc. Kliknijmy w znak zapytania, a następnie Comman Line Tools.


Po założeniu konta, zalogowaniu oraz wybraniu planu przechodzimy do Web Console – link do konsoli możemy znaleźć pod tym linkiem: https://manage.openshift.com/account/index.
Aplikacje będziemy wrzucać do naszej chmury przy użyciu linii komend. Musimy zatem zacząć najpierw od instalacji OpenShift CLI, w skrócie oc. Kliknijmy w znak zapytania, a następnie Comman Line Tools.

Na stronie, do której prowadzi ten link znajdziemy odnośniki do pobrania OC na interesującą nas platformę oraz dodajemy do zmiennej środowiskowej Path.

Żeby sprawdzić czy operacja przebiegła poprawnie wystarczy, że wpiszemy w konsoli:

oc version

I w odpowiedzi powinniśmy zobaczyć coś podobnego do:

oc v3.11.82 kubernetes v1.11.0+d4cacc0 features: Basic-Auth SSPI Kerberos SPNEGO

Logowanie

Teraz pora zalogować się do naszego konta w linii komend. Na stronie, z której ściągnęliśmy CLI znajduje się również miejsce skąd możemy pobrać komendę do logowania z linii komend wraz z tokenem.

Klikamy przycisk, który skopiuje nam komendę. Oczywiście musimy pamiętać o tym co jest w żółtym okienku i nie udostępniać innym naszego tokena.

Skopiowaną komendę wklejamy do naszego terminala i zatwierdzamy. W odpowiedzi powinniśmy uzyskać podobną odpowiedź:

Logged into "https://api.starter-us-east-1.openshift.com:443" as "twoj.mail@gmail.com" using the token provided.
You don't have any projects. You can try to create a new project, by running
oc new-project <projectname>
Welcome! See 'oc help' to get started.

Pierwszy projekt

Pierwszą rzeczą, którą musimy zrobić jest stworzenie projektu. Robimy to następującą komendą:

oc new-project my-first-project 

I w odpowiedzi dostaniemy:

Now using project "my-first-project" on server "https://api.starter-us-east-1.openshift.com:443".
You can add applications to this project with the 'new-app' command. For example, try:
oc new-app centos/ruby-25-centos7~https://github.com/sclorg/ruby-ex.git
to build a new example application in Ruby.

Deployment aplikacji

I w końcu przechodzimy do deploymentu naszej aplikacji. Wykonujemy to następującą komendą:

oc new-app --image-stream=java --code=https://github.com/lukaszantkowiak/openshift-hello-world.git

Istotne tutaj są dwa elementy:

  • image-stream, który ustawiamy na java z oczywistych powodów :),
  • code, gdzie podajmy url do naszego repozytorium.

W tym momencie nasza aplikacja powinna zostać zdeployowana w chmurze. Możemy upewnić się, że wszystko poszło ok, wpisując komendę:

oc status

W odpowiedzi dostaniemy:

In project my-first-project on server https://api.starter-us-east-1.openshift.com:443
svc/openshift-hello-world - 172.30.31.77 ports 8080, 8443, 8778
dc/openshift-hello-world deploys istag/openshift-hello-world:latest <-
bc/openshift-hello-world source builds https://github.com/lukaszantkowiak/openshift-hello-world.git on openshift/java:latest
deployment #1 deployed about a minute ago - 1 pod

Nic nie wskazuje na to, żeby coś poszło nie tak 🙂

Otwieranie okna na świat

W tym momencie nasza aplikacja jest co prawda zdeployowana, ale nie jest widoczna z zewnątrz, czyli internetu, a na tym nam zależy 🙂

Jedyne co musimy zrobić to wywołanie poniższej komendy:

oc expose service/openshift-hello-world

Wywołajmy jeszcze raz komendę:

oc status

Odpowiedź tym razem powinna wyglądać podobnie do poniższej:

In project my-first-project on server https://api.starter-us-east-1.openshift.com:443
http://openshift-hello-world-my-first-project.1d35.starter-us-east-1.openshiftapps.com to pod port 8080-tcp (svc/openshift-hello-world)
dc/openshift-hello-world deploys istag/openshift-hello-world:latest <-
bc/openshift-hello-world source builds https://github.com/lukaszantkowiak/openshift-hello-world.git on openshift/java:latest
deployment #1 deployed 8 minutes ago - 1 pod

Możemy zauważyć, że na początku pojawił się dodatkowo adres url. Jest to adres naszej aplikacji. Po wejściu na powyższy adres powinniśmy zobaczyć wiadomość zwróconą przez nasz kontroler, czyli:

 Greetings from Spring Boot! 

Ta dam! Czyli wszystko się powiodło i udało nam się zdeployować naszą aplikacje w chmurze 🙂

Podsumowanie

Dzisiaj zajęliśmy się deploymentem aplikacji napisanej w SpringBoot na OpenShift. Jak widzieliśmy możemy to zrobić wykonując zaledwie kilka komand.

Jest to najprostsza droga do zdeployowania naszej aplikacji, ale musimy pamiętać, że OpenShift oferuje wiele więcej.

Warto pobawić się trochę w Web Console, żeby zobaczyć czego tam się można spodziewać 🙂