VK Private Cloud logo
Помощь
Обновлена 17 июля 2026 г. в 15:55

Ручной запуск инсталлятора

Установите компоненты Платформы в следующем порядке:

  1. Base

  2. Ceph

  3. Main

  4. IAM

  5. Core

  6. IaaS

  7. Postdeploy

  8. PaaS

Base

Установка

Чтобы установить Base, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s base \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки Base:

  1. Подключитесь к любому узлу, кроме деплой-ноды, например, к управляющему: ssh cpn003.

  2. Проверьте синхронизацию времени: chronyc sources.

    Пример ожидаемого результата
    MS Name/IP address         Stratum Poll Reach LastRx Last sample===============================================================================^* 10.235.100.1                  3  10   377   962    +95us[ +132us] +/-   25ms
  3. Проверьте установку сервиса Consul:

    $ consul catalog services
    Пример ожидаемого результата
    barbicanconsuldashboard-metrics-scraper-kubernetes-dashboardelkhaproxykafka-elkkube-dns-kube-systemkube-dns-upstream-kube-systemkube-state-metrics-kube-systemkubelet-cadvisor-metricskubernetes-dashboard-headless-kubernetes-dashboardkubernetes-dashboard-kubernetes-dashboardkubernetes-defaulttrove-rabbit-persistent
  4. Подключитесь к любому управляющему узлу: ssh cpn003.

  5. Проверьте статус Public HAProxy:

    $ systemctl status public_haproxy.service
    Пример ожидаемого результата
    public_haproxy.service - HAProxy Load Balancer     Loaded: loaded (/etc/systemd/system/public_haproxy.service; enabled; vendor preset: disa>    Drop-In: /etc/systemd/system/public_haproxy.service.d             └─limits.conf     Active: active (running) since Fri 2023-10-27 18:24:20 MSK; 5h 3min ago    ...
  6. Проверьте статус Private HAProxy:

    $ systemctl status private_haproxy.service
    Пример ожидаемого результата
    private_haproxy.service - HAProxy Load Balancer     Loaded: loaded (/etc/systemd/system/private_haproxy.service; enabled; vendor preset: dis>    Drop-In: /etc/systemd/system/private_haproxy.service.d             └─limits.conf     Active: active (running) since Fri 2023-10-27 18:34:48 MSK; 4h 53min ago    ...
  7. Подключитесь к RS-серверу: ssh rs1.

  8. Проверьте статус сервиса gobgpd:

    $ systemctl status gobgpd
    Пример ожидаемого результата
    gobgpd.service - GoBGP Routing Daemon     Loaded: loaded (/usr/lib/systemd/system/gobgpd.service; enabled; vendor preset: disabled)     Active: active (running) since Fri 2023-10-27 18:35:27 MSK; 4h 52min ago    ...
  9. Проверьте работу сервиса gobgp:

    $ gobgp neighbor
    Пример ожидаемого результата
    Peer           AS  Up/Down State       |#Received  Accepted10.30.3.12  65433 04:45:00 Establ      |        3         310.30.3.11  65433 04:44:37 Establ      |        3         310.30.3.13  65433 04:42:05 Establ      |        3         310.30.3.112 65433 04:53:49 Establ      |        6         610.30.3.111 65433 04:53:41 Establ      |        6         610.30.3.113 65433 04:53:28 Establ      |        6         610.30.3.22  65431 04:54:13 Establ      |       19        19
  10. Подключитесь к управляющему узлу: ssh cpn003.

  11. Проверьте конфигурационный файл Kubernetes:

    $ sudo kubectl config view
    Пример ожидаемого результата
    apiVersion: v1clusters:- cluster:    certificate-authority: /etc/kubernetes/pki/ca.crt    server: https://internal.private.infra.devmail.ru:6443  name: kubecontexts:- context:    cluster: kube    user: admin  name: defaultcurrent-context: defaultkind: Configpreferences: {}users:- name: admin  user:    client-certificate: /etc/kubernetes/pki/admin.crt    client-key: /etc/kubernetes/pki/admin.key
  12. Выведите все поды Kubernetes:

    $ sudo kubectl get pods -A
    Пример ожидаемого результата (все сервисы в статусе Running и в Ready "1/1")
    NAMESPACE     NAME                                    READY  STATUS   RESTARTS  AGEdefault       consul-sync-catalog-7c996b7f65-kkz2l    1/1    Running  0         4h46mkube-system   calico-kube-controllers-dbdc4b86-drczd  1/1    Running  0         4h47mkube-system   calico-node-2xpqt                       1/1    Running  0         4h47mkube-system   calico-node-ffzn4                       1/1    Running  0         4h47m...
  13. Подключитесь к Logging или Monitoring-серверу: ssh lm001.

  14. Проверьте контейнеры OpenSearch:

    $ sudo docker ps --format {{.Names}}
    Пример ожидаемого результата
    opensearch_dashboardsopensearch
  15. Проверьте статус сервиса Apache Kafka на подключенном сервере:

    $ systemctl status kafka-<ИМЯ_СЕРВЕРА>
    Пример ожидаемого результата
    kafka-lm001.service - Apache Kafka server kafka-lm001     Loaded: loaded (/usr/lib/systemd/system/kafka-lm001.service; enabled; vendor preset: disabled)     Active: active (running) since Fri 2023-10-27 18:54:43 MSK; 4h 39min ago   ...
  16. Выведете список групп читателей в Apache Kafka:

    $ /srv/kafka/kafka-<ИМЯ_СЕРВЕРА>/kafka_2.13-2.6.0/bin/kafka-consumer-groups.sh --bootstrap-server <АДРЕС_СЕРВЕРА_В_MANAGEMENT_СЕТИ>:9092 --list
    Пример ожидаемого результата
    logstash_kube_mainlogstash_proxysqllogstash_haproxylogstash_postgreslogstash_linux_systemlogstash_libvirtdlogstash_auditlogstash_dmesglogstash_iamlogstash_clickhouselogstash_openstack_main
  17. Проверьте статус сервиса Logstash:

    $ systemctl status logstash-<ИМЯ_СЕРВЕРА>
    Пример ожидаемого результата
    logstash-lm001.service - Logstash node logstash-lm001     Loaded: loaded (/usr/lib/systemd/system/logstash-lm001.service; enabled; vendor preset: disabled)     Active: active (running) since Fri 2023-10-27 19:02:50 MSK; 4h 38min ago    ...
  18. Проверьте статус сервиса Logstash:

    $ curl localhost:9600/?pretty
    Пример ожидаемого результата
    {  "host" : "lm001",  "version" : "7.10.2",  "http_address" : "127.0.0.1:9600",  "id" : "236b31eb-23d2-4c12-892e-fa7f2a1d1548",  "name" : "lm001",  "ephemeral_id" : "4f9a6bc6-e20c-4ff2-88da-6763ae0aa985",  "status" : "green",  "snapshot" : false,  "pipeline" : {    "workers" : 8,    "batch_size" : 125,    "batch_delay" : 50  },  "build_date" : "2021-01-13T02:43:06Z",  "build_sha" : "7cebafee7a073fa9d58c97de074064a540d6c317",  "build_snapshot" : false}
  19. Подключитесь к любому управляющему узлу: ssh cpn003.

  20. Проверьте сервис Apache ZooKeeper:

    $ sudo yum install netcat -y$ echo ruok | nc localhost 2181
    Пример ожидаемого результата
    imok

Ceph

Установка

Чтобы установить Ceph, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s ceph \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки Ceph:

  1. Подключитесь к узлу хранилищ: ssh csn001

  2. Проверьте статусы сервисов Ceph:

    $ systemctl list-dependencies ceph.target
    Пример ожидаемого результата
    ceph.target● ├─ceph-crash.service● ├─ceph-mds.target● │ ├─ceph-mds@csn001.service● │ ├─ceph-mon.target● │ │ ├─ceph-mon@csn001.service  │ │   └─...  │   └─...● ├─ceph-mgr.target● │ ├─ceph-mgr@csn001.service● │ ├─ceph-mon.target● │ │ ├─ceph-mon@csn001.service  │ │   └─...  │   └─...● ├─ceph-mon.target● │ ├─ceph-mon@csn001.service  │   └─...● └─ceph-osd.target●   ├─ceph-osd@0.service●   ├─ceph-osd@1.service●   ├─ceph-mon.target●   │ ├─ceph-mon@csn001.service    │   └─...      └─...
  3. Проверьте состояние Ceph:

    $ ceph -s
    Пример ожидаемого результата
    cluster:    id:     d1ba1176-f6e1-4af7-8101-b4f51b8af55e    health: HEALTH_WARN            mon is allowing insecure global_id reclaim            6 pool(s) have no replicas configured  services:    mon: 1 daemons, quorum csn001 (age 3m)    mgr: csn001(active, since 67s)    mds: cephfs:1 {0=csn001=up:active}    osd: 2 osds: 2 up (since 2m), 2 in (since 2m)  data:    pools:   6 pools, 320 pgs    objects: 22 objects, 4.1 KiB    usage:   2.0 GiB used, 698 GiB / 700 GiB avail    pgs:     320 active+clean  progress:    PG autoscaler decreasing pool 2 PGs from 128 to 32 (0s)      [............................]

Main

Установка

Чтобы установить Main, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s main \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки Main:

  1. Зайдите на управляющий узел: ssh cpn003.

  2. Проверьте сервис Memcached.

    1. Получите список подов сервиса Memcached:

      $ sudo kubectl -n memcached-vkcloud get pods -o wide
    2. Из полученного списка выберите IP-адрес любого пода и получите по нему статистику сервиса Memcached:

      $ echo stats | nc <ВЫБРАННЫЙ_IP_АДРЕС> 11211
      Пример ожидаемого результата
      STAT pid 1STAT uptime 11786STAT time 1698451709STAT version 1.5.17STAT libevent 2.1.8-stableSTAT pointer_size 64STAT rusage_user 0.880521STAT rusage_system 0.339415...
  3. Проверьте БД.

    1. Получите список всех БД:

      $ systemctl | grep mariadb
    2. Подключитесь к любой БД из списка, используя его как путь к сокету:

      $ sudo mysql -S /srv/mysql/nova/socket/nova.sock -u root
      Пример ожидаемого результата
      Welcome to the MariaDB monitor.  Commands end with ; or \g.  Your MariaDB connection id is 12896  Server version: 10.2.43-MariaDB-log MariaDB Server  Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.  MariaDB [(none)]>
    3. Выведите состав кластера MariaDB:

      MariaDB [(none)]> show databases;

      В ответ должен вернуться список БД.

      Пример ожидаемого результата
      +--------------------+| Database           |+--------------------+| information_schema || license_billing    || mysql              || nova               || nova_api           || nova_billing       || nova_cell0         || performance_schema || placement          || sys                || test               |+--------------------+11 rows in set (0.002 sec)

      Вернитесь в Bash с помощью комбинации Ctrl+D.

    4. Проверьте статус прокси-сервера БД:

      $ systemctl status proxysql
      Пример ожидаемого результата
      proxysql.service - High Performance Advanced Proxy for MySQL     Loaded: loaded (/etc/systemd/system/proxysql.service; enabled; vendor preset: disabled)     Active: active (running) since Sat 2023-10-28 00:58:16 MSK; 2h 15min ago
  4. Проверьте сервис очередей RabbitMQ.

    1. Проверьте количество готовых подов (столбец READY):

      $ sudo kubectl -n rabbitmq get statefulset
      Пример ожидаемого результата
      NAME                               READY   AGErabbitmq-barbican                  3/3     132mrabbitmq-billing-account-service   3/3     132mrabbitmq-ceilometer                3/3     132mrabbitmq-celery                    3/3     132mrabbitmq-cinder                    3/3     132mrabbitmq-gb                        3/3     132mrabbitmq-katana                    3/3     132mrabbitmq-magnum                    3/3     132mrabbitmq-magnum-rapid              3/3     132mrabbitmq-neutron                   3/3     132mrabbitmq-nova                      3/3     132m
    2. Получите полный список подов RabbitMQ:

      $ sudo kubectl -n rabbitmq get pods
      Пример ожидаемого результата
      NAME                                 READY   STATUS    RESTARTS   AGErabbitmq-barbican-0                  1/1     Running   0          132mrabbitmq-barbican-1                  1/1     Running   0          132mrabbitmq-barbican-2                  1/1     Running   0          131mrabbitmq-billing-account-service-0   1/1     Running   0          132mrabbitmq-billing-account-service-1   1/1     Running   0          132mrabbitmq-billing-account-service-2   1/1     Running   0          131mrabbitmq-ceilometer-0                1/1     Running   0          132mrabbitmq-ceilometer-1                1/1     Running   0          132mrabbitmq-ceilometer-2                1/1     Running   0          131m  ...
  5. Из полученного списка выберите один из подов и получите по нему статистику:

    $ sudo kubectl -n rabbitmq exec <ИМЯ ПОДА> -it -- rabbitmqctl cluster_status
    Пример ожидаемого результата
    warning: the VM is running with native name encoding of latin1 which may cause Elixir to malfunction as it expects utf8. Please ensure your locale is set to UTF-8 (which can be verified by running "locale" in your shell)RABBITMQ_ERLANG_COOKIE env variable support is deprecated and will be REMOVED in a future version. Use the $HOME/.erlang.cookie file or the --erlang-cookie switch instead.Cluster status of node rabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kube ...BasicsCluster name: rabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kubeDisk Nodesrabbit@rabbitmq-barbican-0.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-1.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kubeRunning Nodesrabbit@rabbitmq-barbican-0.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-1.rabbitmq-barbican.rabbitmq.svc.kuberabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kubeVersionsrabbit@rabbitmq-barbican-0.rabbitmq-barbican.rabbitmq.svc.kube: RabbitMQ 3.10.6 on Erlang 23.3.4.8rabbit@rabbitmq-barbican-1.rabbitmq-barbican.rabbitmq.svc.kube: RabbitMQ 3.10.6 on Erlang 23.3.4.8rabbit@rabbitmq-barbican-2.rabbitmq-barbican.rabbitmq.svc.kube: RabbitMQ 3.10.6 on Erlang 23.3.4.8...
  6. Проверьте сервис RABBIT_PERSISTENT (в случае установки компонента Trove):

    $ sudo docker exec rabbit_persistent rabbitmqctl cluster_status
    Пример ожидаемого результата
    Cluster status of node rabbit@cpn003 ...  Basics  Cluster name: trove_rabbit_persistent  Disk Nodes  rabbit@cpn001  rabbit@cpn002  rabbit@cpn003  Running Nodes  rabbit@cpn001  rabbit@cpn002  rabbit@cpn003
  7. Проверьте статус хранилища ETCD:

    $ etcdctl --endpoints=localhost:22379 --write-out=table endpoint status
    Пример ожидаемого результата
    +-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+|    ENDPOINT     |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |+-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+| localhost:22379 | 4c4ac234a21a8a2b |   3.5.0 |   20 kB |     false |      false |         2 |       4973 |               4973 |        |+-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
  8. Проверьте сервис мониторинга Zabbix.

    1. Подключитесь к узлу мониторинга: ssh lm001.

    2. Проверьте состояние сервера Zabbix:

      $ systemctl status zabbix-server
      Пример ожидаемого результата
      zabbix-server.service - Zabbix Server     Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)     Active: active (running) since Sat 2023-10-28 01:09:37 MSK; 2h 12min ago

IAM

Установка

Чтобы установить IAM, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s iam \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки IAM:

  1. Получите пароль из переменной vault_keycloak_password, которая задана в файле ~inventory/vkcloud/group_vars/vkcloud/vault.yml.

    $ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_keycloak_password }}\n\n\"" all[0] | sed 's/\\n/\n/g'
  2. Подключитесь к управляющему узлу: ssh cpn003.

  3. Подключитесь к поду Keycloak:

    $ sudo kubectl -n keycloak-vkcloud exec vk-keycloak-0 -it -- bash$ /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin
  4. Введите пароль из переменной vault_keycloak_password.

  5. Получите данные о состоянии сервера:

    $ /opt/keycloak/bin/kcadm.sh get serverinfo
    Пример ожидаемого результата
    {  "systemInfo" : {    "version" : "20.0.3-SNAPSHOT",    "serverTime" : "Sat Oct 28 14:56:36 MSK 2023",    "uptime" : "0 days, 11 hours, 20 minutes, 49 seconds",    "uptimeMillis" : 40849151,    "javaVersion" : "11.0.17",    "javaVendor" : "RED SOFT",    "javaVm" : "OpenJDK 64-Bit Server VM",    "javaVmVersion" : "11.0.17+8-LTS",    "javaRuntime" : "OpenJDK Runtime Environment",    "javaHome" : "/usr/lib/jvm/java-11-openjdk-11.0.17.0.8-2.el7.x86_64",    "osName" : "Linux",    "osArchitecture" : "amd64",    "osVersion" : "6.1.38-2.el7.3.x86_64",    "fileEncoding" : "UTF-8",    "userName" : "keycloak",    "userDir" : "/opt/keycloak",    "userTimezone" : "Europe/Moscow",    "userLocale" : "us_EN"  },  "memoryInfo" : {    "total" : 402653184,    "totalFormated" : "384 MB",    "used" : 106012432,    "usedFormated" : "101 MB",    "free" : 296640752,    "freePercentage" : 73,    "freeFormated" : "282 MB"  },...    "resourceType" : [ "AUTHENTICATOR_CONFIG", "AUTHORIZATION_POLICY", "AUTHORIZATION_RESOURCE", "AUTHORIZATION_RESOURCE_SERVER", "AUTHORIZATION_SCOPE", "AUTH_EXECUTION", "AUTH_EXECUTION_FLOW", "AUTH_FLOW", "CLIENT", "CLIENT_INITIAL_ACCESS_MODEL", "CLIENT_ROLE", "CLIENT_ROLE_MAPPING", "CLIENT_SCOPE", "CLIENT_SCOPE_CLIENT_MAPPING", "CLIENT_SCOPE_MAPPING", "CLUSTER_NODE", "COMPONENT", "CUSTOM", "GROUP", "GROUP_MEMBERSHIP", "IDENTITY_PROVIDER", "IDENTITY_PROVIDER_MAPPER", "PROTOCOL_MAPPER", "REALM", "REALM_ROLE", "REALM_ROLE_MAPPING", "REALM_SCOPE_MAPPING", "REQUIRED_ACTION", "USER", "USER_FEDERATION_MAPPER", "USER_FEDERATION_PROVIDER", "USER_LOGIN_FAILURE", "USER_SESSION" ]  }}
  6. Подключитесь к управляющему узлу: ssh cpn003.

  7. Проверьте статусы сервисов IAM:

    1. Breeze:

      $ echo 'box.info.status' | sudo tarantoolctl eval breeze_03
      Пример ожидаемого результата
      connected to unix/:/var/run/tarantool/breeze_03.control---- running...
    2. Apex_Breeze:

      $ echo 'box.info.status' | sudo tarantoolctl eval apex_breeze_03
      Пример ожидаемого результата
      connected to unix/:/var/run/tarantool/apex_breeze_03.control  ---  - running  ...
    3. Dusk:

      echo 'box.info.status' | sudo tarantoolctl eval dusk_03
      Пример ожидаемого результата
      connected to unix/:/var/run/tarantool/dusk_03.control  ---  - running  ...
  8. Просмотрите пользователей:

    $ echo 'box.space.users:select()' | sudo tarantoolctl eval breeze_03
    Пример ожидаемого результата
    connected to unix/:/var/run/tarantool/breeze_03.control---- - ['0bc99438b20746f9b562240aae96cc11', 2367983472, 'user01@vk.team', 'users', 1698455064.1979,    1698455064.2732, true, '', 0, {'phone': true, 'email': true}, {'broker': 'vk',      'keycloack_sync': true, 'region': 'RegionOne', 'mfa': {'email': {'time_enabled': 1698455064.2732,          'id': 'd5ed7509-1988-412e-90d3-628df7588636'}}}, true]  - ['3ec52ab514884ec7bb4337364b8c8581', 2529402120, 'iam', 'users', 1698453851.4324,    1698453851.4324, true, '', 0, {'phone': true, 'email': true}, {'broker': 'vk',      'region': 'RegionOne', 'mfa': {}}, null]  - ['56c1f6ae5ce842d28e05678d8b2ac5d4', 3906841504, 'keycloak@vk.team', 'users',    1698455063.9826, 1698455064.0444, true, '', 0, {'phone': true, 'email': true},    {'broker': 'vk', 'keycloack_sync': true, 'region': 'RegionOne', 'mfa': {'email': {          'time_enabled': 1698455064.0444, 'id': '56b6f10d-501c-40e7-8f9e-56b4b0e060e1'}}},    true]  ...

