Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Secara otomatis membangun dan menyebarkan aplikasi Java ke Amazon EKS menggunakan pipeline CI/CD
MAHESH RAGHUNANDANAN, Jomcy Pappachen, dan James Radtke, Amazon Web Services
Ringkasan
Pola ini menjelaskan cara membuat pipeline continuous integration and continuous delivery (CI/CD) yang secara otomatis membangun dan menyebarkan aplikasi Java dengan DevSecOps praktik yang direkomendasikan ke cluster Amazon Elastic Kubernetes Service (Amazon EKS) di. AWS Cloud Pola ini menggunakan aplikasi salam yang dikembangkan dengan kerangka Spring Boot Java dan yang menggunakan Apache Maven.
Anda dapat menggunakan pendekatan pola ini untuk membangun kode untuk aplikasi Java, mengemas artefak aplikasi sebagai gambar Docker, memindai keamanan gambar, dan mengunggah gambar sebagai wadah beban kerja di Amazon EKS. Pendekatan pola ini berguna jika Anda ingin bermigrasi dari arsitektur monolitik yang digabungkan erat ke arsitektur layanan mikro. Pendekatan ini juga membantu Anda memantau dan mengelola seluruh siklus hidup aplikasi Java, yang memastikan tingkat otomatisasi yang lebih tinggi dan membantu menghindari kesalahan atau bug.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
AWS Command Line Interface (AWS CLI) versi 2, diinstal dan dikonfigurasi. Untuk informasi selengkapnya tentang ini, lihat Menginstal atau memperbarui ke versi terbaru dari AWS CLI dokumentasi. AWS CLI
AWS CLI versi 2 harus dikonfigurasi dengan peran AWS Identity and Access Management (IAM) yang sama yang membuat kluster Amazon EKS, karena hanya peran itu yang diizinkan untuk menambahkan peran IAM lainnya ke.
aws-auth
ConfigMap
Untuk informasi dan langkah-langkah untuk mengkonfigurasi AWS CLI, lihat Mengkonfigurasi pengaturan dalam AWS CLI dokumentasi.Peran dan izin IAM dengan akses penuh ke. AWS CloudFormation Untuk informasi selengkapnya tentang ini, lihat Mengontrol akses dengan IAM dalam AWS CloudFormation dokumentasi.
Cluster Amazon EKS yang ada, dengan detail nama peran IAM dan Nama Sumber Daya Amazon (ARN) peran IAM untuk node pekerja di cluster EKS.
Kubernetes Cluster Autoscaler, diinstal dan dikonfigurasi di klaster Amazon EKS Anda. Untuk informasi selengkapnya, lihat Komputasi klaster skala dengan Karpenter dan Cluster Autoscaler di dokumentasi Amazon EKS.
Akses ke kode di GitHub repositori.
penting
AWS Security Hub diaktifkan sebagai bagian dari AWS CloudFormation template yang disertakan dalam kode untuk pola ini. Secara default, setelah Security Hub diaktifkan, ia dilengkapi dengan uji coba gratis 30 hari. Setelah persidangan, ada biaya yang terkait dengan ini Layanan AWS. Untuk informasi selengkapnya tentang harga, silakan lihat harga AWS Security Hub
Versi produk
Helm versi 3.4.2 atau yang lebih baru
Apache Maven versi 3.6.3 atau yang lebih baru
BridgeCrew Checkov versi 2.2 atau yang lebih baru
Aqua Security Trivy versi 0.37 atau yang lebih baru
Arsitektur
Tumpukan teknologi
AWS CodeBuild
AWS CodeCommit
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
. Namun, solusi ini akan bekerja dengan penyedia Git sistem kontrol versi (VCS) apa pun seperti GitHub atau GitLab dengan perubahan minimal. Amazon CodeGuru
AWS CodePipeline
Amazon Elastic Container Registry (Amazon ECR)
Amazon EKS
Amazon EventBridge
AWS Security Hub
Amazon Simple Notification Service (Amazon SNS)
Arsitektur target

