GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak provést nasazení Canary na Kubernetes

Úvod

Testování nové funkce nebo upgrade ve výrobě je stresující proces. Chcete změny zavádět často, ale bez ovlivnění uživatelského dojmu. Chcete-li během této fáze minimalizovat prostoje, nastavte implementace Canary, aby se přechod zjednodušil.

Nasazení canary můžete použít na jakékoli infrastruktuře. V souladu s tím je to jedna ze strategií nasazení v Kubernetes.

Zjistěte, co jsou nasazení canary, jak fungují a jak provést nasazení canary na Kubernetes.

Předpoklady

  • Přístup k příkazovému řádku/terminálu
  • Docker nainstalovaný v systému
  • Kubernetes nebo Minikube
  • Plně nakonfigurovaný nástroj příkazového řádku kubectl na vašem místním počítači

Co je to kanárské nasazení?

Kanárkové nasazení je upgradovaná verze stávajícího nasazení se všemi požadovanými aplikačními kódy a závislostmi. Používá se k testování nových funkcí a upgradů, aby se zjistilo, jak zvládají produkční prostředí.

Když přidáte nasazení canary do clusteru Kubernetes, je spravováno službou prostřednictvím selektorů a štítky . Služba směruje provoz do podů, které mají zadaný štítek. To vám umožní snadno přidávat nebo odebírat nasazení.

Množství provozu, které kanárek získá, odpovídá počtu lusků, které roztočí. Ve většině případů začínáte tím, že na kanárku nasměrujete menší procento provozu a postupem času toto číslo zvýšíte.

S nastavením obou nasazení můžete sledovat chování kanárků, abyste viděli, zda nenastanou nějaké problémy. Jakmile budete spokojeni se způsobem, jakým zpracovává požadavky, můžete upgradovat všechna nasazení na nejnovější verzi.

Nastavení nasazení Canary na Kubernetes

Níže uvedené kroky ukazují, jak nastavit nasazení canary. Pro tento článek jsme vytvořili jednoduchý cluster Kubernetes podů Nginx se základní statickou HTML stránkou se dvěma větami. Verze nasazení se liší podle obsahu, který zobrazují na webové stránce.

Proces nastavení vašeho nasazení Canary se bude lišit podle aplikace, kterou používáte.

Krok 1:Vytáhněte obrázek dockeru

Prvním krokem je stáhnout nebo vytvořit image pro kontejnery ve vašem clusteru Kubernetes. Protože v tomto příkladu vytváříme kontejnery Nginx, používáme obraz Nginx dostupný na Docker Hub.

1. Stáhněte si obrázek pomocí:

docker pull nginx

2. Ověřte, zda jej máte, uvedením všech místních obrázků:

docker image ls

Krok 2:Vytvořte nasazení Kubernetes

1. Vytvořte definici nasazení pomocí souboru yaml. Použijte textový editor podle svého výběru a zadejte název souboru. Soubor pojmenujeme nginx-deployment.yaml a vytvořte jej pomocí Nano :

nano nginx-deployment.yaml

2. Přidejte do souboru následující obsah:

apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx
spec:
 selector:
  matchLabels:
   app: nginx
 replicas: 3
 template:
  metadata:
   labels:
    app: nginx
    version: "1.0"
  spec:
   containers:
    - name: nginx
      image: nginx:alpine
      resources:
      limits:
       memory: "128Mi"
       cpu: "50m"
      ports:
      - containerPort: 80
      volumeMounts:
      - mountPath: /usr/share/nginx/html
        name: index.html
      volumes:
      - name: index.html
        hostPath:
          path: /Users/sofija/Documents/nginx/v1

Vytvořili jsme 3 repliky podů Nginx pro cluster Kubernetes. Všechny moduly mají štítek version: "1.0 Kromě toho mají hostitelský svazek obsahující index.html namontované na kontejner. Ukázkový soubor HTML se skládá z:

<html>
<h1>Hello World!</h1>
<p>This is version 1</p>
</html>

3. Uložte a ukončete soubor.

4. Vytvořte rozmístění spuštěním:

k apply -f nginx-deployment.yaml

5. Zkontrolujte, zda jste úspěšně nasadili moduly pomocí:

k get pods -o wide

Výstup by měl zobrazovat tři spuštěné moduly Nginx .

Krok 3:Vytvořte službu

Dalším krokem je vytvoření definice služby pro cluster Kubernetes. Služba bude směrovat požadavky na zadané moduly.

1. Vytvořte nový yaml soubor s:

nano nginx-deployment.service.yaml

2. Poté přidejte následující obsah:

apiVersion: v1
kind: Service
metadata:
 name: nginx-service
spec:
 type: LoadBalancer
selector:
 app: nginx
 version: "1.0"
ports:
- port: 8888
  targetPort: 80

Soubor yaml specifikuje typ služby – LoadBalancer . Dává službě pokyn, aby vyrovnala pracovní zátěž mezi moduly pomocí štítků app: nginx a version: "1.0" . Aby mohl být modul součástí služby, musí mít oba štítky.

3. Uložte a ukončete soubor služby.

4. Nyní vytvořte službu:

kubectl apply -f nginx-deployment.service.yaml

Krok 4:Zkontrolujte první verzi clusteru

