Menerapkan resource dan paket Kubernetes menggunakan Amazon EKS dan repositori bagan Helm di Amazon S3 - AWS Prescriptive Guidance

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

Menerapkan resource dan paket Kubernetes menggunakan Amazon EKS dan repositori bagan Helm di Amazon S3

Sagar Panigrahi, Amazon Web Services

Ringkasan

Pola ini membantu Anda mengelola aplikasi Kubernetes secara efisien, terlepas dari kompleksitasnya. Pola ini mengintegrasikan Helm ke dalam pipeline continuous integration dan continuous delivery (CI/CD) yang ada untuk menyebarkan aplikasi ke dalam klaster Kubernetes. Helm adalah manajer paket Kubernetes yang membantu Anda mengelola aplikasi Kubernetes. Bagan helm membantu mendefinisikan, menginstal, dan meningkatkan aplikasi Kubernetes yang kompleks. Bagan dapat dibuat versi dan disimpan di repositori Helm, yang meningkatkan mean time to restore (MTTR) selama pemadaman. 

Pola ini menggunakan Amazon Elastic Kubernetes Service (Amazon EKS) untuk klaster Kubernetes. Ini menggunakan Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) sebagai repositori bagan Helm, sehingga bagan dapat dikelola dan diakses secara terpusat oleh pengembang di seluruh organisasi.

Prasyarat dan batasan

Prasyarat

  • Akun Amazon Web Services (AWS) aktif dengan virtual private cloud (VPC)

  • Klaster Amazon EKS 

  • Node pekerja disiapkan dalam klaster Amazon EKS dan siap menerima beban kerja

  • Kubectl untuk mengonfigurasi file Amazon EKS kubeconfig untuk cluster target di mesin klien

  • Akses AWS Identity and Access Management (IAM) untuk membuat bucket S3

  • Akses IAM (terprogram atau peran) ke Amazon S3 dari mesin klien

  • Manajemen kode sumber dan CI/CD pipa

Batasan

  • Tidak ada dukungan saat ini untuk meningkatkan, menghapus, atau mengelola definisi sumber daya khusus ()CRDs.

  • Jika Anda menggunakan sumber daya yang mengacu pada CRD, CRD harus diinstal secara terpisah (di luar bagan).

Versi produk

  • Helm v3.6.3

Arsitektur

Tumpukan teknologi target

  • Amazon EKS

  • Amazon VPC

  • Amazon S3

  • Manajemen kode sumber

  • Helm

  • Kubectl

Arsitektur target

Client Helm dan Kubectl menerapkan repo bagan Helm di Amazon S3 untuk cluster Amazon EKS.

Otomatisasi dan skala

  • AWS CloudFormation dapat digunakan untuk mengotomatiskan pembuatan infrastruktur. Untuk informasi selengkapnya, lihat Membuat resource Amazon EKS dengan AWS CloudFormation di dokumentasi Amazon EKS.

  • Helm akan dimasukkan ke dalam alat CI/CD otomatisasi Anda yang ada untuk mengotomatiskan pengemasan dan pembuatan versi bagan Helm (di luar cakupan pola ini).

  • GitVersion atau nomor build Jenkins dapat digunakan untuk mengotomatiskan pembuatan versi bagan.

Alat

Alat

  • Amazon EKS — Amazon Elastic Kubernetes Service (Amazon EKS) adalah layanan terkelola untuk menjalankan Kubernetes di AWS tanpa perlu berdiri atau memelihara pesawat kontrol Kubernetes Anda sendiri. Kubernetes adalah sebuah sistem sumber terbuka untuk melakukan otomatisasi terhadap deployment, penskalaan, dan pengelolaan aplikasi terkontainer.

  • Helm - Helm adalah manajer paket untuk Kubernetes yang membantu Anda menginstal dan mengelola aplikasi di klaster Kubernetes Anda.

  • Amazon S3 - Amazon Simple Storage Service (Amazon S3) Simple Storage Service adalah penyimpanan untuk internet. Anda dapat menggunakan Amazon S3 untuk menyimpan dan mengambil data sebanyak apa pun kapan pun, dari mana pun di web.

  • Kubectl — Kubectl adalah utilitas baris perintah untuk menjalankan perintah terhadap klaster Kubernetes.

Kode

Kode contoh terlampir.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Instal klien Helm.

Untuk mengunduh dan menginstal klien Helm di sistem lokal Anda, gunakan perintah berikut. 

sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
DevOps insinyur

Validasi instalasi Helm.

Untuk memvalidasi bahwa Helm dapat berkomunikasi dengan server API Kubernetes di dalam klaster Amazon EKS, jalankan. helm version

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Buat bagan Helm untuk NGINX.

Untuk membuat bagan helm bernama my-nginx pada mesin klien, jalankanhelm create my-nginx.

DevOps insinyur

Tinjau struktur bagan.

Untuk meninjau struktur bagan, jalankan perintah pohontree my-nginx/.

DevOps insinyur

Nonaktifkan pembuatan akun layanan di bagan.

Divalues.yaml, di bawah serviceAccount bagian, atur create kunci kefalse. Ini dimatikan karena tidak ada persyaratan untuk membuat akun layanan untuk pola ini.

DevOps insinyur

Validasi (lint) bagan yang dimodifikasi untuk kesalahan sintaksis.

Untuk memvalidasi bagan untuk kesalahan sintaksis apa pun sebelum menginstalnya di cluster target, jalankan. helm lint my-nginx/

