Quickstart: Menyebarkan aplikasi web dan menyimpan data - Amazon EKS

Bantu tingkatkan halaman ini

Ingin berkontribusi pada panduan pengguna ini? Gulir ke bagian bawah halaman ini dan pilih Edit halaman ini GitHub. Kontribusi Anda akan membantu membuat panduan pengguna kami lebih baik untuk semua orang.

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

Quickstart: Menyebarkan aplikasi web dan menyimpan data

Tutorial quickstart ini menunjukkan langkah-langkah untuk menyebarkan aplikasi contoh game 2048 dan mempertahankan datanya di EKS cluster Amazon menggunakan eksctl. eksctl adalah infrastructure-as-code utilitas yang memanfaatkan AWS CloudFormation, memungkinkan Anda untuk mengatur cluster yang berfungsi penuh, lengkap dengan semua komponen penting. Komponen ini termasuk Amazon VPC dan IAM peran yang disesuaikan untuk memberikan izin ke AWS layanan yang telah kami tetapkan. Seiring kemajuan kami, kami akan memandu Anda melalui proses penyiapan klaster, menggabungkan Amazon EKS EKSPengaya Amazon untuk memberi daya pada klaster Anda dengan kemampuan operasional. Terakhir, Anda akan menerapkan beban kerja sampel dengan anotasi khusus yang diperlukan untuk sepenuhnya berintegrasi dengan layanan. AWS

Dalam tutorial ini

Menggunakan template kluster eksctl yang mengikuti, Anda akan membangun EKS klaster Amazon dengan grup node terkelola. Ini mengkonfigurasi komponen-komponen berikut:

VPCKonfigurasi

Saat menggunakan template cluster eksctl yang mengikuti, eksctl secara otomatis membuat IPv4 Virtual Private Cloud () untuk cluster. VPC Secara default, eksctl mengonfigurasi a VPC yang menangani semua persyaratan jaringan, selain membuat titik akhir publik dan pribadi.

Jenis instans

Memanfaatkan tipe instance t3.medium. Jenis instans ini menawarkan kombinasi komputasi, memori, dan sumber daya jaringan yang seimbang — ideal untuk aplikasi dengan CPU penggunaan moderat yang mungkin mengalami lonjakan permintaan sesekali.

Autentikasi

Buat IRSA pemetaan untuk memfasilitasi komunikasi antara pod dan layanan Kubernetes. AWS Template dikonfigurasi untuk menyiapkan titik akhir OpenID Connect (OIDC) untuk otentikasi dan otorisasi. Ini juga membuat akun layanan untuk AWS Load Balancer Controller LBC (), pengontrol yang bertanggung jawab untuk mengekspos aplikasi dan mengelola lalu lintas.

Persistensi Data

Integrasikan add-on terkelola AWS EBSCSIDriver untuk memastikan persistensi data aplikasi, bahkan dalam skenario yang melibatkan restart atau kegagalan pod. Template dikonfigurasi untuk menginstal add-on dan membuat akun layanan

Akses Aplikasi Eksternal

Siapkan dan integrasikan dengan add-on AWS Load Balancer Controller (LBC) untuk mengekspos aplikasi game 2048, menggunakan LBC untuk secara dinamis menyediakan Application Load Balancer (). ALB

Prasyarat

Langkah 1: Konfigurasikan cluster

Di bagian ini, Anda akan membuat cluster berbasis grup node terkelola menggunakan instance t3.medium yang berisi dua node. Konfigurasi mencakup akun layanan untuk add-on AWS Load Balancer Controller (LBC), dan penginstalan versi terbaru driver Amazon AWS . EBS CSI Untuk semua eksctl add-on yang tersedia, lihat Menemukan addons dalam dokumentasi. eksctl

  • Buat cluster-config.yaml file dan tempel konten berikut ke dalamnya. Ganti kode wilayah dengan wilayah yang valid, seperti us-east-1

    Contoh output adalah sebagai berikut:

    apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: web-quickstart region: region-code managedNodeGroups: - name: eks-mng instanceType: t3.medium desiredCapacity: 2 iam: withOIDC: true serviceAccounts: - metadata: name: aws-load-balancer-controller namespace: kube-system wellKnownPolicies: awsLoadBalancerController: true addons: - name: aws-ebs-csi-driver wellKnownPolicies: # Adds an IAM service account ebsCSIController: true cloudWatch: clusterLogging: enableTypes: ["*"] logRetentionInDays: 30

Langkah 2: Buat cluster

