Logo GH

Terraform i Инфраструктура ҳамчун Кодекс

(Қисм: Технология ва инфрасохтор)

Хулосаи мухтасар

Terraform воситаи асосии IA C барои эҷоди такрорӣ ва санҷидашавандаи инфрасохтори абрии IGaming мебошад: VPC/subnets, Balancers, пойгоҳи додаҳо/кластерҳо, навбатҳо/автобусҳо, KMS/Secrets, кластерҳои Kubernetes, CDN ва мониторинг. Муваффақият ба меъмории модулӣ, сиёсати қатъии давлатӣ ва қулф, равиши Gitops ба релизҳо, Policy-as-Code, санҷиши автоматикӣ ва шаффофи FIN асос ёфтааст.

1) Принсипҳои IAC барои IGaming

Эъломия: инфрасохторе, ки бо рамз тавсиф шудааст; қадамҳои дастӣ вуҷуд надоранд.
Idempotency: такрори 'татбиқ' натиҷаи якхела медиҳад.
Ҷудосозии муҳитҳо: 'dev/stage/prod' аз як рамз бо параметрҳо.
Таркиби модул: феҳристи ягонаи модулҳо барои VPC, DB, навбатҳо, K8s, мониторинг.
Амнияти пешфарз: зершабақаҳои хусусӣ, mTLS, ҳуқуқҳои ҳадди ақали IAM.
Мушоҳида ва арзиш: ченакҳо/огоҳиҳо/буҷетҳо низ зери Terraform мебошанд.

2) Сохтори репозитория

Варианти Монорепо (мисол):

iac/
modules/
vpc/
mysql/
kafka/
eks_aks_gke/
redis/
monitoring/
envs/
prod/
eu-west/
main. tf variables. tf backend. tf stage/
eu-west/
...
dev/
...
policies/
opa/
sentinel/
pipelines/
ci_cd/

Алтернатива репо модулӣ (анбори алоҳида барои ҳар як модул) + истеъмолкунандагон мебошад.

3) Модулияти асосӣ (мисоли HCL)

Модули VPC (модулҳо/vpc/main. tf):
hcl variable "name" {}
variable "cidr" {}
variable "az_count" { default = 3 }

cloud provider resources (summarized)
resource "cloud_vpc" "this" { name = var. name cidr = var. cidr }
resource "cloud_subnet" "private" {
count = var. az_count vpc_id = cloud_vpc. this. id type  = "private"
}
output "vpc_id" { value = cloud_vpc. this. id }
output "private_subnets" { value = cloud_subnet. private[].id }
Истеъмоли модул (envs/prod/eu-west/main. tf):
hcl module "vpc" {
source = "../../modules/vpc"
name  = "prod-eu-west"
cidr  = "10. 20. 0. 0/16"
}

module "mysql" {
source = "../../modules/mysql"
name  = "payments"
vpc_id = module. vpc. vpc_id subnets = module. vpc. private_subnets pitr  = true size  = "r6g. large"
kms_key = module. kms. key_id
}

4) Идоракунии давлатӣ ва қуфлҳо

Қафои дурдаст (масалан, нигоҳдории объект) + қуфлҳо (Dynamo

Версияи пушти сар ва рамзгузории давлатӣ (KMS).
Қоидаҳои дастрасӣ: танҳо CI/CD ва "соҳибони инфра" ҳуқуқҳои "татбиқ" доранд; таҳиягарон - 'нақша'.

Фазои корӣ ва феҳристҳои муҳити зист:
  • Ҷойҳои корӣ барои муҳитҳои шабеҳ қулай мебошанд (нусхабардорӣ),
  • Феҳристҳои алоҳида - барои конфигуратсияҳои возеҳ ҷудошуда ва топологияҳои гуногун.
Намунаи пуштибонӣ. tf (умумӣ):
hcl terraform {
backend "s3" {
bucket     = "iac-state-prod"
key      = "eu-west/terraform. tfstate"
region     = "eu-west-1"
dynamodb_table = "iac-state-locks"
encrypt    = true
}
}

5) Тағирёбандаҳо, асрори ва маълумоти ҳассос

тағирёбанда. tf + .tfvars барои муҳитҳо; ҳассос = барои арзишҳои хусусӣ дуруст аст.
Асрҳо дар Git нигоҳ дошта намешаванд. Мудири махфӣ/KMS-ро ба воситаи манбаъи маълумот ё провайдер истифода баред.
Рамзгузории пешфарз: барои ҳаҷм/нусха/сурат/пойгоҳи додаҳо.
Гардиш: калидҳо ва паролҳо ба таври худкор иваз карда мешаванд.

hcl variable "db_password" {
type   = string sensitive = true
}

data "external_secret" "db_password" {
conceptual secret source name = "prod/payments/db_password"
}

6) Gitops ва CI/CD барои Terraform

