Cvičení – nasazení kontejneru mikroslužeb do Kubernetes
Kubernetes spouští kontejnery za vás. Popíšete, co má Kubernetes dělat prostřednictvím souboru YAML. Toto cvičení vás provede vytvořením souboru, abyste mohli nasadit a spustit back-endovou službu v Kubernetes.
Důležité
Než budete pokračovat, musíte mít jistotu, že máte nainstalovanou implementaci Kubernetes. Budeme používat implementaci k3d spuštěnou v codespace. Testovací prostředí zahájíme instalací této implementace.
Instalace nástrojů a implementace Kubernetes
Potřebujeme nainstalovat nástroj kubectl i implementaci k3d Kubernetes:
V codespace přejděte na kartu TERMINÁL a spusťte tyto příkazy pro instalaci požadovaných součástí:
sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl
Pokud chcete stáhnout podpisový klíč pro úložiště balíčků Kubernetes, spusťte tyto příkazy:
sudo mkdir /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Pokud se zobrazí chyba, že adresář již existuje, spusťte
curl
příkaz samostatně.Přidejte úložiště Kubernetes do konfigurace apt :
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Teď můžete nainstalovat nástroj kubectl :
sudo apt-get update sudo apt-get install -y kubectl
Nakonec nainstalujte implementaci Kubernetes k3d a vytvořte cluster:
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash k3d cluster create devcluster --config k3d.yml
Vytvoření souboru nasazení pro back-endovou službu
Pomocí souboru YAML můžete vytvořit nasazení kontejneru do Kubernetes. Pojďme vytvořit soubor pro nasazení back-endové služby.
Ve složce donet-kubernetes ve složce codespace s názvem backend-deploy.yml vytvořte nový soubor.
Zkopírujte do souboru následující text a uložte ho.
--- apiVersion: apps/v1 kind: Deployment metadata: name: productsbackend spec: replicas: 1 template: metadata: labels: app: productsbackend spec: containers: - name: productsbackend image: [YOUR DOCKER USER NAME]/productservice:latest ports: - containerPort: 80 env: - name: ASPNETCORE_URLS value: http://*:80 selector: matchLabels: app: productsbackend --- apiVersion: v1 kind: Service metadata: name: productsbackend spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 32001 selector: app: productsbackend
Zástupný symbol
[YOUR DOCKER USER NAME]
nahraďte skutečným uživatelským jménem Dockeru.
Tento soubor dělá několik věcí.
První část definuje specifikaci nasazení pro kontejner, který se má nasadit do Kubernetes. Určuje jednu repliku, kde najít image kontejneru, které porty se mají v kontejneru otevřít, a nastaví některé proměnné prostředí. Tato první část také definuje popisky a názvy, které lze použít pro odkaz na kontejner a specifikaci.
Druhá část pak definuje, že kontejner běží jako služba Kubernetes NodePort. V tomto modulu nemusíte rozumět všem specifikům NodePorts. Měli byste ale vědět, že tento typ služby zveřejňuje externí IP adresu, abyste mohli službu otestovat mimo cluster.
Nasazení a spuštění back-endové mikroslužby
V dalším kroku nasadím a spustíme mikroslužbu.
Na kartě TERMINÁL spusťte následující příkaz:
kubectl apply -f backend-deploy.yml
Tento příkaz říká Kubernetes, aby spustil soubor, který jsme vytvořili. Stáhne image z Docker Hubu a vytvoří kontejner.
Příkaz
kubectl apply
se rychle vrátí. Vytvoření kontejneru ale může chvíli trvat. Pokud chcete zobrazit průběh, použijte následující kód.kubectl get pods
Ve výsledném výstupu máte řádek s produktybackend následovaný řetězcem náhodných znaků ve sloupci NAME . Až bude všechno připravené, ve sloupci PŘIPRAVENO je 1/1 a ve sloupci STAV se spustí.
Pokud chcete službu otestovat, přepněte na kartu PORTY poblíž místní adresy back-endového portu a vyberte ikonu zeměkoule. V prohlížeči se na této adrese otevře nová karta.
Pokud chcete zadat dotaz na některé produkty, připojte adresu pomocí /api/product a stiskněte Enter. Měly by se zobrazit některé informace o produktu ve formátu JSON.
[ { "id": 1, "name": "Solar Powered Flashlight", "description": "A fantastic product for outdoor enthusiasts", "price": 19.99, "imageUrl": "product1.png" }, { "id": 2, "name": "Hiking Poles", "description": "Ideal for camping and hiking trips", "price": 24.99, "imageUrl": "product2.png" }, { "id": 3, "name": "Outdoor Rain Jacket", "description": "This product will keep you warm and dry in all weathers", "price": 49.99, "imageUrl": "product3.png" }, ...
Vytvoření souboru nasazení a spuštění front-endové služby
Podobně jako back-endová služba potřebujeme také soubor nasazení pro front-end.
Ve složce donet-kubernetes vytvořte nový soubor s názvem frontend-deploy.yml
Do souboru vložte následující kód:
--- apiVersion: apps/v1 kind: Deployment metadata: name: storefrontend spec: replicas: 1 template: metadata: labels: app: storefrontend spec: containers: - name: storefrontend image: [YOUR DOCKER USER NAME]/storeimage:latest ports: - containerPort: 80 env: - name: ASPNETCORE_URLS value: http://*:80 - name: ProductEndpoint value: http://productsbackend selector: matchLabels: app: storefrontend --- apiVersion: v1 kind: Service metadata: name: storefrontend spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 32000 selector: app: storefrontend
Zástupný symbol
[YOUR DOCKER USERNAME]
nahraďte skutečným uživatelským jménem Dockeru.Všimněte si, že tento soubor je podobný souboru, který jsme vytvořili pro back-endovou mikroslužbu. Existují dva rozdíly:
- Zadáváme jiný kontejner, který se má spustit pod hodnotou nasazení
spec.template.spec.containers.image
. - V této části je nová proměnná
spec.template.spec.containers.env
prostředí. Kód v aplikaci storefrontend volá back-end, ale protože jsme nezadali plně kvalifikovaný název domény (FQDN), neznáme IP adresu back-endové mikroslužby, použijeme název, který jsme zadali podmetadata.name
uzlemDeployment
. Kubernetes se postará o zbytek.
- Zadáváme jiný kontejner, který se má spustit pod hodnotou nasazení
Nasaďte kontejner do Kubernetes pomocí následujícího příkazu:
kubectl apply -f frontend-deploy.yml
Znovu můžete použít
kubectl get pods
k zobrazení stavu nasazení. Jakmile se řádek pro storefrontend zobrazí ve sloupci Stav , všechno je připravené.Pokud chcete otestovat front-endovou službu, přepněte na kartu PORTY a napravo od místní adresy pro port Front End vyberte ikonu zeměkoule. V prohlížeči se zobrazí domovská stránka.
Vyberte Produkty. Katalog zobrazuje zboží společnosti Contoso.
V tomto cvičení jste vytvořili soubor nasazení, který přesně popsal, jak chcete kontejnery spouštět v rámci Kubernetes. Pak jste image Kubernetes stáhli z Docker Hubu a spustili kontejnery.