Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
redhat:openshift-redhat:openshift-labs:docker-image-openshift [2018/07/11 12:58] – michael | redhat:openshift-redhat:openshift-labs:docker-image-openshift [2018/07/11 15:39] (current) – [Lab 3: Ein Docker Image deployen] michael | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Lab 3: Ein Docker Image deployen ====== | ====== Lab 3: Ein Docker Image deployen ====== | ||
- | In diesem Lab werden wir das erste " | + | {{fa> |
===== Aufgabe: LAB 3.1 ===== | ===== Aufgabe: LAB 3.1 ===== | ||
Line 18: | Line 18: | ||
'' | '' | ||
- | Man verwendet | + | <WRAP center round important 100%> |
+ | '' | ||
< | < | ||
# oc get project | # oc get project | ||
</ | </ | ||
+ | '' | ||
+ | </ | ||
- | um alle Projekte anzuzeigen, auf die man berechtigt ist. | ||
- | Sobald das neue Projekt erstellt wurde, können | + | Sobald das neue Projekt erstellt wurde, |
<WRAP center box 100%> | <WRAP center box 100%> | ||
Line 54: | Line 55: | ||
Run 'oc status' | Run 'oc status' | ||
</ | </ | ||
- | |||
</ | </ | ||
Line 67: | Line 67: | ||
**Tipp**: Verwende '' | **Tipp**: Verwende '' | ||
- | Oder verwende den '' | + | Oder verwende den '' |
< | < | ||
Line 80: | Line 80: | ||
- Wähle Pods aus | - Wähle Pods aus | ||
- | Tipp Um eigene Docker Images für OpenShift zu erstellen, sollte man dabei die folgenden Best Practices befolgen: https:// | + | <wrap em> |
---- | ---- | ||
+ | ===== Betrachten der soeben erstellten Ressourcen ===== | ||
+ | |||
+ | Als wir '' | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | ==== Service ==== | ||
+ | |||
+ | Die Services dienen innerhalb OpenShift als Abstraktionslayer, | ||
+ | |||
+ | **Als Beispiel**: Wenn eine Applikationsinstanz unseres Beispiels die Last nicht mehr alleine verarbeiten kann, können wir die Applikation bspw. auf drei Pods hochskalieren. OpenShift mapt diese als Endpoints automatisch zum Service. Sobald die Pods bereit sind, werden Requests automatisch auf alle drei Pods verteilt. | ||
+ | |||
+ | **Note**: Die Applikation kann aktuell von aussen noch nicht erreicht werden, der Service ist ein OpenShift-internes Konzept. //Erst im nachfolgenden Lab (Lab4) werden wir unsere Applikation öffentlich verfügbar machen.// | ||
+ | |||
+ | Nun schauen wir uns unseren Service mal etwas genauer an: | ||
+ | |||
+ | <WRAP center box 100%> | ||
+ | |||
+ | < | ||
+ | # oc get services | ||
+ | </ | ||
+ | |||
+ | <sxh plain; gutter: false;> | ||
+ | NAME CLUSTER-IP | ||
+ | example-spring-boot | ||
+ | Wie Sie am Output sehen, ist unser Service (example-spring-boot) über eine IP und Port erreichbar (172.30.124.20: | ||
+ | </ | ||
+ | |||
+ | '' | ||
+ | </ | ||
+ | |||
+ | |||
+ | Mit dem folgenden Befehl können zusätzliche Informationen über den Service ausgelesenen werden: | ||
+ | |||
+ | <WRAP center box 100%> | ||
+ | |||
+ | < | ||
+ | # oc get service example-spring-boot -o json | ||
+ | </ | ||
+ | |||
+ | <sxh plain; gutter: false;> | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | ], | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Mit dem entsprechenden Befehl können auch die Details zu einem Pod angezeigt werden: | ||
+ | |||
+ | < | ||
+ | # oc get pod example-spring-boot-3-nwzku -o json | ||
+ | </ | ||
+ | |||
+ | <wrap em> | ||
+ | |||
+ | Über den selector Bereich im Service wird definiert, welche Pods (labels) als Endpoints dienen. Dazu die entsprechenden Konfigurationen vom Service und Pod zusammen betrachten. | ||
+ | |||
+ | <sxh plain; gutter: false;> | ||
+ | Service: | ||
+ | -------- | ||
+ | ... | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | |||
+ | ... | ||
+ | |||
+ | Pod: | ||
+ | ---- | ||
+ | ... | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Diese Verknüpfung ist mittels dem '' | ||
+ | |||
+ | <WRAP center box 100%> | ||
+ | |||
+ | < | ||
+ | # oc describe service example-spring-boot | ||
+ | </ | ||
+ | |||
+ | <sxh plain; gutter: false;> | ||
+ | Name: | ||
+ | Namespace: | ||
+ | Labels: | ||
+ | Selector: | ||
+ | Type: | ||
+ | IP: | ||
+ | Port: | ||
+ | Endpoints: | ||
+ | Session Affinity: | ||
+ | No events. | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Unter Endpoints findet man nun den aktuell laufenden Pod. | ||
+ | |||
+ | |||
+ | ==== ImageStream ==== | ||
+ | |||
+ | ImageStreams werden dafür verwendet, automatische Tasks auszuführen wie bspw. ein Deployment zu aktualisieren, | ||
+ | |||
+ | Builds und Deployments können Image Streams beobachten und auf Änderungen entsprechend reagieren. In unserem Beispiel wird der Image Stream dafür verwendet, ein Deployment zu triggern, sobald etwas am Image geändert hat. | ||
+ | |||
+ | Mit dem folgenden Befehl können zusätzliche Informationen über den Image Stream ausgelesen werden: | ||
+ | |||
+ | < | ||
+ | # oc get imagestream example-spring-boot -o json | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== DeploymentConfig ==== | ||
+ | |||
+ | In der DeploymentConfig werden folgende Punkte definiert: | ||
+ | |||
+ | * **Update Strategy**: wie werden Applikationsupdates ausgeführt, | ||
+ | * **Triggers**: | ||
+ | * **Container** | ||
+ | * Welches Image soll deployed werden? | ||
+ | * Environment Configuration für die Pods | ||
+ | * ImagePullPolicy | ||
+ | * **Replicas**, | ||
+ | |||
+ | Mit dem folgenden Befehl können zusätzliche Informationen zur DeploymentConfig ausgelesen werden: | ||
+ | |||
+ | < | ||
+ | # oc get deploymentConfig example-spring-boot -o json | ||
+ | </ | ||
+ | |||
+ | Im Gegensatz zur DeploymentConfig, | ||
+ | |||
+ | **Tipp**: für jeden Resource Type gibt es auch eine Kurzform. So könnte man bspw. '' | ||
---- | ---- | ||
Line 92: | Line 269: | ||
Schaue dir die erstellten Ressourcen mit '' | Schaue dir die erstellten Ressourcen mit '' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <wrap em>Ende von Lab 3!</ | ||