Статья опубликована в рамках: Научного журнала «Студенческий» № 1(213)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7
РАБОТА С KUBERNETES (OPENSHIFT) ЧЕРЕЗ JAVA CLIENT API
WORKING WITH KUBERNETES (OPENSHIFT) VIA JAVA CLIENT API
Maxim Beryanov
Student, PIKT faculty, ITMO University,
Russia, Saint-Petersburg
АННОТАЦИЯ
В настоящее время можно с уверенностью сказать, что Kubernetes стал стандартом для управления контейнеризованными приложениями – он предлагает богатый API, который позволяет нам развертывать, масштабировать и отслеживать приложения и связанные с ними ресурсы. В данной статье для управления таким состоянием Kubernetes будет использоваться Java-клиент.
ABSTRACT
Nowadays, it's normal to say that Kubernetes has become the standard for managing containerized applications - it offers rich API that allows us to deploy, scale, and monitor applications and their associated resources. This article will use a Java client to manage such Kubernetes state.
Ключевые слова: Java, Kubernetes, OpenShift, контейнер, приложение.
Keywords: Java, Kubernetes, OpenShift, container, application.
В большинстве случаев наши приложения могут игнорировать тот факт, что они работают в Kubernetes [1] – это позволяет нам разрабатывать их локально, а с помощью нескольких команд и YAML-манифеста – быстро разворачивать даже с небольшими изменениями и столько раз, сколько нам угодно.
Однако есть несколько интересных ситуаций, когда нам необходимо использовать Kubernetes API для достижения определенных целей: 1) нужно запускать программу для выполнения какой-либо задачи, а затем получать ее статус; 2) динамически создавать/изменять какой-либо сервис в ответ на запрос клиента; 3) создавать настраиваемую панель мониторинга для решения, работающего в нескольких кластерах Kubernetes; 4) тестировать систему мониторинга, в особенности распределенную. Благодаря Kubernetes API, в частности для языка Java, такие ситуации довольно просто реализовать.
Для достижения поставленной цели данной статьи, во-первых, предлагается добавить зависимость Java API Kubernetes в pom.xml нашего проекта из Maven Central репозитория [2]. Далее, в нашем Java-приложении мы произведем подключение к серверу Kubernetes через создание объекта ApiClient, используя статический метод Config.defaultClient(). Более того, если мы имеем доступ к локальному файлу kubeconfig, мы можем использовать метод fromConfig(fileName) для создания экземпляра ApiClient из файла-конфигурации – в этот файл можно поместить информацию о необходимых серверах и токенах аккаунтов, связать их вместе.
ApiClient содержит базовый транспортный механизм для связи с сервером. Нам нужно создать обработчик типизированных объектов API для отправки на сервер и получения с сервера. Ввиду многозначительности возможностей библиотеки, в данной статье приведем в пример выдачу списка deployment и просмотра configmap для каждого deployment в определенном namespace, а также просмотр всех доступных pod (рисунок 1).
Рисунок 1. Пример использования Java Kubernetes API
Как мы видим, классы CoreV1Api и AppsV1Api реализуют важные особенности управления ресурсами Kubernetes – они позволяют запрашивать ресурс, получать дополнительную информацию о его зависимых ресурсах, редактировать их. Для целей тестирования распределенных систем, можно таким образом получать информацию о deployment, выключать и включать pod изменением значения replicas, имитируя сбои, динамическим образом обращаться к сервисам через информацию из configmap и многое другое. Дополнительную информацию можно найти в официальном репозитории рассматриваемой библиотеки [3].
Список литературы:
- Kubernetes [Электронный ресурс] URL: https://kubernetes.io (дата обращения: 26.12.2022).
- Maven | Kubernetes Client Java API [Электронный ресурс] URL: https://mvnrepository.com/artifact/io.kubernetes/client-java-api (дата обращения: 26.12.2022).
- GitHub | Kubernetes Client Java API [Электронный ресурс] URL: https://github.com/kubernetes-client/java (дата обращения: 26.12.2022).
Оставить комментарий