This shows you the differences between two versions of the page.
| 
    cc:laboratoare:07 [2021/12/05 23:21] alexandru.hogea [Variabile de mediu în Kubernetes]  | 
    
    cc:laboratoare:07 [2021/12/06 12:33] (current) alexandru.hogea [Secrete în Kubernetes]  | 
    ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Laboratorul 07 - Secrete și variabile de mediu în Kubernetes ===== | + | ===== Laboratorul 07 - Secrete, variabile de mediu și persistența datelor în Kubernetes ===== | 
| În laboratoarele anterioare am folosit variabilele de mediu direct în fișierele YAML ale pod-urilor. Evident, în cazul datelor sensibile, nu este o idee bună pentru ca oricine are acces la fișierele de configurare YAML să aibă posibilitatea de a vedea variabilele de mediu definite. Problema apare în momentul în care în variabilele de mediu definim nume de utilizatori și parole.  | În laboratoarele anterioare am folosit variabilele de mediu direct în fișierele YAML ale pod-urilor. Evident, în cazul datelor sensibile, nu este o idee bună pentru ca oricine are acces la fișierele de configurare YAML să aibă posibilitatea de a vedea variabilele de mediu definite. Problema apare în momentul în care în variabilele de mediu definim nume de utilizatori și parole.  | ||
| Line 28: | Line 28: | ||
| Creați acest secret: | Creați acest secret: | ||
| <code bash> | <code bash> | ||
| - | kubectl create -f db-secret.yaml | + | kubectl apply -f db-secret.yaml | 
| + | </code> | ||
| Incercati sa vizualizati datele din acest secret: | Incercati sa vizualizati datele din acest secret: | ||
| + | <code bash> | ||
| kubectl get secret db-secret | kubectl get secret db-secret | ||
| kubectl describe secret db-secret | kubectl describe secret db-secret | ||
| Line 202: | Line 204: | ||
| === Temă === | === Temă === | ||
| Modificați deployment-ul astfel încât să nu folosim pod-uri, ci să folosim deployment-uri acolo unde este nevoie. | Modificați deployment-ul astfel încât să nu folosim pod-uri, ci să folosim deployment-uri acolo unde este nevoie. | ||
| + | |||
| + | ==== Persistența datelor ==== | ||
| + | Adăugați câteva intrări în baza de date. Verificați ca acestea există. Ștergeți podul de DB, creați unul nou și executați o cerere de tip GET. Mai avem intrări în baza de date? | ||
| + | |||
| + | Pentru ca datele din baza de date să nu dispară odată cu ștergerea pod-ului, folosim PV (PersistentVolume) și PVC (PersistentVolumeClaims). | ||
| + | |||
| + | Un fișier de bază pentru a crea un PersistentVolume găsiti mai jos. Proprietățile pe care le folosim aici sunt destul de intuitive. | ||
| + | |||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: PersistentVolume | ||
| + | metadata: | ||
| + | name: mypv | ||
| + | spec: | ||
| + | accessModes: | ||
| + | - ReadWriteMany | ||
| + | capacity: | ||
| + | storage: 1Gi | ||
| + | hostPath: | ||
| + | path: /tmp/data | ||
| + | </code> | ||
| + | |||
| + | Dupa ce creăm acest volum, verificăm că acesta există: | ||
| + | <code bash> | ||
| + | kubectl get pv # în continuare urmăriți câmpul de status | ||
| + | </code> | ||
| + | |||
| + | Creăm un PVC pe baza următorului fișier de configurare: | ||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: PersistentVolumeClaim | ||
| + | metadata: | ||
| + | name: mypvc | ||
| + | spec: | ||
| + | accessModes: | ||
| + | - ReadWriteMany | ||
| + | resources: | ||
| + | requests: | ||
| + | storage: 1Gi | ||
| + | </code> | ||
| + | |||
| + | După ce am creat și un PVC, verificați din nou atât PV, cât și PVC: | ||
| + | <code bash> | ||
| + | kubectl get pv # urmăriți câmpul de status | ||
| + | kubectl get pvc | ||
| + | </code> | ||
| + | |||
| + | Cum folosim un volum într-un pod? Modificăm fișierul de configurare al pod-ului pentru baza de date astfel încât acesta să folosească noul volum: | ||
| + | <code yaml> | ||
| + | apiVersion: v1 | ||
| + | kind: Pod | ||
| + | metadata: | ||
| + | creationTimestamp: null | ||
| + | labels: | ||
| + | run: db | ||
| + | name: db | ||
| + | spec: | ||
| + | containers: | ||
| + | - image: axonedge/lab-k8s-database | ||
| + | name: db | ||
| + | envFrom: | ||
| + | - secretRef: | ||
| + | name: db-secret | ||
| + | volumeMounts: | ||
| + | - mountPath: /var/lib/postgresql/data | ||
| + | name: mypd | ||
| + | |||
| + | |||
| + | volumes: | ||
| + | - name: mypd | ||
| + | persistentVolumeClaim: | ||
| + | claimName: mypvc | ||
| + | </code> | ||
| + | |||
| + | Ștergeți pod-ul de DB creat anterior și creați altul pe baza fișierului de mai sus. | ||
| + | Adăugați câteva intrări în baza de date, ștergeți pod-ul și apoi creați altul nou. Putem observa că de data aceasta baza de date nu este goală.  | ||