Ҷараёни PR: 'terraform fmt' → 'init' → 'тасдиқ' → 'tflint' → 'нақша' бо баромади PR → дастури тасдиқшуда → 'татбиқ' аз CI.
Пешбурди муҳити зист: аввал дар 'марҳила' тағир меёбад, баъд дар 'prod' барчасп/якҷоя кунед.
Гузоришҳо ва артефактҳо: нақшаи сарфа ва диффа, артефакт-ҳисобот.

Намунаи CI (порча):
yaml steps:
- run: terraform fmt -check
- run: terraform init -upgrade
- run: terraform validate
- run: tflint --enable-rule=terraform_standard_module_structure
- run: terraform plan -var-file=envs/stage/eu-west/vars. tfvars -out tfplan
- run: terraform show -no-color tfplan > plan. txt after April
- run: terraform apply tfplan

7) Policy-as-Code (OPA/Sentinel)

Мақсад: ба таври худкор тағироти хатарнок/гаронқиматро рад мекунад.

Намунаҳои сиёсат:
  • Рамзгузории захираҳо лозим аст.
  • IP ҷамъиятӣ - танҳо тавассути рӯйхати истисноӣ.
  • Маҳдуд кардани андозаи намунаҳо/кластерҳо аз рӯи муҳит.
  • Барчаспҳои талабшаванда: 'env', 'соҳиб', 'cost _ center'.
Идеяи қоидаҳои OPA (rego) чунин аст:
rego deny[msg] {
input. resource. type == "db_instance"
not input. resource. encrypted msg:= "DB must be encrypted at rest"
}

8) Санҷиши IAC

санҷиши terraform-Basic синтаксис.
tint - услуб/антипаттернҳо/мушаххасоти провайдер.
Инфракост - сметаи пешакии хароҷот дар PR.
Terratest - санҷишҳои ҳамгироӣ (Гузаштан): бардоред/санҷед/вайрон кунед.
Ошхона-Terraform - санҷишҳои воҳид бо инвариантҳои захираҳо.
Кашфи кашфиёт: нақшаи даврӣ дар ҳушдори танҳо барои хондан ва берун аз синхронизатсия.

9) Модулҳои маъмулӣ барои платформаи IGaming

Шабака

VPC/VN .ets/VPC-Peering, зершабақаҳои хусусӣ/ҷамъиятӣ, масир, NAT/Firewall, Гурӯҳҳои Амният/NSG.
DNS/Нокомӣ: Маршрут-политики, муоинаи саломатӣ, масир дар асоси таъхир.

Маълумот

My-SQL/PostgrE SQL: Multi-AZ, PITR, 'auto _ minor _ version _ upgrade'.
Redis/Memcached: Сиёсати Multi-AZ, сурат/TTL.
Кӯли маълумот/Lakehouse: сатилҳо, сиёсатҳо, ҷадвалҳо (каталог/метастор).
Кластерҳои клик/OLAP: shardiness/replication, сиёсати диск.

Автобусҳо/Навбатҳо

Кафка/Пулсар/вариантҳои идорашаванда, ACL, нигоҳдорӣ, схемаҳои сабти ном.

K8s

EKS/AKS/GKE с гиреҳҳо, taints/таҳаммулпазирӣ, IRSA/Workload Identity, Ingress/Service Mesh, autoscaling.
Интегратсияи асрори беруна, Прометей/Графана, Loki/ELK, сертификат-менеҷер.

Edge/CDN

Тақсимоти CDN, қоидаҳои кэш, WAF, кам кардани бот.

10) Тағирёбандаҳо/Натиҷаҳо/аҳолии маҳаллӣ - амалия

маҳаллӣ барои арзишҳои ҳисобшуда (ниқобҳо, номҳо).
баромадҳо ҳамчун модули API: ҳадди аққал талаб карда мешавад.
Номи захираҳо '<env> - <минтақа> - <домейн> - <компонент>'.
Теги: 'env', 'соҳиб', 'cost _ center', 'танқид', 'pii'.

hcl locals {
name_prefix = "${var. env}-${var. region}-${var. service}"
}
resource "cloud_lb" "api" { name = "${locals. name_prefix}-lb" }

11) Бисёр абр ва минтақаҳо

Абстраксия тавассути модулҳои якхела, провайдерҳои гуногун: 'aws', 'azurerm', 'google'.
Тахаллуси провайдер барои захираҳои байниминтақавӣ (DR/нусхабардорӣ).
Тафовутҳои хидматӣ бо шароит ва phicheflags дар модулҳо баста мешаванд.
Маълумот локализатсия карда мешаванд: сатилҳои инфиродӣ/DB аз рӯи минтақа (EU/TR/LATAM).

hcl provider "aws" { region = "eu-west-1" alias = "eu" }
provider "aws" { region = "sa-east-1" alias = "latam" }

12) Мушоҳида ва огоҳӣ ҳамчун рамз

Панели панелҳо, қоидаҳои ҳушдор (p95/p99, хатогӣ, CPU/IO), мониторҳои SLO.
Гузоришҳои дастрасӣ/аудит (WORM), ченакҳои хароҷот (аз рӯи барчасп/фазои ном).
Ҳодисаҳо: огоҳиномаҳои чат, дафтарҳои URL дар эзоҳҳои захираҳо.

