VK Cloud logo

CDN

Мақалада Terraform көмегімен CDN-ресурсты және көздерді жасау мен баптау, көз shielding-ін қосу және SSL сертификатын қосу мысалы келтірілген.

Мысалдарда мыналар пайдаланылады:

Параметрлердің толық сипаттамасы — Terraform провайдері құжаттамасында.

Дайындық қадамдары

  1. Қызметтің жұмыс істеу қағидаларын түсіну үшін VK Cloud CDN құжаттамасымен танысыңыз.

  2. Квоталарды тексеріңіз. Таңдалған аймақта CDN-ресурс жасау үшін жеткілікті ресурстар бар екеніне көз жеткізіңіз. Әртүрлі аймақтар үшін әртүрлі квоталар бапталуы мүмкін.

    Қажет болса, квоталарды арттырыңыз.

  3. Егер әлі жасалмаған болса, Terraform орнатып, провайдерді баптаңыз.

1. Көздер тобының сипаттамасы бар файлды жасаңыз

Көздер топтары контентті орналастыру мен жеткізуге жауап беретін ішкі серверлерді басқарады. CDN-ресурс үшін топ жасау және оған кемінде бір көз қосу қажет. Сенімділік пен ақауға төзімділікті арттыру үшін топқа бірнеше көз қосыңыз.

cdn.tf Terraform конфигурация файлын жасаңыз және оған келесі мазмұнды қосыңыз:

# Create an origin groupresource "vkcs_cdn_origin_group" "origin_group" {  name = "tfexample-origin-group"  origins = [    {      source = "origin1.vk.com"    },    {      source = "origin2.vk.com",      backup = true    },    {      source = "origin3.vk.com",      enabled = false    }  ]  use_next = true}

Мұнда:

  • name — көздер тобының атауы. Міндетті параметр.
  • origins — көздер тізімі.
  • source — көздің IP мекенжайы немесе домені және пайдаланушы порты қолданылса, порты. Міндетті параметр.
  • enabled — көздің қолжетімділігі:
    • enabled = true немесе параметр көрсетілмеген — көз қосылған;
    • enabled = false — көз өшірілген.
  • backup — резервтік көз түрінің белгісі (көз деңгейінде беріледі):
    • backup = true — көз резервтік болып табылады;
    • backup = false немесе параметр көрсетілмеген — көз белсенді болып табылады.
  • use_nextтізімдегі келесі көзді пайдалану (бүкіл топ деңгейінде беріледі):
    • use_next = true — CDN-сервер контентті бірінші белсенді көзден сұрайды. Егер 4XX немесе 5XX диапазонындағы HTTP күйі қайтарылса, CDN-сервер тізім бойынша төмен жылжып, олардың түріне қарамастан қалған көздерден контент сұрайды.
    • use_next = false немесе параметр көрсетілмеген — CDN-сервер алдымен белсенді көздердің бірінен контент сұрайды. Егер белсенді көзден 5XX диапазонындағы HTTP күйі қайтарылса, CDN-сервер резервтік көздердің бірінен контент сұрайды. Белсенді немесе резервтік көзден 4XX диапазонындағы HTTP күйі қайтарылса, CDN-сервер тұтынушыға қате қайтарады.

2. (Опционалды) Жобаға shielding қосыңыз

Көз shielding-і көзді жоғары жүктемелерден қорғауға мүмкіндік береді. Ол үшін precache сервері қолданылады: ол пайдаланушылардың барлық сұрауларын жинап, қажетті контент precache серверінің өз кэшінде болмаса, оларды көзге бір-бірден жібереді.

Егер shielding пайдалануды жоспарламасаңыз, SSL сертификатын қосуға өтіңіз.