Diagram menunjukkan alur kerja berikut:
Pengembang memperbarui kode aplikasi Java di cabang dasar CodeCommit repositori, yang membuat permintaan tarik (PR).
Segera setelah PR dikirimkan, Amazon CodeGuru Reviewer secara otomatis meninjau kode, menganalisisnya berdasarkan praktik terbaik untuk Java, dan memberikan rekomendasi kepada pengembang.
Setelah PR digabungkan ke cabang dasar, EventBridge acara Amazon dibuat.
EventBridge Acara memulai CodePipeline pipa, yang dimulai.
CodePipeline menjalankan tahap CodeSecurity Scan (keamanan berkelanjutan).
AWS CodeBuild memulai proses pemindaian keamanan di mana file Helm penerapan Dockerfile dan Kubernetes dipindai dengan menggunakan Checkov, dan kode sumber aplikasi dipindai berdasarkan perubahan kode tambahan. Pemindaian kode sumber aplikasi dilakukan oleh pembungkus CodeGuru Reviewer Command Line Interface (CLI)
. Jika tahap pemindaian keamanan berhasil, tahap Build (integrasi berkelanjutan) dimulai.
Pada tahap CodeBuild Build, membangun artefak, mengemas artefak ke image Docker, memindai gambar untuk kerentanan keamanan dengan menggunakan Aqua Security Trivy, dan menyimpan gambar di Amazon ECR.
Kerentanan yang terdeteksi dari langkah 8 diunggah ke Security Hub untuk analisis lebih lanjut oleh pengembang atau insinyur. Security Hub memberikan gambaran umum dan rekomendasi untuk memulihkan kerentanan.
Pemberitahuan email tentang fase berurutan dalam CodePipeline pipeline dikirim melalui Amazon SNS.
Setelah fase integrasi berkelanjutan selesai, CodePipeline memasuki tahap Deploy (pengiriman berkelanjutan).
Image Docker di-deploy ke Amazon EKS sebagai beban kerja kontainer (pod) dengan menggunakan bagan Helm.
Pod aplikasi dikonfigurasi dengan agen Amazon CodeGuru Profiler, yang mengirimkan data profil aplikasi (CPU, penggunaan heap, dan latensi) ke CodeGuru Profiler, yang membantu pengembang memahami perilaku aplikasi.
Alat
Layanan AWS
AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.
AWS CodeBuildadalah layanan build yang dikelola sepenuhnya yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.
AWS CodeCommitadalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.
Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Amazon CodeGuru Profiler mengumpulkan data kinerja runtime dari aplikasi live Anda, dan memberikan rekomendasi yang dapat membantu Anda menyempurnakan kinerja aplikasi.
Amazon CodeGuru Reviewer menggunakan analisis program dan pembelajaran mesin untuk mendeteksi potensi cacat yang sulit ditemukan oleh pengembang dan menawarkan saran untuk meningkatkan kode Java dan Python Anda.
AWS CodePipelinemembantu Anda dengan cepat memodelkan dan mengkonfigurasi berbagai tahapan rilis perangkat lunak dan mengotomatiskan langkah-langkah yang diperlukan untuk merilis perubahan perangkat lunak secara terus menerus.
Amazon Elastic Container Registry (Amazon ECR) adalah layanan registri gambar kontainer terkelola yang aman, terukur, dan andal.
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
Amazon EventBridge adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data real-time dari berbagai sumber, termasuk AWS Lambda fungsi, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di tempat lain. Akun AWS
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Security Hubmemberikan pandangan komprehensif tentang keadaan keamanan Anda AWS. Ini juga membantu Anda memeriksa AWS lingkungan Anda terhadap standar industri keamanan dan praktik terbaik.
Amazon Simple Notification Service (Amazon SNS) membantu Anda mengoordinasikan dan mengelola pertukaran pesan antara penayang dan klien, termasuk server web dan alamat email.
Amazon Simple Storage Service (Amazon S3) adalah layanan penyimpanan objek berbasis cloud yang membantu Anda menyimpan, melindungi, dan mengambil sejumlah data.
Layanan lainnya
Helm
adalah manajer paket open-source untuk Kubernetes. Apache Maven
adalah perangkat lunak manajemen proyek dan alat pemahaman. BridgeCrew Checkov
adalah alat analisis kode statis untuk memindai infrastruktur sebagai file kode (IAc) untuk kesalahan konfigurasi yang dapat menyebabkan masalah keamanan atau kepatuhan. Aqua Security Trivy
adalah pemindai komprehensif untuk kerentanan dalam gambar kontainer, sistem file, dan repositori Git, selain masalah konfigurasi.
Kode
Kode untuk pola ini tersedia di GitHub aws-codepipeline-devsecops-amazoneks
Praktik terbaik
Pola ini mengikuti praktik terbaik keamanan IAM untuk menerapkan prinsip hak istimewa terkecil untuk entitas IAM di semua fase solusi. Jika Anda ingin memperluas solusi dengan alat tambahan Layanan AWS atau pihak ketiga, kami sarankan Anda meninjau bagian tentang penerapan izin hak istimewa paling sedikit dalam dokumentasi IAM.
Jika Anda memiliki beberapa aplikasi Java, kami sarankan Anda membuat CI/CD pipeline terpisah untuk setiap aplikasi.
Jika Anda memiliki aplikasi monolit, kami sarankan Anda memecah aplikasi menjadi layanan mikro jika memungkinkan. Layanan mikro lebih fleksibel, memudahkan penerapan aplikasi sebagai wadah, dan memberikan visibilitas yang lebih baik ke dalam keseluruhan pembuatan dan penyebaran aplikasi.
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Kloning GitHub repositori. | Untuk mengkloning repositori, jalankan perintah berikut.
| Pengembang aplikasi, DevOps insinyur |
Buat bucket S3 dan unggah kodenya. |
| AWS DevOps, administrator Cloud, DevOps insinyur |
Buat AWS CloudFormation tumpukan. |
| AWS DevOps, DevOps insinyur |
Validasi penyebaran CloudFormation tumpukan. |
| AWS DevOps, DevOps insinyur |
Hapus bucket S3. | Kosongkan dan hapus bucket S3 yang Anda buat sebelumnya. Untuk informasi selengkapnya, lihat Menghapus bucket di dokumentasi Amazon S3. | AWS DevOps, DevOps insinyur |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Konfigurasikan bagan Helm aplikasi Java Anda. |
| DevOps insinyur |
Validasi bagan Helm untuk kesalahan sintaks. |
| DevOps insinyur |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat CI/CD pipa. |
| AWS DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Aktifkan integrasi Aqua Security. | Langkah ini diperlukan untuk mengunggah temuan kerentanan gambar Docker yang dilaporkan oleh Trivy ke Security Hub. Karena AWS CloudFormation tidak mendukung integrasi Security Hub, proses ini harus dilakukan secara manual.
| Administrator AWS, DevOps insinyur |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Izinkan CodeBuild untuk menjalankan perintah Helm atau kubectl di cluster Amazon EKS. | CodeBuild Agar dapat diautentikasi untuk menggunakan Helm atau pentingProsedur berikut harus diselesaikan sebelum tahap persetujuan penyebaran di CodePipeline.
| DevOps |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Verifikasi bahwa CI/CD pipeline dimulai secara otomatis. |
Untuk informasi selengkapnya tentang memulai pipeline dengan menggunakan CodePipeline, lihat Memulai pipelineCodePipeline, Memulai pipeline secara manual, dan Memulai pipeline sesuai jadwal dalam CodePipeline dokumentasi. | DevOps |
Menyetujui penyebaran. |
| DevOps |
Validasi pembuatan profil aplikasi. | Setelah penerapan selesai dan pod aplikasi dikerahkan di Amazon EKS, agen Amazon CodeGuru Profiler yang dikonfigurasi dalam aplikasi akan mencoba mengirim data profil aplikasi (CPU, ringkasan heap, latensi, dan bottleneck) ke Profiler. CodeGuru Untuk penerapan awal aplikasi, CodeGuru Profiler membutuhkan waktu sekitar 15 menit untuk memvisualisasikan data profil. | AWS DevOps |
Sumber daya terkait
Informasi tambahan
AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
. Solusi ini juga akan bekerja dengan penyedia Git sistem kontrol versi (VCS) apa pun seperti GitHub atau GitLab dengan perubahan minimal. CodeGuru Profiler tidak harus bingung dengan AWS X-Ray layanan dalam hal fungsionalitas. Kami menyarankan Anda menggunakan CodeGuru Profiler untuk mengidentifikasi baris kode paling mahal yang dapat menyebabkan kemacetan atau masalah keamanan, dan memperbaikinya sebelum menjadi risiko potensial. Layanan X-Ray adalah untuk pemantauan kinerja aplikasi.
Dalam pola ini, aturan acara dikaitkan dengan bus acara default. Jika diperlukan, Anda dapat memperluas pola untuk menggunakan bus acara khusus.
Pola ini menggunakan CodeGuru Reviewer sebagai alat pengujian keamanan aplikasi statis (SAST) untuk kode aplikasi. Anda juga dapat menggunakan pipeline ini untuk alat lain, seperti SonarQube atau Checkmarx. Anda dapat menambahkan petunjuk pengaturan pemindaian untuk salah satu alat ini
buildspec/buildspec_secscan.yaml
untuk mengganti instruksi CodeGuru pemindaian.