View a markdown version of this page

Kustomisasi gambar kontainer - Pengujian Beban Terdistribusi di AWS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kustomisasi gambar kontainer

Gambar penguji beban

Solusi ini menggunakan repositori gambar Amazon Elastic Container Registry (Amazon ECR) publik yang dikelola oleh AWS untuk menyimpan gambar yang digunakan untuk menjalankan pengujian yang dikonfigurasi. Anda dapat membangun kembali dan mendorong gambar kontainer ke repositori gambar ECR di akun AWS Anda sendiri.

Anda dapat mengedit gambar wadah default agar sesuai dengan kebutuhan Anda. Tetapkan variabel lingkungan ini sebelum membuat gambar yang disesuaikan.

#!/bin/bash export REGION=aws-region-code # the AWS region to launch the solution (e.g. us-east-1) export BUCKET_PREFIX=my-bucket-name # prefix of the bucket name without the region code export BUCKET_NAME=$BUCKET_PREFIX-$REGION # full bucket name where the code will reside export SOLUTION_NAME=my-solution-name export VERSION=my-version # version number for the customized code export PUBLIC_ECR_REGISTRY=public.ecr.aws/awssolutions/distributed-load-testing-on-aws-load-tester # replace with the container registry and image if you want to use a different container image export PUBLIC_ECR_TAG=v3.1.0 # replace with the container image tag if you want to use a different container image

Anda dapat meng-host gambar kontainer yang disesuaikan baik di repositori gambar pribadi atau publik di akun AWS Anda. Sumber daya gambar ada di deployment/ecr/distributed-load-testing-on-aws-load-tester direktori di basis kode.

Anda kemudian dapat membangun dan mendorong gambar ke tujuan host.

  • Untuk repositori dan gambar Amazon ECR pribadi, lihat repositori pribadi Amazon ECR dan gambar pribadi di Panduan Pengguna Amazon ECR.

  • Untuk repositori dan gambar Amazon ECR publik, lihat repositori publik Amazon ECR dan gambar publik di Panduan Pengguna Pu blik Amazon ECR.

Setelah Anda membuat gambar kustom, deklarasikan variabel lingkungan berikut sebelum membangun solusi yang disesuaikan.

#!/bin/bash export PUBLIC_ECR_REGISTRY=YOUR_ECR_REGISTRY_URI # e.g. YOUR_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/YOUR_IMAGE_NAME export PUBLIC_ECR_TAG=YOUR_ECR_TAG # e.g. latest, v3.4.0

Dockerfile mendefinisikan gambar pengujian beban. Ini dibangun di atas image dasar Amazon Linux, menginstal runtime bahasa, paket sistem, dan alat pengujian yang diperlukan untuk menjalankan tes beban, menambahkan file metadata versi kerangka kerja dan skrip load-test.sh titik masuk, dan berjalan sebagai pengguna non-root. Untuk melihat Dockerfile, lihat Docker file di repositori. GitHub

Skrip load-test.sh entrypoint berjalan di dalam wadah setiap kali tugas dimulai. Ini membaca konfigurasi pengujian dan metadata wadah. Kemudian mengunduh definisi pengujian dari Amazon S3 dan menyediakan kerangka pengujian yang dipilih untuk dijalankan. Skrip menunggu sinyal awal sehingga semua tugas dalam pengujian dimulai pada saat yang sama. Kemudian menjalankan pengujian untuk durasi yang dikonfigurasi sambil menghasilkan metrik dan log. Ketika pengujian selesai, skrip mengumpulkan hasil dan memperkayanya dengan detail tentang wadah yang menghasilkannya. Ini mengunggah hasil, log, dan artefak lainnya ke Amazon S3. Skrip juga menangani sinyal terminasi, sehingga mempertahankan sebagian hasil dan log jika Anda membatalkan pengujian sebelum selesai. Untuk melihat skrip lengkap, lihat load-test.sh di GitHub repositori.

Gambar konsol web (hanya template ALB+ECS Fargate)

Template ALB + ECS Fargate menjalankan konsol web sebagai wadah di ECS Fargate. Secara default, solusi menarik gambar konsol web dari repositori Amazon ECR publik yang dikelola oleh AWS.