DevOps insinyur

Instal bagan untuk menerapkan sumber daya Kubernetes.

Untuk menjalankan instalasi bagan Helm, gunakan perintah berikut. 

helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space

debugBendera opsional menampilkan semua pesan debug selama penginstalan. namespaceBendera menentukan namespace di mana bagian sumber daya dari bagan ini akan dibuat.

DevOps insinyur

Tinjau sumber daya di cluster Amazon EKS.

Untuk meninjau sumber daya yang dibuat sebagai bagian dari bagan Helm di helm-space namespace, gunakan perintah berikut. 

kubectl get all -n helm-space
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Ubah dan tingkatkan rilis.

Untuk memodifikasi bagan, divalues.yaml, ubah replicaCount nilainya menjadi2. Kemudian tingkatkan rilis yang sudah diinstal dengan menjalankan perintah berikut.

helm upgrade my-nginx-release my-nginx/ --namespace helm-space
DevOps insinyur

Tinjau sejarah rilis Helm.

Untuk membuat daftar semua revisi untuk rilis tertentu yang telah diinstal menggunakan Helm, jalankan perintah berikut. 

helm history my-nginx-release
DevOps insinyur

Tinjau detail untuk revisi tertentu.

Sebelum beralih atau memutar kembali ke versi kerja, dan untuk lapisan validasi tambahan sebelum menginstal revisi, lihat nilai mana yang diteruskan ke setiap revisi dengan menggunakan perintah berikut.

helm get --revision=2 my-nginx-release
DevOps insinyur

Gulung kembali ke versi sebelumnya.

Untuk memutar kembali ke revisi sebelumnya, gunakan perintah berikut. 

helm rollback my-nginx-release 1

Contoh ini bergulir kembali ke nomor revisi 1.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Buat bucket S3 untuk bagan Helm.

Buat bucket S3 yang unik. Di ember, buat folder bernamacharts. Contoh dalam pola ini digunakan s3://my-helm-charts/charts sebagai repositori grafik target.

Administrator awan

Instal plugin Helm untuk Amazon S3.

Untuk menginstal plugin helm-s3 di mesin klien Anda, gunakan perintah berikut. 

helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0

Catatan: Dukungan Helm V3 tersedia dengan plugin versi 0.9.0 dan di atas.

DevOps insinyur

Inisialisasi repositori Amazon S3 Helm.

Untuk menginisialisasi folder target sebagai repositori Helm, gunakan perintah berikut. 

helm S3 init s3://my-helm-charts/charts

Perintah membuat index.yaml file di target untuk melacak semua informasi bagan yang disimpan di lokasi itu.

DevOps insinyur

Tambahkan repositori Amazon S3 ke Helm.

Untuk menambahkan repositori di mesin klien, gunakan perintah berikut.

helm repo add my-helm-charts s3://my-helm-charts/charts

Perintah ini menambahkan alias ke repositori target di mesin klien Helm.

DevOps insinyur

Tinjau daftar repositori.

Untuk melihat daftar repositori di mesin klien Helm, jalankan. helm repo list

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Package grafik.

Untuk mengemas my-nginx bagan yang Anda buat, jalankanhelm package ./my-nginx/. Perintah mengemas semua isi folder my-nginx bagan ke dalam file arsip, yang diberi nama menggunakan nomor versi yang disebutkan dalam Chart.yaml file.

DevOps insinyur

Simpan paket di repositori Amazon S3 Helm.

Untuk mengunggah paket ke repositori Helm di Amazon S3, jalankan perintah berikut, menggunakan nama file yang benar. .tgz

helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts
DevOps insinyur

Cari bagan Helm.

Untuk mengonfirmasi bahwa bagan muncul baik secara lokal maupun di repositori Helm di Amazon S3, jalankan perintah berikut.

helm search repo my-nginx
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Memodifikasi dan mengemas bagan.

Dalamvalues.yaml, atur replicaCount nilainya ke1. Kemudian kemas bagan dengan menjalankanhelm package ./my-nginx/, kali ini mengubah versi Chart.yaml menjadi0.1.1

Pembuatan versi idealnya diperbarui melalui otomatisasi menggunakan alat seperti GitVersion atau Jenkins membangun nomor dalam pipeline. CI/CD Mengotomatiskan nomor versi berada di luar cakupan pola ini.

DevOps insinyur

Dorong versi baru ke repositori Helm di Amazon S3.

Untuk mendorong paket baru dengan versi 0.1.1 ke repositori my-helm-charts Helm di Amazon S3, jalankan perintah berikut.

helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts
DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Cari semua versi bagan my-nginx.

Untuk melihat semua versi bagan yang tersedia, jalankan perintah berikut dengan --versions bendera.

helm search repo my-nginx --versions

Tanpa tanda, Helm secara default menampilkan versi bagan terbaru yang diunggah.

DevOps insinyur

Instal bagan dari repositori Amazon S3 Helm.

Hasil pencarian dari tugas sebelumnya menunjukkan beberapa versi my-nginx bagan. Untuk menginstal versi baru (0.1.1) dari repositori Amazon S3 Helm, gunakan perintah berikut.

helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space
DevOps insinyur

Sumber daya terkait

Lampiran

Untuk mengakses konten tambahan yang terkait dengan dokumen ini, unzip file berikut: attachment.zip