Core

Установка

Чтобы установить Core, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s core \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки Core:

  1. Подключитесь к управляющему узлу, на котором находится Bash-скрипт openrc.sh (на одном из Controlplane-серверов по пути /root/openrc.sh): ssh cpn002.

  2. Переключитесь на пользователя root и выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:

    $ sudo -i# yum install python3-openstackclient -y# . ~/openrc.sh
  3. Проверьте наличие пользователей:

    # openstack user list
    Пример ожидаемого результата
    +----------------------------------+-----------+| ID                               | Name      |+----------------------------------+-----------+| 3dca662a822549e3afd18f7292476e7b | nova      || 49c49d96070841c6880b0cd687dbdbfe | neutron   || 68ebfe516cdf4302a05d5b2a6105a308 | glance    || 6d103a712e7e4fd1a7b173c286473e58 | barbican  || 7894971e94e64c32b1c5640de0fae9bd | cinder    || cd691f146044472f8e5bb9b4535668e0 | admin     || f2ec21c66f3242d29fca8086d41b9843 | placement || f60e5775e18f4b0596db2817a6b85ae8 | katana    |+----------------------------------+-----------+
  4. Проверьте создание токена для пользователя admin:

    # openstack token issue
    Пример ожидаемого результата
    +------------+-----------------------------------+| Field      | Value                             |+------------+-----------------------------------+| expires    | 2023-10-28T16:00:26+0000          || id         | gAAAAABl...79Vl-e84RoI6-L4o       || project_id | 2a38820cebc1438c8544787374ec3f7d  || user_id    | cd691f146044472f8e5bb9b4535668e0  |+------------+-----------------------------------+
  5. Создайте тестовый секрет:

    # openstack secret store
    Пример ожидаемого результата
    +---------------+------------------------------------------------------------------------------------------+| Field         | Value                                                                                    |+---------------+------------------------------------------------------------------------------------------+| Secret href   | https://lk.private.infra.devmail.ru:9311/v1/secrets/56c24d7d-353e-4bc1-9c03-88bc6eb5c5c5 || Name          | None                                                                                     || Created       | 2023-10-28T15:02:08+00:00                                                                || Status        | ACTIVE                                                                                   || Content types | None                                                                                     || Algorithm     | aes                                                                                      || Bit length    | 256                                                                                      || Secret type   | opaque                                                                                   || Mode          | cbc                                                                                      || Expiration    | None                                                                                     |+---------------+------------------------------------------------------------------------------------------+
  6. Проверьте, что список типов диска не пустой:

    # openstack volume type list
    Пример ожидаемого результата
    +--------------------------------------+-----------+-----------+| ID                                   | Name      | Is Public |+--------------------------------------+-----------+-----------+| 5a4cb7e4-09d1-4719-a61c-99a32db75a51 | high-iops | True      || 945dd2a4-de2e-407b-a2bc-4d0a415df7d4 | ceph      | True      |+--------------------------------------+-----------+-----------+
  7. Проверьте, что список правил QoS для сети не пустой:

    # openstack volume qos list
    Пример ожидаемого результата
    +--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+| ID                                   | Name      | Consumer | Associations | Properties                                                                           |+--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+| 4c746341-ab5a-4509-a3e6-20d33c5fbd09 | high-iops | both     | high-iops    | cache_mode='none', read_iops_sec_per_gb='100', ..., write_iops_sec_per_gb_min='1000' || 10df5d11-9536-45e0-a6eb-7a86d44691fb | ceph      | both     | ceph         | cache_mode='none', read_iops_sec_per_gb='30', ..., write_iops_sec_per_gb_min='500'   |+--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+
  8. Подключитесь к деплой-ноде: ssh deploy.

  9. Получите пароль для Katana:

    $ cd ~/inventory/vkcloud/$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_katana.openstack.password }}\n\n\"" all[0] | sed 's/\\n/\n/g'
    Пример ожидаемого результата
    cpn001 | SUCCESS => {    "msg": "30f9yL70mVeG79u0UJ12"}
  10. Подключитесь к управляющему узлу: ssh cpn003.

  11. Получите IP-адрес Katana:

    $ sudo kubectl -n sre-vkcloud get endpoints | grep nginx
    Пример ожидаемого результата
    katana-nginx-headless 10.220.0.113:80,10.220.0.47:80 161m
  12. Запросите у сервиса Katana статус, подставив первый IP и пароль из вывода выше:

    $ curl -u katana:30f9yL70mVeG79u0UJ12 10.220.0.113/status
    Пример ожидаемого результата
    {"status": true}
  13. Подключитесь к управляющему узлу, на котором находится Bash-скрипт openrc.sh: ssh cpn002.

  14. Переключитесь на пользователя root и выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:

    $ sudo -i# . ~/openrc.sh
  15. Проверьте наличие гипервизоров:

    # openstack hypervisor list
    Пример ожидаемого результата
    +----+---------------------+-----------------+------------+-------+| ID | Hypervisor Hostname | Hypervisor Type | Host IP    | State |+----+---------------------+-----------------+------------+-------+|  3 | kcn002              | QEMU            | 10.30.3.15 | down  ||  6 | kcn001              | QEMU            | 10.30.3.14 | down  |+----+---------------------+-----------------+------------+-------+
  16. Проверьте, что список агрегаторов сети не пустой:

    # openstack aggregate list
    Пример ожидаемого результата
    +----+------+-------------------+| ID | Name | Availability Zone |+----+------+-------------------+|  3 | AZ1  | AZ1               |+----+------+-------------------+
  17. Подключитесь к управляющему узлу, на котором находится Bash-скрипт openrc.sh: ssh cpn002.

  18. Переключитесь на пользователя root и выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:

    $ sudo -i# . ~/openrc.sh
  19. Выведете список всех сетей:

    # openstack network list

    Вывод должен быть пустым.

  20. Создайте сеть:

    # openstack network create net-test
    Пример ожидаемого результата
    +---------------------------+--------------------------------------+| Field                     | Value                                |+---------------------------+--------------------------------------+| admin_state_up            | UP                                   || availability_zone_hints   |                                      || availability_zones        |                                      || created_at                | 2023-10-28T15:11:20Z                 || description               |                                      || dns_domain                | None                                 || id                        | 102e5536-3dc6-410f-b510-8bd053fe34cb || ipv4_address_scope        | None                                 || ipv6_address_scope        | None                                 || is_default                | None                                 || is_vlan_transparent       | None                                 || mtu                       | 1400                                 || name                      | net-test                             || port_security_enabled     | True                                 || project_id                | 2a38820cebc1438c8544787374ec3f7d     || provider:network_type     | vxlan                                || provider:physical_network | None                                 || provider:segmentation_id  | 68                                   || qos_policy_id             | None                                 || revision_number           | 4                                    || router:external           | Internal                             || segments                  | None                                 || shared                    | False                                || status                    | ACTIVE                               || subnets                   |                                      || tags                      |                                      || updated_at                | 2023-10-28T15:11:20Z                 |+---------------------------+--------------------------------------+
  21. Выведете список всех сетей. Команда должна вывести список, где будет присутствовать ранее созданная сеть:

    # openstack network list
    Пример ожидаемого результата
    +--------------------------------------+----------+---------+| ID                                   | Name     | Subnets |+--------------------------------------+----------+---------+| 102e5536-3dc6-410f-b510-8bd053fe34cb | net-test |         |+--------------------------------------+----------+---------+
  22. Удалите ранее созданную сеть. Команда должна отработать без ошибок:

    # openstack network delete net-test
  23. Снова выведете список всех сетей:

    # openstack network list

    Вывод должен быть пустым.

  24. Выведете список всех образов:

    # openstack image list

    Вывод должен быть пустым.

  25. Создайте тестовый образ:

    # openstack image create image-test
    Пример ожидаемого результата
    +------------------+---------------------------------------------------------------------------------------------------------------------------------------------+| Field            | Value                                                                                                                                       |+------------------+---------------------------------------------------------------------------------------------------------------------------------------------+| container_format | bare                                                                                                                                        || created_at       | 2023-10-28T15:13:02Z                                                                                                                        || disk_format      | raw                                                                                                                                         || file             | /v2/images/780c0f09-59aa-4415-82bd-764449a02bbf/file                                                                                        || id               | 780c0f09-59aa-4415-82bd-764449a02bbf                                                                                                        || min_disk         | 0                                                                                                                                           || min_ram          | 0                                                                                                                                           || name             | image-test                                                                                                                                  || owner            | 2a38820cebc1438c8544787374ec3f7d                                                                                                            || properties       | locations='[]', owner_specified.openstack.md5='', owner_specified.openstack.object='images/image-test', owner_specified.openstack.sha256='' || protected        | False                                                                                                                                       || schema           | /v2/schemas/image                                                                                                                           || status           | queued                                                                                                                                      || tags             |                                                                                                                                             || updated_at       | 2023-10-28T15:13:02Z                                                                                                                        || visibility       | shared                                                                                                                                      |+------------------+---------------------------------------------------------------------------------------------------------------------------------------------+
  26. Выведете список всех образов. В списке должен присутствовать ранее созданный образ:

    # openstack image list
    Пример ожидаемого результата
    +--------------------------------------+-------------+--------+| ID                                   | Name        | Status |+--------------------------------------+-------------+--------+| 780c0f09-59aa-4415-82bd-764449a02bbf | image-test  | queued |+--------------------------------------+-------------+--------+
  27. Удалите ранее созданный образ. Команда должна отработать без ошибок:

    # openstack image delete image-test
  28. Выведите список всех образов. В списке не должно быть ранее созданного образа (список должен быть пустым):

    # openstack image list

