INTEGRITY Dokumentace

Správa obrázků

Odesílání images během wrangler deploy

Při spuštění wrangler deploy, pokud nastavíte image atribut ve vašem Konfigurace Wrangleru na cestu k Dockerfile, Wrangler obraz kontejneru sestaví lokálně pomocí Dockeru a poté jej nahraje do registru provozovaného Cloudflare. Tento registr je integrovaný s vaším účtem Cloudflare a je podporovaný R2. O veškerou autentizaci se automaticky stará Cloudflare, a to jak při nahrávání, tak při stahování obrazů.

Stačí zadat cestu k vašemu Dockerfile:

{
	"containers": [
		{
			"image": "./Dockerfile"
		}
	]
}
[[containers]]
image = "./Dockerfile"

A nasaďte Worker pomocí wrangler deploy. Žádná další správa obrazů není nutná.

Při dalších nasazeních Wrangler odešle pouze vrstvy image, které se změnily, což šetří místo i čas.

Použití předem sestavených obrazů kontejnerů

Containers podporují obrazy ze spravovaného registru Cloudflare na registry.cloudflare.com, Docker Hub ↗, Amazon ECR ↗, a Google Artifact Registry ↗.

Použití veřejných obrazů Docker Hub

Pro použití veřejného obrazu Docker Hub nastavte image na plně kvalifikovaný odkaz na obraz z Docker Hub ve vaší konfiguraci Wrangleru.

Například:

{
	"containers": [
		{
			"image": "docker.io/<NAMESPACE>/<REPOSITORY>:<TAG>"
		}
	]
}
[[containers]]
image = "docker.io/<NAMESPACE>/<REPOSITORY>:<TAG>"

Veřejné images z Docker Hub nevyžadují konfiguraci registru.

Privátní images z Docker Hub používají postup konfigurace privátního registru popsaný dále.

Pokud jsou nakonfigurovány přihlašovací údaje k Docker Hub, použijí se ke stažení veřejných i soukromých obrazů.

Konfigurace přihlašovacích údajů pro soukromý registr

Pro použití soukromého obrazu z Docker Hub, Amazon ECR nebo Google Artifact Registry spusťte wrangler containers registries configure pro doménu registru.

Wrangler vyzve k zadání secretu a uloží jej do Secrets Store. Pokud ještě nemáte vytvořené úložiště Secrets Store, Wrangler vás nejprve vyzve, abyste ho vytvořili.

Použijte --secret-name k pojmenování nebo opětovnému použití tajného údaje, --secret-store-id k zacílení na konkrétní úložiště Secrets Store a --skip-confirmation pro neinteraktivní spouštění. V CI nebo skriptech předejte tajný klíč přes stdin.

Použití soukromých obrazů Docker Hub

Nakonfigurujte Docker Hub ve Wrangleru pomocí těchto hodnot:

Vytvoření osobního přístupového tokenu Docker Hub:

  1. Přihlaste se k Docker Home ↗.
  2. Přejděte na Nastavení účtu > Osobní přístupové tokeny.
  3. Vyberte Generate new token.
  4. Tokenu udělte Čtení přístup a poté zkopírujte hodnotu tokenu.

Interaktivně:

npx wrangler containers registries configure docker.io --dockerhub-username=<YOUR_DOCKERHUB_USERNAME>

CI nebo skripty:

printf '%s' "$DOCKERHUB_PAT" | npx wrangler containers registries configure docker.io --dockerhub-username=<YOUR_DOCKERHUB_USERNAME> --secret-name=<SECRET_NAME> --skip-confirmation

Po nakonfigurování registru použijte stejný plně kvalifikovaný odkaz na image Docker Hub, jaký je uveden výše.

Použití soukromých obrazů Amazon ECR

Nakonfigurujte Amazon ECR ve Wrangleru pomocí těchto hodnot:

Veřejné images ECR nejsou podporovány. Požadované přihlašovací údaje vygenerujete vytvořením uživatele IAM se zásadou pouze pro čtení. Následující příklad uděluje přístup ke všem repozitářům images v účtu AWS 123456789012 v us-east-1.

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Action": ["ecr:GetAuthorizationToken"],
			"Effect": "Allow",
			"Resource": "*"
		},
		{
			"Effect": "Allow",
			"Action": [
				"ecr:BatchCheckLayerAvailability",
				"ecr:GetDownloadUrlForLayer",
				"ecr:BatchGetImage"
			],
			// arn:${Partition}:ecr:${Region}:${Account}:repository/${Repository-name}
			"Resource": [
				"arn:aws:ecr:us-east-1:123456789012:repository/*"
				// "arn:aws:ecr:us-east-1:123456789012:repository/example-repo"
			]
		}
	]
}

Po vytvoření uživatele IAM použijte jeho přihlašovací údaje k nakonfigurujte registry ve Wrangleru. Pokud ještě neexistuje, Wrangler vás vyzve k vytvoření úložiště Secrets Store a poté do něj uloží tajný klíč.

Interaktivně:

npx wrangler containers registries configure <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com --aws-access-key-id=<AWS_ACCESS_KEY_ID>

