Size: a a a

OpenShift - русскоязычное сообщество

2021 September 29

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Шифт на цилиуме)
источник

АС

Андрей Салангин... in OpenShift - русскоязычное сообщество
На сколько я знаю, там BGP в Beta
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Угу
источник

АС

Андрей Салангин... in OpenShift - русскоязычное сообщество
Ванилла на Calico остается чтоли?
источник

I

Ivan in OpenShift - русскоязычное сообщество
наоборот увеличил и буфер стал уменьшаться
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Вы же сказали, что ЦПУ там утилизирован
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
^
источник

I

Ivan in OpenShift - русскоязычное сообщество
спу на ноде да , но не 100%
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Кек, значит неправильно понял
источник

I

Ivan in OpenShift - русскоязычное сообщество
под fluentd потребляет на ноде примерно 0,8 core
источник
2021 September 30

JS

John Smith in OpenShift - русскоязычное сообщество
а можно морду от ОШ к ванильному куберу рядом поднять? полный функционал (ош cicd) не требуется, просто хочется привычную веб-морду
источник

MS

Michael Silich in OpenShift - русскоязычное сообщество
источник

JS

John Smith in OpenShift - русскоязычное сообщество
@msilich чё-то оно мертвое, кажется.
последний релиз - 3 года назад
edit: а хотя, коммиты коммитятся
источник

JR

Jürgen Romins in OpenShift - русскоязычное сообщество
можно если коротко вместе с оператор хабом, только что на ЕКС задеплоил пока что без авторизации но с olm
источник

JR

Jürgen Romins in OpenShift - русскоязычное сообщество
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Переслано от Антон Сенько...
Так, парни, как и обещал делюсь кодом для развертывания openshift console
https://pastebin.com/tBkLZdzs

Объясню некоторые детали:
Консоль умеет работать в двух режимах, in-cluster и off-cluster. Как я понял, это подразумевается какраз кластер OpenShift. В режиме in-cluster она сама знает где что искать, сервисаккаунты, эндпоинты для прометея и алертменеджера, причём многое из этого приколочено гвоздями в коде, от чего у меня всю дорогу невероятно полыхало. Ну в общем не подходит этот вариант для нативных кубиков.

В режиме off-cluster бриджу параметрами (bridge - так называется утилита на гошечке, которая организует прослойку между вебмордой и кубиком) нужно обязательно сменить способ аутентификации с дефолтного service-account на bearer-token или oidc, иначе просто не запустится. Я юзаю токены для доступа в куб, поэтому реализовал именно этот способ. Еще раз подчеркну, это именно аутентификация бриджа в API кубика.

Бридж принимает параметры либо через аргументы CLI в виде --arg-name,  либо читает их из переменных вида BRIDGE_ARG_NAME. Список аргументов можно получить зайдя в контейнер и сделав в нем /opt/bridge/bin/bridge --help.

Пользовательская аутентификация предполагается в виде OpenID, openshift  (видимо аутентификация в самом ОШ-кластере) либо дефолтная-отключенная. Поскольку у меня нет вменяемого OpenID, то аутентификацию я отключил и юзаю BasicAuth на ингресс-контроллере. Ну я могу себе это позволить, потому как пускать в кубик разрабов пока нет надобности и ходим мы туда вдвоем с лидом с полными правами  так и так.

В своей инфраструктуре я юзаю в качестве ингресс-контроллера traefik, поэтому в коде пример создания именно ingressRoute с мидлваром базовой аутентификации, под свои нужды перепишите ингрессы

Ну и немного о том, с чем я бодался дольше всего. В bearer-token режиме бридж ждет на вход строку с токеном SA, от имени которого он будет обращаться в API кубика. Невырвиглазного способа получить токен из секрета с рандомным именем, который создается при создании SA, не получилось. Ну да, @amatyhin  предложил рабочий способ - обернуть запуск бриджа в sh, и спосооб рабочий, но выглядит костыль-костылём. По итогу я психанул и просто создаю для SA дополнительный секрет с токеном с заведомо известным именем, и вот из него уже токен подом читается отлично.

В планах все-таки завернуть всю эту лапшу в helm chart, и возможно даже поддерживать, так что если соберусь - анонсирую здесь.

#openshiftconsole
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
^
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Переслано от Антон Сенько...
Ах да, чуть не забыл. Еще пара слов о прометеусе и алертменеджере.

Чтобы графики и стата заработали в консоли, а именно из-за этого весь сыр бор, прометеус надо немного подтюнить.

1. node_exporter должен в метку instance писать хостнейм ноды, а не IP-адрес (как это у меня), поэтому если вам тоже не повезло, то нодэкспортера нужно сделать релейблинг (у меня прометей деплоится через helm оператором, поэтому здесь и далее все примеры оттуда):


nodeExporter:
 serviceMonitor:
   relabelings:
     - sourceLabels:
       - __meta_kubernetes_pod_node_name
       separator: ;
       regex: ^(.*)$
       targetLabel: instance
       replacement: $1
       action: replace

Так же, нужно запилить 4 правила для метрик, которые консоль пытается читать из прометеуса:

additionalPrometheusRulesMap:
 openshift-console:
   groups:
     - name: openshift-console
       rules:
         - expr: sum(rate(container_cpu_usage_seconds_total{pod=~".+", job="kubelet"}[1m])) by (pod, namespace)
           record: pod:container_cpu_usage:sum
         - expr: sum by(pod, namespace) (rate(container_fs_usage_bytes{job="kubelet",pod=~".+"}[1m]))
           record: pod:container_fs_usage_bytes:sum
         - expr: >-
             sum by(label_beta_kubernetes_io_instance_type, label_node_role_kubernetes_io) (
               (
                 cluster:master_nodes
                 * on(node) group_left() max by(node)
                 (
                   kube_node_status_capacity_cpu_cores
                 )
               )
               or on(node) (
                 max without(endpoint, instance, job, pod, service)
                 (
                   kube_node_labels
                 ) * on(node) group_left() max by(node)
                 (
                   kube_node_status_capacity_cpu_cores
                 )
               )
             )
           record: cluster:capacity_cpu_cores:sum
         - expr: sum(1 - rate(node_cpu_seconds_total{mode="idle"}[2m]) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:{pod=~".*node-exporter.+"})
           record: cluster:cpu_usage_cores:sum

ВАЖНОЕ: прометеус и алертменеджер должны работать без опции routePrefix, потому как если вы передадите бриджу эндпоинт прометеуса в виде http://prometheus-operated.monitoring:9090/prometheus например, то бридж его превратит в http://prometheus-operated.monitoring:9090/api - угу, я перелопатил весь этот GOвнокод

Вот теперь вроде все

#openshiftconsole
источник

АС

Антон Саросек... in OpenShift - русскоязычное сообщество
Вот такое умельцы мутят
источник

JR

Jürgen Romins in OpenShift - русскоязычное сообщество
примерно это делал для екс
источник