CDN-ресурс конфигурациясына shielding қосу үшін қолжетімді precache серверлерінің тізімін алып, контент тұтынушыларына ең жақынын таңдаңыз.

  1. shieldings.tf Terraform конфигурация файлын жасаңыз және оған келесі мазмұнды қосыңыз:

    data "vkcs_cdn_shielding_pops" "pops" {}output "shielding_locations" {    value = data.vkcs_cdn_shielding_pops.pops.shielding_pops}
  2. Terraform конфигурация файлдарын бір директорияға орналастырыңыз:

    • vkcs_provider.tf;
    • shieldings.tf.
  3. Осы директорияға өтіңіз.

  4. Өзгерістерді қолданыңыз:

    terraform apply

    Жауапта қолжетімді precache серверлері туралы ақпарат қайтарылады.

    Жауап мысалы:

    shielding_locations = tolist([  {    "city" = "Moscow-Megafon"    "country" = "Russia"    "datacenter" = "mgf"    "id" = 138  },])

    Мұнда:

    • city, country — precache серверінің қатысу нүктелері орналасқан қала мен ел.
    • datacenter — precache сервері орналасқан ДЦ.
    • id — қатысу нүктесінің идентификаторы.
  5. Precache серверінің қатысу нүктесін таңдап, оның деректерін CDN-ресурс конфигурация файлына қосыңыз. Ол үшін cdn.tf файлын ашып, оған келесі мазмұнды қосыңыз:

    # Add shieldingdata "vkcs_cdn_shielding_pop" "pop" {  city = "Moscow-Megafon"}

3. (Опционалды) Жобаға SSL сертификатын қосыңыз

Контент HTTPS протоколы арқылы жеткізілген кезде SSL сертификаттары пайдаланылады. Сіз өз SSL сертификатыңызды қоса аласыз, тегін Let's Encrypt сертификатын пайдалана аласыз немесе SSL сертификатын мүлде қолданбауыңызға болады, бұл жағдайда контент HTTP протоколы арқылы жеткізіледі.

Егер Let's Encrypt сертификатын пайдалануды немесе SSL сертификатын мүлде қолданбауды жоспарласаңыз, CDN-ресурсты қосуға өтіңіз.

  1. SSL сертификатыңыздың public бөлігі бар certificate.pem және private бөлігі бар private-key.key файлдарын ресурстар жасайтын директорияға орналастырыңыз.

  2. Файлдарда сертификаттың барлық жолдары бар екеніне көз жеткізіңіз.

  3. cdn.tf файлын ашып, оған келесі мазмұнды қосыңыз:

    # Add your own SSL-certificateresource "vkcs_cdn_ssl_certificate" "certificate" {  name        = "tfexample-ssl-certificate"  certificate = file("${path.module}/certificate.pem")  private_key = file("${path.module}/private-key.key")}

    Мұнда:

    • name — SSL сертификатының атауы.
    • certificate — сертификаттың public бөлігін қамтитын файлға дейінгі жол. Сертификаттың public бөлігінің барлық жолдары файлда болуы керек.
    • private_key — сертификаттың private бөлігін қамтитын файлға дейінгі жол. Сертификаттың private бөлігінің барлық жолдары файлда болуы керек.

    Үш параметрдің бәрі де міндетті.

4. CDN-ресурстың сипаттамасын қосыңыз

cdn.tf файлын ашып, оған келесі мазмұнды қосыңыз:

# Create a CDN resourceresource "vkcs_cdn_resource" "resource" {  cname        = cdn.example.com  origin_group = vkcs_cdn_origin_group.origin_group.id  active       = true  options = {    edge_cache_settings = {      value = "10m"    }    forward_host_header = true  }  origin_protocol = "http, https"  shielding = {    enabled = true    pop_id  = data.vkcs_cdn_shielding_pop.pop.id  }  ssl_certificate = {    type = "own"    id   = vkcs_cdn_ssl_certificate.certificate.id  }}

Мұнда:

  • cname — осы доменге жүгінгенде контент CDN көмегімен жеткізілетін доменнің FQDN-ы. Міндетті параметр.

    FQDN-ге түбірлік домен атауын қоспаңыз: cdn.example.com түріндегі жазба рұқсат етіледі, ал cdn.example.com. рұқсат етілмейді. CDN үшін қосымша домендер қосу үшін оларды secondary_hostnames параметрінде көрсетіңіз.

  • origin_group — CDN-ресурс үшін көздер тобының идентификаторы. Идентификаторды конфигурация файлында көрсетуге, дереккөзден немесе ресурстан алуға болады. Міндетті параметр.

  • active — ресурстың қолжетімділігі:

    • active = true немесе параметр көрсетілмеген — CDN-ресурс Активен күйіне өтеді, контент тұтынушыларға жеткізіледі;
    • active = false — CDN-ресурс Приостановлен күйіне өтеді, контент тұтынушыларға жеткізілмейді.
  • options — CDN-ресурстың баптаулары. Барлық қолжетімді баптаулардың сипаттамасы VKCS-провайдері құжаттамасында келтірілген.

  • origin_protocol — көзбен өзара әрекеттесу протоколы:

    • "http" немесе параметр көрсетілмеген — көздегі контент тек HTTP (80 порт) арқылы қолжетімді немесе көз HTTPS-тен HTTP-ке қайта бағыттауды қолдайды.
    • "https" — көздегі контент тек HTTPS (443 порт) арқылы қолжетімді немесе көз HTTP-тен HTTPS-ке қайта бағыттауды қолдайды.
    • "http, https" — көздегі контент HTTP және HTTPS арқылы қолжетімді. Бұл жағдайда CDN-ресурстан көзге жіберілетін сұрауда соңғы пайдаланушы сұрауының протоколы сақталады. Бұл ретте CDN-ресурс кэшінде әр протокол үшін файлдың екі нұсқасы сақталады.
  • shielding — CDN-ресурс үшін көз shielding-ін қосу.

    • enabled — shielding-ті қосу: true (қосылған) немесе false (өшірулі).

    • pop_id — shielding қатысу нүктесінің идентификаторы. Бұл мысалда идентификатор vkcs_cdn_shielding_pop дереккөзінен алынады. Оны конфигурацияда тікелей көрсетуге де болады. Мысалы: pop_id = 138.

      Егер көз shielding-ін қоспасаңыз, параметрлер блогын конфигурациядан алып тастаңыз.

  • ssl_certificate — HTTPS протоколы арқылы контент жеткізуге арналған SSL сертификаты:

    • type — SSL сертификатының түрі. Қолжетімді мәндер:
      • "not_used" — SSL сертификаты пайдаланылмайды.
      • "own" — пайдаланушы сертификаты қосылады.
      • "lets_encrypt" — тегін Let's Encrypt сертификаты қосылады. Сертификатты шығару үшін CDN-ресурс белсенді болуы керек (active = true). Сертификат CDN-ресурс жасалғаннан кейін, көз серверлері қолжетімді болғанда және жеке домендерге арналған CNAME жазбаларына қатысты DNS өзгерістері таралғаннан кейін жасалады. Әдетте бұл 30 минутқа дейін уақыт алады.
    • id — CDN-ресурсқа байланыстырылған SSL сертификатының идентификаторы. Егер type = "own" болса, идентификатор көрсетілуі керек. Берілген cdn.tf файлында идентификатор бұрын қосылған vkcs_cdn_ssl_certificate ресурсынан алынады.

5. Terraform көмегімен қажетті ресурстарды жасаңыз

  1. Terraform конфигурация файлдарын SSL сертификаты файлдарымен бірге бір директорияға орналастырыңыз:

    • vkcs_provider.tf;
    • cdn.tf.
  2. Осы директорияға өтіңіз.

  3. Конфигурация файлдарының дұрыс екенін және қажетті өзгерістер бар екенін тексеріңіз:

    terraform validate && terraform plan
  4. Өзгерістерді қолданыңыз:

    terraform apply

    Растауды сұрағанда yes енгізіңіз.

  5. Операцияның аяқталуын күтіңіз.

6. Конфигурацияның қолданылғанын тексеріңіз

Ресурстардың сәтті жасалғанына көз жеткізіңіз:

  1. VK Cloud жеке кабинетіне өтіңіз.
  2. CDNCDN-ресурсы бөліміне өтіңіз. CDN-ресурстың жасалғанына көз жеткізіңіз.
  3. CDNКөздер топтары бөліміне өтіңіз. Көздер топтарының жасалғанына көз жеткізіңіз.
  4. CDNSSL сертификаттары бөліміне өтіңіз. SSL сертификатының жобаға қосылғанына көз жеткізіңіз.

Пайдаланылмайтын ресурстарды жойыңыз

Егер Terraform көмегімен жасалған ресурстар енді қажет болмаса, оларды жойыңыз:

  1. Terraform конфигурация файлдары бар директорияға өтіңіз.

  2. Команданы орындаңыз:

    terraform destroy

    Растауды сұрағанда yes енгізіңіз.

  3. Операцияның аяқталуын күтіңіз.