Я пытаюсь запустить свое первое приложение с Kubernetes локально (или я бы сказал, minikube).
У меня есть довольно простой веб-сервер (один локальный образ докера) и официальный образ mongodb (который я хотел бы в идеале извлечь из dockerhub).
Я не пытаюсь развернуть кластер mongodb, просто минимальный набор ресурсов для запуска моего приложения будет хорошим началом!
Сначала мне удается запустить мой веб-сервер в одиночку с kubectl run <MY_APP> --image=<MY_IMAGE> --port 3030 --image-pull-policy=IfNotPresent
, затем kubectl port-forward <MY_POD> 3030:80
, и он работает нормально, я могу подключиться к приложению через порт 3030 (приложение прослушивает, и контейнер открывает порт 80).
Но я хотел бы перевести это в файл манифеста, чтобы описать все контейнеры, которые мне нужны для легкого запуска.
Моя первая проблема - я не могу найти, как kubectl port-forward
должен быть переведен в файл манифеста.
Я думал о targetPort
, но у меня возникает ошибка проверки, похоже, что мы не можем использовать targetPort
в описании портов контейнеров pods.
Моя вторая проблема заключается в том, что я не совсем уверен в том, что я делаю, пытаясь запустить этот стек, описывая только модуль. Возможно, понадобятся другие части, service
я считаю необязательными для своих нужд, я не уверен насчет deployment
, но я видел endpoint
, и я мог бы игнорировать другие ...
Я немного сбит с толку, поскольку kubectl run
, кажется, создает пакет, развертывание и наборы реплик, я не уверен, нужно ли мне создавать все это из моего файла манифеста.
Я просто хочу запустить оба моих контейнера локально для работы с кодом и обновлять его каждый раз, когда я делаю изменение, и проверять его.
Итак, у моего вопроса есть несколько подвопросов из-за недостатка знаний о Kubernetes, но в основном я хотел бы знать, как перевести мои kubectl run <MY_APP>
и kubectl port-forward <MY_POD> 3030:80
в файл манифеста, чтобы я мог добавить контейнер mongodb и начать весь стек с одной командной строки kubectl create -f ./local.yaml
.
Вот первый черновик:
apiVersion: v1
kind: Pod
metadata:
name: my_app
spec:
containers:
- name: web-server
image: my_app
imagePullPolicy: IfNotPresent
ports:
- name: my_app
containerPort: 3030
targetPort: 80
protocol: TCP
- name: mongodb
image: mongodb
ports:
- name: mongodb
containerPort: 27017
protocol: TCP