Openshift

Wat is Openshift

work in progress

Openshift is open source containerplatform op basis van RedHat linux. Openshift is een soort schil om Kubernetes heen met zowel een WebGUI als commandline tools. Met Openshift beheer je de containeromgeving, zo kunnen oa. eenvoudig builds worden gemaakt vanuit github repo’s.

De commandline

Hier volgen wat vaak terugkerende opdrachten waar ik regelmatig gebruik van maak.

Projecten

Wat binnen Openshift een project heet, heet op de commandline een namespace.

Aanmaken van een nieuw project:

oc create new-project <projectnaam>

Storage

De data binnen een container verdwijnt als de container verwijderd wordt, dat is uiteraard niet altijd gewenst. Denk bijv. aan data van een database of content van een website. Hiervoor wordt zgn. persistent storage aangemaakt, ofwel een pv. Als de pv bestaat kan hier middels een claim gebruik van gemaakt worden. Het koppelen van persistent storage ofwel blijvende data valt dus in 2 stappen uiteen: Het aanmaken van de pv en de claim vanuit de container er op.

Als we gebruik willen maken van een al bestaande pv (persistant volume) kan een lijst worden opgevraagd met:

oc get pv

Er wordt een overzicht getoond met oa. de naam, de grootte van de pv, de rechten, of de pv verwijderd wordt als het er aan gekoppelde project verwijderd word en aan welk project de pv gebound ofwel gekoppeld is.

Voorbeeld:

pvc-d355a45a-6d0f-4fc1-af9c-bfa40dd0de73 100Mi RWO Delete Bound git/gogs-conf ocs-storagecluster-1
pvc-b33dda94-1be2-4cb3-a960-afdbf74d007b 30Gi RWO Retain Bound mijntest/mongo-data-mongodb-0

Als een pv aangemaakt is met Delete waardoor de pv verwijderd wordt als bound word verwijderd kan de parameter persistentVolumeReclaimPolicy worden aangepast met:

oc edit pv

Zoek naar persistentVolumeReclaimPolicy en wijzig de waarde van Delete naar Retain.

NB: Dit dient vanuit de betreffende namespace te gebeuren, geef anders de parameter -n <namespace> mee om de juiste pv te editen.

De rechten van een pv kunnen n van de volgende drie zijn:

  • ReadWriteMany : rw ook voor buiten de namespace
  • ReadWriteOnce : rw alleen binnen de namespace
  • ReadOnly : readonly binnen de namespace

Middels onderstaande yaml kan een pvc, persisitent storage claim worden gemaakt en word, indien Openshift zo ingericht is, ook de pv aangemaakt:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: <naam v/d aan te maken pvc>
  labels:
    name: <label uit de namespace>
spec:
  accessModes:
   - ReadWriteMany
  resources:
  requests:
    storage: <grootte 100Mi/1Gi...>
  storageClassName: ocs-storage01
  volumeMode: Filesystem

Deze yaml kan worden uitgevoerd middels

oc apply -f <naam v/d yaml file>

Om te zien of de pvc aangemaakt is en dus klaar is om gemount te worden:

oc get pvc

Nu moet alleen nog de pvc gemount worden binnen de namespace, dit kan via een yaml file of door de parameters mee te geven op de commandline: oc set

oc set volume deployment/<deployment name> --add --mount-path=<mountpoint>

of via yaml:

apiVersion: v1
kind: Pod
spec:
 containers:
   volumeMounts:
   - name: <naam van de pvc>
    mountPath: <mountpath>
 volumes:
 - name: <naam de pv>
  persistentVolumeClaim:
    claimName: <naam v/d claim>

de ClaimName is een zelf te bedenken naam waarmee de claim op de pvc binnen Openshift bekend wordt gemaakt.

Het mounten van een bestaande directory zal een foutmelding geven. Om in een bestaande directory een file toe te voegen kan deze file worden toegevoegd aan het mountpath. Uiteraard moet de file zelf worden meegenomen in de yaml file of de inhoud ervan worden opgegeven.

 

—meer volgt binnenkort—

 

 

 

 

 

 

 

 

Red Hat techday, hands-on lab Ansible tower

Ansible

Na de recente release van Red Hat 8 en de bijbehorende TechTalk waarover ik al eerder schreef, was het gisteren een volle dag Red Hat Techday op een schitterende locatie in Maarssen.

De keynotes waren van Eric Schabell, een amerikaan die open source als de sleutel tot je succes verklaarde door van “you” via “sharing” naar “grow” te gaan. Geen technisch verhaal maar meer een inspirator. Tip: Hij is o.a. op twitter te volgen via @ericschabell

De tweede spreker is ook een bekende Maxim Burgerhout en kwam met een voor mij deels bekend verhaal, hij had delen geleend van zijn spreekbeurt over wat-is-er-nieuw in RedHat 8.

Hands-on lab

Hoe interessant de sprekers ook waren, als techneut was ik gegaan voor ’t hands-on lab over Ansible Tower. Ansible is een automation tool waarmee je niet, net zoals met bijv. Puppet, configuraties kan distribueren maar nog wat meer. De ‘standaard’ versie is niet voorzien van een GUI en dus kwam er Ansible Tower. In het (te) korte hands-on lab kreeg je de mogelijkheid om met Anible Tower (web-gui) te spelen

In n van de oefeningen kreeg je de opdracht om een web-app te deployen in Azure. Als je ’t bij Linux als OS hield had je 4 vm’s nodig: een loadbalancer, twee webservers en een database server. Ansible Tower kent een grafische flowchart waarin je heerlijk componenten (templates) bij elkaar kan klikken en afhankelijk (of onafhankelijk indien je dat wil) kan deployen. Alles hangt aan elkaar dus je moet wel opletten dat bijv. de template die de database wil uitrollen op de databaseserver niet alleen gekoppeld is aan de databaseserver (hoe logisch dat dat ook klinkt, het gebeurd je de eerste keer) en dat de rechten (permissions) goed geregeld zijn.

Ik ben de volle twee uur bezig geweest om een werkende webapp op te leveren, iets wat als je er meer ervaren mee hebt in een kwartiertje gedaan hebt. Dus ja, ik heb er aardig wat van opgestoken.

Het volgende event? Het Red Hat forum op 9 october.