Di lingkungan di mana akses ke pendaftar kontainer publik dibatasi (misalnya, VPC tanpa akses internet atau akun dengan kebijakan akses publik ECR), Anda harus mencerminkan citra publik ke repositori Amazon ECR pribadi dan menyediakan URI gambar pribadi di parameter URI Gambar Konsol Web. CloudFormation Anda juga dapat menggunakan langkah-langkah berikut untuk menyesuaikan gambar konsol web.

Mencerminkan gambar publik ke repositori ECR pribadi

Untuk mencerminkan gambar konsol web ke repositori ECR pribadi:

  1. Otentikasi ke registri ECR publik:

    $ aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
  2. Tarik gambar konsol web publik:

    $ docker pull public.ecr.aws/aws-solutions/distributed-load-testing-on-aws-web-console:<version>
  3. Buat repositori ECR pribadi di akun Anda (jika belum ada):

    $ aws ecr create-repository --repository-name <your-repo-name> --region <region> 2>/dev/null || true
  4. Otentikasi ke registri ECR pribadi Anda:

    $ aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com
  5. Tandai dan dorong gambar ke repositori pribadi Anda:

    $ docker tag public.ecr.aws/aws-solutions/distributed-load-testing-on-aws-web-console:<version> \ <account-id>.dkr.ecr.<region>.amazonaws.com/<your-repo-name>:<version> $ docker push <account-id>.dkr.ecr.<region>.amazonaws.com/<your-repo-name>:<version>
  6. Saat meluncurkan tumpukan ALB + ECS Fargate, masukkan URI gambar pribadi di parameter URI Gambar Konsol Web:

    <account-id>.dkr.ecr.<region>.amazonaws.com/<your-repo-name>:<version>

Sesuaikan gambar konsol web

Anda juga dapat menyesuaikan gambar konsol web. Sumber daya gambar ada di deployment/ecr/distributed-load-testing-on-aws-web-console direktori, terletak di GitHub repositori. Anda dapat mengedit file kontainer, membangun gambar lokal, mendorongnya ke repositori ECR pribadi, dan menyediakan URI gambar yang dihasilkan dalam parameter URI Gambar Konsol Web.

Gambar wadah konsol web dibangun di atas image dasar Nginx dan menginstal AWS CLI. Dockerfile-nya meny alin dalam konfigurasi Nginx dan skrip titik masuk. Dockerfile mengekspos port HTTP dan mengatur skrip titik masuk untuk dijalankan saat wadah dimulai. Saat wadah dimulai, entrypoint.sh menggunakan AWS CLI untuk mengunduh aset konsol web dari Amazon S3. Ini mengekstraknya ke root dokumen Nginx dan kemudian memulai Nginx di latar depan. Nginx.conf melayani aplikasi satu halaman (SPA) dan merutekan jalur yang tidak tertandingi kembali ke titik masuk aplikasi. Ini juga menambahkan titik akhir pemeriksaan kesehatan untuk Application Load Balancer, memungkinkan kompresi gzip, menetapkan caching berumur panjang untuk aset statis (sambil menonaktifkan caching untuk titik masuk dan konfigurasi runtime), dan menambahkan header respons keamanan umum.

Untuk informasi selengkapnya, lihat Mendorong gambar Docker ke repositori pribadi Amazon ECR di Panduan Pengguna Amazon ECR.

URI gambar penguji beban

Ketiga template penerapan (Amazon CloudFront + S3, Application Load Balancer (ALB) + ECS di AWS Fargate, dan headless) menarik gambar wadah penguji beban dari registri publik Amazon Elastic Container Registry (Amazon ECR) () pada waktu penerapanpublic.ecr.aws.

Di lingkungan di mana akses ke registri kontainer publik dibatasi, cerminkan gambar penguji beban ke repositori Amazon ECR pribadi dan berikan URI gambar pribadi di parameter AWS CloudFormation Lo ad Tester Image URI (LoadTesterImageUri). Contoh umum termasuk VPC tanpa akses internet, akun dengan kebijakan akses publik ECR, dan Wilayah AWS GovCloud (AS), di mana tugas ECS tidak dapat mengakses registri ECR publik. Pencerminan ke repositori pribadi di Wilayah penerapan Anda diperlukan untuk penerapan AWS GovCloud (AS) dan opsional di tempat lain.

Mencerminkan gambar penguji beban ke repositori ECR pribadi

catatan

Saat Anda memberikanLoadTesterImageUri, parameter Auto-update Container Image (UseStableTagging) tidak lagi mengelola gambar penguji beban. Untuk mengambil patch keamanan, Anda harus mencerminkan ulang tag gambar yang diperbarui.

