Premier Training & Business Partner Red Hat

Come Aggiungere Storage Persistente a Minishift / CDK 3

Alessandro Arrichiello
Ti piacerebbe diventare anche tu uno di noi e
pubblicare i tuoi articoli nel blog degli RHCE italiani?

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:

  1. Capacità Storage: Non è calcolata automaticamente! E’ necessario tenere sotto controllo dimensione del disco e spazio disponibile.
  2. 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.

Info about author

Alessandro Arrichiello