This shows you the differences between two versions of the page.
cc:laboratoare:07 [2021/12/05 23:28] alexandru.hogea |
cc:laboratoare:07 [2021/12/06 12:33] (current) alexandru.hogea [Secrete în Kubernetes] |
||
---|---|---|---|
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 204: | Line 206: | ||
==== Persistența datelor ==== | ==== 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 un GET. Mai avem intrări în baza de date? | + | 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ă. | ||