IaaS

Установка

Чтобы установить IaaS, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s iaas \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки IaaS:

  1. Подключитесь к управляющему узлу, на котором находится Bash-скрипт openrc.sh: ssh cpn002.

  2. Переключитесь на пользователя root и выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:

    $ sudo -i# . ~/openrc.sh
  3. Проверьте список сервисов Manila:

    # manila service-list
    Пример ожидаемого результата
    +----+------------------+-------------+------+---------+-------+----------------------------+  | Id | Binary           | Host        | Zone | Status  | State | Updated_at                 |  +----+------------------+-------------+------+---------+-------+----------------------------+  | 3  | manila-scheduler | cpn001      | AZ1  | enabled | up    | 2022-10-29T10:31:03.000000 |  | 6  | manila-scheduler | cpn003      | AZ1  | enabled | up    | 2022-10-29T10:31:12.000000 |  | 9  | manila-scheduler | cpn002      | AZ1  | enabled | up    | 2022-10-29T10:31:03.000000 |  | 12 | manila-share     | cpn001@ceph | AZ1  | enabled | up    | 2022-10-29T10:31:08.000000 |  | 15 | manila-share     | cpn003@ceph | AZ1  | enabled | up    | 2022-10-29T10:31:06.000000 |  | 18 | manila-share     | cpn002@ceph | AZ1  | enabled | up    | 2022-10-29T10:31:04.000000 |  +----+------------------+-------------+------+---------+-------+----------------------------+
  4. Проверьте доступные пулы для выделения ресурсов на создание хранилища:

    # manila pool-list
    Пример ожидаемого результата
    +------------------+--------+---------+------+  | Name             | Host   | Backend | Pool |  +------------------+--------+---------+------+  | cpn001@ceph#ceph | cpn001 | ceph    | ceph |  | cpn002@ceph#ceph | cpn002 | ceph    | ceph |  | cpn003@ceph#ceph | cpn003 | ceph    | ceph |  +------------------+--------+---------+------+
  5. Проверьте все дополнительные конфигурации:

    # manila extra-specs-list
    Пример ожидаемого результата
    +--------------------------------------+--------------------+-------------------------------------------+  | ID                                   | Name               | all_extra_specs                           |  +--------------------------------------+--------------------+-------------------------------------------+  | b1aa5e73-ff63-4d07-8c02-1d4d0d3ad74f | default_share_type | create_share_from_snapshot_support : True |  |                                      |                    | snapshot_support : True                   |  |                                      |                    | driver_handles_share_servers : True       |  +--------------------------------------+--------------------+-------------------------------------------+
  6. Проверьте все доступные зоны:

    # openstack loadbalancer availabilityzone list
    Пример ожидаемого результата
    +------+--------------------------------------+---------+  | name | availability_zone_profile_id         | enabled |  +------+--------------------------------------+---------+  | AZ1  | 7fe03e65-ccec-4211-b387-339cd0d018d6 | True    |  +------+--------------------------------------+---------+
  7. Проверьте список балансировщиков нагрузки:

    # openstack loadbalancer provider list
    Пример ожидаемого результата
    +---------+-------------------------------------------------+  | name    | description                                     |  +---------+-------------------------------------------------+  | amphora | The Octavia Amphora driver.                     |  | octavia | Deprecated alias of the Octavia Amphora driver. |  +---------+-------------------------------------------------+
  8. Подключитесь к управляющему узлу: ssh cpn003.

  9. Получите адрес Front:

    $ frontIP=$(sudo kubectl get -n mcs-front-vkcloud pods -l=app.kubernetes.io/instance=mcs -o=custom-columns='IP:.status.podIP' --no-headers | head -n 1)$ echo $frontIP
    Пример ожидаемого результата
    10.220.0.134
  10. Выполните запрос на Front, чтобы убедиться, что он отвечает на запросы:

    $ curl $frontIP/app
    Пример ожидаемого результата
    <!doctype html><html lang="ru"><head><title>Личный кабинет VK Cloud</title><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="robots" content="noindex,nofollow"/><meta name="viewport" content="width=1280,initial-scale=1"/><meta name="format-detection" content="email=no"/><meta name="theme-color" content="#ffffff"/><meta name="msapplication-TileColor" content="#060540"/><meta name="description" content="Полный доступ ко всем облачным сервисам: Виртуальные серверы, S3 - совместимое хранилище, базы данных, кластеры Kubernetes, большие данные, ML."/><meta name="keywords" content="s3,hotbox,icebox,backup,архив,infra,openstack,cloud,storge,облако,b2b"/><link rel="shortcut icon" type="image/x-icon" href="/private/static/50f958eb/favicon.ico" data-react-helmet="true"/><link rel="icon" type="image/png" sizes="32x32" href="/private/static/50f958eb/favicon-32x32.png" data-react-helmet="true"/><link rel="icon" type="image/png" sizes="16x16" href="/private/static/50f958eb/favicon-16x16.png" data-react-helmet="true"/><link rel="dns-prefetch" href="marketplace-prod.mcs.st"/>...
  11. Получите через деплой-ноду пароль от администратора Keystone:

    $ cd ~/inventory/vkcloud$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\n{{ vault_keystone_bootstrap_password }}\n\n\"" all[0] | sed 's/\\n/\n/g'
    Пример ожидаемого результата
    cpn001 | SUCCESS => {    "msg": "9v05j1f6qJq6VlB94a77"}
  12. Подключитесь к управляющему узлу: ssh cpn003.

  13. Получите токен, используя ранее полученный пароль в параметре password:

    $ curl -s -i -H "Content-Type: application/json" -d '{ "auth": {"identity": {"methods": ["password"], "password": {"user": {"name": "admin", "domain": { "id": "default" }, "password": "9v05j1f6qJq6VlB94a77"}}}, "scope": {"project": {"name": "admin",  "domain": { "id": "default" }}}}}' "http://internal.private.infra.devmail.ru:35357/v3/auth/tokens" | grep x-subject-token:
    Пример ожидаемого результата
    x-subject-token: gAAAAABlP6sorAxPfFHeexmC0kI63KF4e8CexM-hFae3oT11IxUoHLOALeUj11P82HZpfDPlWKywRlXTZN66Opu3wkkDhnTCmP9kQWx_QuZuYx22Mdjj7BftVpPOeW6KkXVDejWf4FUFdj-sRKrYceWIIbiZnWpIg_OHywIieK8P5IUrkxBYzMY
  14. Получите адрес price-api и выведите его:

    $ PRICE_API=$(sudo netstat -tln | grep -m1 3112 | awk '{print $4}')$ echo $PRICE_API
    Пример ожидаемого результата
    10.30.4.4:3112
  15. Получите ответ с доступными api-эндпоинтами, чтобы убедиться, что биллинг отвечает на запросы. Ранее полученный токен подставьте в заголовок X-Auth-Token:

    $ curl -g -i -X GET http://${PRICE_API}/v1/ -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: gAAAAABlP6sorAxPfFHeexmC0kI63KF4e8CexM-hFae3oT11IxUoHLOALeUj11P82HZpfDPlWKywRlXTZN66Opu3wkkDhnTCmP9kQWx_QuZuYx22Mdjj7BftVpPOeW6KkXVDejWf4FUFdj-sRKrYceWIIbiZnWpIg_OHywIieK8P5IUrkxBYzMY" -H "Content-Type: application/json"
    Пример ожидаемого результата — ошибка аутентификации
    HTTP/1.1 200 OKcontent-type: application/jsoncontent-length: 51["resource_types", "units", "calculators", "plans"]
  16. Выполните команду для проверки сервиса Karboii на Kube-мастере:

    $ sudo kubectl -n paas-vkcloud get pods -o wide | grep karboii
    Пример ожидаемого результата
    karboii-karti-api-779bc46456-2ctpb                           1/1     Running   0          3h8m   10.220.0.139   cpn003   <none>           <none>karboii-karti-api-779bc46456-87zfc                           1/1     Running   0          3h8m   10.220.1.238   cpn001   <none>           <none>karboii-karti-checkpoints-trigger-job-7c85fc97c7-j2frn       1/1     Running   0          3h8m   10.220.0.136   cpn003   <none>           <none>karboii-karti-healer-job-9966b64bd-6pnwc                     1/1     Running   0          3h8m   10.220.0.51    cpn002   <none>           <none>karboii-karti-metrics-job-5547c8cc74-bvr64                   1/1     Running   0          3h8m   10.220.0.31    cpn002   <none>           <none>karboii-karti-nova-backup-job-55f6c6ff68-8npz9               1/1     Running   0          3h8m   10.220.0.137   cpn003   <none>           <none>karboii-karti-nova-backups-deleter-v2-job-6d575776f5-v59fn   1/1     Running   0          3h8m   10.220.1.239   cpn001   <none>           <none>karboii-karti-nova-check-restore-job-54b5c88695-4pr2r        1/1     Running   0          3h8m   10.220.1.254   cpn001   <none>           <none>karboii-karti-nova-check-status-job-b557978c9-drxff          1/1     Running   0          3h8m   10.220.0.140   cpn003   <none>           <none>karboii-karti-nova-create-restore-job-5ff446bbd9-hvbrx       1/1     Running   0          3h8m   10.220.0.141   cpn003   <none>           <none>karboii-karti-nova-janitor-job-794b865d65-xj94z              1/1     Running   0          3h8m   10.220.1.248   cpn001   <none>           <none>karboii-karti-task-scheduler-job-b8c57b4cb-zfl5v             1/1     Running   0          3h8m   10.220.0.138   cpn003   <none>           <none>...

