Ciao a tutti!
Oggi voglio riproporvi un articolo che ho pubblicato sul Red Hat Developer Blog.
Quest’articolo vi spiega come creare storage persistente per i vostri progetti in Minishift / CDK 3 (Red Hat’s Containers Development Kit 3).
Questo è il link all’articolo originale:
https://developers.redhat.com/blog/2017/04/05/adding-persistent-storage-to-minishift-cdk-3-in-minutes/
Prerequisiti
Iniziamo a pianificare cosa vi servirà:
- Un minishift o CDK 3 funzionante.
E’ tutto, davvero!
Non entrerò nel dettaglio di come configurare un minishift o CDK 3, ci sono parecchi articoli in Internet che coprono il tema. Ad ogni modo, riporto di seguito un serie di link utili che potete utilizzare per ottenere un minishift/CDK3 funzionante prima di procedere:
https://developers.redhat.com/blog/2017/02/28/using-red-hat-container-development-kit-3-beta/
Pagina Github Minishift – https://github.com/minishift/minishift
Iniziamo!
Dopo aver configurato con successo un minishift/CDK3, siamo pronti al passaggio successivo: la creazione dello strato storage sottostante che ospiterà i nostri Persistent Volumes (PVs).
Prima di tutto, colleghiamoci al nostro minishift/CDK3 in esecuzione:
$ minishift ssh [docker@minishift ~]$ sudo -i [root@minishift ~]#
Ok, adesso siamo pronti a creare la nostra prima directory da associare ad un volume persistente che ospiterà i dati del Docker Registry:
[root@minishift ~]# mkdir -p /mnt/sda1/var/lib/minishift/openshift.local.volumes/pv [root@minishift ~]# mkdir /mnt/sda1/var/lib/minishift/openshift.local.volumes/pv/registry [root@minishift ~]# chmod 777 -R /mnt/sda1/var/lib/minishift/openshift.local.volumes/pv
Perfetto! Possiamo adesso passare alla creazione del PersistentVolume per il nostro container Docker Registry.
Scolleghiamoci dalla nostra virtual machine minishift/CDK3 e quindi logghiamoci in openshift attraverso il client oc:
$ oc login -u system:admin Logged into "https://192.168.42.58:8443" as "system:admin" using existing credentials. You have access to the following projects and can switch between them with 'oc project <projectname>': default kube-system * myproject openshift openshift-infra Using project "myproject".
Spostiamoci nel project “default”:
$ oc project default Now using project "default" on server "https://192.168.42.69:8443".
Ed infine creiamo il PersistentVolume:
$ cat << PV | oc create -f - apiVersion: v1 kind: PersistentVolume metadata: name: registry spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce storageClassName: slow hostPath: path: /mnt/sda1/var/lib/minishift/openshift.local.volumes/pv/registry PV
Adesso è necessario fare attenzione a due punti:
- Capacità Storage: Non è calcolata automaticamente! E’ necessario tenere sotto controllo dimensione del disco e spazio disponibile.
- Utilizzo del Volume type “hostPath”: lo storage è sul virtual disk della vm minishift/CDK3, bisogna preoccuparsi dei permessi!
Ok, adesso siamo pronti per la creazione del nostro primo PersistentVolumeClaim, da essere agganciato al PersistentVolume già creato:
$ cat << PVC | oc create -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: registryclaim spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: slow selector: name: registry PVC
Come potete notare dalla definizione del PersistentVolumeClaim, associamo il PersistentVolume attraverso il nome “registry”.
Possiamo adesso dare un’occhiata al risultato, controllando l’output del seguente comando:
$ oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE registryclaim Bound registry 5Gi RWO 8s
Infine, possiamo modificare la definizione corrente di DeploymentConfig aggiungendo lo storage appena creato:
$ oc volume dc/docker-registry --add --name=registry-storage -t pvc --claim-name=registryclaim --overwrite deploymentconfig "docker-registry" updated
E questo è tutto! Potete ripetere questi step tutte le volte che volete! Ma, fate attenzione allo spazio libero della vostra vm!
Info su Alessandro
Alessandro Arrichiello is a Solution Architect for Red Hat Inc. He has a passion for GNU/Linux systems, that began at age 14 and continues today. He worked with tools for automating Enterprise IT: configuration management and continuous integration through virtual platforms. He’s now working on distributed cloud environment involving PaaS (OpenShift), IaaS (OpenStack) and Processes Management (CloudForms), Containers building, instances creation, HA services management, workflows build.