Введение
Добро пожаловать в это руководство по Docker и Kubernetes, двум важным инструментам для разработки и развертывания приложений в архитектуре микросервисов. Эти два инструмента стали отраслевыми стандартами для управления контейнерами и оркестровки кластеров соответственно.
В этом руководстве мы покажем вам, как создать и запустить простое приложение с использованием Docker и Kubernetes. Вы узнаете, как создать образ Docker для своего приложения, запустить образ в контейнере Docker и, наконец, развернуть свой контейнер в кластере Kubernetes.
Это руководство предназначено для тех, кто уже имеет базовое представление о Docker и Kubernetes. Если вы не знакомы с этими инструментами, мы рекомендуем вам ознакомиться с основными понятиями, прежде чем продолжить. Если, с другой стороны, вы уже знакомы с Docker и Kubernetes и хотите углубить свои знания, этот учебник идеально подходит для вас.
Прежде чем начать, убедитесь, что на вашем компьютере установлены Docker и Kubernetes. Кроме того, вам понадобится текстовый редактор для написания кода для вашего приложения.
Часть 1: Докер
Docker позволяет нам помещать наши приложения в контейнеры, что позволяет запускать их в любой среде, поддерживающей Docker.
Шаг 1: Установите Докер
Посетите официальный сайт Docker и следуйте инструкциям по установке Docker в вашей операционной системе.
Шаг 2: Создайте Dockerfile
Dockerfile — это скрипт, содержащий инструкции по созданию образа Docker. Давайте создадим простой Dockerfile для приложения Node.js.
Создайте новый файл с именем Dockerfile
и вставьте следующий код:
# Usa l'immagine ufficiale Node.js per la fase di build
FROM node:14 AS build
WORKDIR /app
COPY package*.json./RUN npm install
COPY..
# Fase di esecuzione
FROM node:14-alpine
WORKDIR /app
COPY --from=build /app.
EXPOSE 8080
CMD [ "node", "app.js" ]
Этот Dockerfile сначала создает образ с помощью Node.js и копирует исходный код в образ (этап сборки). Затем создайте образ меньшего размера на основе Node.js Alpine и скопируйте приложение со стадии сборки. Приложение работает на порту 8080.
Шаг 3. Создание образа Docker
Выполните следующую команду, чтобы создать образ Docker:
docker build -t my-node-app.
Шаг 4. Запустите образ Docker
После создания образа его можно запустить с помощью следующей команды:
docker run -p 8080:8080 my-node-app
Теперь ваше приложение должно быть запущено и доступно через порт 8080.
Часть 2: Кубернет
Kubernetes позволяет нам легко управлять, масштабировать и развертывать наши контейнерные приложения.
Шаг 1. Установите Kubernetes
Посетите официальный сайт Kubernetes и следуйте инструкциям по установке Kubernetes в вашей операционной системе.
Шаг 2. Создайте файл конфигурации Kubernetes.
Файл конфигурации Kubernetes (также называемый манифестом) определяет ресурсы, которые вы хотите создать в своем кластере Kubernetes. Давайте создадим простой файл конфигурации для нашего приложения Node.js.
Создайте новый файл с именем my-node-app.yaml
и вставьте следующий код:
apiVersion: v1
kind: Service
metadata:
name: my-node-app
labels:
app: my-node-app
spec:
ports:
- port: 8080
targetPort: 8080
selector:
app: my-node-app
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-node-app
spec:
replicas: 3
selector:
matchLabels:
app: my-node-app
template:
metadata:
labels:
app: my-node-app
spec:
containers:
- name: my-node-app
image: my-node-app:latest
ports:
- containerPort: 8080
Этот файл определяет службу и развертывание для нашего приложения. Развертывание создает три модуля, каждый с копией нашего приложения, и служба делает приложение доступным через порт 8080.
Шаг 3. Запустите приложение в кластере Kubernetes.
Выполните следующую команду, чтобы создать ресурсы, определенные в файле конфигурации:
kubectl apply -f my-node-app.yaml
Теперь ваше приложение должно работать в вашем кластере Kubernetes и быть доступным через порт 8080.
Заключение
Поздравляем! Вы только что создали контейнерное приложение с помощью Docker и запустили это приложение в кластере Kubernetes. Помните, что это всего лишь базовый урок. Docker и Kubernetes предлагают множество других функций, позволяющих создавать мощные и масштабируемые приложения.