Sekarang, kami siap untuk membuat EKS cluster Amazon kami. Proses ini membutuhkan waktu beberapa menit untuk menyelesaikannya. Jika Anda ingin memantau status, lihat AWS CloudFormationkonsol.

  • Buat EKS cluster Amazon dan tentukan cluster-config.yaml.

    eksctl create cluster -f cluster-config.yaml
    catatan

    Jika Anda menerima Error: checking STS access respons, pastikan Anda menggunakan identitas pengguna yang benar untuk sesi shell saat ini. Anda mungkin juga perlu menentukan profil bernama (misalnya,--profile clusteradmin) atau mendapatkan token keamanan baru untuk AWS CLI.

    Setelah selesai, Anda akan melihat output respons berikut:

    2024-07-04 21:47:53 [✔] EKS cluster "web-quickstart" in "region-code" region is ready

Langkah 3: Mengatur akses eksternal ke aplikasi menggunakan AWS Load Balancer Controller (LBC)

Dengan operasional cluster, langkah kami selanjutnya adalah membuat aplikasi kontainernya dapat diakses secara eksternal. Hal ini dicapai dengan menerapkan Application Load Balancer ALB () untuk mengarahkan lalu lintas di luar cluster ke layanan kami, dengan kata lain, aplikasi kami. Ketika kami membuat klaster, kami membuat IAMRoles for Service Accounts (IRSA) untuk Load Balancer Controller (LBC) dengan izin yang diperlukan untuk membuat secara dinamisALBs, memfasilitasi perutean lalu lintas eksternal ke layanan Kubernetes kami. Di bagian ini, kita akan mengatur AWS LBC pada cluster kita.

Untuk mengkonfigurasi variabel lingkungan

  1. Tetapkan variabel CLUSTER_REGION lingkungan untuk EKS klaster Amazon Anda. Ganti nilai sampel untuk region-code.

    export CLUSTER_REGION=region-code
  2. Tetapkan variabel CLUSTER_VPC lingkungan untuk EKS klaster Amazon Anda.

    export CLUSTER_VPC=$(aws eks describe-cluster --name web-quickstart --region $CLUSTER_REGION --query "cluster.resourcesVpcConfig.vpcId" --output text)

Untuk menginstal AWS Load Balancer Controller () LBC

AWS Load Balancer Controller (LBC) memanfaatkan Custom Resource Definitions (CRDs) di Kubernetes untuk mengelola AWS Elastic Load Balancers (). ELBs Ini CRDs menentukan sumber daya khusus seperti penyeimbang beban dan TargetGroupBindings, memungkinkan Kubernetes cluster untuk mengenali dan mengelolanya.

  1. Gunakan Helm untuk menambahkan repositori EKS bagan Amazon ke Helm.

    helm repo add eks https://aws.github.io/eks-charts
  2. Perbarui repositori untuk memastikan Helm mengetahui versi terbaru bagan:

    helm repo update eks
  3. Jalankan perintah Helm berikut untuk secara bersamaan menginstal Definisi Sumber Daya Kustom (CRDs) dan pengontrol utama untuk AWS Load Balancer Controller AWS LBC (). Untuk melewati CRD instalasi, berikan --skip-crds tanda, yang mungkin berguna jika CRDs sudah diinstal, jika kompatibilitas versi tertentu diperlukan, atau di lingkungan dengan kontrol akses yang ketat dan kebutuhan kustomisasi.

    helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ --namespace kube-system \ --set clusterName=web-quickstart \ --set serviceAccount.create=false \ --set region=${CLUSTER_REGION} \ --set vpcId=${CLUSTER_VPC} \ --set serviceAccount.name=aws-load-balancer-controller

    Anda akan melihat output respons berikut:

    NAME: aws-load-balancer-controller LAST DEPLOYED: Wed July 3 19:43:12 2024 NAMESPACE: kube-system STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: AWS Load Balancer controller installed!

Langkah 4: Menyebarkan aplikasi contoh game 2048