Untuk mencerminkan gambar penguji beban ke repositori ECR pribadi, selesaikan langkah-langkah berikut. Dalam perintah berikut, ganti <version> dengan tag gambar (misalnya,v4.0.0), <region> dengan Wilayah penerapan Anda (misalnya,us-gov-west-1), <profile> dengan nama profil AWS Command Line Interface (AWS CLI) Anda, dan <account-id> dengan ID akun AWS 12 digit Anda.

  1. Otentikasi ke registri ECR publik dari mesin dengan akses internet.

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
  2. Tarik gambar penguji beban publik.

    docker pull public.ecr.aws/aws-solutions/distributed-load-testing-on-aws-load-tester:<version>
  3. Buat repositori ECR pribadi di akun Anda (jika belum ada).

    aws ecr create-repository --repository-name dlt-load-tester --region <region> --profile <profile> 2>/dev/null || true
  4. Otentikasi ke registri ECR pribadi Anda.

    aws ecr get-login-password --region <region> --profile <profile> | docker login --username AWS --password-stdin <account-id>.dkr.ecr.<region>.amazonaws.com
  5. Tandai dan dorong gambar ke repositori pribadi Anda.

    docker tag public.ecr.aws/aws-solutions/distributed-load-testing-on-aws-load-tester:<version> \ <account-id>.dkr.ecr.<region>.amazonaws.com/dlt-load-tester:<version> docker push <account-id>.dkr.ecr.<region>.amazonaws.com/dlt-load-tester:<version>
  6. Masukkan URI gambar pribadi dalam parameter Lo ad Tester Image URI saat Anda meluncurkan tumpukan.

    <account-id>.dkr.ecr.<region>.amazonaws.com/dlt-load-tester:<version>

Contoh penerapan AWS GovCloud (AS)

Contoh berikut menunjukkan parameter yang diperlukan untuk setiap varian tumpukan di AWS GovCloud (AS).

Untuk tumpukan tanpa kepala, hanya LoadTesterImageUri diperlukan:

aws cloudformation create-stack \ --stack-name dlt-govcloud \ --template-url https://solutions-reference-us-gov.s3.us-gov-west-1.amazonaws.com/distributed-load-testing-on-aws/latest/distributed-load-testing-on-aws-headless.template \ --parameters \ ParameterKey=AdminName,ParameterValue=admin \ ParameterKey=AdminEmail,ParameterValue=admin@example.com \ ParameterKey=LoadTesterImageUri,ParameterValue=<account-id>.dkr.ecr.us-gov-west-1.amazonaws.com/dlt-load-tester:<version> \ --capabilities CAPABILITY_IAM \ --region us-gov-west-1

Untuk Application Load Balancer (ALB) + ECS di AWS Fargate stack, sediakan keduanya dan. LoadTesterImageUri WebConsoleImageUri Tugas ECS di AWS GovCloud (AS) tidak dapat mengakses registri ECR publik (public.ecr.aws), jadi Anda harus mencerminkan kedua gambar kontainer.

aws cloudformation create-stack \ --stack-name dlt-govcloud \ --template-url https://solutions-reference-us-gov.s3.us-gov-west-1.amazonaws.com/distributed-load-testing-on-aws/latest/distributed-load-testing-on-aws-alb-ecs.template \ --parameters \ ParameterKey=AdminName,ParameterValue=admin \ ParameterKey=AdminEmail,ParameterValue=admin@example.com \ ParameterKey=ConsoleDomainName,ParameterValue=dlt.example.gov \ ParameterKey=ACMCertificateArn,ParameterValue=arn:aws-us-gov:acm:us-gov-west-1:123456789012:certificate/abcd1234-ef56-gh78-ij90-klmnopqrstuv \ ParameterKey=LoadTesterImageUri,ParameterValue=<account-id>.dkr.ecr.us-gov-west-1.amazonaws.com/dlt-load-tester:<version> \ ParameterKey=WebConsoleImageUri,ParameterValue=<account-id>.dkr.ecr.us-gov-west-1.amazonaws.com/dlt-web-console:<version> \ --capabilities CAPABILITY_IAM \ --region us-gov-west-1

Untuk petunjuk tentang pencerminan gambar konsol web, lihat Gambar konsol web.