Kubernetes Dashboard cu Helm in HomeLab: instalare si acces in 10 minute

La munca am tot auzit de Helm si Helm Charts. Termeni care inseamna ceva gen „instaleaza x si y cu Helm” sau „upgrade cu Helm Charts”. Deci, ce naiba sunt Helm si Charts?

Pe scurt, Helm este un manager de pachete pentru Kubernetes, iar Helm Charts sunt ca niste retete. Aceste retete sunt folosite pentru a instala si gestiona aplicatii in Kubernetes. Imagineaza-ti ca ai nevoie de o aplicatie care include mai multe componente (poduri, servicii, deployment-uri etc.). Un Helm Chart iti permite sa definesti toate aceste componente intr-un mod standardizat.

Helm este pentru Kubernetes ceea ce apt este pentru Debian: un tool care iti simplifica viata. Iar pe Artifact Hub (https://artifacthub.io/) gasesti peste 16.000 de „retete” pentru tot felul de aplicatii. Bineinteles, iti poti face si tu propriile Charts daca ai nevoie de ceva mai customizat.

Pentru ca am vazut Kubernetes Dashboard si pentru ca arata bine, si pare asa… ca daca ai K8S Dashboard sigur te pricepi am zis sa invat cum se instaleaza. Prima optiune – cu Helm!

Instalarea Kubernetes Dashboard cu Helm

Hai sa vedem cum putem folosi Helm pentru a instala Kubernetes Dashboard.

Pasul 1: Instalarea Helm pe controller-ul Kubernetes

Mai intai, instalezi Helm. Este simplu, doar urmezi aceste comenzi, care o sa downloadeze un script, dupa care il faci executabil si il … executi. Headshot!

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

Pasul 2: Adaugarea repository-ului pentru Kubernetes Dashboard

Acum adaugam repository-ul unde este disponibil Kubernetes Dashboard:

$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
$ helm repo list

Pasul 3: Instalarea Kubernetes Dashboard

Instalam Dashboard-ul folosind comanda:

$ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard \
    --create-namespace --namespace kubernetes-dashboard

Aceasta comanda:

  • Instaleaza (sau face upgrade daca e deja instalat) Kubernetes Dashboard.
  • Creeaza namespace-ul kubernetes-dashboard daca nu exista.

Pasul 4: Publicarea Dashboard-ului

Pentru a accesa Dashboard-ul, il publicam pe un port:

$ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443
$ kubectl -n kubernetes-dashboard get svc

Acum, acceseaza Kubernetes Dashboard la adresa: https://localhost:8443. Cumva e inutil, ca nimeni nu are un nodurile instalate cu KDE/Gnome si deschid de acolo un firefox ca sa acceseze servicii. Cel mult un curl, un wget… Dar… se poate publica pe ip-ul nodului… ceea ce e mai ok, il poti accesa din afara kubernetzilor.

$ kubectl get svc kubernetes-dashboard-kong-proxy -n kubernetes-dashboard -o yaml > kong-service.yaml

$ nano kong-service.yaml - editam sectiunea spec:
spec:
  type: NodePort
  ports:
  - name: kong-proxy-tls
    port: 443
    protocol: TCP
    targetPort: 8443
    nodePort: 32444
$ kubectl apply -f kong-service.yaml

Acum kong-proxy este expus pe ip-urile nodurilor, pe portul selectat manual de noi, 32444. Nu e optim sa specifici tu porturi… dar avem acces la dashboard.

$ nano cont-dasboard.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kube-system

Acum aplicam yaml-ul (o sa faca userul si il pune unde ii este locul) – totul e specificat in yaml.
Avem user si acum ii facem un token. Copy paste in browser la https://ip_nod:8443, acolo unde ne cere.

$ kubectl create -f cont-dashboard.yaml
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created

$ kubectl -n kube-system create token admin-user

Rezultate:

Avem kubernetes-dashboard, am facut un printscreen si l-am aratat prietenilor. O sa ramana aici pentru posteritate, ii gasesc o utilitate cand o sa am mai multe chestii pe k8s. Deocamdata e bun exercitiul ca am folosit helm sa-l deployes, am invatat sa il public pe noduri… si am facut si un user/token ca sa il putem accesa. Minunat!
Ce ar fi interesant, ceva sa expunem serviciul mai usor, metode sunt si chiar exista mai multe metode prin care serviciile dintr-un cluster Kubernetes pot fi expuse utilizatorilor finali:

Ingress Controller: Utilizeaza un controller pentru a gestiona cererile HTTP si HTTPS, oferind un mod flexibil si scalabil de a expune mai multe servicii printr-un singur punct de intrare. Exemple populare includ Nginx Ingress Controller si Traefik.

LoadBalancer: Creeaza un load balancer extern care distribuie traficul catre serviciul din cluster. Exemple includ solutii oferite de cloud providers, cum ar fi AWS Elastic Load Balancer (ELB), Google Cloud Load Balancer (GCLB) si Azure Load Balancer.
On prem poti folosi HA Proxy si Metal ILB

NodePort: Deschide un port specific pe fiecare nod al clusterului, permitand accesul extern. Pe acesta l-am utilizat si pot spune ca pe termen lung nu il vad ca winning sollution dar e foarte rapid sa vezi un serviciu din kube…

Asta cred ca ne indica deja ce o sa incerc next. Primele 2 coloane de mai sus sunt tema :))

Lasă un comentariu

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.