Ручной запуск инсталлятора
Установите компоненты Платформы в следующем порядке:
Чтобы установить Base, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s base \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Base:
-
Подключитесь к любому узлу, кроме деплой-ноды, например, к управляющему:
ssh cpn003. -
Проверьте синхронизацию времени:
chronyc sources.Пример ожидаемого результатаMS Name/IP address Stratum Poll Reach LastRx Last sample===============================================================================^* 10.235.100.1 3 10 377 962 +95us[ +132us] +/- 25ms -
Проверьте установку сервиса 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 -
Подключитесь к любому управляющему узлу:
ssh cpn003. -
Проверьте статус Public HAProxy:
$ systemctl status public_haproxy.serviceПример ожидаемого результатаpublic_haproxy.service - HAProxy Load BalancerLoaded: loaded (/etc/systemd/system/public_haproxy.service; enabled; vendor preset: disa>Drop-In: /etc/systemd/system/public_haproxy.service.d└─limits.confActive: active (running) since Fri 2023-10-27 18:24:20 MSK; 5h 3min ago... -
Проверьте статус Private HAProxy:
$ systemctl status private_haproxy.serviceПример ожидаемого результатаprivate_haproxy.service - HAProxy Load BalancerLoaded: loaded (/etc/systemd/system/private_haproxy.service; enabled; vendor preset: dis>Drop-In: /etc/systemd/system/private_haproxy.service.d└─limits.confActive: active (running) since Fri 2023-10-27 18:34:48 MSK; 4h 53min ago... -
Подключитесь к RS-серверу:
ssh rs1. -
Проверьте статус сервиса gobgpd:
$ systemctl status gobgpdПример ожидаемого результатаgobgpd.service - GoBGP Routing DaemonLoaded: 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... -
Проверьте работу сервиса 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 -
Подключитесь к управляющему узлу:
ssh cpn003. -
Проверьте конфигурационный файл Kubernetes:
$ sudo kubectl config viewПример ожидаемого результатаapiVersion: v1clusters:- cluster:certificate-authority: /etc/kubernetes/pki/ca.crtserver: https://internal.private.infra.devmail.ru:6443name: kubecontexts:- context:cluster: kubeuser: adminname: defaultcurrent-context: defaultkind: Configpreferences: {}users:- name: adminuser:client-certificate: /etc/kubernetes/pki/admin.crtclient-key: /etc/kubernetes/pki/admin.key -
Выведите все поды 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... -
Подключитесь к Logging или Monitoring-серверу:
ssh lm001. -
Проверьте контейнеры OpenSearch:
$ sudo docker ps --format {{.Names}}Пример ожидаемого результатаopensearch_dashboardsopensearch -
Проверьте статус сервиса Apache Kafka на подключенном сервере:
$ systemctl status kafka-<ИМЯ_СЕРВЕРА>Пример ожидаемого результатаkafka-lm001.service - Apache Kafka server kafka-lm001Loaded: 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... -
Выведете список групп читателей в 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 -
Проверьте статус сервиса Logstash:
$ systemctl status logstash-<ИМЯ_СЕРВЕРА>Пример ожидаемого результатаlogstash-lm001.service - Logstash node logstash-lm001Loaded: 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... -
Проверьте статус сервиса 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} -
Подключитесь к любому управляющему узлу:
ssh cpn003. -
Проверьте сервис Apache ZooKeeper:
$ sudo yum install netcat -y$ echo ruok | nc localhost 2181Пример ожидаемого результатаimok
Чтобы установить Ceph, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s ceph \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Ceph:
-
Подключитесь к узлу хранилищ:
ssh csn001 -
Проверьте статусы сервисов 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│ └─...└─... -
Проверьте состояние Ceph:
$ ceph -sПример ожидаемого результатаcluster:id: d1ba1176-f6e1-4af7-8101-b4f51b8af55ehealth: HEALTH_WARNmon is allowing insecure global_id reclaim6 pool(s) have no replicas configuredservices: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 pgsobjects: 22 objects, 4.1 KiBusage: 2.0 GiB used, 698 GiB / 700 GiB availpgs: 320 active+cleanprogress:PG autoscaler decreasing pool 2 PGs from 128 to 32 (0s)[............................]
Чтобы установить Main, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s main \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Main:
-
Зайдите на управляющий узел:
ssh cpn003. -
Проверьте сервис
Memcached.-
Получите список подов сервиса Memcached:
$ sudo kubectl -n memcached-vkcloud get pods -o wide -
Из полученного списка выберите 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...
-
-
Проверьте БД.
-
Получите список всех БД:
$ systemctl | grep mariadb -
Подключитесь к любой БД из списка, используя его как путь к сокету:
$ 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 12896Server version: 10.2.43-MariaDB-log MariaDB ServerCopyright (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)]> -
Выведите состав кластера 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. -
Проверьте статус прокси-сервера БД:
$ systemctl status proxysqlПример ожидаемого результатаproxysql.service - High Performance Advanced Proxy for MySQLLoaded: 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
-
-
Проверьте сервис очередей RabbitMQ.
-
Проверьте количество готовых подов (столбец 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 -
Получите полный список подов 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...
-
-
Из полученного списка выберите один из подов и получите по нему статистику:
$ 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... -
Проверьте сервис RABBIT_PERSISTENT (в случае установки компонента Trove):
$ sudo docker exec rabbit_persistent rabbitmqctl cluster_statusПример ожидаемого результатаCluster status of node rabbit@cpn003 ...BasicsCluster name: trove_rabbit_persistentDisk Nodesrabbit@cpn001rabbit@cpn002rabbit@cpn003Running Nodesrabbit@cpn001rabbit@cpn002rabbit@cpn003 -
Проверьте статус хранилища 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 | |+-----------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ -
Проверьте сервис мониторинга Zabbix.
-
Подключитесь к узлу мониторинга:
ssh lm001. -
Проверьте состояние сервера Zabbix:
$ systemctl status zabbix-serverПример ожидаемого результатаzabbix-server.service - Zabbix ServerLoaded: 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, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s iam \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки IAM:
-
Получите пароль из переменной
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' -
Подключитесь к управляющему узлу:
ssh cpn003. -
Подключитесь к поду 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 -
Введите пароль из переменной
vault_keycloak_password. -
Получите данные о состоянии сервера:
$ /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" ]}} -
Подключитесь к управляющему узлу:
ssh cpn003. -
Проверьте статусы сервисов IAM:
-
Breeze:
$ echo 'box.info.status' | sudo tarantoolctl eval breeze_03Пример ожидаемого результатаconnected to unix/:/var/run/tarantool/breeze_03.control---- running... -
Apex_Breeze:
$ echo 'box.info.status' | sudo tarantoolctl eval apex_breeze_03Пример ожидаемого результатаconnected to unix/:/var/run/tarantool/apex_breeze_03.control---- running... -
Dusk:
echo 'box.info.status' | sudo tarantoolctl eval dusk_03Пример ожидаемого результатаconnected to unix/:/var/run/tarantool/dusk_03.control---- running...
-
-
Просмотрите пользователей:
$ 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, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s core \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки Core:
-
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh(на одном из Controlplane-серверов по пути/root/openrc.sh):ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# yum install python3-openstackclient -y# . ~/openrc.sh -
Проверьте наличие пользователей:
# openstack user listПример ожидаемого результата+----------------------------------+-----------+| ID | Name |+----------------------------------+-----------+| 3dca662a822549e3afd18f7292476e7b | nova || 49c49d96070841c6880b0cd687dbdbfe | neutron || 68ebfe516cdf4302a05d5b2a6105a308 | glance || 6d103a712e7e4fd1a7b173c286473e58 | barbican || 7894971e94e64c32b1c5640de0fae9bd | cinder || cd691f146044472f8e5bb9b4535668e0 | admin || f2ec21c66f3242d29fca8086d41b9843 | placement || f60e5775e18f4b0596db2817a6b85ae8 | katana |+----------------------------------+-----------+ -
Проверьте создание токена для пользователя
admin:# openstack token issueПример ожидаемого результата+------------+-----------------------------------+| Field | Value |+------------+-----------------------------------+| expires | 2023-10-28T16:00:26+0000 || id | gAAAAABl...79Vl-e84RoI6-L4o || project_id | 2a38820cebc1438c8544787374ec3f7d || user_id | cd691f146044472f8e5bb9b4535668e0 |+------------+-----------------------------------+ -
Создайте тестовый секрет:
# 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 |+---------------+------------------------------------------------------------------------------------------+ -
Проверьте, что список типов диска не пустой:
# openstack volume type listПример ожидаемого результата+--------------------------------------+-----------+-----------+| ID | Name | Is Public |+--------------------------------------+-----------+-----------+| 5a4cb7e4-09d1-4719-a61c-99a32db75a51 | high-iops | True || 945dd2a4-de2e-407b-a2bc-4d0a415df7d4 | ceph | True |+--------------------------------------+-----------+-----------+ -
Проверьте, что список правил 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' |+--------------------------------------+-----------+----------+--------------+--------------------------------------------------------------------------------------+ -
Подключитесь к деплой-ноде:
ssh deploy. -
Получите пароль для 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"} -
Подключитесь к управляющему узлу:
ssh cpn003. -
Получите 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 -
Запросите у сервиса Katana статус, подставив первый IP и пароль из вывода выше:
$ curl -u katana:30f9yL70mVeG79u0UJ12 10.220.0.113/statusПример ожидаемого результата{"status": true} -
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh:ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Проверьте наличие гипервизоров:
# 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 |+----+---------------------+-----------------+------------+-------+ -
Проверьте, что список агрегаторов сети не пустой:
# openstack aggregate listПример ожидаемого результата+----+------+-------------------+| ID | Name | Availability Zone |+----+------+-------------------+| 3 | AZ1 | AZ1 |+----+------+-------------------+ -
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh:ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Выведете список всех сетей:
# openstack network listВывод должен быть пустым.
-
Создайте сеть:
# 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 |+---------------------------+--------------------------------------+ -
Выведете список всех сетей. Команда должна вывести список, где будет присутствовать ранее созданная сеть:
# openstack network listПример ожидаемого результата+--------------------------------------+----------+---------+| ID | Name | Subnets |+--------------------------------------+----------+---------+| 102e5536-3dc6-410f-b510-8bd053fe34cb | net-test | |+--------------------------------------+----------+---------+ -
Удалите ранее созданную сеть. Команда должна отработать без ошибок:
# openstack network delete net-test -
Снова выведете список всех сетей:
# openstack network listВывод должен быть пустым.
-
Выведете список всех образов:
# openstack image listВывод должен быть пустым.
-
Создайте тестовый образ:
# 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 |+------------------+---------------------------------------------------------------------------------------------------------------------------------------------+ -
Выведете список всех образов. В списке должен присутствовать ранее созданный образ:
# openstack image listПример ожидаемого результата+--------------------------------------+-------------+--------+| ID | Name | Status |+--------------------------------------+-------------+--------+| 780c0f09-59aa-4415-82bd-764449a02bbf | image-test | queued |+--------------------------------------+-------------+--------+ -
Удалите ранее созданный образ. Команда должна отработать без ошибок:
# openstack image delete image-test -
Выведите список всех образов. В списке не должно быть ранее созданного образа (список должен быть пустым):
# openstack image list
Чтобы установить IaaS, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s iaas \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки IaaS:
-
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh:ssh cpn002. -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Проверьте список сервисов 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 |+----+------------------+-------------+------+---------+-------+----------------------------+ -
Проверьте доступные пулы для выделения ресурсов на создание хранилища:
# 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 |+------------------+--------+---------+------+ -
Проверьте все дополнительные конфигурации:
# 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 |+--------------------------------------+--------------------+-------------------------------------------+ -
Проверьте все доступные зоны:
# openstack loadbalancer availabilityzone listПример ожидаемого результата+------+--------------------------------------+---------+| name | availability_zone_profile_id | enabled |+------+--------------------------------------+---------+| AZ1 | 7fe03e65-ccec-4211-b387-339cd0d018d6 | True |+------+--------------------------------------+---------+ -
Проверьте список балансировщиков нагрузки:
# openstack loadbalancer provider listПример ожидаемого результата+---------+-------------------------------------------------+| name | description |+---------+-------------------------------------------------+| amphora | The Octavia Amphora driver. || octavia | Deprecated alias of the Octavia Amphora driver. |+---------+-------------------------------------------------+ -
Подключитесь к управляющему узлу:
ssh cpn003. -
Получите адрес 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 -
Выполните запрос на 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"/>... -
Получите через деплой-ноду пароль от администратора 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"} -
Подключитесь к управляющему узлу:
ssh cpn003. -
Получите токен, используя ранее полученный пароль в параметре
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 -
Получите адрес price-api и выведите его:
$ PRICE_API=$(sudo netstat -tln | grep -m1 3112 | awk '{print $4}')$ echo $PRICE_APIПример ожидаемого результата10.30.4.4:3112 -
Получите ответ с доступными 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"] -
Выполните команду для проверки сервиса 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>...
Чтобы подготовить кластер к работе, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s postdeploy \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат работы Potsdeploy:
-
Подключитесь к управляющему узлу, на котором находится Bash-скрипт
openrc.sh(на текущий момент он будет скопирован на все Controlplane-ноды):ssh cpn003 -
Переключитесь на пользователя
rootи выполните Bash-скрипт для загрузки в переменные окружения параметров подключения к кластеру:$ sudo -i# . ~/openrc.sh -
Получите список образов виртуальных машин:
# 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. -
Получите список образов виртуальных сетей:
# 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, выполните команду:
$ ../ansible-openstack/tools/box.sh deploy \-s paas \-b ../ansible-openstack \-i vkcloud.yml
Чтобы проверить результат установки PaaS:
-
Проверьте сервис 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 выполните проверку:
-
Получите список эндпоинтов Trove:
# openstack endpoint list --service trove --interface internal -
Убедитесь, что полученный эндпоинт отвечает на запросы:
# 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/"}]}]} -
Убедитесь что список кластеров Magnum не пустой:
# yum install python3-magnumclient -y# magnum cluster-template-listПример ожидаемого результата+--------------------------------------+-------------------------------------------+| uuid | name |+--------------------------------------+-------------------------------------------+| 0e4c2f5b-3caa-4e21-a188-b1d1df1f783d | Kubernetes-almalinux-v1.26.5-mcs.external |+--------------------------------------+-------------------------------------------+ -
Проверьте статистику Magnum:
# magnum stats-listПример ожидаемого результата+----------+-------+| Property | Value |+----------+-------+| clusters | 0 || nodes | 0 |+----------+-------+