Экспорт конфигурации#

Скрипт configmgr.sh в составе nscli предоставляет возможность экспорта и импорта конфигурации в yaml-файл на jump-хосте, что может быть полезно, если по какой-либо причине кластер потребовалось установить заново.

Такой файл содержит лишь значения, указанные пользователем при помощи nsctl, например, объемы вычислительных мощностей, настройки мониторинга и базы данных. Секреты, комплект приложений, постоянные тома не копируются, однако названия используемых секретов и постоянных томов экспортируются.

Экспорт#

Команда:

cd ~/nscli
./configmgr.sh export \
  --namespace gs-k8s \
  --group gs-cluster \
  --file config.yaml

Вывод:

Конфигурация сохранена

Пример файла:

name: gs-cluster-1
spec:
  appkit:
    path: |-
      appkits/v1
    applib_sha1: |-
      a4078dd40eb0f2a3a227049518b919ea86cf2522
    globalserver_sha1: |-
      3d981e8dc5a45861af06c30dc14b0a0660206b58
    profile_sha1: |-
      0fdb74ca8cab0e5f26488586c80492707b3e99a6
    globalserver_instance: |-
      5
    state: |-
      started
values:
  pod_timezone: |-
    Europe/Moscow
  database_url: |-
    jdbc:postgresql://dbms:5432/db
  database_alias: |-
    pgtest
  db_user_secret_name: |-
    db-user-secret
  app_volume:
    type: |-
      nfs
    spec:
      server: |-
        nfs
      path: |-
        /srv/nfs
resbooks:
  global-scheduler:
    class_name: global_scheduler
    spec:
      is_metric_enabled: |-
        true
      send_metrics_to_external_system: |-
        false
      globalscheduler_xmx: |-
        800M
      containers:
        globalscheduler:
          resources:
            requests:
              memory: |-
                1G
              cpu: |-
                1
            limits:
              memory: |-
                1G
              cpu: |-
                1
        systemagent:
          resources:
            requests:
              memory: |-
                250M
              cpu: |-
                1
            limits:
              memory: |-
                500M
              cpu: |-
                1
    values:
      prometheus_endpoint: |-
        gs-cluster-1-grafana-internal:9090
      loki_endpoint: |-
        gs-cluster-1-grafana-internal:3100
      tempo_endpoint: |-
        gs-cluster-1-grafana-internal:3201
      scheduler_token_secret: |-
        scheduler-token-secret
    is_deploy_templ_overridden: 'false'
  global-server-excl:
    class_name: global_server_excl
    spec:
      is_metric_enabled: |-
        true
      send_metrics_to_external_system: |-
        false
      globalserver_xmx: |-
        3500M
      containers:
        globalserver:
          resources:
            requests:
              memory: |-
                4G
              cpu: |-
                2
            limits:
              memory: |-
                4G
              cpu: |-
                2
        systemagent:
          resources:
            requests:
              memory: |-
                250M
              cpu: |-
                1
            limits:
              memory: |-
                500M
              cpu: |-
                1
      is_debug_enabled: |-
        true
    values:
      prometheus_endpoint: |-
        gs-cluster-1-grafana-internal:9090
      loki_endpoint: |-
        gs-cluster-1-grafana-internal:3100
      tempo_endpoint: |-
        gs-cluster-1-grafana-internal:3201
      external_ip: |-
        10.40.1.100
      admin_user_secret: |-
        gs-admin-auth
      admin_user_secret_type: |-
        kubernetes.io/basic-auth
    is_deploy_templ_overridden: 'false'
global-server-share:
    class_name: global_server_share
    spec:
      is_metric_enabled: |-
        true
      send_metrics_to_external_system: |-
        false
      globalserver_xmx: |-
        3500M
      containers:
        globalserver:
          resources:
            requests:
              memory: |-
                4G
              cpu: |-
                2
            limits:
              memory: |-
                4G
              cpu: |-
                2
        systemagent:
          resources:
            requests:
              memory: |-
                250M
              cpu: |-
                1
            limits:
              memory: |-
                500M
              cpu: |-
                1
    values:
      replicas: |-
        1
      prometheus_endpoint: |-
        gs-cluster-1-grafana-internal:9090
      loki_endpoint: |-
        gs-cluster-1-grafana-internal:3100
      tempo_endpoint: |-
        gs-cluster-1-grafana-internal:3201
      admin_user_secret: |-
        gs-admin-auth
      admin_user_secret_type: |-
        kubernetes.io/basic-auth
    is_deploy_templ_overridden: 'false'
  grafana:
    class_name: grafana
    spec:
      containers:
        grafana:
          resources:
            requests:
              memory: |-
                500M
              cpu: |-
                1
            limits:
              memory: |-
                1Gi
              cpu: |-
                2
    values:
      external_ip: |-
        10.40.1.100
      storage_class: |-
        nfs-storage
      storage_size: |-
        1Gi
      cadvisor_service_account: |-
        prometheus-cadvisor
    is_deploy_templ_overridden: 'false'
  haproxy:
    class_name: haproxy
    spec:
      containers:
        haproxy:
          resources:
            requests:
              memory: |-
                500M
              cpu: |-
                1
            limits:
              memory: |-
                1G
              cpu: |-
                2
    values:
      external_ip: |-
        10.40.1.100
      external_port: |-
        8080
      stat_secret: |-
        secret-haproxy-auth
      tls_secret: |
    is_deploy_templ_overridden: 'false'

Импорт#

Команда:

./namespace.sh create_install_scripts
chmod +x ~/nscli/workspace/install_scripts/gs-cluster-k8s/install.sh
~/nscli/workspace/install_scripts/gs-cluster-k8s/install.sh

Вывод:

Конфигурация импортирована