Postdeploy

Установка

Чтобы подготовить кластер к работе, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s postdeploy \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат работы Potsdeploy:

  1. Подключитесь к управляющему узлу, на котором находится Bash-скрипт openrc.sh (на текущий момент он будет скопирован на все Controlplane-ноды): ssh cpn003

  2. Переключитесь на пользователя root и выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:

    $ sudo -i# . ~/openrc.sh
  3. Получите список образов виртуальных машин:

    # openstack image list
    Пример ожидаемого результата
    +--------------------------------------+----------------------------------------------+--------+| ID                                   | Name                                         | Status |+--------------------------------------+----------------------------------------------+--------+| bc051721-4666-4b02-8463-8220fec10fb6 | Almalinux-9.2                                | active || 2f059b3d-efef-4d05-a519-fec8576a8bcf | Astra_Linux_SE_1.7.2_Orel_GUI                | active || c365aa77-9f78-4ff6-8eb8-b0ba8849060c | CentOS-7.9-22082022                          | active || 5da2979b-5a56-4811-86de-69ea56c8077b | RO732_MIN-STD                                | active || 2c4f7d9a-38ee-4257-80a1-1b96b8551b02 | Ubuntu-22.04-202208                          | active || b12e8012-f31d-4abd-9692-05ec27513775 | almalinux-9-v1.26.5.202310172030.git3ca8b01a | active || 914d7fdd-9a22-4e5e-94ce-bc275d6299dd | alt-server-10-rev20230208-x86_64             | active || 9515a531-e5ce-4a03-bd8a-400ac9075b3a | amphora-x64-haproxy-202110110805.gitf2ca0ca2 | active || 88e3e8cb-12cf-433a-8c74-e20650c9b40f | cirros-0.5.1-x86_64                          | active |+--------------------------------------+----------------------------------------------+--------+

    В ответ передаётся список образов ВМ. Статусы образов должны быть active.

  4. Получите список образов виртуальных сетей:

    # openstack network list
    Пример ожидаемого результата
    +--------------------------------------+-----------------+--------------------------------------+| ID                                   | Name            | Subnets                              |+--------------------------------------+-----------------+--------------------------------------+| 057312c6-8c95-428a-8e4b-f857447fd250 | external        | 8536c67a-c3f9-4eed-9bfd-a6b7b468b0b3 || 08456b98-a10d-435a-8886-746b7b3e44ac | local-net       | 6f695d13-e30f-40ea-bc12-d8c68ffa9379 || 623db9fe-0618-4cd3-8ca3-290825455301 | local-net       | d64209d7-9e7b-462d-92a9-872012d6e0e8 || 819b2c3c-6e1a-4ede-8f3f-823a76f0ff3f | local-net       | 843810ea-d058-4e44-b770-041feebdfb43 || 95eb2a35-1d97-47f0-a1c5-41e72f9d5b2b | local-net       | 575a7004-4d6a-4c5c-b37c-8f3c42dbf9e0 || f90a1094-44f2-4206-9c79-e50e80432fa2 | lb-mgmt-net-AZ1 | a35c8cd8-e358-42ff-b247-c54d39a8c539 |+--------------------------------------+-----------------+--------------------------------------+

    В ответ передаётся список сетей, в том числе сеть external.