Chcete-li ověřit, že služba běží, otevřete webový prohlížeč a přejděte na adresu IP a číslo portu definované v souboru služby.

Chcete-li zobrazit externí adresu IP služby, použijte příkaz:

kubectl get service

Pokud používáte Kubernetes lokálně , použijte jako IP adresu localhost.

Protože ukázkový cluster, který jsme vytvořili, běží lokálně na portu 8888, adresa URL je:

http://localhost:8888

V prohlížeči by se mělo zobrazit Ahoj světe zpráva z verze 1 .

Krok 5:Vytvořte rozmístění Canary

S verzí 1 aplikace na místě, nasadíte verzi 2 , kanárkové nasazení.

1. Začněte vytvořením yaml soubor pro nasazení canary. Spusťte příkaz:

nano nginx-canary-deployment.yaml

2. Přidejte do souboru následující obsah:

apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-canary-deployment
spec:
 selector:
  matchLabels:
   app: nginx
 replicas: 3
 template:
  metadata:
   labels:
    app: nginx
    version: "2.0"
  spec:
   containers:
    - name: nginx
      image: nginx:alpine
      resources:
      limits:
       memory: "128Mi"
       cpu: "50m"
      ports:
      - containerPort: 80
      volumeMounts:
      - mountPath: /usr/share/nginx/html
        name: index.html
      volumes:
      - name: index.html
        hostPath:
          path: /Users/sofija/Documents/nginx/v2

Obsah souboru nasazení canary se liší třemi důležitými parametry:

  • Název v metadatech je nginx-canary-deployment .
  • Má štítek version: “2.0” .
  • Je propojen s html souborem index.html který se skládá z:
<html>
<h1>Hello World!</h1>
<p>This is version 2</p>
</html>

3. Uložte a ukončete soubor.

4. Vytvořte rozmístění canary pomocí příkazu:

k apply -f nginx-canary-deployment.yaml

5. Ověřte, že jste úspěšně nasadili tři další moduly:

k get pods -o wide

Výstup by měl zobrazovat Díky nasazení Nginx canary , spolu s původními moduly Nginx .

Krok 6:Spusťte nasazení Canary

Otevřete webový prohlížeč a přejděte na stejnou IP adresu jako v kroku 4. Všimnete si, že na webové stránce nejsou žádné změny. Je to proto, že soubor služby je nakonfigurován tak, aby načítal zůstatek pouze pody se štítkem version: "1.0" .

Chcete-li otestovat aktualizované moduly, musíte upravit soubor služby a nasměrovat část provozu do version: "2.0" .

1. Chcete-li tak učinit, otevřete yaml soubor s:

nano nginx-deployment.service.yaml

2. Najděte a odstraňte řádek version: “1.0” . Soubor by měl obsahovat následující:

apiVersion: v1
kind: Service
metadata:
 name: nginx-service
spec:
 type: LoadBalancer
selector:
 app: nginx
ports:
- port: 8888
  targetPort: 80

3. Uložte změny a ukončete soubor.

4. Vytvořte aktualizovanou službu pomocí příkazu:

k apply -f nginx-deployment.service.yml

5. Provoz je nyní rozdělen mezi moduly verze 1 a verze 2. Pokud webovou stránku několikrát obnovíte, uvidíte různé výsledky v závislosti na tom, kam služba přesměruje váš požadavek.

Krok 7:Monitorujte chování Canary

Po spuštění obou nasazení sledujte chování nového nasazení. V závislosti na výsledcích můžete nasazení vrátit zpět nebo upgradovat na novější verzi.

Zrušit nasazení Canary

Pokud si všimnete, že kanár nefunguje podle očekávání, můžete nasazení vrátit zpět a odstranit upgradované moduly pomocí:

kubectl delete deployment.apps/nginx-canary-deployment

Služba pokračuje ve vyrovnávání zátěže provozu do počátečních modulů (verze 1).

Zavést upgradované nasazení

Pokud dojdete k závěru, že nasazení canary funguje podle očekávání, můžete směrovat veškerý příchozí provoz do upgradované verze. Existují tři způsoby, jak to udělat:

1. Upgradujte první verzi úpravou obrazu Docker a vytvořením nového nasazení. Poté odstraňte kanárky pomocí:

kubectl delete deployment.apps/nginx-canary-deployment

2. Upgradované moduly si můžete ponechat a ty s verzí 1 odebrat štítek:

kubectl delete deployment.apps/nginx

3. Případně můžete upravit service.yaml a přidejte verzi specifikátor do selector označení. To dává nástroji pro vyrovnávání zatížení pokyn, aby směroval provoz pouze do verze 2 pod.


Ubuntu
  1. Jak nastavit Kubernetes Cluster pomocí Rancher

  2. Jak odstranit nasazení Kubernetes [Rychlé tipy K8s]

  3. Jak odstranit službu v Kubernetes

  1. Jak nasadit Elasticsearch na Kubernetes

  2. Jak nasadit instanci WordPress na Kubernetes

  3. Jak nasadit Redis Cluster na Kubernetes

  1. Jak nainstalovat Kubernetes na Ubuntu 18.04

  2. Jak nainstalovat Jenkins na Kubernetes

  3. Jak restartovat Kubernetes Pods