CI nebo skripty:

printf '%s' "$AWS_SECRET_ACCESS_KEY" | npx wrangler containers registries configure <AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com --aws-access-key-id=<AWS_ACCESS_KEY_ID> --secret-name=<SECRET_NAME> --skip-confirmation

Po nakonfigurování registru použijte v konfiguraci Wrangler plně kvalifikovaný odkaz na image Amazon ECR:

{
	"containers": [
		{
			"image": "<AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<REPOSITORY>:<TAG>"
		}
	]
}
[[containers]]
image = "<AWS_ACCOUNT_ID>.dkr.ecr.<AWS_REGION>.amazonaws.com/<REPOSITORY>:<TAG>"

Použití soukromých obrazů Google Artifact Registry

Nakonfigurujte Google Artifact Registry ve Wrangleru pomocí těchto hodnot:

Veřejným přihlašovacím údajem je e-mail účtu služby, který se zadává pomocí --gar-email. Musí odpovídat client_email pole v klíči účtu služby.

Soukromým přihlašovacím údajem je JSON klíč účtu služby. Zadejte ho pomocí stdin (cesta k souboru, čistý JSON nebo base64) nebo interaktivní výzvu (cestu k souboru nebo base64). Wrangler uloží klíč zakódovaný ve formátu base64 do Secrets Store.

Pro vygenerování potřebných přihlašovacích údajů vytvořte účet služby s Artifact Registry Reader roli a stáhněte její JSON klíč:

  1. V Google Cloud console ↗, přejděte na IAM & Admin > Servisní účty.
  2. Vyberte Vytvoření servisního účtu, poté zadejte název, ID a volitelný popis.
  3. Udělte účtu služby Artifact Registry Reader roli a poté vyberte Hotovo.
  4. Vyberte účet služby a poté otevřete Klíče kartě.
  5. Vyberte Přidat klíč > Vytvořit nový klíč, vyberte JSON, pak vyberte Vytvořit. Soubor s klíčem se stáhne do vašeho počítače.

Interaktivně: Wrangler si vyžádá klíč, kam zadáte cestu k souboru nebo JSON kódovaný v base64:

npx wrangler containers registries configure <REGION>-docker.pkg.dev --gar-email=<SERVICE_ACCOUNT_EMAIL>

CI nebo skripty: Klíč přesměrujte pomocí pipe přes stdin (obsah klíče jako čistý JSON nebo base64, případně cesta k souboru s klíčem)

cat <PATH_TO_KEY> | npx wrangler containers registries configure <REGION>-docker.pkg.dev --gar-email=<SERVICE_ACCOUNT_EMAIL> --secret-name=<SECRET_NAME> --skip-confirmation

Pokud jste klíč již uložili do Secrets Store, odkažte se na existující tajný klíč a klíč vynechte:

npx wrangler containers registries configure <REGION>-docker.pkg.dev --gar-email=<SERVICE_ACCOUNT_EMAIL> --secret-name=<EXISTING_SECRET_NAME> --skip-confirmation

Po nakonfigurování registru použijte v konfiguraci Wrangler plně kvalifikovaný odkaz na image Google Artifact Registry:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "containers": [
    {
      "image": "<REGION>-docker.pkg.dev/<PROJECT_ID>/<REPOSITORY>/<IMAGE>:<TAG>"
    }
  ]
}
[[containers]]
image = "<REGION>-docker.pkg.dev/<PROJECT_ID>/<REPOSITORY>/<IMAGE>:<TAG>"

Použití obrazů z jiných registrů

Pokud chcete použít předem sestavený obraz z jiného poskytovatele registru, nejprve se ujistěte, že existuje lokálně, a poté ho nahrajte do Cloudflare Registry:

docker pull <PUBLIC_IMAGE>
docker tag <PUBLIC_IMAGE> <IMAGE>:<TAG>

Wrangler poskytuje příkaz pro nahrávání image do Cloudflare Registry:

npx wrangler containers push <IMAGE>:<TAG>

Nebo můžete použít -p příznak s wrangler containers build k sestavení a nahrání obrazu v jednom kroku:

npx wrangler containers build -p -t <TAG> .

Výstupem bude URI registru obrazů, které pak můžete použít ve své konfiguraci Wrangler:

{
	"containers": [
		{
			"image": "registry.cloudflare.com/<YOUR_ACCOUNT_ID>/<IMAGE>:<TAG>"
		}
	]
}
[[containers]]
image = "registry.cloudflare.com/<YOUR_ACCOUNT_ID>/<IMAGE>:<TAG>"

Odesílání images pomocí CI

Pro použití obrazu sestaveného v prostředí kontinuální integrace nainstalujte wrangler poté sestavte a nahrajte obrazy pomocí wrangler containers build hodnotou --push příznak, nebo pomocí wrangler containers push příkazu.

Limity registru

Velikost obrazů je omezena dostupným diskem nakonfigurované typ instance pro Container.

Odstraňte obrazy pomocí wrangler containers images delete k uvolnění místa, ale návrat Workeru k předchozí verzi, která používá smazaný obraz, poté skončí chybou.