Changes

Jump to: navigation, search

Openshift basics

5,241 bytes added, 20:49, 25 July 2019
Metrikák gyűjtése
apiserver_client_certificate_expiration_seconds_bucket{le="604800"} 0
</pre>
 
=Minishfit repository=
https://torstenwalter.de/minishift/openshift/docker/registry/2017/07/25/build-docker-image-and-upload-to-openshift-registry.html<br>
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-ába, 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:
<source lang="C++">
FROM openjdk:11-jdk
RUN mkdir /home/lib
ADD ./*.jar /home
ADD ./lib/* /home/lib/
EXPOSE 8080
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 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 loginhez.
# A minishit-et futó VM-en a docker klienssel be kell lépni a minisfht-ben futó docker registry-be.
# 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.
 
 
 
 
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
Authentication required for https://192.168.42.185:8443 (openshift)
Username: developer
Password:
Login successful.
 
You have access to the following projects and can switch between them with 'oc project <projectname>':
 
* mynamespace
myproject
</pre>
 
<pre>
# oc whoami -t
JbdYzUHpsyJCBt3JQ7XBahLq6UAp0hiYsOTYTiD1arE
</pre>
 
 
//Prints the host name and port number of the OpenShift Docker registry
<pre>
# minishift openshift registry
172.30.1.1:5000
</pre>
 
 
//Token megszerzése:
<pre>
# oc whoami -t
JbdYzUHpsyJCBt3JQ7XBahLq6UAp0hiYsOTYTiD1arE
</pre>
 
//mielőtt be tudnánk lépni a 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 a minishfit vm-ről lehetséges a minisfht docker registry-be való login. A 172.30.1.1 cím csak a minishift vm-en belűl értelmezett.
<pre>
# minishift docker-env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.42.185:2376"
export DOCKER_CERT_PATH="/root/.minishift/certs"
 
# eval $(minishift docker-env)
</pre>
 
//Belépés tokennel a registribe usernévvel és tokkennel. Jelszóval nem lehet belépni. Fon
<pre>
# docker login -u developer -p $(oc whoami -t) $(minishift openshift registry)
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
 
Login Succeeded
</pre>
 
 
 
 
//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 az image tartozni fog. Az image-ek ugyan úgy névterekbe kerülnek mint a kubernetes objektumok.
 
<registry-host>:<port>/<névtér>/<image-név>
 
//ezzel a build-el a minsifht vm-en buildeljük le az image-et. Ettől még nem kerül bele az Opensfit registriy-be csak a vm lokális registry-ébe.
<pre>
# docker build -t 172.30.1.1:5000/mynamespace/test-app:1.1.0 .
Sending build context to Docker daemon 14.99MB
Step 1/6 : FROM openjdk:11-jdk
---> f06fdc42d01a
...
Successfully built ecc484546662
Successfully tagged 172.30.1.1:5000/mynamespace/test-app:1.1.0
</pre>
 
<pre>
# docker push 172.30.1.1:5000/mynamespace/test-app:1.1.0
</pre>
 
 
 
//Listázzuk az imageScream-eket a mynamespace névtérben.
<pre>
# oc get is -n mynamespace
NAME DOCKER REPO TAGS UPDATED
test-app 172.30.1.1:5000/mynamespace/test-app 1.1.0 8 minutes ago
</pre>
 
 
# kubectl run test-app --image=172.30.1.1:5000/mynamespace/test-app:1.1.0 --replicas=1 --port=8080 -n mynamespace
 
# kubectl get deployment -n mynamespace
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
..
test-app 1 1 1 1 2m
 
 
# kubectl expose deployment test-app --type=LoadBalancer --name=test-app-service -n mynamespace
service/test-app-service exposed
 
 
# kubectl get svc -n mynamespace
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
...
test-app-service LoadBalancer 172.30.254.3 172.29.192.241,172.29.192.241 8080:30534/TCP 2m
 
 
http://192.168.42.185:30534/test/slowresponse/2000

Navigation menu