Panoramica configurazione

Media CDN offre distribuzione dei contenuti, off-load cache, protezione dell'origine, richiedere l'autorizzazione e l'integrazione con Google Cloud bilanciatori del carico delle applicazioni esterni, Logging e Piattaforme di monitoraggio.

Media CDN offre diverse risorse API REST:

  • EdgeCacheService, responsabile della configurazione lato client (TLS, indirizzi IP), routing, Configurazione CDN (modalità cache, TTL, firma) criteri di sicurezza.
  • EdgeCacheOrigin, responsabile della configurazione per origine di qualsiasi basata su HTTP, nonché condizioni per i nuovi tentativi quando il contenuto disponibile o raggiungibile. Ad esempio, nell'ambito di uno strumento di pacchettizzazione video ridondante configurazione.
  • (Facoltativo) EdgeCacheKeyset, che contiene un set di chiavi pubbliche utilizzate della convalidare la firma delle richieste del client dalla tua infrastruttura o dal tuo CMS. EdgeCacheKeysets sono associati con EdgeCacheService e può essere utilizzato in più servizi.

Queste risorse sono rappresentate nell'esempio seguente, che mostra EdgeCacheService con interruzione del traffico e routing a un'altra EdgeCacheOrigins.

Una configurazione di esempio con un "EdgeCacheService" che termina
   il traffico, verifica la presenza di richieste firmate con un "EdgeCacheKeyset" facoltativo e
   instrada le richieste a tre diverse "EdgeCacheOrigins".
Una configurazione di esempio con EdgeCacheService che termina il traffico, verifica la presenza di richieste firmate con un EdgeCacheKeyset e instrada le richieste a tre diverse EdgeCacheOrigins

Autorizzazioni

Devi disporre delle autorizzazioni di Identity and Access Management necessarie per creare Risorse Media CDN. CDN multimediale include i seguenti ruoli IAM predefiniti:

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

Abilita i servizi richiesti

Per configurare ed eseguire il deployment dei servizi Media CDN, devi abilitare sia l'API Network Services e l'API Certificate Manager per il tuo progetto.

Console

  1. Attiva l'API Network Services.

    Abilitare l'API

  2. Abilita l'API Certificate Manager.

    Abilitare l'API

gcloud

  1. Abilita l'API Network Services:

    gcloud services enable networkservices.googleapis.com
    
  2. Abilita l'API Certificate Manager:

    gcloud services enable certificatemanager.googleapis.com
    

Per ulteriori informazioni sull'attivazione e disattivazione dei servizi, consulta Documentazione sull'utilizzo dei servizi.

Configurazione di esempio

Il seguente elenco di risorse descrive un rappresentante Configurazione Media CDN:

  • Un EdgeCacheOrigin:

    • Un'origine basata su Cloud Storage che riprova a memorizzare nella cache esegue il recupero rispetto a un'origine alternativa (AWS S3) se l'oggetto non si trova Cloud Storage (ad esempio, HTTP 404) o un errore 5xx viene riscontrati.
  • Un'EdgeCacheKeyset, che contiene:

    • Due chiavi pubbliche Ed25519, che vengono utilizzate per convalidare richieste firmate.
    • Nella configurazione di esempio, puoi ruotare le chiavi ogni mese e la conservazione di due chiavi in produzione.
  • Un EdgeCacheService con due percorsi, tra cui:

    • Una route per i manifest, associata all'origine Cloud Storage, con con TTL ridotti.
    • Una route per segmenti video, protetta da richieste firmate e associata all'origine Cloud Storage, configurata per memorizzare nella cache tutte le risposte.
  • IPv4, IPv6, logging abilitato (impostazione predefinita) e un certificato SSL gestito configurato

L'esempio seguente mostra l'output gcloud per questa configurazione:

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}"

Opzioni di configurazione per Media CDN

Per configurare Media CDN, puoi utilizzare i seguenti strumenti:

  • Console Google Cloud
  • File YAML o JSON importati
  • Le API direttamente

Utilizzare la console Google Cloud

Vai a Media CDN

Per le istruzioni che descrivono come configurare Media CDN nel Consulta la guida rapida per la console Google Cloud.

Importazione ed esportazione di configurazioni

gcloud CLI consente di esportare e importare le configurazioni file YAML o JSON, che consentono l'integrazione con sistemi di distribuzione continua. utilizzando infrastructure-as-code e l'addestramento degli strumenti. Puoi duplicare le configurazioni, testare un servizio isolato di gestione temporanea prima di aggiornare l'ambiente di produzione e creare snapshot configurazioni al controllo della versione.

I campi solo di output non vengono importati e vengono implicitamente esclusi durante l'importazione una configurazione. In particolare:

  • Gli indirizzi IP non vengono importati, poiché sono dedicati a ciascun servizio. I servizi non possono condividere gli indirizzi IP.
  • Il selfLink della risorsa, che si basa sul suo nome.
  • Il id della risorsa, che viene generato automaticamente.

Per esportare un servizio, EdgeCacheOrigin o EdgeCacheKeyset, usa export per ogni risorsa. Ad esempio, per esportare la configurazione di un servizio:

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

Analogamente, puoi importare una configurazione del servizio esistente come nuova o come aggiornamento in loco per un servizio esistente:

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

Utilizza le operazioni dell'API asincrone

Per impostazione predefinita, i comandi gcloud che creano, aggiornano o eliminano una risorsa bloccare e tornare solo una volta completata l'attività (sia per l'esito positivo che errore). Per impostazione predefinita, l'API REST è asincrona.

In alcuni casi, potresti voler effettuare queste richieste in modo asincrono. Puoi fornire il flag --async, che causa la restituzione immediata del comando con un ID operazione. Puoi usare questo ID per effettuare un controllo e fare un sondaggio per confermare se l'attività è riuscita, se ha restituito un errore e qual è messaggio precedente.

Ispezioni una singola operazione (in base al suo ID) per comprendere l'errore nel dettaglio. Ad esempio, se configuri un logConfig.sampleRate senza anche impostazione logConfig.enable = true, il seguente errore potrebbe essere restituito:

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

Per visualizzare tutte le operazioni recenti, il loro stato e il loro completamento, puoi eseguire seguente comando:

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