Ingress Controller, czyli brama do świata VMware Tanzu

Michał Iwańczuk
13. kwietnia 2023
Reading time: 4 min
Ingress Controller, czyli brama do świata VMware Tanzu
Co nowego w świecie NSX-t? Postanowiłem sprawdzić na przykładzie rozwiązania o nazwie Ingres controller, którew otwiera drzwi do pracy z VMware Tanzu. Natomiast klaster TKG posłuży za poligon doświadczalny.

Pamiętacie, jak opisywałem jak konfigurację NSX Advanced Load Balancer wraz z NSX-t? Nie?! Tak właśnie myślałem. Zatem przypomnę kilka przydatnych artykułów, ale po kolei.

Co to jest ten Ingress Controller?

Na początek trochę teorii. Ingress Controller jest komponentem w systemach Kubernetes (k8s), który jest odpowiedzialny za kierowanie ruchu sieciowego do odpowiednich aplikacji działających w klastrze.

W skrócie, Ingress Controller jest odpowiedzialny za obsługę ruchu z zewnątrz klastra do wewnętrznych usług. Kontroler ten obsługuje żądania HTTP i HTTPS i przekierowuje je do odpowiednich aplikacji na podstawie reguł zdefiniowanych w zasobie Ingress.

Narzędzie jest konfigurowane za pomocą reguł Ingress, które definiują reguły routingu dla różnych usług w klastrze Kubernetes. Dzięki temu komponent zapewnia elastyczność i skalowalność w zarządzaniu aplikacjami w klastrze.

Ale co ma z tym wspólnego NSX Advanced Load Balancer (AVI)?

W ramach rozwiązania NSX Advanced load balancer mamy do dyspozycji moduł AKO (AVI Kubernetes Operator), a jest to ingress controller dla platform OpenShift, Tanzu, EKS itp. Działa razem z AVI Controller.  

Wykorzystując funkcje takie jak:

  • DNS (GSLB) – możemy przenieść DNS dla domeny, w ramach której będą publikowane rekordy dla aplikacji udostępnianej przez adresy ingress.
    Kolejnym przykładem wykorzystania DNS jest uruchomienie aplikacji w dwóch data center pod jednym fqdn czyli klasyczne GSLB dla aplikacji.
  • WAF – ochrona wystawianych aplikacji.
  • SNI – dzięki temu będziemy mogli wystawiać pod jednym adresem IP wiele FQDN.

Powyższe funkcjonalności są dostępne wyłącznie w wersji Enterprise. Natomiast samą licencję Essential dostajemy w ramach Taznu Standard.

Poniżej porównanie wersji Essentials i Enterprise.

FunkcjeLicencja EssentialsLicencja Enterprise
L4 VS for Load Balancer type k8s service and control plane API​✓​✓​
L7 VS with SNI for Ingress​X​✓​
L7 policies​X​✓​
GSLB​X​✓​
WAF​X​✓​
Tenancy​X​✓​
Analytics​Ograniczone do VS statystyk✓​
High Availability​ A/S (Legacy) ​✓​

Trochę teorii w ramach AKO

Co jest potrzebne, aby uruchomić AKO?

  1. Licencja NSX Advanced LoadBalancer
  2. Jump Host najlepiej z Linuxem
    a)Zainstalowany Helm
    b) Dostęp do InternetuDostęp do Tanzu
    c) Dostęp do AVI i NSX
  3. Skonfigurowane Tanzu z NSX
  4. Zainstalowany klaster TKG w ramach Tanzu.
  5. Skonfigurowane środowisko z AVI – tutaj linki do poprzednich wpisów jak zainstalować i skonfigurować

Nasza architektura – czyli rysunek wart tysiąca słów

ingres controller _ diagram

Konfiguracja po stronie AVI

Ważnym elementem jest przygotowanie profilu IPAM dla adresów VIP na interfejsie AVI-Data Segment na rysunku. Na tym interfejsie będą wystawiane adresy VIP dla usług.

Dodanie repozytorium AKO do Helma

Zgodnie z dokumentacją do AKO ostatnia wersja wykonujemy polecenie na jump hoście, gdzie mamy helma.

helm repo add ako https://projects.registry.vmware.com/chartrepo/ako
"ako" has been added to your repositories.

Pobranie i modyfikacja pliku Yaml

Wyświetlenie ostatniej wersji AKO

michaliwanczuk$ helm search repo ako
NAME                    CHART VERSION   APP VERSION     DESCRIPTION                             
ako/ako                 1.9.2           1.9.2           A helm chart for Avi Kubernetes Operator

Pobranie pliku yaml

michaliwanczuk$ helm show values ako/ako --version 1.9.2 > values.yaml

Modyfikujemy plik zgodnie z naszym środowiskiem:

Plik yaml modyfikujemy w skecjach:

AKOSettings:

  clusterName: tkg-cluster   # Nazwa naszego Klastra TKG, na ktrorym będzie instalowane 
  layer7Only: true # Zmieniamy na true, chcemy pracować jako ingress L7

NetworkSettings:

serviceEngineGroupName: as   # Nazwa naszej ServiceEngine Group.
  controllerVersion: '21.1.3' # Wersja AVI
  cloudName: NSX-Cloud   # Nazwa Cloud profilu.
  controllerHost: '10.0.105.18' # IP adres lub fqdn do AVI Controlera jak jest VIP to ten adres
  tenantName: alb-mgmt   # Nazwa tenanta w którym będą tworzone VS

avicredentials:

  username: 'admin' #user do AVI
  password: 'pasdsword' # Hasło dla użytkownika admin

Instalacja z wykorzystaniem Helma AKO na klastrze TKG

Aby wykonać instalację AKO musimy zalogować się do Tanzu, dokładnie do klastra TKG. Następnym krokiem jest wykonanie polecenia:

kubectl vsphere login --server=10.71.169.66 -u miwanczuk@vsphere.local --insecure-skip-tls-verify --tanzu-kubernetes-cluster-namespace tkg --tanzu-kubernetes-cluster-name tkg-cluster

Tworzenie namespace

kubectl create namespace avi-system

Instalacja

helm list -n avi-system
kubectl get pods -n avi-system

Na razie tyle. Zapoznajcie się, przetrwaćie temat, a już niebawem kontynuacja pojawi się w formie demo na naszym kanale YouTube!

Artykuł powstał przy współpracy z dostawcą usługi VMware NSX-t <klik>

 class=