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
openshift-hands-on
- 644