Tag op linux

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—

 

 

 

 

 

 

 

 

Wat is er nieuw in Red Hat 8

rhel8

Op 9 mei 2019 lanceerde Red Hat versie 8, hier een samenvatting van de meest opvallende nieuwe of veranderde zaken in deze veel gebruikte linux distributie. Dat er een nieuwe Gnome desktop wordt geleverd en een nieuwe kernel 3.x spreekt eigenlijk vanzelf. Een paar dingen die mij opgevallen zijn tijdens de Red Hat tech talk staan hier.

Verandering in de repo structuur

Wie iets met Red Hat Satellite doet had het al gemerkt, de software-collections zoals we die kende zijn vervangen door iets wat appstreams heet. Het idee is om apps in deze appstreams onafhankelijker van de updates in de base te kunnen doen. Daarnaast krijg je hetzelfde mechanische als voor de Java omgeving. Met alternative kun je een actieve versie van een geinstalleerde app gebruiken die dan ook, net zoals bij Java, op een plek staat waar je ‘m zou verwachten. Dat maakt het gebruik van diverse (dev)tools een stuk makkelijker, zegt Red Hat.

Je installeert deze apps niet met yum install <appname> maar met yum module install <appname>. Er is ook een nieuwe parameter aan yum toegevoegd: module. Naast de al genoemde yum module install heb je ook een yum module list om een lijst te krijgen met de beschikbare apps en versies.

Geen verandering: yum

Misschien vreemd om te noemen maar Red Hat 8 is gebaseerd op Fedora 28 waarin dnf als standaard package manager wordt gebruikt. In Red Hat 8 is men yum blijven gebruiken en is ge-upgrade naar versie 4 wat nu niet meer op python v2.x maar op python v3.x is gebaseerd en ‘dus’ sneller zou moeten zijn.

Ook niet geheel nieuw: VDO

In Red Hat 7.x al stilletjes toegevoegd, het VDO filesysteem. Een VDO filesysteem kent compresse en de-dup waardoor een flinke ruimtewinst geboekt kan worden. Het is op device mapper nivo en presteert redelijk goed. Om op een VDO filesysteem files neer te zetten die veel en vaak worden opgevraagd of gewijzigd is dit uiteraard minder geschikt.

Cockpit heet nu Web Console

In Red Hat 7.x was cockpit al beschikbaar maar werd niet standaard geinstalleerd. Nu wel, op port 9090 (standaard) wordt een webinterface aangeboden waarin je veel systeemzaken kunt zien maar ook kunt configureren. Deze lijst wordt steeds langer en omvat oa.: netwerk-management (ook dingen als bonding enz.), filesysteem-management (lvm, nfs, vdo enz) en selinux zaken. Ook zit er in Web Console die overigens nog steeds cockpit heet op het inlogscherm, ook een terminal. Kortom, het begint steeds meer en meer een interessante manier te worden. LinuxPro gebruikt cockpit middels een nginx proxy waarvan we binnenkort de configuratie zullen plaatsen.

Security

Uiteraard zitten ze ook bij Red Hat niet stil als het om security gaat. Zo is er een tool waarmee system-wide bepaalde standaard kunnen worden geconfigureerd (crypto-setup) en is LUKS ge-upgrade naar versie 2. Op kernel nivo zijn PIE en RELRO geintroduceerd die een veel gebruikte manier van exploits, buffer overflow, moeten tegengaan daar het onverspelbaar te maken waar wat in geheugen draait.

Netwerk

In de netwerk-stack zijn dingen aangepast waardoor oa. aan crypto offloading gedaan kan worden, congestie in het netwerk gedetecteerd kan worden en automatische optimalisatie gedaan wordt. Ook in bonding omgevingen kunnen veel gemaakte fouten makkelijker worden herkend en opgelost.

Docker

Docker is niet meer ‘hip’, containerisatie wel. In plaats van docker, met een volgens Red Hat onwerkbaar licentie model is nu een drop-in replacement in de vorm van podman, buildah en skopeo gekomen.

 

 

 

 

 

 

Nieuwe server uitrollen met Satellite 6

Voor het uitrollen van een nieuwe server middels hammer zijn een aantal parameters nodig:

  • environment-id
  • architecture-id
  • domain-id
  • operatingsystem-id
  • partition-table-id

Er dient al een hostgroup aangemaakt te zijn, dat kan via hammer of de WebGUI. Exporteer de benodige settings, voorbeeld:


    export ORG_NAME=Datacenter
    export ORG_LOCATION=Amsterdam
    export ORG_ID=$(hammer --csv organization list --search "${ORG_NAME}"| awk -F, 'FNR == 2 {print $1}')
    export LOCATION_ID=$(hammer --csv location list --search "${ORG_LOCATION}" | awk -F, 'FNR == 2 {print $1}')

    export HOSTGROUP_NAME='rhel-6-x86_64-test'
    export HOSTGROUP_ID=$(hammer --csv hostgroup list --search "name = \"${HOSTGROUP_NAME}\""| awk -F, 'NR==2 {print $1}')

    export DOMAIN_NAME='example.com'
    export HOST_SHORTNAME="test-103"
    export HOST_FQDN="${HOST_SHORTNAME}.${DOMAIN_NAME}"
    export HOST_MAC='52:55:00:54:0b:e1'
    export ROOT_PWD='12345678FOOD'

Nu dit gebeurd is kan hammer worden aangeroepen om de host aan te maken:

     hammer host create --ask-root-password false --build false --hostgroup-id ${HOSTGROUP_ID} --mac ${HOST_MAC} --name "${HOST_SHORTNAME}" --root-password ${ROOT_PWD}

Als de host aangemaakt is moet deze nog gekoppeld worden aan een organistatie en locatie (organization en location). Deze info kunnen we niet via hammer opvragen en gebruiken hier de API voor:

     export HOST_ID=$(hammer host list | grep "${HOST_SHORTNAME}" | awk '{print $1}')

     json_file=$(mktemp)
     cat > ${json_file} <<EOF
     {"organization_id":"$ORG_ID","location_id":"$LOCATION_ID"}
     EOF

     curl -X PUT -k -u admin:securepassword -H 'Content-Type: application/json' -d @${json_file} https://localhost/api/hosts/${HOST_ID}

LinuxPro brengt WordPress hosting

Altijd al je eigen blog met je reisverhalen, dagelijkse beslommeringen of foto-album willen hebben? Dat kan nu en wel voor niets 🙂  Ga naar http://blog.linuxpro.nl en maak je eigen WordPress blog aan. Je krijgt de beschikking over meerdere thema's om je blog een eigen uiterlijk te geven, je bent zelf beheerder en hebt de keuze uit talloze plugins.

Kijk maar op http://blog.linuxpro.nl