Отражение статуса установки в CRD#

SYOP проставляет текущее состояние CRD, статус и результат установки компонент в загруженную CRD kind: SynapseOperator. Статусы установки компонент проставляются динамически по мере их обработки. Если конфигурация компоненты не изменялась, ее статус не изменится.

Проставление текущего состояния CRD необходимо, для того чтобы отслеживать изменения CRD и на основе этого производить обновление только тех компонент, для которых поменялись настройки в CRD. Если меняются общие настройки, то это приводит к обновлению всех компонент, заданных в CRD.

Пример CRD с проставленным статусом:

apiVersion: install.synapse.sber/v1alpha1
kind: SynapseOperator
metadata:
  finalizers:
    - synapseoperator.synapse.sber/finalizer
  name: synapse-operator-test-components
  namespace: project
spec:
  components:
    test-component:
      enabled: true
      namespace: project
      release: synapse1
      values:
        image: >-
          registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0
        instance-1:
          image: >-
            registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0
          tsText: 'Current Human Time:'
        instance-2:
          image: >-
            registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0
          tsText: 'Current Machine Time:'
        tsText: 'Current Date Time:'
    test-component-a:
      enabled: true
      namespace: project
      release: synapse2
      values:
        image: >-
          registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0
        tsText: 'Current Human Time:'
    test-component-b:
      enabled: true
      namespace: project
      release: synapse3
      values:
        image: >-
          registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0
        tsText: 'Current Machine Time:'
  profile: demo
  namespace: asfdfdf
  release: synapse
  version: '0.0'
status:
  componentsStatus:
    test-component:
      status: HEALTHY
    test-component-a:
      status: HEALTHY
    test-component-b:
      status: HEALTHY
  configuration: >-
    {"values":null,"components":{"test-component":{"enabled":true,"release":"test-component-synapse1","namespace":"smdl","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","instance-1":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Human
    Time:"},"instance-2":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Machine Time:"},"tsText":"Current Date
    Time:"}},"test-component-a":{"enabled":true,"release":"test-component-a-synapse2","namespace":"smdl","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Human
    Time:"}},"test-component-b":{"enabled":true,"installorder":10,"release":"test-component-b-synapse3","namespace":"smdl","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Machine Time:"}}},"version":"0.0","release":"synapse","namespace":"asfdfdf"}
  status: HEALTHY

Пример CRD со статусом, содержащим ошибку:

status:
  componentsStatus:
    test-component:
      status: HEALTHY
    test-component-a:
      status: HEALTHY
    test-component-b:
      error: >-
        release test-component-b-test-release failed, and has been uninstalled
        due to atomic being set: context deadline exceeded
      status: ERROR
  configuration: >-
    {"values":null,"components":{"test-component":{"enabled":true,"installorder":3,"release":"test-component-test-release","namespace":"smdl-sy-devops-dev","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","instance-1":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Human
    Time:"},"instance-2":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Machine Time:"},"tsText":"Current Date
    Time:"}},"test-component-a":{"enabled":true,"installorder":1,"release":"test-component-a-test-release","namespace":"smdl-sy-devops-dev","values":{"abs":"sddsd","image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Human Time:    
    "}},"test-component-b":{"enabled":true,"installorder":2,"release":"test-component-b-test-release","namespace":"smdl-sy-devops-dev","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.01213","tsText":"Current
    Machine
    Time:"}}},"version":"0.0","release":"test-release","namespace":"smdl-sy-devops-dev"}
  error: >-
    Error installation/updating component test-component-b

    A detailed description of component installation/updating errors is
    indicated in the component status block
  status: ERROR

Пример CRD со статусом, во время установки компонент:

status:
  componentsStatus:
    test-component:
      status: HEALTHY
    test-component-a:
      status: PROCESSING
  configuration: >-
    {"values":null,"components":{"test-component":{"enabled":true,"installorder":3,"release":"test-component-test-release","namespace":"smdl-sy-devops-dev","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","instance-1":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Human
    Time:"},"instance-2":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Machine Time:"},"tsText":"Current Date
    Time:"}},"test-component-a":{"enabled":true,"installorder":1,"release":"test-component-a-test-release","namespace":"smdl-sy-devops-dev","values":{"abs":"sddsd","image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.0","tsText":"Current
    Human Time:    
    "}},"test-component-b":{"enabled":true,"installorder":2,"release":"test-component-b-test-release","namespace":"smdl-sy-devops-dev","values":{"image":"registry.ru/linux-9-x86_64-ubi:9.3.3-279_20240318.01213","tsText":"Current
    Machine
    Time:"}}},"version":"0.0","release":"test-release","namespace":"smdl-sy-devops-dev"}
  status: PROCESSING