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
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.mediumeksctl
add-on yang tersedia, lihat Menemukan addonseksctl
-
Buat
cluster-config.yaml
file dan tempel konten berikut ke dalamnya. Ganti kode wilayah dengan wilayah yang valid, sepertius-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 CloudFormation
-
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)
Untuk mengkonfigurasi variabel lingkungan
-
Tetapkan variabel
CLUSTER_REGION
lingkungan untuk EKS klaster Amazon Anda. Ganti nilai sampel untukregion-code
.export CLUSTER_REGION=region-code
-
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.
Gunakan Helm
untuk menambahkan repositori EKS bagan Amazon ke Helm. helm repo add eks https://aws.github.io/eks-charts
Perbarui repositori untuk memastikan Helm mengetahui versi terbaru bagan:
helm repo update eks
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
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
-
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 bernamaservice-2048
yang mengekspos penyebaran pada port80
, dan sumber daya Ingress bernamaingress-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
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.
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!
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.
-
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
-
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
Terapkan PVC ke cluster Anda:
kubectl apply -f ebs-pvc.yaml
Anda akan melihat output respons berikut:
persistentvolumeclaim/game-data-pvc created
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
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:
IAMPrinsipal yang membuat cluster adalah satu-satunya prinsipal yang dapat melakukan panggilan ke Kubernetes APIServer dengan
kubectl
AWS Management Console atau Jika Anda ingin IAM prinsipal lain memiliki akses ke cluster Anda, maka Anda perlu menambahkannya. Untuk informasi selengkapnya, silakan lihat Berikan akses IAM kepada pengguna dan peran ke Kubernetes APIs dan Izin yang diperlukan.Sebelum menerapkan cluster untuk penggunaan produksi, sebaiknya Anda membiasakan diri dengan semua pengaturan untuk cluster dan node. Beberapa pengaturan (seperti mengaktifkan SSH akses ke EC2 node Amazon) harus dibuat saat cluster dibuat.
Untuk meningkatkan keamanan klaster Anda, konfigurasikan plugin Amazon VPC Container Networking Interface untuk menggunakan IAM peran untuk akun layanan.
Untuk mengeksplorasi cara membuat berbagai jenis cluster: