Changes

Jump to: navigation, search

Openshift basics

3,195 bytes added, 18:13, 26 July 2019
Minishfit repository
https://github.com/minishift/minishift/issues/817<br>
Ahhoz hogy egy általunk készült docker image-et futtatni tudjunk a minishift klaszteren, elsőként fel kell tölteni azt a minshift image repository-ábaba, ami nem is annyira egyszerű.
Kísérlet képen írtunk egy olyan Java webalkalmazást, ami a GET paraméterben kapott milliszekundum után adja vissza a 200 : 'OK' választ. Az alkalmazás embedded jetty-vel készült, a Docker fájlja az alábbi:
CMD ["java", "-cp", "/home/lib/*:/home/testapp.jar", "com.adam.testapp.App"]
</source>
Az openjdk-11 base image-ből indulunk ki, majd belemásoljuk az összes függőséget, rárakjuk classPath-ra az összes bemásolt jar-t, amjd elindítjuk az alkalmazást a '''com.adam.testapp.App ''' main osztállyal. A cél, hogy az ebből készült image-et másoljuk fel az opensfhit repository-ba, majd készítsünk belőle egy Kubernetes deploymentet-et service-el együtt.
Lépésel:
# Be kell lépni '''oc'''-vel a minisfhit-re, úgy hogy tokent is generáljon a loginhezszerezzünk egy OpenShfit token-t amivel majd be tudunk lépni az OpenShfit docker repository-ba. # A minishit-et futó VM-en a docker klienssel be kell lépni a minisfht-ben futó docker registry-beaz első pontban szerzett token-el.
# Docker-el build-elni kell az image-t.
# A minisfhit-et futtató VM-ről push-olni kell az image-t a minisfhit image registry-be.
Lépjünk be az '''oc login''-al az OpenShift-be. Fontos hogy ne a system hanem a '''developer''' felhasználóval lépjünk be, mert csak neki lesz push joga. {{note|Ha így lépünk be nem jó: # '''oc login -u system:admin'', mert nem keletkezik token. Fontos hogy developer-el lépjünk be, mert a system-nek nincs joga push-olni image-et. }}
<pre>
# oc login
</pre>
Ellenőrizzük, hogy kaptunk e tokent. Ezt az '''oc whoami''' parancs '''-t''' (token) kapcsolójával lehet megtenni. Ha itt nem látjuk a toke-nt akkor dolgozni kell még a belépésen.
<pre>
# oc whoami -t
//Prints the host name and port number of the OpenShift Docker A minishift -nek a '''openshift registry''' parancsával kérhetjük le a docker registry címét.
<pre>
# minishift openshift registry
172.30.1.1:5000
</pre>
Ez a cím a minishift-et futtató VM-en értelmezett IP cím, ezért csak a minishift VM-en futó docker démon-al tudunk rácsatlakozni a repository-ra.
//Token megszerzése: <pre># oc whoami Az egyik lehetőségünk az, hogy ssh-val belépünk a minisfhit VM-re (minisfhit ssh) és ott lépünk be a registry-be (docker login) és ott build-eljük és push-oljuk az image-et. A másik sokkal kényelmesebb lehetőség, hogy a minishift VM docker démon-ját átirányítjuk a lokális docker kliensünkre a '''minishift docker-env''' paranccsal. Ezt azért tudjuk megtenni, mert a minisfhit is '''docker-machine'''-tJbdYzUHpsyJCBt3JQ7XBahLq6UAp0hiYsOTYTiD1arE</pre>használ. Ugyan ezt a parancsot használjuk docker swarm esetén is, hogy a '''swarm master'''-en adjuk ki a swarm parancsokat. Ennek az a nagy előnye, hogy a docker build-hez szükséges fájlokat vehetjük a lokáli gépről, de a build-elt docker image már a minishfit VM docker lokális repository-ban fog landolni, ahonnan már push-olni tudjuk a minishfit repositroy-ba.
//mielőtt be tudnánk lépni Irányítsuk át a lokális docker registry-be be kell állítsuk, hogy a minishift docker környezetét használjuk, akárcsak a docker-machine esetén be tudtuk állítani, hogy a swarm master környezetét futassuk lokálisan. Csak kliensünket a minishfit vm-ről lehetséges a minisfht VM docker registry-be való login. A 172.30.1.1 cím csak a minishift vm-en belűl értelmezett. démonjára:
<pre>
# minishift docker-env
# eval $(minishift docker-env)
</pre>
Innentől kezdve minden lokálisan kiadott docker parancs a minishfit vm-en fog futni.
 
Ezt le tudjuk ellenőrizni, ha listázzuk vagy a futó konténereket vagy az elérhető image-eket:
<pre>
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
bitnami/nginx latest ab5cdb60157c 11 hours ago 78.3MB
172.30.1.1:5000/mynamespace/test-app 1.1.0 f984e2105039 23 hours ago 620MB
...
openshift/origin-control-plane v3.11.0 2905f7137f05 4 days ago 829MB
openshift/origin-hyperkube v3.11.0 7f2cb107435c 4 days ago 509MB
openshift/origin-hypershift v3.11.0 7507661b73ff 4 days ago 549MB
...
</pre>
Láthatjuk, hogy csupa openshift-es image van a repóban, tehát már nem az anyagép lokális repository-ját nézzük.
//Belépés tokennel A '''docker login''' paranccsal léphetünk be a registribe usernévvel és tokkennelminishift registriy-be. Jelszóval Ha ezt lokálisan kiadjuk, akkor már a minishit VM-en fog futni így el fogjuk érni a '''172.30.1.1:5000''' címen a repository-t (Az átirányítás nélkül nem érnénk el a lokális gépről ezt a címet). Tehát ezzel a minisfhit VM-en futó docker démon csatlakozik a minisfhit repository-ba, nem lehet belépniaz anyagépen futó docker. Fon
<pre>
# docker login -u developer -p $(oc whoami -t) $(minishift openshift registry)
Login Succeeded
</pre>
Fontos, hogy csak token-el engedi a belépést a registry, jelszóval nem.
Az openshfit-be szánt image-nek a neve az alábbi szintaxist kell kövesse:
<registry-host>:<port>/<névtér>/<image-név>:<tag>
Ahhoz hogy push-olni tudjuk az OpenShift registry-be az image-et a "172.30.1.1:5000/" prefixel kell kezdődjön a neve. Innen fogja tudni a docker, hogy melyik registry-be akarjuk push-olni. A második elem a névtér neve, amihez az image tartozni fog. Az image-ek ugyan úgy névterekbe kerülnek mint minden kubernetes objektum.
//Ahhoz hogy push-olni tudjuk az OpenShift registry-be az image-et a "172.30.1.1:5000/" prefixel kell kezdődjön a neve. Innen fogja tudni a dokcer, hogy hova akarjuk push-olni. A második elem a névtér neve, amihez '''docker build''' paranccsal építsük meg az image tartozni fog. Az image-ek ugyan úgy névterekbe kerülnek mint a kubernetes objektumokt.   <registry-host>:<port>/<névtér>/<image-név> //ezzel a build-el a minsifht vm-en buildeljük le Ezt az image-et. Ettől még nem kerül bele az Opensfit registriy-be csak is tegyük a vm lokális registry-ébe'''mynamespace''' névtérebe.
<pre>
# docker build -t 172.30.1.1:5000/mynamespace/test-app:1.1.0 .
</pre>
Ellenőrizzük le, hogy bekerült e a test-app a minisfhit VM lokális docker repository-jába: (mivel az anyagépen futó docker kliens át van irányítva, ezért az anyagépen kiadott docker parancsokkal elvégezhető az ellenőrzés)
<pre>
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
...
172.30.1.1:5000/mynamespace/test-app 1.1.0 f984e2105039 23 hours ago 620MB
</pre>
 
 
Nem maradt más dolgunk, mint hogy a '''docker push''' paranccsal felküldjük az image-t az opensfhit repository-ba. A nevéből fogja tudni a '''docker push''' hogy melyik repository-ba kell küldeni és ott melyik névtérbe.
<pre>
# docker push 172.30.1.1:5000/mynamespace/test-app:1.1.0

Navigation menu