Kubernetes

in Architetture Software

Configurazione Kubernetes in locale

Reading Time: 3 minutes

Negli ultimi anni Kubernetes è diventato lo standard de-facto per l’orchestrazione di containers. In origine è stato sviluppato per essere eseguito in ambienti puramente linux, anche se in seguito è stato adottato da altre piattaforme, tra cui Windows Server. In fase di sviluppo di applicazioni all’interno di containers può essere utile installare una versione locale di Docker e di Kubernetes. Docker mette a disposizione degli sviluppatori una versione Desktop dell’ambiente, disposibile sia per ambiente Windows, sia per ambiente Mac Osx. In particolare, la versione Windows può essere scaricata dal seguente link.

Una volta installato, e mandato in esecuzione è possibile configurare alcuni parametri della piattaforma (come cpu, memoria, ecc…), accendo ai menu dell’applicazione.

Tra le varie opzioni è anche possibile definire l’avvio automatico dell’applicazione ad ogni avvio del sistema operativo.

Attivazione Kubernates

Docker Desktop prevede al suo interno anche una version limitata di Kubernetes, dotata comunque delle componenti client e server, e del comando kubctl. Ovviamente le funzionalità sono limitate all’esecuzione all’interno del solo Pc locale, ma consente di prendere confidenza con l’intera architettura.

Installazione Kubernates Dashboard

Particolarmente utile risulta l’installazione di una dashboard all’interno di Kubernates per la visualizzazione delle funzionalità e delle attività di funzionamento. Per l’installazione, il primo passo è quello di eseguire il comando:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc6/aio/deploy/recommended.yaml

che consente di eseguire il file YAML remoto e mandarlo in esecuzione, all’interno di un namespace chiamato kubernetes-dashboard. Per visualizzare l’avvenuta esecuzione:

kubectl get all -n kubernetes-dashboard

Quello che viene creato è un services con un ClusterIP: in pratica non è possibile accedere all’interno del cluster e quindi visualizzare la dashboard utilizzando un browser internet e all’indirizzo del cluster stesso.

Per poter accedere è necessario attivare un proxy temporaneo, utilizzando :

kubectl proxy

che consente di accedere al container tramite l’URL:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

A questo ci troveremo davanti alla schermata di login:

Questa immagine ha l'attributo alt vuoto; il nome del file è image-1-1024x393.png

Il meccanismo da impostare per l’autenticazione è quello del Token. La generazione avviene eseugendo alcuni file yaml che consentono di seguiro lo schema RBAC.

Il primo file riguarda la definizione del service account:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

il secondo file riguarda la creazione di un CluserRoleBinding:

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: kubernetes-dashboard

associato all’utente admin-user definito nel file precedente. Per l’esecuzione:

kubectl apply -f service_account.yaml
kubectl apply -f cluster_role.yaml

A questo punto non resta che ottenere token che l’applicazione ha generato:

kubectl -n kubernetes-dashboard describe secret

Tornando alla login del nostro ambiente desktop, selezionare accesso tramite token:

e copiare il token estratto in precedenza. Ci troveremo davanti alla console della dashboard.