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
Musíme nainstalovat nástroj kubectl i implementaci k3d Kubernetes:
V codespace přejděte na kartu TERMINAL 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 příkaz
curl
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 k3d implementaci Kubernetes 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 pro správu souborů do Kubernetes. Pojďme vytvořit soubor pro nasazení back-endové služby.
Vytvořte nový soubor s názvem backend-deploy.ymlve složce donet-kubernetes v prostoru kódu.
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ý
[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 v kontejneru otevřou, 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ě TERMINAL 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 productsbackend následovaný řetězcem náhodných znaků ve sloupci NAME. Až bude všechno připravené, je 1/1 pod sloupcem READY a Spuštěno pod sloupcem STATUS.
Pokud chcete službu otestovat, přepněte na kartu PORTY, která se nachází poblíž místní adresy portu backendu, 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/ produktu 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.
Vytvořte nový soubor ve složce donet-kubernetes 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ý
[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 ke spuštění v rámci hodnoty
spec.template.spec.containers.image
nasazení. - V části
spec.template.spec.containers.env
je nová proměnná prostředí. Kód v aplikaci storefrontend volá backend, ale protože jsme nezadali plně kvalifikovaný název domény (FQDN) a neznáme IP adresu backendové mikroslužby, použijeme název, který jsme specifikovali pod uzlemmetadata.name
v rámciDeployment
. Kubernetes se postará o zbytek.
- Zadáváme jiný kontejner ke spuštění v rámci hodnoty
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 řádek storefrontend zobrazí Spuštěno ve sloupci STAV, všechno je připravené.Pokud chcete otestovat front-endovou službu, přepněte na kartu PORTY a pak vpravo 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. Poté jste pomocí Kubernetes stáhli image z Docker Hubu a spustili kontejnery.