chore: registry.kube5s.ru → tf-registry.containerk8s.services.ngcloud.ru

- All code/script/.tf defaults replaced
- Docs annotated with  LEGACY
This commit is contained in:
“Naeel”
2026-08-10 11:17:57 +04:00
parent 5f81e4a664
commit 2af2d2af16
44 changed files with 83 additions and 83 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ on:
env: env:
NAMESPACE: nubes NAMESPACE: nubes
NAME: nubes NAME: nubes
DEFAULT_HOST: registry.kube5s.ru DEFAULT_HOST: tf-registry.containerk8s.services.ngcloud.ru
jobs: jobs:
publish: publish:
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-dev/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
version = "3.1.13" version = "3.1.13"
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.1.16" version = "5.1.16"
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-dev/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
version = "3.1.1" version = "3.1.1"
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-dev/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
version = "3.1.13" version = "3.1.13"
} }
} }
@@ -1,7 +1,7 @@
# 2026-07-16 — Успешный тест nested-провайдера (5.1.2) # 2026-07-16 — Успешный тест nested-провайдера (5.1.2)
## Результат ## Результат
PostgreSQL создан на TEST-стенде с nested HCL-блоками. Провайдер 5.1.2, registry `registry.kube5s.ru`. PostgreSQL создан на TEST-стенде с nested HCL-блоками. Провайдер 5.1.2, registry `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`.
## Конфигурация (nubes_postgres.tf) ## Конфигурация (nubes_postgres.tf)
```hcl ```hcl
@@ -65,5 +65,5 @@ nubes_s3bucket.bukka0
5.1.2 (test), 2.1.0 (prod), 3.1.0 (dev) 5.1.2 (test), 2.1.0 (prod), 3.1.0 (dev)
## Registry ## Registry
`registry.kube5s.ru` (kube5s.ru DNS → ingress 185.247.187.151) `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` (kube5s.ru DNS → ingress 185.247.187.151)
Сертификат: `registry-kube5s-tls` (Let's Encrypt) Сертификат: `registry-kube5s-tls` (Let's Encrypt)
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes/nubes"
version = "2.1.26" version = "2.1.26"
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes/nubes"
version = "2.1.12" version = "2.1.12"
} }
} }
+1 -1
View File
@@ -2,7 +2,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes/nubes"
version = "2.1.10" version = "2.1.10"
} }
} }
+1 -1
View File
@@ -25,7 +25,7 @@ S3 environment:
- `S3_SECRET_KEY` - `S3_SECRET_KEY`
Provider naming defaults: Provider naming defaults:
- `REGISTRY_HOSTNAME`: `registry.kube5s.ru` - `REGISTRY_HOSTNAME`: `tf-registry.containerk8s.services.ngcloud.ru`
- `NAMESPACE`: `nubes` - `NAMESPACE`: `nubes`
- `NAME`: `nubes` - `NAME`: `nubes`
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.1.16" version = "5.1.16"
} }
} }
+1 -1
View File
@@ -7,7 +7,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" # реестр провайдера (test) source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes" # реестр провайдера (test)
version = "5.1.16" # версия провайдера Nubes version = "5.1.16" # версия провайдера Nubes
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.0.61" version = "5.0.61"
} }
} }
+1 -1
View File
@@ -40,7 +40,7 @@ terraform destroy
## Провайдер ## Провайдер
- **Источник**: `registry.kube5s.ru/nubes-test/nubes` - **Источник**: `tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes`
- **Версия**: `5.0.57` - **Версия**: `5.0.57`
- **API**: `https://lk-api-gateway-test.ngcloud.ru/api/v1/svc` - **API**: `https://lk-api-gateway-test.ngcloud.ru/api/v1/svc`
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.0.64" version = "5.0.64"
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.1.7" version = "5.1.7"
} }
} }
+2 -2
View File
@@ -36,6 +36,6 @@ terraform destroy
## Провайдер ## Провайдер
- **Источник**: `registry.kube5s.ru/nubes-test/nubes` - **Источник**: `tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes`
- **Версия**: `5.0.75` - **Версия**: `5.0.75`
- **Registry**: `https://registry.kube5s.ru` - **Registry**: `https://tf-registry.containerk8s.services.ngcloud.ru`
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.0.64" version = "5.0.64"
} }
} }
+1 -1
View File
@@ -1,7 +1,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-test/nubes"
version = "5.0.68" version = "5.0.68"
} }
} }
+1 -1
View File
@@ -27,7 +27,7 @@ func main() {
// ⛔ LEGACY DEFAULT (index.cfm) — переопределяется через NUBES_API_ENDPOINT в profile.env. // ⛔ LEGACY DEFAULT (index.cfm) — переопределяется через NUBES_API_ENDPOINT в profile.env.
// Никогда не использовать deck-api.ngcloud.ru напрямую. // Никогда не использовать deck-api.ngcloud.ru напрямую.
apiEndpointFlag := flag.String("api-endpoint", "https://lk-api-gateway.ngcloud.ru/api/v1/svc", "API endpoint for example block") apiEndpointFlag := flag.String("api-endpoint", "https://lk-api-gateway.ngcloud.ru/api/v1/svc", "API endpoint for example block")
providerSourceFlag := flag.String("provider-source", "registry.kube5s.ru/nubes-dev/nubes", "Provider source for example block") providerSourceFlag := flag.String("provider-source", "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes", "Provider source for example block")
opsFlag := flag.Bool("ops", false, "Generate per-service operations docs (resources_ops_yaml → docs/.../operations)") opsFlag := flag.Bool("ops", false, "Generate per-service operations docs (resources_ops_yaml → docs/.../operations)")
flag.Parse() flag.Parse()
+3 -3
View File
@@ -847,7 +847,7 @@ $ ls -lh terraform-provider-nubes
### 14.1 Проблемы "Последней мили" ### 14.1 Проблемы "Последней мили"
После настройки SSL и Ingress возникли сложности с установкой провайдера командой `terraform init`: После настройки SSL и Ingress возникли сложности с установкой провайдера командой `terraform init`:
1. **Checksum Mismatch**: Пересборка кода провайдера меняла хэш бинарника, требуя обновления файла `SHA256SUMS`. 1. **Checksum Mismatch**: Пересборка кода провайдера меняла хэш бинарника, требуя обновления файла `SHA256SUMS`.
2. **S3 Signature Mismatch**: Registry Server выдавал клиенту (Terraform) прямые Presigned URL на S3. Terraform пытался скачать файл, обращаясь к `registry.kube5s.ru`, но подпись была сгенерирована для внутреннего хоста. Это приводило к ошибкам 403 Forbidden. 2. **S3 Signature Mismatch**: Registry Server выдавал клиенту (Terraform) прямые Presigned URL на S3. Terraform пытался скачать файл, обращаясь к `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`, но подпись была сгенерирована для внутреннего хоста. Это приводило к ошибкам 403 Forbidden.
3. **GPG Verification Failure**: Terraform (современные версии) требует обязательной подписи бинарных файлов GPG ключом. Без этого установка прерывалась с ошибкой `authentication signature from unknown issuer`. 3. **GPG Verification Failure**: Terraform (современные версии) требует обязательной подписи бинарных файлов GPG ключом. Без этого установка прерывалась с ошибкой `authentication signature from unknown issuer`.
### 14.2 Комплексное решение ### 14.2 Комплексное решение
@@ -866,9 +866,9 @@ Terraform Registry Protocol требует передачи публичных
3. **Критический шаг**: Публичный ключ GPG (ASCII Armor) был "зашит" прямо в исходный код Registry Server (`main.go`). Теперь сервер при отдаче ссылки на скачивание также отдает ключ, которым клиент может проверить подпись. 3. **Критический шаг**: Публичный ключ GPG (ASCII Armor) был "зашит" прямо в исходный код Registry Server (`main.go`). Теперь сервер при отдаче ссылки на скачивание также отдает ключ, которым клиент может проверить подпись.
### 14.3 Итог ### 14.3 Итог
Провайдер `registry.kube5s.ru/nubes/nubes` версии `1.0.0` успешно инициализируется! Провайдер `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes` версии `1.0.0` успешно инициализируется!
``` ```
Installed registry.kube5s.ru/nubes/nubes v1.0.0 (self-signed, key ID FFE0F4D723F14BCA) Installed registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes v1.0.0 (self-signed, key ID FFE0F4D723F14BCA)
Terraform has been successfully initialized! Terraform has been successfully initialized!
``` ```
Это полностью закрывает вопрос доставки провайдера (Provider Delivery) и позволяет переходить к полноценному использованию. Это полностью закрывает вопрос доставки провайдера (Provider Delivery) и позволяет переходить к полноценному использованию.
@@ -5,7 +5,7 @@
## 1. Проблема (Контекст) ## 1. Проблема (Контекст)
При попытке выполнить `terraform init` клиент получал ошибку проверки сигнатуры. При попытке выполнить `terraform init` клиент получал ошибку проверки сигнатуры.
**Диагностика показала:** **Диагностика показала:**
* Terraform Registry Server (на `registry.kube5s.ru`) в своем коде (`main.go`) отдавал клиентам публичный GPG ключ с ID `3534B7A1E185F2C1`. * Terraform Registry Server (на `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`) в своем коде (`main.go`) отдавал клиентам публичный GPG ключ с ID `3534B7A1E185F2C1`.
* Приватный ключ для этого ID отсутствовал в окружении, поэтому новые сборки провайдера невозможно было подписать так, чтобы они прошли проверку этим ключом. * Приватный ключ для этого ID отсутствовал в окружении, поэтому новые сборки провайдера невозможно было подписать так, чтобы они прошли проверку этим ключом.
* Реестр был "рассинхронизирован" с артефактами. * Реестр был "рассинхронизирован" с артефактами.
@@ -63,7 +63,7 @@ gpg --batch --generate-key gpg-gen-key.conf
``` ```
### Шаг 4: Публикация в S3 ### Шаг 4: Публикация в S3
Загружены три обязательных файла в структуру директорий реестра (`registry.kube5s.ru/nubes/nubes/1.0.0/`): Загружены три обязательных файла в структуру директорий реестра (`registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes/1.0.0/`):
1. Сам архив: `terraform-provider-nubes_1.0.0_linux_amd64.zip` 1. Сам архив: `terraform-provider-nubes_1.0.0_linux_amd64.zip`
2. Файл сумм: `terraform-provider-nubes_1.0.0_SHA256SUMS` 2. Файл сумм: `terraform-provider-nubes_1.0.0_SHA256SUMS`
3. Подпись сумм: `terraform-provider-nubes_1.0.0_SHA256SUMS.sig` 3. Подпись сумм: `terraform-provider-nubes_1.0.0_SHA256SUMS.sig`
@@ -77,13 +77,13 @@ gpg --batch --generate-key gpg-gen-key.conf
```hcl ```hcl
provider "nubes" { provider "nubes" {
source = "registry.kube5s.ru/nubes/nubes" source = "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes"
version = "1.0.0" version = "1.0.0"
} }
``` ```
Лог `terraform init`: Лог `terraform init`:
> Installed registry.kube5s.ru/nubes/nubes v1.0.0 (self-signed, key ID BC2B32E138B12582) > Installed registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes v1.0.0 (self-signed, key ID BC2B32E138B12582)
### Функциональное тестирование ### Функциональное тестирование
Был проведен полный цикл создания ресурсов через скачанный провайдер: Был проведен полный цикл создания ресурсов через скачанный провайдер:
@@ -26,7 +26,7 @@
- Published provider 2.0.6 to registry S3 via devops/03_build_and_upload_provider.sh. - Published provider 2.0.6 to registry S3 via devops/03_build_and_upload_provider.sh.
## Terraform test_dummy ## Terraform test_dummy
- terraform init -upgrade pulled registry.kube5s.ru/nubes/nubes v2.0.6. - terraform init -upgrade pulled registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes v2.0.6.
- terraform plan: 2 changes (nubes_postgres.db2, nubes_lucee.app1) with Vault TLS handshake timeouts. - terraform plan: 2 changes (nubes_postgres.db2, nubes_lucee.app1) with Vault TLS handshake timeouts.
- terraform apply failed: API error 408 during modify (failed to set param 267). - terraform apply failed: API error 408 during modify (failed to set param 267).
+2 -2
View File
@@ -24,7 +24,7 @@
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes/nubes" source = "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes"
version = "2.1.23" # Поставьте нужную вам версию провайдера version = "2.1.23" # Поставьте нужную вам версию провайдера
} }
} }
@@ -249,7 +249,7 @@ resource "nubes_nodejs" "app3" {
Ниже полный пример `resources.tf` для RabbitMQ + Lucee UI + NodeJS воркера. Ниже полный пример `resources.tf` для RabbitMQ + Lucee UI + NodeJS воркера.
Комментарий: UI Lucee отправляет CRUD‑запросы в RabbitMQ, а применение изменений в Postgres выполняет отдельный воркер на NodeJS. Комментарий: UI Lucee отправляет CRUD‑запросы в RabbitMQ, а применение изменений в Postgres выполняет отдельный воркер на NodeJS.
Сервис Postgres должен быть запущен заранее. В данном примере используется Postgres из раздела https://registry.kube5s.ru/docs/nubes/nubes/2.1.7/30_registry/guides/getting-started/#lucee-postgress Сервис Postgres должен быть запущен заранее. В данном примере используется Postgres из раздела https://registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/docs/nubes/nubes/2.1.7/30_registry/guides/getting-started/#lucee-postgress
```hcl title="resources.tf" ```hcl title="resources.tf"
# RabbitMQ кластер для демо. # RabbitMQ кластер для демо.
+2 -2
View File
@@ -22,7 +22,7 @@
### 3.1. Переменные Окружения (ENV) ### 3.1. Переменные Окружения (ENV)
* **`REGISTRY_HOSTNAME`**: Ключевая переменная. * **`REGISTRY_HOSTNAME`**: Ключевая переменная.
* Где задается: `Deployment` (operator & registry-server). * Где задается: `Deployment` (operator & registry-server).
* Значение по умолчанию: `registry.kube5s.ru`. * Значение по умолчанию: `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`.
* Влияние: * Влияние:
* **Operator**: Передает это значение в Job. * **Operator**: Передает это значение в Job.
* **Job**: Использует как часть пути в S3 (`bucket/HOSTNAME/...`). * **Job**: Использует как часть пути в S3 (`bucket/HOSTNAME/...`).
@@ -32,7 +32,7 @@
### 3.2. Структура S3 ### 3.2. Структура S3
Бакет: `terraform-providers` Бакет: `terraform-providers`
Схема пути: `{hostname}/{namespace}/{provider_name}/{version}/{file}` Схема пути: `{hostname}/{namespace}/{provider_name}/{version}/{file}`
Пример: `registry.kube5s.ru/hashicorp/scaffolding/0.0.1/terraform-provider-scaffolding_0.0.1_linux_amd64.zip` Пример: `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/hashicorp/scaffolding/0.0.1/terraform-provider-scaffolding_0.0.1_linux_amd64.zip`
### 3.3. RBAC (Security) ### 3.3. RBAC (Security)
* Оператор работает от имени SA `terraform-operator`. * Оператор работает от имени SA `terraform-operator`.
+3 -3
View File
@@ -79,11 +79,11 @@
- `S3` (Storage) - `S3` (Storage)
- `terraform-operator` (Controller) - `terraform-operator` (Controller)
- `registry-server` (API) - `registry-server` (API)
- Настроен Ingress на домен `registry.kube5s.ru`. - Настроен Ingress на домен `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`.
- Проведен успешный тестовый прогон: - Проведен успешный тестовый прогон:
- CR `scaffolding-v0-0-1` создан. - CR `scaffolding-v0-0-1` создан.
- Job `build-scaffolding-v0-0-1` успешно отработал. - Job `build-scaffolding-v0-0-1` успешно отработал.
- Артефакты появились в S3 по корректному пути: `/data/terraform-providers/registry.kube5s.ru/hashicorp/scaffolding/0.0.1/`. - Артефакты появились в S3 по корректному пути: `/data/terraform-providers/registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/hashicorp/scaffolding/0.0.1/`.
## 5. Как использовать ## 5. Как использовать
@@ -93,7 +93,7 @@
terraform { terraform {
required_providers { required_providers {
scaffolding = { scaffolding = {
source = "registry.kube5s.ru/hashicorp/scaffolding" source = "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/hashicorp/scaffolding"
version = "0.0.1" version = "0.0.1"
} }
} }
+1 -1
View File
@@ -65,4 +65,4 @@ gpgKey := GPGPublicKey{
## Результат ## Результат
Команда `terraform init` успешно прошла проверку подписи и установила провайдер: Команда `terraform init` успешно прошла проверку подписи и установила провайдер:
> Installed registry.kube5s.ru/nubes/nubes v1.0.0 (self-signed, key ID FFE0F4D723F14BCA) > Installed registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes v1.0.0 (self-signed, key ID FFE0F4D723F14BCA)
@@ -1,8 +1,8 @@
# 03. Миграция на registry.kube5s.ru и Hot-Patch Registry Server # 03. Миграция на registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> и Hot-Patch Registry Server
**Дата**: 23 января 2026 **Дата**: 23 января 2026
**Статус**: Успешно **Статус**: Успешно
**Задача**: Перевести Terraform Registry с домена `terrareg.kube5s.ru` на `registry.kube5s.ru` и заставить работать `terraform init` в новом кластере без доступа к Docker Registry. **Задача**: Перевести Terraform Registry с домена `terrareg.kube5s.ru` на `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` и заставить работать `terraform init` в новом кластере без доступа к Docker Registry.
--- ---
@@ -19,7 +19,7 @@
### Этап 1: Обновление манифестов ### Этап 1: Обновление манифестов
С помощью `sed` и ручных правок заменены все вхождения домена. С помощью `sed` и ручных правок заменены все вхождения домена.
- Обновлены Ingress, Deployment (env vars), Build Script. - Обновлены Ingress, Deployment (env vars), Build Script.
- Ingress настроен на `registry.kube5s.ru` с использованием `cert-manager` (LetsEncrypt). - Ingress настроен на `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` с использованием `cert-manager` (LetsEncrypt).
### Этап 2: Проблема "Unknown Issuer" ### Этап 2: Проблема "Unknown Issuer"
При попытке `terraform init` возникла ошибка: При попытке `terraform init` возникла ошибка:
@@ -37,7 +37,7 @@
| Ошибка | Причина | Решение | | Ошибка | Причина | Решение |
| :--- | :--- | :--- | | :--- | :--- | :--- |
| `CrashLoopBackOff` | Бинарник в образе всё еще ожидал старые ENV | Массовая замена через `sed` и `replace_string`, пересборка образа. | | `CrashLoopBackOff` | Бинарник в образе всё еще ожидал старые ENV | Массовая замена через `sed` и `replace_string`, пересборка образа. |
| 404 на страницах документации | `docs.go` искал файлы по ключу `registry.kube5s.ru/docs/...` | Исправлен `docsObjectKey`: теперь префикс `docs/` фиксирован. | | 404 на страницах документации | `docs.go` искал файлы по ключу `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/docs/...` | Исправлен `docsObjectKey`: теперь префикс `docs/` фиксирован. |
| Громкие предупреждения MkDocs | Ссылки на несуществующие файлы в `nav` | Очистка `mkdocs.yml` от лишних ссылок и стабов. | | Громкие предупреждения MkDocs | Ссылки на несуществующие файлы в `nav` | Очистка `mkdocs.yml` от лишних ссылок и стабов. |
## 5. Итог ## 5. Итог
@@ -57,8 +57,8 @@ Date: 2026-02-27
- Bump version to 5.0.1 - Bump version to 5.0.1
## Build and Publish Results ## Build and Publish Results
- Provider build/upload (5.0.1): success for linux/windows/darwin; GPG signed; uploaded to S3 path registry.kube5s.ru/nubes/nubes/5.0.1/. - Provider build/upload (5.0.1): success for linux/windows/darwin; GPG signed; uploaded to S3 path registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes/5.0.1/.
- Docs publish (5.0.1): success; mkdocs warnings about pages not in nav (expected). Published to https://registry.kube5s.ru/docs/nubes/nubes/5.0.1/. - Docs publish (5.0.1): success; mkdocs warnings about pages not in nav (expected). Published to https://registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/docs/nubes/nubes/5.0.1/.
## Notes and Observations ## Notes and Observations
- Initial build attempt for 2.1.12 failed due to missing resources_yaml package embed; resolved by adding resources_yaml/embed.go. - Initial build attempt for 2.1.12 failed due to missing resources_yaml package embed; resolved by adding resources_yaml/embed.go.
@@ -85,7 +85,7 @@
│ 4. Подписывает GPG (secrets/private_key.asc) │ │ 4. Подписывает GPG (secrets/private_key.asc) │
│ 5. Загружает в S3 (s3.msk-1.ngcloud.ru) │ │ 5. Загружает в S3 (s3.msk-1.ngcloud.ru) │
│ Путь: {hostname}/{namespace}/{name}/{version}/ │ │ Путь: {hostname}/{namespace}/{name}/{version}/ │
│ Пример: registry.kube5s.ru/nubes/nubes/5.0.51/ │ │ Пример: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes/5.0.51/ │
└─────────────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────────────┘
@@ -121,7 +121,7 @@ devops/profiles/
### Universal Rebuild (`universal_rebuild/`) ### Universal Rebuild (`universal_rebuild/`)
- **50+ ресурсов**, **полностью сгенерированы** - **50+ ресурсов**, **полностью сгенерированы**
- 3 слоя: `internal/core/` (универсальный клиент) → `internal/resources_core/` (CRUD-логика) → `internal/resources_gen/` (сгенерированные ресурсы) - 3 слоя: `internal/core/` (универсальный клиент) → `internal/resources_core/` (CRUD-логика) → `internal/resources_gen/` (сгенерированные ресурсы)
- Registry: `registry.kube5s.ru/nubes/nubes` - Registry: `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes`
- Версия: 5.0.51 - Версия: 5.0.51
### Почему два? ### Почему два?
+1 -1
View File
@@ -1,7 +1,7 @@
# Резюме — tf_provider документация # Резюме — tf_provider документация
## Сайты ## Сайты
- 5.1.2 (рабочий): https://registry.kube5s.ru/docs/nubes-test/nubes/5.1.2/ - 5.1.2 (рабочий): https://registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/docs/nubes-test/nubes/5.1.2/
- 5.2.0 (мусор): удалить - 5.2.0 (мусор): удалить
## Генератор ## Генератор
+3 -3
View File
@@ -5,7 +5,7 @@
## Контекст ## Контекст
- Репозиторий: /home/naeel/terra - Репозиторий: /home/naeel/terra
- Генератор провайдера: /home/naeel/terra/nubes_provider_gen - Генератор провайдера: /home/naeel/terra/nubes_provider_gen
- Адрес провайдера (актуально): registry.kube5s.ru/nubes/nubes - Адрес провайдера (актуально): registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes
- Registry S3 bucket: terraform-registry (endpoint s3.msk-1.ngcloud.ru) - Registry S3 bucket: terraform-registry (endpoint s3.msk-1.ngcloud.ru)
- Dev override: /home/naeel/terra/test_persistent/dev_override.tfrc - Dev override: /home/naeel/terra/test_persistent/dev_override.tfrc
@@ -17,7 +17,7 @@
- /home/naeel/terra/test_persistent/main.tf - /home/naeel/terra/test_persistent/main.tf
- Добавлен ресурс nubes_vm.test_vm (использует vapp_uid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, образ Ubuntu_22-20G). - Добавлен ресурс nubes_vm.test_vm (использует vapp_uid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, образ Ubuntu_22-20G).
3) **Провайдер v2.0.0 собран и загружен в registry**: 3) **Провайдер v2.0.0 собран и загружен в registry**:
- Артефакты в S3 по пути: s3://terraform-registry/registry.kube5s.ru/nubes/nubes/2.0.0/ - Артефакты в S3 по пути: s3://terraform-registry/registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes/2.0.0/
- Файлы: terraform-provider-nubes_2.0.0_linux_amd64.zip, _SHA256SUMS, _SHA256SUMS.sig - Файлы: terraform-provider-nubes_2.0.0_linux_amd64.zip, _SHA256SUMS, _SHA256SUMS.sig
4) **GPG ключ в наличии**: 4) **GPG ключ в наличии**:
- Key ID: FFE0F4D723F14BCA - Key ID: FFE0F4D723F14BCA
@@ -27,7 +27,7 @@
- vapp_uid найден в debug_vm/terraform.tfvars - vapp_uid найден в debug_vm/terraform.tfvars
## Текущие проблемы ## Текущие проблемы
- Terraform init без dev_override лезет в registry.kube5s.ru и может падать. - Terraform init без dev_override лезет в registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> и может падать.
- Для apply нужны актуальные токены (401 были частые). - Для apply нужны актуальные токены (401 были частые).
## План действий (VM) ## План действий (VM)
+1 -1
View File
@@ -33,7 +33,7 @@
| Компонент | Каталог | Версия | Registry Address | Статус | | Компонент | Каталог | Версия | Registry Address | Статус |
|-----------|---------|--------|------------------|--------| |-----------|---------|--------|------------------|--------|
| **Legacy Provider** | `/internal/`, `/main.go` | dev | `registry.terraform.io/nubes/nubes` | Ручной код, 13 ресурсов | | **Legacy Provider** | `/internal/`, `/main.go` | dev | `registry.terraform.io/nubes/nubes` | Ручной код, 13 ресурсов |
| **Universal Provider** | `/universal_rebuild/` | 5.0.18 | `registry.kube5s.ru/nubes/nubes` | Генерируемый, ~50 ресурсов | | **Universal Provider** | `/universal_rebuild/` | 5.0.18 | `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes/nubes` | Генерируемый, ~50 ресурсов |
### Архитектурные слои ### Архитектурные слои
+1 -1
View File
@@ -24,7 +24,7 @@ LLM (gpt-oss-120b) ─── улучшает описания: читаемый
mkdocs-material ─────── собирает статический сайт mkdocs-material ─────── собирает статический сайт
S3 (terraform-registry) ── хостинг через registry.kube5s.ru S3 (terraform-registry) ── хостинг через registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->
``` ```
## Структура страниц (на каждый сервис) ## Структура страниц (на каждый сервис)
+10 -10
View File
@@ -14,7 +14,7 @@
## Контекст ## Контекст
Terraform-провайдер Nubes Cloud сейчас работает на self-managed K8s (registry.kube5s.ru). Terraform-провайдер Nubes Cloud сейчас работает на self-managed K8s (registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->).
Цель: подготовить инфраструктуру к передаче в Nubes Managed Kubernetes под управление их DevOps. Цель: подготовить инфраструктуру к передаче в Nubes Managed Kubernetes под управление их DevOps.
Nubes (nubes.ru) — российский cloud-провайдер, собственный DC Tier III (Москва), имеет Managed K8s, Harbor, S3. Nubes (nubes.ru) — российский cloud-провайдер, собственный DC Tier III (Москва), имеет Managed K8s, Harbor, S3.
@@ -71,7 +71,7 @@ charts/
**Требования к `values.yaml`:** **Требования к `values.yaml`:**
```yaml ```yaml
global: global:
registryHostname: "registry.kube5s.ru" # Переопределяется при миграции registryHostname: "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->" # Переопределяется при миграции
namespace: "terraform-registry" namespace: "terraform-registry"
registry: registry:
@@ -111,7 +111,7 @@ operator:
ingress: ingress:
enabled: true enabled: true
className: "nginx" className: "nginx"
host: "registry.kube5s.ru" # Переопределяется host: "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->" # Переопределяется
tls: tls:
enabled: true enabled: true
issuer: "letsencrypt-prod" # НЕ ТРОГАТЬ LetsEncrypt issuer! issuer: "letsencrypt-prod" # НЕ ТРОГАТЬ LetsEncrypt issuer!
@@ -139,7 +139,7 @@ networkPolicy:
**Требования к `values-dev.yaml`:** **Требования к `values-dev.yaml`:**
```yaml ```yaml
global: global:
registryHostname: "registry.kube5s.ru" registryHostname: "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->"
registry: registry:
replicas: 1 replicas: 1
pdb: pdb:
@@ -499,20 +499,20 @@ spec:
**Это НЕ код — это инструкция для DevOps. Записать в `docs/ops/DOMAIN_MIGRATION.md`:** **Это НЕ код — это инструкция для DevOps. Записать в `docs/ops/DOMAIN_MIGRATION.md`:**
```markdown ```markdown
# Миграция домена registry.kube5s.ru → registry.nubes.ru # Миграция домена registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> → registry.nubes.ru
## Фаза 1: Dual-domain (параллельная работа) ## Фаза 1: Dual-domain (параллельная работа)
1. Настроить Ingress с двумя hosts: registry.kube5s.ru + registry.nubes.ru 1. Настроить Ingress с двумя hosts: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> + registry.nubes.ru
2. Оба домена указывают на один Registry Server 2. Оба домена указывают на один Registry Server
3. Обновить provider main.go: Address → registry.nubes.ru 3. Обновить provider main.go: Address → registry.nubes.ru
4. Старый адрес registry.kube5s.ru продолжает работать 4. Старый адрес registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> продолжает работать
## Фаза 2: Миграция клиентов ## Фаза 2: Миграция клиентов
1. Документировать новый registry address для пользователей 1. Документировать новый registry address для пользователей
2. .terraformrc mirror config для переходного периода: 2. .terraformrc mirror config для переходного периода:
provider_installation { provider_installation {
direct { direct {
exclude = ["registry.kube5s.ru/*/*"] exclude = ["registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/*/*"]
} }
network_mirror { network_mirror {
url = "https://registry.nubes.ru/v1/providers/" url = "https://registry.nubes.ru/v1/providers/"
@@ -520,11 +520,11 @@ spec:
} }
## Фаза 3: Редирект ## Фаза 3: Редирект
1. registry.kube5s.ru Ingress → 301 redirect на registry.nubes.ru 1. registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> Ingress → 301 redirect на registry.nubes.ru
2. Мониторинг: отслеживать запросы на старый домен 2. Мониторинг: отслеживать запросы на старый домен
## Фаза 4: Деком (через 6+ месяцев) ## Фаза 4: Деком (через 6+ месяцев)
1. Убрать registry.kube5s.ru из Ingress 1. Убрать registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> из Ingress
2. DNS → удалить A/CNAME запись 2. DNS → удалить A/CNAME запись
``` ```
+6 -6
View File
@@ -15,7 +15,7 @@
| Поддомен | Сервис | Ingress | TLS-сертификат | | Поддомен | Сервис | Ingress | TLS-сертификат |
|----------|--------|---------|-----------------| |----------|--------|---------|-----------------|
| `registry.kube5s.ru` | Terraform Registry | отдельный | отдельный | | `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` | Terraform Registry | отдельный | отдельный |
| `something1.kube5s.ru` | Сервис 1 | отдельный | отдельный | | `something1.kube5s.ru` | Сервис 1 | отдельный | отдельный |
| `something2.kube5s.ru` | Сервис 2 | отдельный | отдельный | | `something2.kube5s.ru` | Сервис 2 | отдельный | отдельный |
| ... | ... | ... | ... | | ... | ... | ... | ... |
@@ -346,7 +346,7 @@ prefix := fmt.Sprintf("%s/%s/%s/", hostname, namespace, pType)
| Переменная | Было | Стало | | Переменная | Было | Стало |
|------------|------|-------| |------------|------|-------|
| `REGISTRY_HOSTNAME` | `terra.k8c.ru` / `registry.kube5s.ru` | `gateway.nodejsk8s.services.ngcloud.ru` | | `REGISTRY_HOSTNAME` | `terra.k8c.ru` / `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` | `gateway.nodejsk8s.services.ngcloud.ru` |
| `PATH_PREFIX` | — | `/record01` | | `PATH_PREFIX` | — | `/record01` |
--- ---
@@ -359,7 +359,7 @@ prefix := fmt.Sprintf("%s/%s/%s/", hostname, namespace, pType)
terraform { terraform {
required_providers { required_providers {
nubes = { nubes = {
source = "registry.kube5s.ru/nubes-test/nubes" source = "registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes-test/nubes"
version = "5.1.13" version = "5.1.13"
} }
} }
@@ -419,7 +419,7 @@ terraform {
- [ ] Обновить profile.env (dev/test/prod) — `REGISTRY_HOSTNAME` - [ ] Обновить profile.env (dev/test/prod) — `REGISTRY_HOSTNAME`
- [ ] Обновить все `.tf` файлы в `PROD_STAND/`, `TEST_STAND/`, `DEV_STAND/` - [ ] Обновить все `.tf` файлы в `PROD_STAND/`, `TEST_STAND/`, `DEV_STAND/`
- [ ] Обновить CI/CD (`.github/workflows/`, build scripts) - [ ] Обновить CI/CD (`.github/workflows/`, build scripts)
- [ ] Старый `registry.kube5s.ru` — 301 редирект или удалить - [ ] Старый `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` — 301 редирект или удалить
### Фаза 5: Добавление остальных сервисов ### Фаза 5: Добавление остальных сервисов
@@ -441,7 +441,7 @@ grep -r "kube5s\.ru" /home/naeel/ --include="*.{tf,yaml,yml,go,sh,env,js,json,md
| Запись | Сервис | Приоритет миграции | | Запись | Сервис | Приоритет миграции |
|--------|--------|--------------------| |--------|--------|--------------------|
| `registry.kube5s.ru` | Terraform Registry Server | **#1 (критично)** | | `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` | Terraform Registry Server | **#1 (критично)** |
| ??? | ??? | Найти grep'ом | | ??? | ??? | Найти grep'ом |
--- ---
@@ -468,7 +468,7 @@ spec:
spec: spec:
containers: containers:
- name: gateway - name: gateway
image: registry.kube5s.ru/gateway:1.0.0 image: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/gateway:1.0.0
ports: ports:
- containerPort: 3000 - containerPort: 3000
env: env:
+3 -3
View File
@@ -82,13 +82,13 @@ export S3_SECRET_KEY=...
Пример: Пример:
```bash ```bash
./scripts/publish-docs.sh site registry.kube5s.ru nubes nubes 2.0.2 ./scripts/publish-docs.sh site registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> nubes nubes 2.0.2
``` ```
Что делает: Что делает:
- Копирует `site/``s3://terraform-registry/docs/nubes/nubes/2.0.2/` - Копирует `site/``s3://terraform-registry/docs/nubes/nubes/2.0.2/`
- Выставляет public policy - Выставляет public policy
- Итоговый URL: `https://registry.kube5s.ru/docs/nubes/nubes/2.0.2/` - Итоговый URL: `https://registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/docs/nubes/nubes/2.0.2/`
**S3 credentials** (любой из способов): **S3 credentials** (любой из способов):
- Переменные окружения: `S3_ENDPOINT`, `S3_ACCESS_KEY`, `S3_SECRET_KEY` - Переменные окружения: `S3_ENDPOINT`, `S3_ACCESS_KEY`, `S3_SECRET_KEY`
@@ -128,7 +128,7 @@ export S3_SECRET_KEY=...
- `S3_ENDPOINT` - `S3_ENDPOINT`
- `S3_ACCESS_KEY` - `S3_ACCESS_KEY`
- `S3_SECRET_KEY` - `S3_SECRET_KEY`
- `REGISTRY_HOSTNAME` (опционально, по умолчанию `registry.kube5s.ru`) - `REGISTRY_HOSTNAME` (опционально, по умолчанию `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`)
--- ---
+1 -1
View File
@@ -265,4 +265,4 @@ Referer должен совпадать со стендом (test/dev/prod). Н
Кратко: реализована для ресурса Tubulus через ModifyPlan + askGemini, с защитой от двойного вызова AI. Кратко: реализована для ресурса Tubulus через ModifyPlan + askGemini, с защитой от двойного вызова AI.
### 4.7 Прямая ссылка ### 4.7 Прямая ссылка
https://registry.kube5s.ru/docs/nubes/nubes/2.0.0/howitwasdone/ https://registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/docs/nubes/nubes/2.0.0/howitwasdone/
+6 -6
View File
@@ -1,10 +1,10 @@
# Миграция домена registry.kube5s.ru → registry.nubes.ru # Миграция домена registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> → registry.nubes.ru
## Фаза 1: Dual-domain (параллельная работа) ## Фаза 1: Dual-domain (параллельная работа)
1. Настроить Ingress с двумя hosts: `registry.kube5s.ru` + `registry.nubes.ru` 1. Настроить Ingress с двумя hosts: `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` + `registry.nubes.ru`
2. Оба домена указывают на один Registry Server 2. Оба домена указывают на один Registry Server
3. Обновить provider `main.go`: Address → `registry.nubes.ru` 3. Обновить provider `main.go`: Address → `registry.nubes.ru`
4. Старый адрес `registry.kube5s.ru` продолжает работать 4. Старый адрес `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` продолжает работать
## Фаза 2: Миграция клиентов ## Фаза 2: Миграция клиентов
1. Документировать новый registry address для пользователей 1. Документировать новый registry address для пользователей
@@ -12,7 +12,7 @@
```hcl ```hcl
provider_installation { provider_installation {
direct { direct {
exclude = ["registry.kube5s.ru/*/*"] exclude = ["registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/*/*"]
} }
network_mirror { network_mirror {
url = "https://registry.nubes.ru/v1/providers/" url = "https://registry.nubes.ru/v1/providers/"
@@ -21,9 +21,9 @@ provider_installation {
``` ```
## Фаза 3: Редирект ## Фаза 3: Редирект
1. `registry.kube5s.ru` Ingress → 301 redirect на `registry.nubes.ru` 1. `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` Ingress → 301 redirect на `registry.nubes.ru`
2. Мониторинг: отслеживать запросы на старый домен 2. Мониторинг: отслеживать запросы на старый домен
## Фаза 4: Деком (через 6+ месяцев) ## Фаза 4: Деком (через 6+ месяцев)
1. Убрать `registry.kube5s.ru` из Ingress 1. Убрать `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->` из Ingress
2. DNS → удалить A/CNAME запись 2. DNS → удалить A/CNAME запись
+2 -2
View File
@@ -25,12 +25,12 @@ No such property: resourceRealm for class: Script26
## Проблема 2: хардкод старых доменов ## Проблема 2: хардкод старых доменов
**Вопрос**: почему скрипты ссылаются на `registry.kube5s.ru`, `go-registry.containerk8s.dev.nubes.ru`? **Вопрос**: почему скрипты ссылаются на `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`, `go-registry.containerk8s.dev.nubes.ru`?
**Ответ**: реестр переехал на `tf-registry.containerk8s.services.ngcloud.ru`, но: **Ответ**: реестр переехал на `tf-registry.containerk8s.services.ngcloud.ru`, но:
- `profile.env` (все 3 стенда) — старые REGISTRY_HOST, S3_BUCKET - `profile.env` (все 3 стенда) — старые REGISTRY_HOST, S3_BUCKET
- `build-provider.sh` — старый дефолт REGISTRY_HOSTNAME - `build-provider.sh` — старый дефолт REGISTRY_HOSTNAME
- `docs-generator/main.go` — хардкод `registry.kube5s.ru/nubes-dev/nubes` - `docs-generator/main.go` — хардкод `registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->/nubes-dev/nubes`
## Проблема 3: размазанная конфигурация ## Проблема 3: размазанная конфигурация
+1 -1
View File
@@ -29,7 +29,7 @@ NUBES_API_ENDPOINT="https://deck-api-test.ngcloud.ru" go run tools/service_spec_
### 2. НЕ публиковать Universal в PROD-реестр без явной команды ### 2. НЕ публиковать Universal в PROD-реестр без явной команды
PROD реестр (`registry.kube5s.ru`) содержит версии для клиентов. PROD реестр (`registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> <!-- ⛔ LEGACY: registry.kube5s.ru <!-- ⛔ LEGACY: registry.kube5s.ru ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru --> ЗАКРЫТ. Актуальный хост: tf-registry.containerk8s.services.ngcloud.ru -->`) содержит версии для клиентов.
Universal (5.x) публикуется только после тестирования на TEST стенде. Universal (5.x) публикуется только после тестирования на TEST стенде.
### 3. НЕ использовать PROD токен для генерации/тестирования ### 3. НЕ использовать PROD токен для генерации/тестирования
+1 -1
View File
@@ -1,5 +1,5 @@
site_name: Провайдер Terraform Nubes site_name: Провайдер Terraform Nubes
site_url: https://registry.kube5s.ru/docs/nubes/nubes/2.0.1/ site_url: https://tf-registry.containerk8s.services.ngcloud.ru/docs/nubes/nubes/2.0.1/
exclude_docs: | exclude_docs: |
README.md README.md
+1 -1
View File
@@ -20,7 +20,7 @@ PROFILE_DIR=""
SITE_DIR="${ROOT_DIR}/site" SITE_DIR="${ROOT_DIR}/site"
PAGE_REL="" PAGE_REL=""
VERSION="" VERSION=""
REGISTRY_HOST="${REGISTRY_HOST:-registry.kube5s.ru}" REGISTRY_HOST="${REGISTRY_HOST:-tf-registry.containerk8s.services.ngcloud.ru}"
NAMESPACE="${NAMESPACE:-nubes}" NAMESPACE="${NAMESPACE:-nubes}"
PROVIDER_NAME="${PROVIDER_NAME:-nubes}" PROVIDER_NAME="${PROVIDER_NAME:-nubes}"
S3CFG_REGISTRY="${S3CFG_REGISTRY:-${ROOT_DIR}/secrets/.s3cfg_registry}" S3CFG_REGISTRY="${S3CFG_REGISTRY:-${ROOT_DIR}/secrets/.s3cfg_registry}"