Bởi pmm ngày 14 tháng 2 năm 2025 tại Containers, Technical How-to
Bài đăng này được viết bởi Abhishek Nanda, Containers Specialist Solutions Architect và đồng tác giả với Jayaprakash Alawala, Principal Container Specialist Solutions Architect và Rajesh Singh, Sr. Containers Specialist BDM.
Giới thiệu
Người dùng Amazon EKS trong ngành Quy định và Tuân thủ đầu tư thời gian và công sức để xây dựng custom AMI EKS cho worker nodes Operating System (OS) để hardening cho các Benchmark khác nhau bao gồm Centre for Internet Security (CIS). CIS là một tổ chức phi lợi nhuận do cộng đồng điều hành, chịu trách nhiệm về CIS Controls và CIS Benchmarks, được công nhận toàn cầu như những thực hành tốt nhất để bảo mật hệ thống IT và dữ liệu. Họ đại diện cho nỗ lực đồng thuận của các chuyên gia bảo mật mạng toàn cầu để giúp bạn bảo vệ hệ thống chống lại các mối đe dọa một cách tự tin hơn. CIS Hardened Images của họ cung cấp môi trường điện toán bảo mật, theo yêu cầu và có khả năng mở rộng trên cloud.
Nhiều người dùng trong các ngành được quản lý chặt chẽ như Financial Services Industry (FSI), healthcare, chính phủ và quốc phòng triển khai workload nhạy cảm trên Amazon Elastic Kubernetes Service (Amazon EKS). Các tổ chức này cần hardening Operating System (OS) của các cluster node để đáp ứng các benchmark bảo mật và tuân thủ nghiêm ngặt theo yêu cầu của các cơ quan quản lý. Những yêu cầu này là thiết yếu để bảo vệ dữ liệu nhạy cảm, duy trì tiêu chuẩn ngành và tránh các hình phạt pháp lý và tài chính tiềm ẩn. Một benchmark phổ biến trong các lĩnh vực này là CIS Benchmark Level 2 cho Amazon Linux 2023, cung cấp bộ hướng dẫn cấu hình bảo mật toàn diện.
Tại thời điểm viết bài này, có hai cách tiếp cận để tạo custom hardened image:
- Lấy Amazon EKS Amazon Machine Image (AMI) làm cơ sở và thêm hardening lên trên như được hiển thị trong blog này. Quy trình này cần người áp dụng cấu hình cần thiết, ví dụ trong thông số kỹ thuật Amazon Linux 2023 CIS Benchmark. Để tạo custom EKS AMI, bạn cũng có thể tham khảo các bài blog khác [1,2]
- Lấy một AMI đã được hardened từ AWS Marketplace làm cơ sở và xây dựng lại bằng cách thêm các thành phần Amazon EKS cụ thể lên trên. Để biết thêm chi tiết về cách tiếp cận này, hãy tham khảo bài blog này. Tuy nhiên, quá trình build thường là thủ công, người dùng quản lý packer scripts, họ phải liên tục kiểm tra các release mới hơn (Amazon EKS optimized AMI). Việc testing và updating môi trường production và non-production EKS vẫn là một quy trình thủ công dễ xảy ra lỗi. Với các release Amazon EKS optimized AMI và CIS Hardened AMI thường xuyên, người dùng thường mất 3-4 ngày để build, deploy và validate custom AMI mới của họ. Bạn cần đảm bảo custom image tuân thủ bất cứ khi nào Amazon EKS Optimized AMI hoặc phiên bản CIS được cập nhật. Bài blog này cung cấp giải pháp để thiết lập pipeline tự động để build, deploy và validate custom hardened image trên EKS cluster. Sử dụng cách tiếp cận này, bạn có thể giảm thời gian từ 3-4 ngày xuống còn 50 phút.
Người dùng Amazon EKS cũng có thể tận dụng EKS Auto Mode mặc định đi kèm với Bottlerocket EKS AMIs tuân thủ CIS Level 1.
Tổng quan về giải pháp
Các phần sau đây sẽ trình bày về architecture, assumptions, solution workflow, prerequisites và solution walkthrough.
Architecture
Hình sau đây thể hiện architecture của giải pháp này.
Figure 1: Solution Architecture
Giả định
Kiến trúc giải pháp này giả định những điều sau:
1. EKS cluster chứa các Amazon EKS managed node groups.
2. Amazon EKS managed node groups sử dụng custom Amazon Elastic Compute Cloud (Amazon EC2) launch template với Amazon EKS optimized Linux 2023 AMI.
Quy trình giải pháp
Kiểm tra và Tạo AMI:
1. Amazon EventBridge được thiết lập để gọi checkNewAMIRelease AWS Lambda function mỗi 24 giờ. Lịch trình có thể được cấu hình theo nhu cầu của bạn.
2. Lambda function checkNewAMIRelease kiểm tra xem có AMI CIS Amazon Linux 2023 Benchmark – Level 2 mới hoặc AMI Amazon EKS optimized Amazon Linux 2023 mới được release sau ngày tạo AMI của Amazon managed nodegroup hiện tại hay không. Lambda function thực hiện các bước sau đây cho mỗi Amazon EKS managed nodegroup.
- Lấy phiên bản EKS cluster và ngày tạo AMI hiện tại.
- Lấy ngày tạo của các AMI sau:
- AMI CIS Amazon Linux 2023 Benchmark – Level 2 mới nhất
- AMI Amazon EKS optimized Linux 2023 mới nhất cho phiên bản EKS cluster đã cho.
- Sau đó, nó xây dựng custom Amazon EKS AMI sử dụng EC2 Image Builder nếu một trong các điều kiện sau đúng:
- Ngày tạo AMI trong CIS Amazon Linux 2023 Benchmark – Level 2 AMI mới nhất mới hơn ngày tạo AMI hiện tại
- Ngày tạo AMI trong AMI Amazon EKS optimized Linux 2023 mới nhất cho phiên bản EKS cluster đã cho mới hơn phiên bản EKS cluster và ngày tạo AMI hiện tại.
3. EC2 Image Builder sử dụng CIS Amazon Linux 2023 Benchmark Level 2 AMI làm base Image và cài đặt các thành phần Amazon EKS lên trên đó. Khi custom Amazon EKS AMI được tạo, EC2 Image Builder sẽ thông báo tới Amazon Simple Notification Service (Amazon SNS) topic.
- Chúng tôi đã thêm các lệnh semanage của SELinux Policy Management tool vào giải pháp để cập nhật file context thành bin_t cho các binary file kubelet và nodeadm để chạy với chế độ SELinux enforced.
- Ngoài ra, service nftables đã được vô hiệu hóa trong giải pháp của chúng tôi và port 10250 đã được thêm vào iptables để cho phép giao tiếp giữa control plane và dataplane của Amazon EKS.
Quản lý Lịch sử Phát hành:
4. Amazon SNS topic trigger hàm updateZipS3Lambda. Hàm updateZipS3 Lambda lấy Amazon EKS Custom AMI từ SNS event và cập nhật một file (releaseHistory.json) với các thông tin chi tiết trong Amazon S3 bucket, sau đó nén file và tải lên (releaseHistory.zip) vào S3 bucket. AWS CodeBuild sử dụng file này để đọc nội dung và cập nhật các managed nodegroup.
- EKSClusterVersion: Phiên bản EKS cluster hiện tại.
- CurrentNodegroupAMI: ID AMI hiện tại trong Amazon Managed nodegroup trước khi cập nhật.
- NewAMIID: ID Amazon EKS Custom AMI mới được xây dựng bằng EC2 Image Builder.
- NewAMICreationDate: Ngày tạo the new Amazon EKS Custom AMI ID.
- UpdateType: Chỉ ra liệu Amazon EKS Custom AMI mới được tạo do
CIS Amazon Linux 2023 Benchmark – Level 2 AMI mới hay
Amazon EKS optimized Amazon Linux 2023 AMI mới
- UpdatedNodegroups: Danh sách các Amazon EKS managed node groups cần được cập nhật.
- Khi file releaseHistory.json được cập nhật, pipeline sẽ bắt đầu.
- Sample releaseHistory.json file:
Figure 2: Sample releaseHistory.json
Cập nhật Cluster Staging:
5. Cập nhật Nodegroup trong cluster staging: Dự án AWS CodeBuild truy xuất ID của custom AMI Amazon EKS mới từ file releaseHistory.json trong releaseHistory.zip từ S3 bucket đã được upload ở bước trước. Sau đó, nó thực hiện các bước sau cho các nodegroup được quản lý bởi Amazon EKS trong cluster EKS staging:
- Lấy thông tin chi tiết launch template EC2 hiện tại của nodegroup được quản lý bởi Amazon EKS..
- Tạo phiên bản launch template EC2 mới với custom AMI Amazon EKS mới.
- Cập nhật nodegroup được quản lý bởi Amazon EKS với phiên bản launch template EC2 mới.
- Chờ cho đến khi nodegroup được quản lý bởi Amazon EKS đạt trạng thái ACTIVE sau thao tác cập nhật.
- Pipeline sẽ hoạt động tùy thuộc vào kết quả cập nhật nodegroup.
- Nếu cập nhật thành công, nó sẽ chuyển sang giai đoạn tiếp theo là Test Application
- Nếu cập nhật thất bại, pipeline sẽ dừng lại và một email được gửi với thông báo tùy chỉnh được tạo bởi hàm lambda codeBuildStatusNotifcation thông qua EventBridge và Amazon SNS.
Kiểm thử Ứng dụng:
6. Test Application: Dự án AWS CodeBuild validate một ứng dụng test mẫu trong cluster EKS Staging để kiểm tra custom AMI ID của Amazon EKS mới. Pipeline sẽ hoạt động dựa trên kết quả kiểm thử ứng dụng mẫu.
- Nếu việc testing sample application thành công, nó sẽ chuyển sang stage tiếp theo là Manual approval.
- Nếu việc testing sample application thất bại, pipeline sẽ dừng lại và một email được gửi đi với custom message được tạo bởi codeBuildStatusNotifcation lambda function thông qua EventBridge và Amazon SNS.
Cập nhật Cluster Production:
7. The Manual Approval Stage chờ người dùng phê duyệt việc cập nhật Amazon Managed nodegroup trong EKS prod cluster.
8. Cập nhật Node group trong cluster prod: CodeBuild project cập nhật Amazon Managed nodegroup trong EKS prod cluster sử dụng các bước tương tự như đã mô tả ở Step 6.
Hệ thống Thông báo:
9. Hàm Lambda codeBuildStatusNotifcation Lambda function tạo một custom message và gửi thông báo qua email.
Hướng dẫn giải pháp
Các phần sau sẽ hướng dẫn bạn thực hiện giải pháp này.
Điều kiện tiên quyết
Các điều kiện tiên quyết sau đây là cần thiết để hoàn thành giải pháp này:
- AWS Command Line Interface (AWS CLI) version 2 (Thời gian cài đặt ước tính: 3 phút)
- eksctl (Thời gian cài đặt ước tính: 2 phút)
- kubectl (Thời gian cài đặt ước tính: 1 phút)
- jq (Thời gian cài đặt ước tính: 1 phút)
- git (Thời gian cài đặt ước tính: 1 phút)
- Helm (Thời gian cài đặt ước tính: 1 phút)
- Đăng ký AWS Marketplace cho CIS Hardened Image Level 2 on Amazon Linux 3 (Thời gian cài đặt ước tính: 5 phút)
Bắt đầu bằng cách thiết lập các biến môi trường sau:
export CLUSTER_NAME_STAGING=eks-cluster-staging
export CLUSTER_NAME_PROD=eks-cluster-prod
export CLUSTER_VERSION=1.31
export ACCOUNT_ID=$(aws sts get-caller-identity –output text –query Account)
export AWS_REGION=$(aws configure get region)
export EKS_STAGING_CLUSTER_CONTEXT=”arn:aws:eks:${AWS_REGION}:${ACCOUNT_ID}:cluster/${CLUSTER_NAME_STAGING}”
export EKS_PROD_CLUSTER_CONTEXT=”arn:aws:eks:${AWS_REGION}:${ACCOUNT_ID}:cluster/${CLUSTER_NAME_PROD}”
export CISLatestLevel2AMI=$(aws ec2 describe-images –region $AWS_REGION –filters “Name=name,Values=CIS Amazon Linux 2023 Benchmark*- Level 2*” –query ‘Images | sort_by(@, &CreationDate)[-1].ImageId’ –output=text)
export EmailID=””
Lưu ý: Cung cấp EmailID của bạn để nhận đăng ký AWS SNS, điều này sẽ thông báo trạng thái AWS Codebuild đến địa chỉ email đó.
Tạo các cluster EKS staging và prod với Amazon EKS managed node group kèm launch template
Khi tạo Amazon EKS Managed node group, bạn sử dụng phiên bản cũ của Amazon EKS optimized Linux 2023 AMI, ví dụ amazon-eks-node-al2023-x86_64-standard-1.31-v20240928. Điều này cho phép chúng ta trigger Lambda function trong các bước tiếp theo để build một AMI mới. Bạn có thể lấy AMI ID bằng lệnh sau:
EKS_AMI_ID=$(aws ec2 describe-images –filters “Name=name,Values=amazon-eks-node-al2023-x86_64-standard-1.31-v20240928” –query “Images[].ImageId” –output text)
Nhập lệnh sau để tạo cấu hình Amazon EKS Staging Cluster và một managed nodegroup với Amazon EKS Optimized AMI. Công cụ eksctl sẽ tạo một launch template khi AMI ID được truyền vào cấu hình managed nodegroup.
cat > cluster_staging.yaml <<EOF
—
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: $CLUSTER_NAME_STAGING
region: $AWS_REGION
version: “$CLUSTER_VERSION”
managedNodeGroups:
– name: custom-mng
desiredCapacity: 2
amiFamily: AmazonLinux2023
ami: $EKS_AMI_ID
EOF
eksctl create cluster -f cluster_staging.yaml
Tạo file tương tự cluster_prod.yaml bằng cách thay thế biến môi trường CLUSTER_NAME_STAGING bằng CLUSTER_NAME_PROD để tạo cluster Amazon EKS production.
Mỗi lần tạo cluster mất khoảng 10 phút. Khi cả hai cluster đã được tạo xong, cập nhật kubeconfig để thêm contexts cho cả hai cluster.
aws eks –region $AWS_REGION update-kubeconfig –name $CLUSTER_NAME_STAGING
aws eks –region $AWS_REGION update-kubeconfig –name $CLUSTER_NAME_PROD
Kiểm tra các node trong mỗi Amazon EKS cluster:
kubectl –context=$EKS_STAGING_CLUSTER_CONTEXT get nodes
Figure 3: Amazon EKS Staging Cluster worker nodes
kubectl –context=$EKS_PROD_CLUSTER_CONTEXT get nodes
Figure 4: Amazon EKS Production cluster worker nodes
Thiết lập AWS Load Balancer Controller trên cả hai Amazon EKS clusters
Triển khai ứng dụng mẫu
Triển khai ứng dụng mẫu sử dụng các lệnh Helm commands on both EKS clusters.
1. Clone ứng dụng mẫu
2. Triển khai ứng dụng bằng helm trong cluster Amazon EKS staging
- helm –kube-context=$EKS_STAGING_CLUSTER_CONTEXT install workshop eks-app-mesh-polyglot-demo/workshop/helm-chart/
- Xác nhận thiết lập và truy cập ứng dụng trên cả hai cluster
- kubectl –context=$EKS_STAGING_CLUSTER_CONTEXT get pod,svc -n workshop -o wide
3. Triển khai ứng dụng bằng Helm trên cluster Amazon EKS production bằng cách lặp lại các bước trên.
4. Việc tạo Load Balancer mất vài phút. Sau khi các Load Balancer đã được tạo xong, hãy kiểm tra ứng dụng mẫu đang hoạt động trong cả staging và prod EKS cluster bằng cách truy cập URL của Network Load Balancer (NLB) trên trình duyệt.
- Truy cập ứng dụng trong trình duyệt sử dụng DNS của load balancer
- export STAGING_LB_NAME=$(kubectl –context=$EKS_STAGING_CLUSTER_CONTEXT get svc frontend -n workshop -o jsonpath=”{.status.loadBalancer.ingress[*].hostname}”)
- echo $STAGING_LB_NAME
- Truy cập ứng dụng trong trình duyệt sử dụng DNS của load balancer
- export PROD_LB_NAME=$(kubectl –context=$EKS_PROD_CLUSTER_CONTEXT get svc frontend -n workshop -o jsonpath=”{.status.loadBalancer.ingress[*].hostname}”)
- echo $PROD_LB_NAME
Thiết lập cập nhật managed node group tự động
5. Upload mã Lambda function lên bucket Amazon S3.
- Tạo bucket S3 để lưu trữ file zip của Lambda function sử dụng lệnh sau:
- export codeS3Bucket=$(aws s3 mb s3://eks-node-update-$ACCOUNT_ID | awk -F “: ” ‘{print $2}’)
- Tạo bucket S3 để lưu trữ release notes của các bản nâng cấp và bật versioning cho bucket sử dụng các lệnh sau:
- export releaseNotesS3Bucket=$(aws s3 mb s3://releasenotes-$ACCOUNT_ID | awk -F “: ” ‘{print $2}’)
- aws s3api put-bucket-versioning –bucket $releaseNotesS3Bucket –versioning-configuration Status=Enabled
- Clone repository.
- Upload template AWS CloudFormation và file zip Lambda function lên bucket S3 đã tạo trước đó.
- aws s3 cp automating-amazon-eks-managed-nodegroup-update-custom-linux-ami-with-cis-hardening/amazon-linux-2023/cfn.yaml s3://$codeS3Bucket
- aws s3 cp –recursive automating-amazon-eks-managed-nodegroup-update-custom-linux-ami-with-cis-hardening/amazon-linux-2023/lambda-functions/zip_files/ s3://$codeS3Bucket Export cfnTemplateURL để sử dụng khi tạo stackexport cloudformation
- cfnTemplateURL=”https://${codeS3Bucket}.s3.${AWS_REGION}.amazonaws.com/cfn.yaml”
Thiết lập cơ sở hạ tầng giải pháp sử dụng template CloudFormation
1. Chạy lệnh dưới đây để tạo stack AWS CloudFormation để xây dựng the solution infrastructure
aws cloudformation create-stack –stack-name eks-node-update –template-url $cfnTemplateURL –parameters ParameterKey=LoadBalancerDNS,ParameterValue=http://$STAGING_LB_NAME ParameterKey=EmailID,ParameterValue=$EmailID ParameterKey=Arch,ParameterValue=x86-64 ParameterKey=S3Bucket,ParameterValue=$codeS3Bucket ParameterKey=CISLatestLevel2AMI,ParameterValue=$CISLatestLevel2AMI ParameterKey=ReleaseNotesS3Bucket,ParameterValue=$releaseNotesS3Bucket ParameterKey=Schedule,ParameterValue=”rate(1 day)” –region $AWS_REGION –capabilities CAPABILITY_IAM
2. Chúng ta đang cung cấp các tham số sau trong lệnh trên khi tạo cloudformation stack:
- Stack Name: eks-node-update (bạn có thể đặt tên stack khác).
- LoadBalancerDNS: Đây là FQDN của Network Load Balancer đã được triển khai trong Amazon EKS staging cluster tại Bước 4 của Deploy a sample application.
- EmailID: Cung cấp địa chỉ email để đăng ký vào Amazon SNS topic nhằm nhận thông báo về thay đổi trạng thái CodeBuild.
- Arch: Đây là x86-64. Tham số này được cung cấp để hỗ trợ thêm các kiến trúc khác trong tương lai.
- S3Bucket: Cung cấp tên S3 bucket đã tạo trước đó tại Bước 5a, nơi lưu trữ các AWS Lambda functions và AWS CloudFormation template.
- CISLatestLevel2AMI: ID của AMI Amazon Linux 2023 CIS Level 2 mới nhất.
- ReleaseNotesS3Bucket: Tên Release Notes S3 bucket đã tạo trước đó tại Bước 5b.
- Schedule: rate (1 day) (Lịch này sẽ cấu hình Amazon EventBridge để chạy AWS Lambda function checkNewAMIRelease theo chu kỳ). Tần suất có thể điều chỉnh thành 10 phút, 1 ngày, 7 ngày và 30 ngày.
3. Chờ cho đến khi việc tạo stack đạt trạng thái CREATE_COMPLETE trong AWS CloudFormation console.
4. Khi stack được tạo thành công, một email sẽ được gửi thông qua Amazon SNS để đăng ký vào Amazon SNS topic mới được tạo. Xác nhận đăng ký để bạn có thể nhận được các thông báo về những thay đổi trong các stage của CodeBuild.
Grant the CodeBuild Service Role access to the EKS staging cluster using EKS Access Entries
Thêm service role của CodeBuild application testing project (eks-new-ami-testapp) vào Amazon EKS staging cluster để CodeBuild có thể truy cập EKS cluster để thực thi các lệnh kubectl test. Sử dụng tính năng Amazon EKS Access Entries để thêm AWS Identity and Access Management (IAM) role cho quyền truy cập vào Amazon EKS staging cluster..
1. Lấy CodeBuild service role arn:
APPLICATION_TEST_CODEBUILD_PROJECT_ROLE=$(aws codebuild batch-get-projects –names eks-new-ami-testapp –query ‘projects[0].serviceRole’ –region $AWS_REGION –output text)
2. Tạo access entry trong staging cluster
aws eks create-access-entry –region $AWS_REGION –cluster-name $CLUSTER_NAME_STAGING –principal-arn $APPLICATION_TEST_CODEBUILD_PROJECT_ROLE –type STANDARD
3. Liên kết access policy với access entry
aws eks associate-access-policy –region $AWS_REGION –cluster-name $CLUSTER_NAME_STAGING –principal-arn $APPLICATION_TEST_CODEBUILD_PROJECT_ROLE –access-scope type=namespace,namespaces=workshop –policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy
Kiểm thử giải pháp
Chạy Lambda function checkNewAMIRelease và kiểm tra xem một trong các custom nodegroups trong EKS cluster của bạn có cần cập nhật không. Nếu nodegroups cần cập nhật, Lambda function sẽ trigger EC2 Image Builder để tạo một AMI mới, như được hiển thị trong các hình ảnh sau.
Figure 5: Triggering the checkNewAMIRelease Lambda function
Figure 6: checkNewAMIRelease Lambda execution logs
Figure 7: EC2 Image Builder console
Figure 8: EC2 Image Builder logs showing AMI creation
Figure 9: Pipeline that updates the custom managed nodegroups in test and production clusters
Figure 10: Amazon SNS sends notification with the update details when the CodeBuild run is completed.
Dọn dẹp
- Xóa CloudFormation Stack
- Xóa tất cả EC2 image builder image recipes đã được tạo ra như một phần của image pipeline runs của bạn. Stack ban đầu đã tạo EKSCISAMIRecipe với version 1.0.0. Do đó, các image recipes khác cần được xóa trước khi thử xóa Cloudformation stack. Các shell commands sau có thể được sử dụng để thực hiện điều này.
JSON
export imageBuilderRecipes=$(aws imagebuilder list-image-recipes –filters “name=name, values=EKSCISAMIRecipe” –query imageRecipeSummaryList[].arn –output text)
for recipe in $imageBuilderRecipes
do
if [[ $recipe != *”1.0.0″* ]]; then
aws imagebuilder delete-image-recipe –image-recipe-arn $recipe
fi
done
- Chạy các lệnh dưới đây để xóa cloudformation stack
JSON
export codepipelineArtifactBucket=$(aws cloudformation describe-stack-resources –stack-name eks-node-update –region us-west-2 –logical-resource-id CodePipelineArtifactStoreBucket –query StackResources[0].PhysicalResourceId –output text)
aws s3 rm s3://$codepipelineArtifactBucket –recursive
aws s3 rb s3://$codepipelineArtifactBucket
aws cloudformation delete-stack –stack-name eks-node-update –region $AWS_REGION
- Sau khi CloudFormation đã được xóa thành công, thì
- Hủy đăng ký tất cả các AMI được tạo bởi EC2 image builder trong Amazon EC2 console mà không cần thiết cho mục đích sử dụng trong tương lai.
- Xóa các snapshot trong mục Volumes trong Amazon EC2 console. Nếu bạn giữ lại bất kỳ AMI nào để sử dụng trong tương lai, hãy giữ lại các snapshot tương ứng. Mô tả snapshot có chứa tên AMI, do đó hãy lọc các snapshot không thuộc AMI được giữ lại và xóa chúng.
- Gỡ cài đặt ứng dụng mẫu
helm –kube-context=$EKS_STAGING_CLUSTER_CONTEXT uninstall workshop
helm –kube-context=$EKS_PROD_CLUSTER_CONTEXT uninstall workshop
- Xóa các Amazon EKS Clusters
eksctl delete cluster -f cluster_staging.yaml
eksctl delete cluster -f cluster_prod.yaml
- Xóa bucket codeS3Bucket trên Amazon S3
aws s3 rm s3://$codeS3Bucket –recursive
aws s3 rb s3://$codeS3Bucket
- Xóa bucket releaseNotesS3Bucket trên Amazon S3
aws s3api delete-objects –bucket $releaseNotesS3Bucket \<br />–delete “$(aws s3api list-object-versions –bucket $releaseNotesS3Bucket –query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}’)”<br /><br />
aws s3api delete-objects –bucket $releaseNotesS3Bucket \<br />–delete “$(aws s3api list-object-versions –bucket $releaseNotesS3Bucket –query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}’)”<br /><br />
aws s3 rb s3://$releaseNotesS3Bucket
Các phương pháp tốt nhất để giảm thời gian downtime của ứng dụng trong quá trình nâng cấp
1. Chạy nhiều replicas của ứng dụng được phân bố trên nhiều worker nodes trên các Availability Zones (AZs).
2. Thiết lập Pod Disruption Budgets (PDBs) cho các workload quan trọng để luôn duy trì số lượng replicas tối thiểu cho thành phần ứng dụng đang chạy. PDBs luôn cố gắng tạo pods mới trước để duy trì số lượng replicas tối thiểu trước khi các pods cũ bị xóa trong quá trình gián đoạn tự nguyện.
3. Thiết lập các probes cần thiết (liveness, readiness và startup) cho các container của ứng dụng để giúp kiểm tra tính sẵn sàng và khả năng hoạt động của container để chấp nhận traffic.
4. Phân tích và thiết lập graceful shutdown cho các container của ứng dụng để xử lý các tín hiệu SIGTERM. Việc ứng dụng xử lý các tín hiệu SIGTERM là một thực hành tốt để có thể đóng các kết nối một cách nhẹ nhàng ở cấp độ ứng dụng.
Kết luận
Trong bài viết này, chúng tôi đã trình bày cách xây dựng một pipeline tự động để build, triển khai và validate custom AMI cho Amazon EKS. Chúng tôi đã sử dụng CIS Amazon Linux 2023 Benchmark Level 2 AMI và EC2 Image Builder để tạo custom AMI. Giải pháp này giúp giảm đáng kể thời gian build, validate và cập nhật từ nhiều ngày xuống còn dưới một giờ, cải thiện tư thế bảo mật và giảm chi phí vận hành. Điều này sẽ giúp các tổ chức, đặc biệt là trong các ngành có quy định nghiêm ngặt, tuân thủ các tiêu chuẩn bảo mật của họ.
Bằng việc triển khai pipeline tự động này, bạn có thể:
- Áp dụng nhất quán các tiêu chuẩn hardening CIS trên nhiều EKS cluster
- Cải thiện việc tuân thủ quy định và giảm thiểu các nguy cơ tấn công
- Tiết kiệm thời gian và nguồn lực bằng cách giảm thiểu chi phí vận hành
- Luôn cập nhật các tiêu chuẩn bảo mật mới nhất
Để tìm hiểu sâu hơn về các phương pháp bảo mật tốt nhất cho EKS, hãy khám phá tài liệu hướng dẫn. Chúng tôi rất mong được thấy cách bạn sử dụng giải pháp này để nâng cao môi trường EKS và hoan nghênh phản hồi cũng như câu hỏi của bạn trong phần bình luận. Ngoài ra, để tìm hiểu cách triển khai các tính năng bảo mật Amazon EKS, vui lòng truy cập Amazon EKS Security Workshop.
Bài được dịch từ bài viết trên AWS Blogs, bạn có thể xem bài viết gốc tại đây.