13) FIN Ops: Арзиши таҳти назорат

Инфракост дар огоҳиҳои PR + буҷа.
Квотаҳои муҳити зист: маҳдуд кардани синфҳои намуна/анбор.
Гигиенаи худкор: TTL барои захираҳои dev, сиёсати нигоҳдории сатил/журнал.
Spot/Афзалият барои вазифаҳои ғайримуқаррарӣ, фармоиш барои Prod.

14) Равандҳои муҳоҷират/тағирот

'terraform захираҳои ҳуқуқии воридоти' for (фавран пас аз - 'нақша '/' татбиқ').
'moved '/' хориҷ' ҳангоми refactoring барои пешгирӣ кардани нобудшавӣ.
Тағироти сифр-вақти корӣ: ғалтаки дукарата (кабуд-сабз) барои контурҳои интиқодӣ (DB/тавозунҳо).
Қадам ба қадам PR: гурӯҳи нави захираҳо аввал, баъд трафик, баъд аз он.

15) Бехатарӣ ва риояи

Имтиёзи камтарин: модулҳо танҳо ҳуқуқҳои заруриро эҷод мекунанд, истифода намебаранд. "

KMS дар ҳама ҷо: рамзгузории ҳаҷм/нусхаҳои эҳтиётӣ/асрҳо/давлатҳо.

Санҷиши Terraform/Ia

Асрори берун аз Git: Танҳо менеҷерони махфӣ; ротатсия ва аудити дастрасӣ.
Минтақаҳои PII: барчасбҳо/сиёсатҳои дастрасӣ, манъи содироти байниминтақавӣ.

16) Қолабҳои намунавӣ

Пойгоҳи додаҳои робитавӣ бо PITR (идея):
hcl module "db" {
source   = "../../modules/mysql"
name    = "wallet"
multi_az  = true storage_gb = 500 pitr    = true backup_retention_days = 14 deletion_protection  = true
}
Мониторинг ва ҳушдори SLO:
hcl module "slo_latency" {
source = "../../modules/monitoring/slo"
name  = "api-latency-p95"
target_ms = 250 window  = "30m"
alert_channels = ["chatops#incidents"]
}
Тақсимоти WAF/CDN:
hcl module "cdn" {
source = "../../modules/cdn"
domain = "example. com"
waf_enabled = true cache_ttl  = 600
}

17) Рӯйхати санҷиши амалисозии Terraform/IAC

1. Сохтори анборро интихоб кунед (модули монорепос + феҳристҳои муҳит).
2. Танзими ҳолати дурдаст бо қулфҳо ва рамзгузорӣ (KMS).
3. Ба лӯлаи Git- Ops ворид шавед: fmt/validate/tflint/plan → review → apply.
4. Сохтани китобхонаи модулӣ (VPC, K8s, DB, навбатҳо, мониторинг, CDN, асрори).
5. Фаъол кардани сканҳои Policy-as-Code (OPA/Sentinel) ва IA-C дар CI.
6. Асрорро ба воситаи менеҷер, калидҳо - KMS, гардишҳо ташкил кунед.
7. Санҷишҳо илова кунед: Terratest барои модулҳои интиқодӣ, Infracost дар PR.
8. SLO/огоҳиҳо ва "мониторингро ҳамчун рамз" муайян кунед.
9. Барои захираҳои ғайримуқаррарӣ квотаҳо/буҷетҳо ва TTL таъсис диҳед.
10. Муҳоҷиратро дар марҳилаҳо ба нақша гиред (кабуд-сабз/ду роҳи оҳан).

18) Антипаттернҳо

Дастури "барфпӯши барфӣ" -и захираҳо берун аз Terraform → drift ва садамаҳо ҳангоми "татбиқ".
Нигоҳ доштани давлат дар маҳал/бе қуфлҳо → мусобиқа ва аз даст додани пайдарҳамӣ.
Асрҳо дар Git/дар '.tfvars' бе рамзгузорӣ.
"Худо-модул" барои садҳо захираҳо → имконнопазирии озмоиш/истифодаи такрорӣ.
Бевосита аз ноутбук ба хӯрок бидуни PR муроҷиат кунед ва баррасии нақшаҳоро ба нақша гиред.
Нодида гирифтани Policy-as-Code/скан § ихроҷ, IP/сатилҳои ҷамъиятӣ.
Набудани Infracost/буҷетҳо § арзиши пешгӯинашаванда.

Хулоса

Terraform/Ia Тарҳрезии модулӣ, ҳолати қатъӣ ва GITOPS, сиёсати амният, автотестҳо ва финҳо инфрасохторро ба "лӯлаи" боэътимод табдил медиҳанд - релизҳои зуд бидуни вақти паст, пешгӯишаванда p99 ва омодагӣ ба мусобиқаҳои қуллаҳо ва талаботи танзим.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.