Sekarang setelah penyeimbang beban diatur, saatnya untuk mengaktifkan akses eksternal untuk aplikasi kontainer di cluster. Di bagian ini, kami memandu Anda melalui langkah-langkah untuk menyebarkan “game 2048" yang populer sebagai contoh aplikasi di dalam cluster. Manifes yang disediakan mencakup anotasi khusus untuk Application Load Balancer ALB (), khususnya anotasi 'skema' dan anotasi 'tipe target'. Anotasi ini terintegrasi dengan dan menginstruksikan Load AWS Balancer Controller LBC () untuk menangani lalu lintas HTTP masuk sebagai “menghadap ke internet” dan mengarahkannya ke layanan yang sesuai di namespace 'game-2048' menggunakan tipe target “ip”. Untuk anotasi selengkapnya, lihat Anotasi dalam dokumentasi. AWS LBC

  1. Buat namespace Kubernetes yang dipanggil dengan bendera. game-2048 --save-config

    kubectl create namespace game-2048 --save-config

    Anda akan melihat output respons berikut:

    namespace/game-2048 created
  2. Menyebarkan aplikasi Contoh Game 2048.

    kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yaml

    Manifes ini menyiapkan Deployment, Service, dan Ingress Kubernetes untuk game-2048 namespace, menciptakan sumber daya yang diperlukan untuk menyebarkan dan mengekspos aplikasi di dalam klaster. game-2048 Ini mencakup pembuatan layanan bernama service-2048 yang mengekspos penyebaran pada port80, dan sumber daya Ingress bernama ingress-2048 yang mendefinisikan aturan routing untuk HTTP lalu lintas masuk dan anotasi untuk Application Load Balancer () yang menghadap ke internet. ALB Anda akan melihat output respons berikut:

    namespace/game-2048 configured deployment.apps/deployment-2048 created service/service-2048 created ingress.networking.k8s.io/ingress-2048 created
  3. Jalankan perintah berikut untuk mendapatkan sumber daya Ingress untuk game-2048 namespace.

    kubectl get ingress -n game-2048

    Anda akan melihat output respons berikut:

    NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com 80 31s

    Anda harus menunggu beberapa menit untuk Application Load Balancer (ALB) untuk menyediakan sebelum Anda memulai langkah-langkah berikut.

  4. Buka browser web dan masukkan ADDRESS dari langkah sebelumnya untuk mengakses aplikasi web. Misalnya, k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com. Anda akan melihat game 2048 di browser Anda. Mainkan!

    Mainkan game 2048

Langkah 5: Pertahankan Data menggunakan node Amazon EBS CSI Driver

Sekarang setelah game 2048 aktif dan berjalan di EKS cluster Amazon Anda, saatnya untuk memastikan bahwa data game Anda disimpan dengan aman menggunakan add-on yang dikelola Amazon EBS CSI Driver. Add-on ini diinstal pada cluster kami selama proses pembuatan. Integrasi ini penting untuk menjaga kemajuan dan data game bahkan saat pod atau node Kubernetes di-restart atau diganti.

  1. Buat Storage Class untuk EBS CSI Driver:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-ebs-csi-driver/master/examples/kubernetes/dynamic-provisioning/manifests/storageclass.yaml
  2. Buat Klaim Volume Persisten (PVC) untuk meminta penyimpanan data game Anda. Buat file bernama ebs-pvc.yaml dan tambahkan konten berikut ke dalamnya:

    apiVersion: v1 kind: PersistentVolumeClaim metadata: name: game-data-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ebs-sc
  3. Terapkan PVC ke cluster Anda:

    kubectl apply -f ebs-pvc.yaml

    Anda akan melihat output respons berikut:

    persistentvolumeclaim/game-data-pvc created
  4. Sekarang, Anda perlu memperbarui penyebaran game 2048 Anda untuk menggunakan ini PVC untuk menyimpan data. Penerapan berikut dikonfigurasi untuk menggunakan PVC untuk menyimpan data game. Buat file bernama ebs-deployment.yaml dan tambahkan konten berikut ke dalamnya:

    apiVersion: apps/v1 kind: Deployment metadata: namespace: game-2048 name: deployment-2048 spec: replicas: 3 # Adjust the number of replicas as needed selector: matchLabels: app.kubernetes.io/name: app-2048 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - name: app-2048 image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: game-data mountPath: /var/lib/2048 volumes: - name: game-data persistentVolumeClaim: claimName: game-data-pvc
  5. Terapkan penerapan yang diperbarui:

    kubectl apply -f ebs-deployment.yaml

    Anda akan melihat output respons berikut:

    deployment.apps/deployment-2048 configured

Dengan langkah-langkah ini, game 2048 Anda di Amazon sekarang EKS disiapkan untuk mempertahankan data menggunakan Driver Amazon EBSCSI. Ini memastikan bahwa kemajuan dan data game Anda aman bahkan jika terjadi kegagalan pod atau node. Jika Anda menyukai tutorial ini, beri tahu kami dengan memberikan umpan balik sehingga kami dapat memberi Anda lebih banyak tutorial mulai cepat khusus kasus penggunaan seperti ini.

Langkah 6: Hapus klaster dan simpul Anda

Setelah Anda selesai dengan cluster dan node yang Anda buat untuk tutorial ini, Anda harus membersihkan dengan menghapus cluster dan node dengan perintah berikut. Jika Anda ingin melakukan lebih banyak hal dengan cluster ini sebelum Anda membersihkan, lihat Langkah selanjutnya.

eksctl delete cluster -f ./cluster-config.yaml

Setelah selesai, Anda akan melihat output respons berikut:

2024-07-05 17:26:44 [✔] all cluster resources were deleted

Langkah selanjutnya

Topik dokumentasi berikut membantu Anda memperluas fungsionalitas klaster Anda:

Untuk mengeksplorasi cara membuat berbagai jenis cluster: