Ringkasan konfigurasi

Media CDN menawarkan pengiriman konten, pelepasan cache, perlindungan asal, meminta otorisasi dan integrasi dengan Google Cloud Load Balancer Aplikasi eksternal, Logging, dan Platform pemantauan.

Media CDN menyediakan beberapa resource REST API:

  • EdgeCacheService, yang bertanggung jawab atas konfigurasi yang ditampilkan kepada klien (TLS, penentuan alamat IP), {i>routing<i}, Konfigurasi CDN (mode {i>cache<i}, TTL, penandatanganan), dan kebijakan keamanan kami.
  • EdgeCacheOrigin, yang bertanggung jawab atas konfigurasi per origin untuk Asal berbasis HTTP, serta kondisi percobaan ulang saat konten tidak tersedia atau dapat dijangkau. Misalnya, sebagai bagian dari pemaket video redundan konfigurasi Anda.
  • (Opsional) EdgeCacheKeyset, yang berisi kumpulan kunci publik yang digunakan untuk memvalidasi bahwa permintaan klien telah ditandatangani oleh infrastruktur / CMS. EdgeCacheKeysets terkait dengan EdgeCacheService, dan dapat digunakan di beberapa layanan.

Resource ini ditampilkan dalam contoh berikut, yang menunjukkan EdgeCacheService penghentian traffic, dan pemilihan rute ke berbagai EdgeCacheOrigins.

Contoh konfigurasi dengan `EdgeCacheService` yang menghentikan
   traffic, memeriksa permintaan yang ditandatangani dengan `EdgeCacheKeyset` opsional, dan
   merutekan permintaan ke tiga `EdgeCacheOrigins` yang berbeda.
Contoh konfigurasi dengan EdgeCacheService yang menghentikan traffic, memeriksa permintaan yang ditandatangani, EdgeCacheKeyset, dan merutekan permintaan ke tiga EdgeCacheOrigins.

Izin

Anda harus memiliki izin Identity and Access Management yang diperlukan untuk membuat ke resource Media CDN. Media CDN memiliki peran IAM bawaan berikut:

  • roles/networkservices.edgeCacheAdmin
  • roles/networkservices.edgeCacheUser
  • roles/networkservices.edgeCacheViewer

Aktifkan layanan yang diperlukan

Untuk mengonfigurasi dan men-deploy layanan Media CDN, Anda harus mengaktifkan Network Services API dan Certificate Manager API untuk proyek Anda.

Konsol

  1. Mengaktifkan Network Services API.

    Mengaktifkan API

  2. Mengaktifkan Certificate Manager API.

    Mengaktifkan API

gcloud

  1. Aktifkan Network Services API:

    gcloud services enable networkservices.googleapis.com
    
  2. Aktifkan Certificate Manager API:

    gcloud services enable certificatemanager.googleapis.com
    

Untuk informasi selengkapnya tentang cara mengaktifkan dan menonaktifkan layanan, lihat Dokumentasi Penggunaan Layanan.

Contoh konfigurasi

Daftar referensi berikut ini menjelaskan tentang perwakilan Konfigurasi Media CDN:

  • EdgeCacheOrigin:

    • Origin berbasis Cloud Storage yang mencoba kembali cache diambil terhadap origin alternatif (AWS S3) jika objek tidak ada Cloud Storage (misalnya, HTTP 404) atau error 5xx temukan.
  • Satu EdgeCacheKeyset, yang berisi:

    • Dua kunci publik Ed25519, yang digunakan untuk memvalidasi permintaan yang ditandatangani.
    • Dalam contoh konfigurasi, Anda dapat merotasi kunci setiap bulan, menjaga dua kunci dalam produksi.
  • Satu EdgeCacheService dengan dua rute, termasuk:

    • Rute untuk manifes, yang terkait dengan asal Cloud Storage, dengan TTL cache yang singkat.
    • Rute untuk segmen video, yang dilindungi oleh permintaan yang ditandatangani, dan yang terkait dengan asal Cloud Storage, yang dikonfigurasi untuk menyimpan cache semua respons.
  • IPv4, IPv6, logging diaktifkan (default), dan sertifikat SSL terkelola dikonfigurasi

Contoh berikut menunjukkan output gcloud untuk konfigurasi ini:

gcloud edge-cache origins describe prod-media-origin
id: "2295067926314745283"
creationTimestamp: "2019-11-13T09:53:48.757-08:00"
name: "prod-media-origin"
description: ""
originAddress: "gs://bucket_name/"
failoverOrigin: "s3-origin"
retryConditions: [HTTP_5XX, NOT_FOUND]
originProtocol: HTTP2
timeouts:
  connectTimeout: 5s
  maxAttemptsTimeout: 10
  responseTimeout: 6s
id: "2295067926314745283"
creationTimestamp: "2019-11-13T09:53:48.757-08:00"
name: "s3-origin"
description: ""
originAddress: "media.example.com.s3.amazonaws.com"
retryConditions: [HTTP_5XX, NOT_FOUND]
originProtocol: HTTP2
gcloud edge-cache keysets describe prod-keyset
id: "2295067926314745283"
creationTimestamp: "2019-11-13T09:53:48.757-08:00"
name: "prod-keyset"
publicKeys:
  - name: "sept-2020-key"
    value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w="
  - name: "aug-2020-key"
    value: "3nQa82ScYgDDAxJrKCqumSEg60VNODGR5dGAveJWsw4="
gcloud edge-cache services describe prod-media-service
name: "prod-media-service"
edgeSslCertificates:
  - "media-example-com-cert"
  - "video-serving-example-com-cert"
requireTls: true
routing:
  hostRules:
  - description: "prod hostnames"
    hosts:
      - "media.example.com"
      - "video-serving.example.net"
    pathMatcher: "routes"
  pathMatchers:
  - name: "routes"
    routeRules:
    - priority: 1
      description: "prod video segments"
      origin: "prod-media-origin"
      matchRules:
      - pathTemplateMatch: "/**.ts" # HLS segments
      - pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
      routeAction:
        cdnPolicy:
          cacheMode: "FORCE_CACHE_ALL"
          clientTtl: 3600s
          defaultTtl: 86400s
          signedRequestMode: REQUIRE_SIGNATURES
          signedRequestKeySet: "prod-keyset"
      headerAction:
        responseHeadersToAdd:
        - headerName: cache-status
          headerValue: "{cdn_cache_status}"
        - headerName: proxy-status
          headerValue: "{proxy_status}"
    - priority: 2
      description: "prod manifest endpoints"
      origin: "prod-media-origin"
      matchRules:
      - pathTemplateMatch: "/**.m3u8" # HLS playlists
      - pathTemplateMatch: "/**.mpd" # DASH manifests
      routeAction:
        urlRewrite:
          pathPrefixRewrite: "/output/manifests"
        cdnPolicy:
          cacheMode: "CACHE_ALL_STATIC"
          clientTtl: 10s
          defaultTtl: 30s
          maxTtl: 120s
      headerAction:
        responseHeadersToAdd:
        - headerName: cache-status
          headerValue: "{cdn_cache_status}"
        - headerName: proxy-status
          headerValue: "{proxy_status}"
    - priority: 3 # catch all routes should be the lowest priority route
      description: "catch all route"
      origin: "prod-media-origin"
      matchRules:
      - prefixMatch: /
      headerAction:
        responseHeadersToAdd:
        - headerName: cache-status
          headerValue: "{cdn_cache_status}"
        - headerName: proxy-status
          headerValue: "{proxy_status}"

Opsi konfigurasi untuk Media CDN

Untuk mengonfigurasi Media CDN, Anda dapat menggunakan alat berikut:

  • Konsol Google Cloud
  • File YAML atau JSON yang diimpor
  • API secara langsung

Menggunakan konsol Google Cloud

Buka Media CDN

Untuk petunjuk yang menjelaskan cara mengonfigurasi Media CDN di Konsol Google Cloud, lihat panduan memulai.

Mengimpor dan mengekspor konfigurasi

gcloud CLI memungkinkan Anda mengekspor dan mengimpor konfigurasi dari YAML atau JSON, yang memungkinkan integrasi dengan sistem continuous delivery atau menggunakan infrastructure-as-code dengan alat yang sama. Anda bisa menduplikasi konfigurasi, menguji layanan terpisah dalam sebelum memperbarui lingkungan production, serta membuat snapshot ke dalam kontrol versi.

Kolom khusus output tidak diimpor, dan secara implisit dikecualikan saat mengimpor konfigurasi. Secara khusus:

  • Alamat IP tidak diimpor, karena dikhususkan untuk setiap layanan. Layanan tidak dapat berbagi alamat IP.
  • selfLink resource, yang didasarkan pada nama resource.
  • id resource, yang dibuat secara otomatis.

Untuk mengekspor layanan, EdgeCacheOrigin atau EdgeCacheKeyset, gunakan export sub-perintah untuk setiap resource. Misalnya, untuk mengekspor konfigurasi layanan:

gcloud edge-cache services export SERVICE_NAME \
    --destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME] to 'my-service.yaml'.

Demikian pula, Anda dapat mengimpor konfigurasi layanan yang ada, baik sebagai atau sebagai pembaruan untuk layanan yang sudah ada:

gcloud edge-cache services import new-staging-service \
    --source=my-service.yaml

Menggunakan operasi API asinkron

Secara default, perintah gcloud yang membuat, memperbarui, atau menghapus resource dan hanya kembali setelah tugas selesai (untuk keberhasilan dan gagal). Secara default, REST API asinkron.

Dalam beberapa kasus, Anda mungkin ingin membuat permintaan ini secara asinkron. Anda dapat berikan flag --async, yang menyebabkan perintah segera ditampilkan dengan ID operasi. Anda dapat menggunakan ID ini untuk memeriksa dan melakukan polling untuk mengonfirmasi apakah tugas berhasil, apakah tugas menampilkan {i>error<i}, dan apa jenis kesalahan pesan tersebut.

Anda memeriksa setiap operasi (berdasarkan ID-nya) untuk memahami {i>error <i}pada spesifikasi pendukung. Misalnya, jika Anda mengonfigurasi logConfig.sampleRate tanpa parameter menyetel logConfig.enable = true, error berikut akan terjadi dikembalikan:

gcloud edge-cache operations describe operation-1611525680496-5b9ac8fbb7f58-90a7a822-f0c1e8c6
done: true
error:
  message: "Logs sample rate must not be specified without enabling logging."
name: projects/my-project/locations/global/operations/operation-1611525680496-5b9ac8fbb7f58-90a7a822-f0c1e8c6

Untuk melihat semua operasi terbaru, status, dan penyelesaiannya, Anda dapat menjalankan perintah berikut:

gcloud edge-cache operations list
END_TIME  ID                                                       TARGET  DONE
          operation-1611095421009-5b9486244bf21-cc6b5924-628b8e2a          True
          operation-1611096056610-5b94888273fe6-2da85286-8c810f8e          True
          operation-1611095551517-5b9486a0c251e-c2e1bbbb-de4aa8a5          True