...

Запуск собственного микросервиса

Тема в разделе "ELMA365 On-Premises", создана пользователем vyimova, 12 май 2023.

  1. vyimova

    vyimova Участник

    По результатам работы над созданием собственного микросервиса (статья в справке ELMA365: Создание собственного микросервиса) у вас есть готовый сервис и его docker-образ, который лежит в docker-репозитории, а также установлена ELMA365 в MicroK8s. Для примера будем использовать репозиторий Docker Hub.

    Если мы не можем по каким-то причинам использовать на стенде ELMA365 on-premises Переносимые сервисы, воспользуемся возможностью запустить микросервис с помощью создания пода Kubernetes.


    Открываем консоль, куда будем вводить команды. Для примера используем ВМ ELMA и программу putty.

    Открываем в putty сессию для нашей ВМ. Вводим логин-пароль и затем входим в режим суперпользователя:


    [​IMG]

    Открываем наш репозиторий в 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» и запущу его с учетом необходимых параметров:


    [​IMG]

    При успешном создании пода, будет надпись: «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
    
    
    [​IMG]

    Нашли там название нашего сервиса. Также он должен находиться в статусе Running.

    Более подробную информацию о сервисе можно получить командой:
    Код:
    
    sudo microk8s kubectl get pod SERVICENAME --output=yaml
    
    
    В выведенном в консоль результате можно, к примеру, проверить корректность заполненных переменных окружения, т.к. их значения также выведутся в консоль. Проверить можно и другие параметры сервиса.

    [​IMG]

    Если у нас настроено логирование в сервисе, то логи сервиса можно получить командой:
    Код:
    
    sudo microk8s kubectl logs SERVICENAME
    
    
    Если мы захотим убрать сервис, это можно сделать командой:
    Код:
    
    microk8s kubectl delete pod SERVICENAME
    
    
    В случае успешного удаления сервиса, появится надпись: «pod SERVICENAME deleted»

    [​IMG]

    Также стоит проверить после этого, что сервис действительно пропал из списков подов командой:
    Код:
    
    microk8s kubectl get pods
    
    
    Таким образом, можно создавать и запускать свои сервисы, задавать для них необходимые значения переменных окружения, создавать секреты для использования приватных репозиториев и собирать логи сервисов.
    Последнее редактирование: 19 май 2023