По результатам работы над созданием собственного микросервиса (статья в справке ELMA365: Создание собственного микросервиса) у вас есть готовый сервис и его docker-образ, который лежит в docker-репозитории, а также установлена ELMA365 в MicroK8s. Для примера будем использовать репозиторий Docker Hub.
Если мы не можем по каким-то причинам использовать на стенде ELMA365 on-premises Переносимые сервисы, воспользуемся возможностью запустить микросервис с помощью создания пода Kubernetes.
Открываем консоль, куда будем вводить команды. Для примера используем ВМ ELMA и программу putty.
Открываем в putty сессию для нашей ВМ. Вводим логин-пароль и затем входим в режим суперпользователя:
Открываем наш репозиторий в Docker Hub. Из открытого репозитория узнаем значение «image» в формате login/name:version.
Вводим в консоль команду для запуска сервиса:
Код:
sudo microk8s kubectl run SERVICENAME --image=LOGIN/NAME:VERSION --env="name=value" --env="name2=value2" --env="name3=value3"
Для примера назову свой сервис «testapiservice» и запущу его с учетом необходимых параметров:
При успешном создании пода, будет надпись: «pod/SERVICENAME created».
Ключевые параметры и значения в данной команде:
- SERVICENAME – имя вашего сервиса,
- Параметр «image» - образ, который расположен в репозитории. В значение параметра «image» вводим данные, которые ранее нашли в нашем репозитории DockerHub,
- Параметры «env» – это переменные окружения: значения, которых могут меняться в разных экземплярах нашего сервиса. Чтобы сервис был более гибким, лучше выносить меняющиеся значения за рамки сервиса в переменные окружения и вводить их на этапе запуска сервиса. Вводятся в формате «ключ=значение».
ДОПОЛНИТЕЛЬНО
Также есть возможность использовать при запуске сервиса секреты, например, если нам нужно подключиться к приватному репозиторию в Docker Hub и у нас есть креды от учетной записи, под которой был создан этот приватный репозиторий.
Чтобы использовать секреты, перед запуском сервиса нам нужно ввести команду:
Код:
sudo microk8s kubectl create secret docker-registry SECRETNAME --docker-username=USERNAME --docker-password=USERPWD --docker-email=EMAIL
Ключевые значения команды:
- SECRETNAME – название секрета,
- USERNAME – логин учетной записи,
- USERPWD – пароль учетной записи,
- EMAIL – почта учетной записи.
Далее запускаем сервис похожей командой, но также добавляем еще значение переменной с указанием ранее созданного секрета:
Код:
sudo microk8s kubectl run SERVICENAME --image=LOGIN/NAME:VERSION --overrides='{ "spec": { "imagePullSecrets": [{"name": "SECRETNAME"}] } }' --env="name=value" --env="name2=value2" --env="name3=value3"
Если нами все введено верно, наш сервис появится в списке подов. Проверим его наличие там командой:
Код:
microk8s kubectl get pods
Нашли там название нашего сервиса. Также он должен находиться в статусе Running.
Более подробную информацию о сервисе можно получить командой:
Код:
sudo microk8s kubectl get pod SERVICENAME --output=yaml
В выведенном в консоль результате можно, к примеру, проверить корректность заполненных переменных окружения, т.к. их значения также выведутся в консоль. Проверить можно и другие параметры сервиса.
Если у нас настроено логирование в сервисе, то логи сервиса можно получить командой:
Код:
sudo microk8s kubectl logs SERVICENAME
Если мы захотим убрать сервис, это можно сделать командой:
Код:
microk8s kubectl delete pod SERVICENAME
В случае успешного удаления сервиса, появится надпись: «pod SERVICENAME deleted»
Также стоит проверить после этого, что сервис действительно пропал из списков подов командой:
Код:
microk8s kubectl get pods
Таким образом, можно создавать и запускать свои сервисы, задавать для них необходимые значения переменных окружения, создавать секреты для использования приватных репозиториев и собирать логи сервисов.
Последнее редактирование: 19 май 2023