Как сравнить пользовательский ресурс Kubernetes spe c с ожидаемым spe c в контроллере GO? - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь реализовать моего первого оператора в Кубернетесе. Я хочу, чтобы контроллер оператора мог сравнивать конфигурацию в запущенном модуле с ожидаемой конфигурацией, определенной в определении пользовательского ресурса.

Например: пользовательский ресурс

apiVersion: test.com/v1alpha1
kind: TEST
metadata::
  name: example-test
spec:
  replicas: 3
  version: 20:03
  config:
    valueA: true
    valueB: 123

Указанный выше пользовательский ресурс развернут и 3 модуля работают. Изменение сделано так, что конфигурация "valueA" изменена на false.

В функции согласования контроллера GO я могу получить экземпляр TEST и увидеть "новую" версию конфигурации:

instance := &testv1alpha1.TEST{}
log.Info("New value : " + instance.Spec.Config.valueA)

Мне интересно, как я могу получить доступ к значению "valueA" в моих запущенных модулях, чтобы я мог сравнивать и воссоздавать блоки, если они изменились?

Также второстепенный вопрос, мне нужно l oop через все запущенные модули в функции согласования, чтобы проверить каждую или я могу сделать это как одну операцию?

1 Ответ

1 голос
/ 08 апреля 2020

Что это за конфигурация? Если это конфигурация Pod's spe c, я бы посоветовал вам обновить не отдельные Pod, а spe c в Deployment, он автоматически перезапустит свои модули. Если это переменные среды для приложений в этом модуле, я бы порекомендовал использовать ConfigMap для их хранения и обновить его. Отвечая на ваш второй вопрос, в обоих случаях - это будет одна операция.

Чтобы получить Deployment или ConfigMap, вам нужно иметь его имя и пространство имен, как правило, с настраиваемым ресурсом, оно должно быть получено из его имя. Вот пример , как вы можете получить экземпляр развертывания и обновить его.

...