Buat dan dorong gambar Docker ke Amazon ECR menggunakan GitHub Actions dan Terraform - AWS Prescriptive Guidance

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

Buat dan dorong gambar Docker ke Amazon ECR menggunakan GitHub Actions dan Terraform

Ruchika Modi, Amazon Web Services

Ringkasan

Pola ini menjelaskan bagaimana Anda dapat membuat GitHub alur kerja yang dapat digunakan kembali untuk membangun Dockerfile Anda dan mendorong gambar yang dihasilkan ke Amazon Elastic Container Registry (Amazon ECR). Pola mengotomatiskan proses pembuatan Dockerfiles Anda dengan menggunakan Terraform dan Actions. GitHub Ini meminimalkan kemungkinan kesalahan manusia dan secara substansional mengurangi waktu penyebaran.

Tindakan GitHub push ke cabang utama GitHub repositori Anda memulai penyebaran sumber daya. Alur kerja membuat repositori Amazon ECR unik berdasarkan kombinasi nama GitHub organisasi dan repositori. Kemudian mendorong gambar Dockerfile ke repositori Amazon ECR.

Prasyarat dan batasan

Prasyarat

Keterbatasan

Kode yang dapat digunakan kembali ini telah diuji hanya dengan GitHub Tindakan.

Arsitektur

Tumpukan teknologi target

  • Repositori Amazon ECR

  • GitHub Tindakan

  • Terraform

Arsitektur target

Alur kerja untuk membuat GitHub alur kerja yang dapat digunakan kembali untuk membangun Dockerfile dan mendorong gambar ke Amazon ECR.

Diagram ini menggambarkan hal sebagai berikut:

1. Seorang pengguna menambahkan template Dockerfile dan Terraform ke repositori. GitHub

2. Penambahan ini memulai alur kerja GitHub Actions.

3. Alur kerja memeriksa apakah ada repositori Amazon ECR. Jika tidak, itu membuat repositori berdasarkan nama GitHub organisasi dan repositori.

4. Alur kerja membangun Dockerfile dan mendorong gambar ke repositori Amazon ECR.

Alat

Layanan Amazon

Alat-alat lainnya

  • GitHub Tindakan diintegrasikan ke dalam GitHub platform untuk membantu Anda membuat, berbagi, dan menjalankan alur kerja dalam GitHub repositori Anda. Anda dapat menggunakan GitHub Tindakan untuk mengotomatiskan tugas seperti membangun, menguji, dan menerapkan kode Anda.

  • Terraform adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola infrastruktur cloud dan lokal.

Repositori kode

Kode untuk pola ini tersedia di repositori Alur Kerja Tindakan ECR GitHub Docker.

  • Saat Anda membuat GitHub Actions, file alur kerja Docker disimpan di /.github/workflows/ folder repositori ini. Alur kerja untuk solusi ini ada di file workflow.yaml.

  • e2e-testFolder menyediakan contoh Dockerfile untuk referensi dan pengujian.

Praktik terbaik

  • Untuk praktik terbaik dalam menulis Dockerfiles, lihat dokumentasi Docker.

  • Gunakan titik akhir VPC untuk Amazon ECR. Titik akhir VPC didukung oleh AWS PrivateLink, teknologi yang memungkinkan Anda mengakses Amazon APIs ECR secara pribadi melalui alamat IP pribadi. Untuk tugas Amazon ECS yang menggunakan tipe peluncuran Fargate, titik akhir VPC memungkinkan tugas untuk menarik gambar pribadi dari Amazon ECR tanpa menetapkan alamat IP publik ke tugas tersebut.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Konfigurasikan OpenID Connect.

Buat penyedia OpenID Connect (OIDC). Anda akan menggunakan penyedia dalam kebijakan kepercayaan untuk peran IAM yang digunakan dalam tindakan ini. Untuk petunjuk, lihat Mengonfigurasi OpenID Connect di Amazon Web Services GitHub dalam dokumentasi.

Administrator AWS, AWS DevOps, AWS Umum

Kloning GitHub repositori.

Kloning repositori Alur Kerja Tindakan ECR GitHub Docker ke folder lokal Anda:

$git clone https://github.com/aws-samples/docker-ecr-actions-workflow
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Sesuaikan acara yang memulai alur kerja Docker.

Alur kerja untuk solusi ini ada di workflow.yaml. Skrip ini saat ini dikonfigurasi untuk menyebarkan sumber daya saat menerima workflow_dispatch acara. Anda dapat menyesuaikan konfigurasi ini dengan mengubah acara ke workflow_call dan memanggil alur kerja dari alur kerja induk lain.

DevOps insinyur

Sesuaikan alur kerja.

File workflow.yaml dikonfigurasi untuk membuat alur kerja yang dinamis dan dapat digunakan kembali. GitHub Anda dapat mengedit file ini untuk menyesuaikan konfigurasi default, atau Anda dapat meneruskan nilai input dari konsol GitHub Tindakan jika Anda menggunakan workflow_dispatch acara untuk memulai penerapan secara manual.

  • Pastikan untuk menentukan ID akun AWS dan Wilayah target yang benar.

  • Buat kebijakan siklus hidup Amazon ECR (lihat kebijakan sampel) dan perbarui jalur default (e2e-test/policy.json) yang sesuai.

  • File alur kerja membutuhkan dua peran IAM sebagai masukan:

DevOps insinyur

Terapkan templat Terraform.

Alur kerja secara otomatis menyebarkan templat Terraform yang membuat repositori ECR Amazon, berdasarkan peristiwa yang Anda konfigurasikan. GitHub Template ini tersedia sebagai .tf file di root repositori Github.

AWS DevOps, DevOps insinyur

Pemecahan Masalah

IsuSolusi

Masalah atau kesalahan saat Anda mengonfigurasi Amazon S3 dan DynamoDB sebagai backend jarak jauh Terraform.

Ikuti petunjuk dalam dokumentasi Terraform untuk menyiapkan izin yang diperlukan pada sumber daya Amazon S3 dan DynamoDB untuk konfigurasi backend jarak jauh.

Tidak dapat menjalankan atau memulai alur kerja dengan workflow_dispatch acara tersebut.

Alur kerja yang dikonfigurasi untuk diterapkan dari workflow_dispatch acara akan berfungsi hanya jika alur kerja dikonfigurasi di cabang utama juga.

Sumber daya terkait