- Concept - Документ з концепцією по вибору рішення із задокументованим висновком.
- PoC - Довести технічну чи концептуальну життєздатність ідеї та концепції застосування ArgoCD в якості інструменту CD.
- MVP - Створити мінімальний функціональний продукт, який може вивести на ринок та отримати зворотний зв'язок від користувачів. В нашому випадку це демонстрація роботи застосунку AsciiArtify
- Встановіть k3d за допомогою команди:
$ wget -q -O - https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
- Створіть новий кластер Kubernetes:
$ k3d cluster create asciiartify
- Перевірте чи всі сервіси кластера працюють:
$ kubectl cluster-info
Kubernetes control plane is running at https://0.0.0.0:46155
CoreDNS is running at https://0.0.0.0:46155/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://0.0.0.0:46155/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
- Розгорнемо приклад застосунку "hello-world" із вказаним контейнером (gcr.io/google-samples/hello-app:1.0). Розгортання в Kubernetes визначає, як розгортати та керувати одним чи кількома репліками контейнера в середовищі кластера.
$ kubectl create deployment hello-world --image=gcr.io/google-samples/hello-app:1.0
- Експозиція Розгортання як Сервісу з доступом зовні:
$ kubectl expose deployment hello-world --type=LoadBalancer --port=8080
Ця команда створює службу (Service) для розгортання "hello-world". Опція --type=LoadBalancer означає, що цей сервіс буде доступний зовні кластера за допомогою зовнішнього балансувальника навантаження. Порт 8080 вказує на порт, на якому служба буде слухати запити.
- Отримання Інформації про Сервіс, Ця команда виводить інформацію про службу "hello-world", включаючи зовнішню IP-адресу, за якою можна отримати доступ до розгортання "hello-world".
$ kubectl get services hello-world
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-world LoadBalancer 10.43.47.129 172.18.0.3 8080:30808/TCP 23m
- Перевірте стан розгорнутого застосунку:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-world-5bc74c8b8d-xqcd4 1/1 Running 0 24m
Ви повинні побачити, що контейнер hello-world є в стані Running.
- Виведіть вміст логів контейнера:
$ kubectl logs hello-world-5bc74c8b8d-xqcd4
2023/11/23 21:38:50 Server listening on port 8080
Таким чином, ви розгорнули простий "Hello World" застосунок на Kubernetes за допомогою k3d. Будь ласка, зауважте, що для використання цих команд потрібно мати встановлені kubectl та k3d, а також Docker для створення контейнерів.
- Вбираємо після себе
# Зупиняємо запущені контейнери
docker stop $(docker ps -aq)
fbcf90482d30
259890caa301
9bb71cfa4fad
# Видаляємо контейнери
docker rm $(docker ps -aq)
fbcf90482d30
259890caa301
9bb71cfa4fad
# Видалити всі іміджі
docker rmi $(docker images -q)
# Ви можете видалити k3d за допомогою наступної команди:
sudo rm /usr/local/bin/k3d