Il cluster Kubernetes per CloudVeneto presenta un'architettura in High Availability composta da:

  • tre control-plane (cld-k8s-01, cld-k8s-02 e cld-k8s-03)
  • un load-balancer (HAproxy + Keepalive)
  • un numero dinamico di worker node creati dagli utenti di CloudVeneto attraverso un nostro meccanismo chiamato OpenStackNode (OSNode).

OpenStackNode

L'OpenStackNode è composto dai seguenti componenti lato server (control-plane):

  • kube-osn-authn-webhook: layer di autenticazione
  • kube-osn-authz-webhook: layer di autorizzazione a grana fine che implementa la multi-tenancy
    • verifica l'owner della risorsa
    • autorizza l'utente ad operare (get, update, delete) esclusivamente sulle sue risorse
  • kube-osn-admission-webhook: webhook che inietta le informazioni relative all'utente in tutte le risorse da lui direttamente o indirettamente create (es: pod, deployment, ecc)
  • kube-osn-operator: operator che gestisce il ciclo di vita dei worker node (VM) creati dall'utente
    • ha una sua interfaccia openstacknodes.osnode.infn.it che definisce una nuova tipologia di risorsa: osn
    • l'osn rappresenta un worker node implementato da una VM istanziata in una IaaS OpenStack come CloudVeneto
    • ogni utente deve creare uno o più osn specifando il nome, flavor, key-pair, ecc.

Mentre lato client abbiamo due plugin per kubectl necessari per la fase di autenticazione e di configurazione del kubeconfig:

  • kubectl-openstack:
    • configura il kubeconfig
    • genera un nuovo token Keystone nel caso non esista oppure sia spirato
  • kubectl-aim:
    • registra un nuovo client in iam
    • configura il kubeconfig
    • genera un nuovo token nel caso non esista oppure sia spirato



  • No labels