Руководство по системному администрированию#
Термины и определения#
Термин/аббревиатура |
Определение |
|---|---|
Платформа |
Платформа оркестрации приложений со средствами автоматизации и управления на основе политик, например, Kubernetes |
Deployment / «kind: Deployment» |
Набор инструкций для запуска приложения в Kubernetes |
Pod / «kind: Pod» |
Набор контейнеров внутри узла кластера Kubernetes |
CLI |
Command line interface — интерфейс командной строки, где выполняются команды с использованием терминала |
KBLT |
Программный компонент KubeLatte (код KBLT) из состава программного продукта Platform V Synapse Service Mesh (код SSM) |
Kubernetes |
Платформа оркестрации приложений со средствами автоматизации и управления на основе политик |
MONA |
Программный компонент Platform V Monitor — Объединенный мониторинг Unimon |
SSM |
Platform V Synapse Service Mesh — Программный продукт на базе Istio SE, обеспечивающий возможность создания сервисной сети поверх Платформенной в Kubernetes |
URL |
Uniform Resource Locator — стандартизированный способ записи адреса ресурса в сети Интернет» |
Мутирование |
Процесс перехвата пользовательской реализации ресурсов в рамках платформы Kubernetes. Перед сохранением ресурса в «etcd» кластера, производится запрос на «Webhook Server» (KBLT) инфраструктурным компонентом «KubeAPI». В рамках запроса инфраструктурный компонент «KubeAPI» предоставляет текущую реализацию конфигурации, которая в ближайшее время будет сохранена в «etcd» кластера. При получении запроса «Injector» анализирует предоставленную информацию и производит изменение (мутирование) конфигурации в рамках своей логики. После успешной процедуры изменения конфигурации происходит процесс сохранения в «etcd» кластера, после чего служебные операторы платформы производят штатную обработку ресурса |
Креация (создание) |
Процесс автоматической публикации инфраструктурных объектов системы управления облачных приложений Kubernetes |
Валидация |
Процесс автоматической проверки создаваемых из-за действий пользователя ресурсов на корректность в соответствии с конфигурационными правилами, описанными владельцем инсталляции компонента |
Сценарии администрирования#
Программный компонент KubeLatte (код KBLT) из состава программного продукта Platform V Synapse Service Mesh (код SSM) не имеет собственного пользовательского интерфейса для администрирования. Все действия по управлению им производятся с использованием интерфейсов, предоставляемых Платформой Kubernetes.
Администратору должна быть назначена роль по принципу минимальных полномочий.
Запуск#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в веб-консоль Kubernetes |
Перейти по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig». |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке веб-интерфейса Kubernetes. |
Запуск Pod |
1. В меню выберите пункт Workload/Deployments. |
Выход из веб-консоли Kubernetes |
1. Нажмите по имени пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Вход в kubernetes |
Загрузите «kubeConfig» от вашего «ServiceAccount». Заведите переменную |
|
Переход в нужный «Namespace» |
Введите команду: |
|
Запуск приложения |
В консоли выполните команду: |
N>0 — требуемое количество запущенных Pods приложения |
Остановка#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Логин в веб-консоль Kubernetes |
Перейти по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig». |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке веб-интерфейса Kubernetes. |
Остановка компонента |
Выполнить следующие действия: |
Выход из веб-консоли Kubernetes |
Выполнить следующие действия: |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Остановка приложения |
В консоли выполнить команду |
— |
Проверка работоспособности#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в веб-консоль Kubernetes |
Перейдите по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных введите токен пользователя или kubeconfig |
Переход в нужный проект |
Выберите нужный проект в выпадающем списке в шапке веб-интерфейса Kubernetes |
Переход во вкладку Pod |
В меню выбрать пункт Workload/Pods |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Получение имени Pod |
В консоли выполнить команду |
Выбрать наименование Pod с наименованием «synapse-kubelatte-****», указанное наименование пригодится на следующем шаге (<имя Pod>) |
Проверить работоспособность |
В консоли выполнить команду: |
Также проверить отсутствие ошибок в рамках логов приложения
Настройка выделения ресурсов#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Логин в веб-консоль Kubernetes |
Перейти по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig» |
Переход в проект |
Выбрать нужный проект можно в выпадающем списке в шапке веб-интерфейса Kubernetes |
Вход в Deployment |
Выполнить следующие действия: |
Скорректировать параметры |
В окне редактирования найдите параметры: |
Сохранение |
Нажмите кнопку Update |
Проверка конфигурации |
Снова зайти на вкладку Edit в YAML или JSON |
Выход из веб-консоли Kubernetes |
Выполнить следующие действия: |
Через CLI kubernetes (kubectl)
Шаг |
Действие |
Описание |
|---|---|---|
Получить текущие Deployment приложений |
В консоли выполнить команду |
|
Скорректировать параметры |
В консоли выполнить команду |
$CONTAINER_NAME — имя конфигурации «kind: Deployment»; $LIMIT_TYPE — секция где необходимо изменить квоту (limits/requests); $LIMIT_ENV - значение лимита (cpu/memory); $VALUE — необходимое значение (пример 1Gi) |
Проверить конфигурацию |
В консоли выполнить команду |
Изменение количества Pods#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в веб-консоль Kubernetes |
Перейти по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных ввести токен пользователя или «kubeconfig» |
Переход в нужный проект |
Выбрать нужный проект можно в выпадающем списке в шапке веб-интерфейса Kubernetes |
Запуск Pod |
1. В меню выберите пункт Workload/Deployments. |
Выход из веб-консоли Kubernetes |
1. Нажмите по имени пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Увеличить/уменьшить количество Pods |
В консоли выполнить команду: |
— |
Выгрузка системных логов#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в веб-консоль Kubernetes |
Перейдите по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных введите токен пользователя или kubeconfig |
Переход в нужный проект |
Выберите нужный проект можно в выпадающем списке в шапке веб-интерфейса Kubernetes |
Выгрузить лог |
1. В меню выберите пункт Workload/Pods. |
Выход из веб-консоли Kubernetes |
1. Выберите имя пользователя, чтобы раскрыть меню учетной записи. |
Через CLI kubernetes (kubectl)
Шаг |
Действия |
Описание |
|---|---|---|
Выгрузить лог |
В консоли выполнить команду: |
— |
Изменение уровня логирования без перезагрузки#
С использованием веб-интерфейса Kubernetes
Шаг |
Действие |
|---|---|
Вход в веб-консоль Kubernetes |
Перейдите по ссылке (URL) веб-консоли нужного кластера Kubernetes, в окне ввода учетных данных введите токен пользователя или kubeconfig |
Переход в нужный проект |
Выберите нужный проект можно в выпадающем списке в шапке веб-интерфейса Kubernetes |
Выгрузить лог |
1. В меню выберите пункт Workload/Pods. |
Выход из веб-консоли Kubernetes |
1. Выберите имя пользователя, чтобы раскрыть меню учетной записи. |
События системного журнала#
Системный лог выводится в консоль контейнера приложения.
Также есть возможность использования логов с контейнера «fluent-bit».
Уровни логирования error, warn, info, debug. Уровень логирования задается при старте приложения в настройках «kind: ConfigMap».
Уровень логирования debug не рекомендован для ПРОМ среды.
Приложение Webhook Server#
Наименование контейнера в рамках «kind: Pod» — injector/inspector.
Разворачивание среды
2023-05-18T05:52:41Z [34mINFO [0m ["api=Start, message=start http webhook server"]
Ожидание информации в рамках мутирования/валидации
Ожидает поставки пользовательских конфигураций «kind: Template»/«kind: Trigger»/«kind: Scope».
2023-05-18T08:02:33Z [34mINFO [0m ["Dir with config is empty"]
Режим запуска приложения Webhook Server режиме мутации
2023-05-18T08:02:33Z [34mINFO [0m ["Run templatter in MUTATOR role"]
Режим запуска приложения Webhook Server в режиме инспектор (валидатор креаций ресурсов)
2023-05-18T08:02:33Z [34mINFO [0m ["Run templatter in VALIDATOR role"]
Предупреждение: нет реализации правил для мутации
Все мутации будут запрещены! Необходимо реализовать конфигурацию «kind: Scope» (type: mutation).
2023-05-18T08:03:16Z [33mWARN [0m ["Scope for mutation is empty"]
Применение пользовательских конфигураций
oselatte/istio-system-discovery-merge-trigger/mutation-config-testy-special-merge
containers:
- name: oselatte/istio-system-discovery-merge/discovery
readinessProbe:
initialDelaySeconds: {{or (index .Annotations "readiness/initialdelayseconds") 60}}
Обработка WebHook request режим работы мутатор
Обработка входящего запроса на мутацию
2023-05-18T08:28:31Z [34mINFO [0m ["api=serve, message=incoming request, body={\"kind\":\"AdmissionReview\",\"apiVersion\":\"admission.k8s.io/v1beta1\",\"request\":{\"uid\":\"8ed27c78-7b49-4867-808d-54d7a16297ee\",\"kind\":{\"group\":\"\",\"version\":\"v1\",\"kind\":\"Pod\"},\"resource\":{\"group\":\"\",\"version\":\"v1\",\"resource\":\"pods\"},\"requestKind\":{\"group\":\"\",\"version\":\"v1\",\"kind\":\"Pod\"},\"requestResource\":{\"group\":\"\",\"version\":\"v1\",\"resource\":\"pods\"},\"namespace\":\"pub2-tribe-sy-kblt-dev\",\"operation\":\"CREATE\",\"userInfo\":{\"username\":\"system:serviceaccount:kube-system:replicaset-controller\",\"uid\":\"37d950c9-9ada-416b-b37d-ccc5fb1085c8\",\"groups\":[\"system:serviceaccounts\",\"system:serviceaccounts:kube-system\",\"system:authenticated\"]},\"object\":{\"kind\":\"Pod\",\"apiVersion\":\"v1\",\"metadata\":{\"generateName\":\"deployment-to-test-latte-annot-688f6bf486-\",\"creationTimestamp\":null,\"labels\":{\"app\":\"to-test-latte\",\"find-pod\":\"test\",\"p...
2023-05-18T08:28:31Z [34mINFO [0m ["api=mutate, message=new AdmissionReview, Kind=/v1, Kind=Pod, Namespace=pub2-tribe-sy-kblt-dev, Name= (), UID=8ed27c78-7b49-4867-808d-54d7a16297ee, patchOperation=CREATE, UserInfo={system:serviceaccount:kube-system:replicaset-controller 37d950c9-9ada-416b-b37d-ccc5fb1085c8 [system:serviceaccounts system:serviceaccounts:kube-system system:authenticated] map[]}"]
Процесс мутации инициализирован, найдена необходимая информация для начала мутации
2023-05-18T08:28:31Z [34mINFO [0m ["api=mutatePod, message=processing mutation request, mutationConfig=pub2-tribe-sy-kblt-dev/test-trigger/mutation-config-test-1"]
2023-05-18T08:28:31Z [34mINFO [0m ["api=mutationRequired, message=skip mutation for pod with no labels, pod=deployment-to-test-latte-annot-688f6bf486-, namespace=pub2-tribe-sy-kblt-dev"]
Процесс обработки AdmissionReview закончен, сервер готов отвечать
2023-05-18T08:28:31Z [34mINFO [0m ["api=serve, message=ready to write response"]
Ошибка проведения мутации, «kind: Pod» не будет промутирован, так как шаблон противоречит правилам мутации
2023-05-18T08:28:31Z [31mERROR [0m ["api=mutatePod, reason=whsvr.createPatches, message=failed to create patches, err=\"failed path:spec.volumes[*].configMap.name for /spec/volumes\""]
Отсутствие конфигурации «kind: Scope» (мутация будет запрещена)
2023-05-18T08:02:33Z [33mWARN [0m ["Scope for mutation is empty"]
Отсутствие конфигурации «kind: Scope» (креация будет разрешена)
2023-05-18T08:02:33Z [33mWARN [0m ["Scope for validation is empty"]
Обработка входящего запроса на валидацию
2023-05-18T11:46:19Z [34mINFO [0m ["api=validation, message=incoming request, body={\"kind\":\"AdmissionReview\",\"apiVersion\":\"admission.k8s.io/v1\",\"request\":{\"uid\":\"9e40e974-02d0-4049-bdfe-7c130782caa0\",\"kind\":{\"group\":\"\",\"version\":\"v1\",\"kind\":\"Pod\"},\"resource\":{\"group\":\"\",\"version\":\"v1\",\"resource\":\"pods\"},\"requestKind\":{\"group\":\"\",\"version\":\"v1\",\"kind\":\"Pod\"},\"requestResource\":{\"group\":\"\",\"version\":\"v1\",\"resource\":\"pods\"},\"name\":\"example-d7776ef4f9\",\"namespace\":\"pub2-tribe-sy-kblt-dev\",\"operation\":\"CREATE\",\"userInfo\":{\"username\":\"system:serviceaccount:pub2-tribe-sy-kblt-dev:templatter-operator-controller-manager\",\"uid\":\"37a68841-ae7a-4260-9b72-14e29e6481c3\",\"groups\":[\"system:serviceaccounts\",\"system:serviceaccounts:pub2-tribe-sy-kblt-dev\",\"system:authenticated\"],\"extra\":{\"authentication.kubernetes.io/pod-name\":[\"synapse-kubelatte-6f85f6fb9f-vd9hs\"],\"authentication.kubernetes.io/pod-uid\":[\"8fca2c56-9f...
Процесс обработки валидируемого ресурса закончен успешно, ресурс будет создан
2023-05-18T11:46:19Z [34mINFO [0m ["api=validation, message=ready to write response, result=true"]
Процесс обработки валидируемого ресурса закончен неуспешно, ресурс не будет создан
2023-05-18T11:54:07Z [34mINFO [0m ["api=validation, message=ready to write response, result=false"]
Приложение Operator#
Наименование контейнера в рамках «kind: Pod» — operator.
Разворачивание среды
Ошибка: API Server K8S недоступен
023-05-18T08:03:03Z [34mINFO [0m ["Kubernetes APIServer available. Status request: 200"]
API Server K8S доступен
2023-05-18T08:03:03Z [34mINFO [0m ["Kubernetes APIServer available. Status request: 200"]
Выбор лидера
I0518 08:03:07.683276 1 leaderelection.go:248] attempting to acquire leader lease pub2-tribe-sy-kblt-inspector-dev/leader-operator...
2023-05-18T08:03:07Z [34mINFO [0m ["New leader is synapse-kubelatte-574dd58cf4-62hwm"]
Инициализация взаимодействия с Platform V Audit SE
2023-05-18T08:03:07Z [34mINFO [0m ["AUDIT TURN ON"]
2023-05-18T08:03:07Z [34mINFO [0m ["AUDIT INIT RESPONSE","{\"id\":\"0f71dc08ca1fe55eda478247adb04243\"}"]
Успешная отправка события в Platform V Audit SE
2023-05-18T08:03:08Z [34mINFO [0m ["AUDIT EVENT RESPONSE","{\"id\":\"80b87e1f-2003-4498-b676-fa9bca9ae367\"}"]
Информация о старте контроллера, обрабатывающего ресурсы API компонента:
2023-05-18T08:03:00Z [34mINFO [0m ["[KBLT][Operator] Controller SCOPE started"]
2023-05-18T08:03:00Z [34mINFO [0m ["[KBLT][Operator] Controller TRIGGER started"]
2023-05-18T08:03:00Z [34mINFO [0m ["[KBLT][Operator] Controller TEMPLATE started"]
2023-05-18T08:03:00Z [34mINFO [0m ["[KBLT][Operator] Controller TRIGGER_INSTANCE started"]
Поиск пользовательских конфигураций
2023-05-18T11:02:02Z [34mINFO [0m Starting EventSource {"controller": "scope", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Scope", "source": "kind source: *v1alpha1.Scope"}
2023-05-18T11:02:02Z [34mINFO [0m Starting Controller {"controller": "scope", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Scope"}
2023-05-18T11:02:02Z [34mINFO [0m Starting EventSource {"controller": "template", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Template", "source": "kind source: *v1alpha1.Template"}
2023-05-18T11:02:02Z [34mINFO [0m Starting Controller {"controller": "template", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Template"}
2023-05-18T11:02:02Z [34mINFO [0m Starting EventSource {"controller": "trigger", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Trigger", "source": "kind source: *v1alpha1.Trigger"}
2023-05-18T11:02:02Z [34mINFO [0m Starting Controller {"controller": "trigger", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Trigger"}
2023-05-18T11:02:02Z [34mINFO [0m Starting workers {"controller": "trigger", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Trigger", "worker count": 1}
2023-05-18T11:02:02Z [34mINFO [0m Starting workers {"controller": "template", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Template", "worker count": 1}
2023-05-18T11:02:02Z [34mINFO [0m Starting workers {"controller": "scope", "controllerGroup": "kubelatte.synapse.sber", "controllerKind": "Scope", "worker count": 1}
Обработка пользовательских конфигураций
Добавление/обновление/удаление информации о пользовательской реализации «kind: Trigger»
2023-05-18T11:04:26Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/trigger/test-trigger","message","{\"mutationConfigs\":[{\"name\":\"mutation-config-test-1\",\"updateStrategy\":\"merge\",\"labelSelector\":{},\"annotationNamespace\":\"kblt.annotations\",\"annotationTrigger\":\"merge\",\"volumes\":[\"pub2-tribe-sy-kblt-dev/test-template/vol2\",\"pub2-tribe-sy-kblt-dev/test-template/vol4\"]}]}","information","added operation for a custom \"kind: Trigger\" configuration","status","Success","operationName","added","serviceReceiver","Openshift API server"]
2023-05-18T11:04:41Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/trigger/test-trigger","message","{\"mutationConfigs\":[{\"name\":\"mutation-config-test-1\",\"updateStrategy\":\"merge\",\"labelSelector\":{},\"annotationNamespace\":\"kblt.annotations\",\"annotationTrigger\":\"merge\",\"volumes\":[\"pub2-tribe-sy-kblt-dev/test-template/vol3\",\"pub2-tribe-sy-kblt-dev/test-template/vol4\"]}]}","information","updated operation for a custom \"kind: Trigger\" configuration","status","Success","operationName","updated","serviceReceiver","Openshift API server"]
2023-05-18T11:05:09Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/trigger/test-trigger","message","{\"mutationConfigs\":[{\"name\":\"mutation-config-test-1\",\"updateStrategy\":\"merge\",\"labelSelector\":{},\"annotationNamespace\":\"kblt.annotations\",\"annotationTrigger\":\"merge\",\"volumes\":[\"pub2-tribe-sy-kblt-dev/test-template/vol3\",\"pub2-tribe-sy-kblt-dev/test-template/vol4\"]}]}","information","removed operation for a custom \"kind: Trigger\" configuration","status","Success","operationName","removed","serviceReceiver","Openshift API server"]
Добавление/обновление/удаление информации о пользовательской реализации «kind: Template»
2023-05-18T11:38:18Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/template/test-template","message","{\"metadata\":{\"annotations\":{\"annot1\":\"val1\",\"annot2\":\"val2\"}},\"spec\":{\"volumes\":[{\"configMap\":{\"name\":\"istio\"},\"name\":\"vol1\"},{\"configMap\":{\"name\":\"basic\"},\"name\":\"vol2\"},{\"configMap\":{\"name\":\"fluent\"},\"name\":\"vol3\"},{\"configMap\":{\"name\":\"micro\"},\"name\":\"vol4\"},{\"hostPath\":{\"path\":\"/data\",\"type\":\"Directory\"},\"name\":\"vol5\"},{\"hostPath\":{\"path\":\"/datassss\",\"type\":\"Directory\"},\"name\":\"vol6\"}]}}","information","added operation for a custom \"kind: Template\" configuration","status","Success","operationName","added","serviceReceiver","Openshift API server"]
2023-05-18T11:38:33Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/template/test2","message","{\"spec\":{\"automountServiceAccountToken\":false,\"containers\":[{\"image\":\"swddfdffdfdfbdf.sbc.space/ci90000221_fedmesh_dev/kblt-usefull-demo:0.1\",\"imagePullPolicy\":\"Always\",\"name\":\"test4\",\"ports\":[{\"containerPort\":81}],\"resources\":{\"limits\":{\"cpu\":\"200m\",\"memory\":\"300Mi\"},\"requests\":{\"cpu\":\"200m\",\"memory\":\"300Mi\"}},\"securityContext\":{\"allowHostNetwork\":false,\"hostNetwork\":false,\"privileged\":false,\"runAsNonRoot\":true,\"serviceAccount\":\"default\",\"serviceAccountName\":\"default\"}}]}}","information","updated operation for a custom \"kind: Template\" configuration","status","Success","operationName","updated","serviceReceiver","Openshift API server"]
2023-05-18T11:39:18Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/template/test-template","message","{\"metadata\":{\"annotations\":{\"annot1\":\"val1\",\"annot2\":\"val2\"}},\"spec\":{\"volumes\":[{\"configMap\":{\"name\":\"istio\"},\"name\":\"vol1\"},{\"configMap\":{\"name\":\"basic\"},\"name\":\"vol2\"},{\"configMap\":{\"name\":\"fluent\"},\"name\":\"vol3\"},{\"configMap\":{\"name\":\"micro\"},\"name\":\"vol4\"},{\"hostPath\":{\"path\":\"/data\",\"type\":\"Directory\"},\"name\":\"vol5\"},{\"hostPath\":{\"path\":\"/datassss\",\"type\":\"Directory\"},\"name\":\"vol6\"}]}}","information","removed operation for a custom \"kind: Template\" configuration","status","Success","operationName","removed","serviceReceiver","Openshift API server"]
Добавление/обновление/удаление информации о пользовательской реализации «kind: Scope»
2023-05-18T11:40:11Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/template/kubelatte-validation-rule","message","","information","added operation for a custom \"kind: Scope\" configuration","status","Success","operationName","added","serviceReceiver","Openshift API server"]
2023-05-18T11:40:17Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/template/kubelatte-validation-rule","message","","information","updated operation for a custom \"kind: Scope\" configuration","status","Success","operationName","updated","serviceReceiver","Openshift API server"]
2023-05-18T11:40:21Z [33mWARN [0m ["rqUID","apps.ocp.devpub.solution/pub2-tribe-sy-kblt-dev/template/kubelatte-validation-rule","message","{\"type\":\"mutation\",\"items\":[{\"name\":\"allowed-containers\",\"path\":\"spec.containers[*]\",\"value\":\".*\",\"kind\":\"Pod\",\"apiVersion\":\"v1\"},{\"name\":\"allowed-volumesdddd\",\"path\":\"spec.volumes[*]\",\"value\":\".*\",\"kind\":\"Pod\",\"apiVersion\":\"v1\"},{\"name\":\"allowed-annotations\",\"path\":\"metadata.annotations.*\",\"value\":\".*\",\"kind\":\"Pod\",\"apiVersion\":\"v1\"}]}","information","removed operation for a custom \"kind: Scope\" configuration","status","Success","operationName","removed","serviceReceiver","Openshift API server"]
Информация об успешной обработке ресурса «kind: TriggerInstance» и создании ресурсов
2023-05-18T11:46:15Z [34mINFO [0m ["FactoryController: Make pub2-tribe-sy-kblt-dev/example"]
Информация о неудачной обработке ресурса «kind: TriggerInstance» и ошибке создания, а также информация о наименовании «kind: TriggerInstance», подлежащему к удалению
2023-05-18T11:54:07Z [31mERROR [0m ["FactoryController: Create resource failed in: ns pub2-tribe-sy-kblt-dev v v1 r Pod error admission webhook \"kubelatte.synapse.validation.sber\" denied the request: validation webhook error: validation failed: rule .* path spec.containers[?!(starts_with(image,'sw.sbc.space') || starts_with(image,'best.bank.ru') || starts_with(image,'registry.redhat.io'))].name"]
2023-05-18T11:54:07Z [34mINFO [0m ["WatcherController: All resources deleted, mark to delete this ti: pub2-tribe-sy-kblt-dev/example"]
Запись логов при работе компонента#
Компонент отчитывается о своей работы в рамках файла, который располагается в Pod, путь к файлу «/var/kubelatte/synapse-logs» (формат сообщений «JSON»).
Элемент operator
Формат записей логов сообщений:
/**
* Логирование сообщения.
*
* @param rqUID rqUID сообщения (в нашем случае UID это топология конфигурации cluster/namespace/typeConf/nameConf (syn-sb/sidecarinjector/template/egress))
* @param message текст сообщения (в нашем случае json портянка с конфигурациями)
* @param information дополнительная информация (что произошло? Добавление/удаление/изменение instance)
* @param status статус (успешно, неуспешно, описание)
* @param operationName название операции (add/del/upd)
* @param serviceReceiver имя вызываемого сервиса (получателя) OpenshiftAPIserver
*/
public void log(String rqUID, String message, String information, String status, String operationName, String serviceReceiver)
Элемент Webhook server
/**
* Логирование сообщения.
*
* @param rqUID rqUID сообщения (в нашем случае UID это топология успешного webhook взаимодействия cluster/namespace/pod)
* @param message текст сообщения (в нашем случае json портянка с реализованным хуком)
* @param information дополнительная информация (что произошло? Мутирование прошло успешно в рамках конфигураций ${Имя_файла_мутирования})
* @param status статус (успешно, неуспешно, описание)
* @param operationName название операции (add/del/upd)
* @param serviceReceiver имя вызываемого сервиса (получателя) Openshift API server
*/
public void log(String rqUID, String message, String information, String status, String operationName, String serviceReceiver)
В рамках параметра «information» предоставляется подробная информация о конкретном, реализованном действии компонента KBLT, например — «Добавление пользовательской конфигурации kind: Template/kind: Scope».
Для передачи указанных логов во внешнюю БД, необходима установка компонента fluent-bit, который будет считывать информацию из файла Pod, путь к файлу «/opt/synapse/logs/*».
События мониторинга#
Программный компонент KBLT не интегрирован с компонентом «Объединенный мониторинг Unimon» продукта Platform V Monitor (MONA).
Для наблюдения за состоянием Pods используйте существующие средства мониторинга Платформы, описанные в документации на конкретную платформу.
Компонент не порождает метрики мониторинга.
Часто встречающиеся проблемы и пути их устранения#
Проблема |
Причина |
Решение |
|---|---|---|
Не стартует Pod приложения |
Недостаточно ресурсов |
Увеличить limits/requests для приложения |
Не стартует Pod приложения |
Нет доступной node для запуска |
Зарегистрировать обращение в поддержку инфраструктуры |
Не стартует Pod приложения |
Ошибка в конфигурации |
Выгрузить лог, провести анализ, скорректировать конфигурацию |
Частый перезапуск контейнера приложения |
Медленная загрузка приложения |
Увеличить задержку и/или интервал опроса Liveness пробы |
Частый перезапуск контейнера приложения |
Недостаточно ресурсов |
Увеличить limits/requests для приложения |
Ошибка при вызове |
Нет доступных Pods сервиса, которому направлен вызов |
Проверить состояние сервиса - получателя вызова |
Ошибка при вызове |
Ошибки в конфигурации сервисного прокси |
Выгрузить лог сервисного прокси, проанализировать, устранить ошибки (ознакомиться с указанными действиями можно в документации компонента SPVX «Руководство по системному администрированию», раздел «Сценарии администрирования»). Пример устранения: редактирование конфигурации Istio по host вызываемого сервиса. |