Openshift V3
hands-on

Agenda

  • Varför tar vi fram G2?
  • Vad är ett openshift kluster?
  • Vad är docker?
  • Docker övningar
  • Openshift
    Lokalt kluster
    Arbetssätt (workflow) lokalt
    Övningar
  • Genomgång av molnklustret
  • Samarbete framöver
  • Privat repository

Vad är ett openshift kluster?

https://blog.openshift.com/openshift-container-platform-reference-architecture-implementation-guides/

Kort introduktion till docker

Vad är docker?

https://www.docker.com/what-container

Docker container

https://www.bryanbraun.com/2014/07/15/the-frontend-developers-guide-to-docker

Docker övningar

  • Lista alla images: docker images
# Lista alla images: 
docker images

#Lista alla containers: 
docker ps

#Statistik över resursutnyttjande: 
docker stats

#Ladda hem en image: 
docker pull java

#Ladda hem en till: 
docker pull node:5.11.0-slim

Docker övningar 1

Docker övningar

  • Lista alla images: docker images
#Klona front end demoappen:
git clone https://github.com/sadhal/mean-contactlist.git
cd mean-contactlist
git checkout rabbitmq
docker build -t sadhal/mean-contactlist .
docker images
docker run -p 8888:8888 --rm sadhal/mean-contactlist
docker ps
docker stop “container id”

Docker övningar 2

Docker tips

  • Tagga images
  • Rensa images/containers regelbundet

Openshift gränssnitt

  • Openshift CLI
  • Web Console genom master noden

Openshift CLI

#Hjälp för alla kommandon: 
oc [kommando] --help

#Completion: 
oc completion bash > fil.sh && source fil.sh

#Starta lokala klustret i ephemeral-läge: 
oc cluster up 

Openshift CLI

Openshift CLI

#Skapa “project” (miljö): 
oc new-project projnamn

#Skapa applikation inuti projekt: 
oc new-app --help

#Kolla status i nuvarande projektet: 
oc status

#Kolla vilka projekt jag har tillgång till: 
oc projects

#Växla mellan projekt: 
oc project projektnamn

Openshift CLI

Klona demo app och deploya den lokalt
git clone https://github.com/sadhal/gradle-spingboot-seed

git checkout pipelines

#Följ instruktionerna i filen Demo.md

Openshift övning 1

Exempel på workflow lokalt – docker strategy
# Logga in i docker: 
docker login -u developer -p myOpenshiftToken myDockerRegistryAddress

# Openshift token: 
oc whoami -t

# Openshift registry: as system:admin i default projektet kör 
oc status

# Bygg och pusha upp image för gradle-spingboot-seed: 
./gradlew buildDocker

# Web Console → Add to Project → Image Stream

# Ändra källkoden och kör kommandot
./gradlew buildDocker

# Tips: ändra /hello endpoints respons i filen RestResource.java

Openshift övning 2a

Exempel på workflow lokalt – oc rsync (work in progress)
# Ta bort tidigare frontend app: 
oc delete svc,route,dc,bc,is mean-contactlist

# Skapa på nytt fast med flaggan: --strategy=source 

# Uppdatera miljövariabeln. Builds – Builds – mean-contactlist - Environment: 
PORT=8080
DEV_MODE=true 
# och klicka på deploy

# Använd kommando: 
oc rsync /home/xxxx/repo mean-contactlist-????:/opt/app-root/src

# Gå in i poddens terminal och kopiera /opt/app-root/src/mean-contactlist/server.js till 
# /opt/app-root/src och verifiera i loggen att server har laddat om filen.

# Fortsätt utvecklingen av detta :-)

Openshift övning 2b

Implementera user story “Ta bort en befintlig kontakt”
# User story
Som en användare
Vill jag ta bort en befintlig kontakt
Så att mina register är korrekta

# Specification by exampel:
GIVEN: kontakt med förstanamn [Pelle] finns registrerad
WHEN: användaren väljer kontakt [Pelle]
AND: användaren klickar på knappen Delete
THEN: den valda kontakten tas bort från registret

Openshift övning 3

Tips: jobba parvis, en tar back end och en front end

Openshift övning 4

  • Uppdatera nodejs till version som stödjer EcmaScript 6?
  • Lägg till tester i front end applikationen
  • Skapa pipeline för front end applikationen

Genomgång av molnklustret

  • Web Console: https://master.openshift.sadmir.se:8443
  • OPID som användarnamn
  • Begränsat med resurser
  • Utvecklas kontinuerligt och efter behoven
  • Workflow i molnklustret: bygge från gitrepo via webhook
    Ej pusha upp egna docker images

Deploya en app i molnklustret

  • Web Console: https://master.openshift.sadmir.se:8443
  • Eller via CLI (hämta token först via Web Console!)
    Logga in via Web Console
    Klicka på ?-ikonen
    kopiera inloggningskommandot
  • Följ tidigare anvisningar från gradle-spingboot-seed repo

Jobba från ett privat repo

Team upp till 5 personer på Bitbucket
Skapa en ssh nyckel som openshift ska använda för att hämta källkoden
Skapa secret, som nyttjar denna ssh nyckel, i varje projekt
Byt ut https mot ssh anslutning till repot i alla oc new-app kommandon
Patcha BuildConfig (bc) med secret
Glöm INTE att lägga in ssh nyckeln i repositorys inställningar!
Ej verifierat webhook ännu

Samarbete framöver

?

openshift-hands-on

By Sadmir Halilovic