PaaS

Установка

Чтобы установить PaaS, выполните команду:

$ ../ansible-openstack/tools/box.sh deploy \   -s paas \   -b ../ansible-openstack \   -i vkcloud.yml

Проверка

Чтобы проверить результат установки PaaS:

  1. Проверьте сервис nexus-proxy:

    $ sudo kubectl -n nexus-vkcloud get pods
    Пример ожидаемого результата
    NAME                                       READY   STATUS    RESTARTS    AGEnexus-proxy-nexus-proxy-846b67bd5f-hqczw   1/1     Running   0           55m

После запуска Trove выполните проверку:

  1. Получите список эндпоинтов Trove:

    # openstack endpoint list --service trove --interface internal
  2. Убедитесь, что полученный эндпоинт отвечает на запросы:

    # curl <ЭНДПОИНТ_TROVE>
    Пример ожидаемого результата
    {"versions": [{"id": "v1.0", "status": "CURRENT", "updated": "2012-08-01T00:00:00Z", "links": [{"rel": "self", "href": "http://internal.private.infra.devmail.ru:8779/v1.0/"}]}]}
  3. Убедитесь что список кластеров Magnum не пустой:

    # yum install python3-magnumclient -y# magnum cluster-template-list
    Пример ожидаемого результата
    +--------------------------------------+-------------------------------------------+| uuid                                 | name                                      |+--------------------------------------+-------------------------------------------+| 0e4c2f5b-3caa-4e21-a188-b1d1df1f783d | Kubernetes-almalinux-v1.26.5-mcs.external |+--------------------------------------+-------------------------------------------+
  4. Проверьте статистику Magnum:

    # magnum stats-list
    Пример ожидаемого результата
    +----------+-------+| Property | Value |+----------+-------+| clusters | 0     || nodes    | 0     |+----------+-------+