Vượt xa các chỉ số: Trích xuất thông tin chi tiết có giá trị từ Amazon EKS với Amazon Q Business

Tác giả: Imtranur Rahman và Naveen Kumar Bathula
Ngày phát hành: 03 FEB 2026
Chuyên mục: Advanced (300), Amazon Elastic Kubernetes Service, Amazon Q, Amazon Q Business, AWS Directory Service, AWS IAM Identity Center, Containers, Generative AI, Technical How-to

Amazon Elastic Kubernetes Service (Amazon EKS) đã nổi lên như một nền tảng hàng đầu cho việc điều phối container, cho phép triển khai, mở rộng và quản lý các ứng dụng được đóng gói trong container. Tuy nhiên, việc giám sát và hiểu hành vi của các ứng dụng doanh nghiệp, cũng như trích xuất thông tin chi tiết có giá trị từ lượng dữ liệu khổng lồ được tạo ra bởi một stack ứng dụng trên Amazon EKS, có thể rất phức tạp. May mắn thay, sự tích hợp của Amazon EKS với Amazon Q Business cung cấp một giải pháp mạnh mẽ để khám phá những thông tin chi tiết có thể hành động từ các ứng dụng của bạn.

Amazon Q Business là một trợ lý được hỗ trợ bởi generative AI có thể trả lời câu hỏi, cung cấp tóm tắt, tạo nội dung và hoàn thành các tác vụ một cách an toàn dựa trên dữ liệu và thông tin trong các hệ thống doanh nghiệp của bạn. Khách hàng có thể sử dụng dịch vụ được quản lý hoàn toàn này để truy vấn và phân tích dữ liệu từ nhiều nguồn, chẳng hạn như control plane, data plane, tỷ lệ yêu cầu và nhật ký ứng dụng. Hơn nữa, nó cung cấp cho các tổ chức cái nhìn sâu sắc toàn diện về các ứng dụng và môi trường Kubernetes của họ.

Trong bài viết này, chúng tôi trình bày một giải pháp sử dụng Amazon Data Firehose để tổng hợp nhật ký từ control plane và data plane của Amazon EKS, sau đó gửi chúng đến Amazon Simple Storage Service (Amazon S3). Cuối cùng, chúng tôi sử dụng Amazon Q Business và trình kết nối Amazon S3 của nó để đồng bộ hóa nhật ký, lập chỉ mục dữ liệu nhật ký trong Amazon S3 và kích hoạt trải nghiệm trò chuyện được hỗ trợ bởi khả năng generative AI của Amazon Q Business.

Tổng quan giải pháp

Sơ đồ kiến trúc sau đây cho thấy quy trình làm việc xảy ra khi triển khai mã Terraform mà chúng tôi sử dụng trong giải pháp này. Các bước sau đây mô tả chi tiết cách cluster EKS được triển khai với ứng dụng mẫu bán lẻ.


Hình 1: Sơ đồ kiến trúc giải pháp

  1. Người dùng triển khai toàn bộ stack hạ tầng bao gồm Amazon Virtual Private Cloud (Amazon VPC), các vai trò AWS Identity Access Management (IAM), cluster EKS và Amazon Q Business bằng một lần thực thi Terraform duy nhất.
  2. Lưu lượng truy cập ứng dụng chảy qua Application Load Balancer (ALB) đến ứng dụng mẫu bán lẻ đã triển khai đang chạy trên cluster EKS.
  3. Nhật ký Amazon EKS Control Plane được lưu trữ trong Amazon CloudWatch được truyền đến Amazon S3 thông qua Amazon Data Firehose.
  4. Fluent Bit DaemonSet thu thập và chuyển tiếp tất cả nhật ký pod và container trực tiếp đến Amazon S3 từ khắp cluster EKS.
  5. Amazon S3 đóng vai trò là lớp lưu trữ thống nhất cho tất cả nhật ký, được Amazon Q Business lập chỉ mục và phân tích thông qua trình kết nối gốc của nó. Do đó, người dùng có thể truy vấn, trích xuất thông tin chi tiết và khắc phục sự cố một cách hiệu quả thông qua giao diện trực quan được hỗ trợ bởi AI.

Đ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:

Hướng dẫn

Các bước sau đây sẽ hướng dẫn bạn thực hiện giải pháp.

Tạo tài nguyên trạng thái từ xa backend của Terraform

Để thiết lập không gian làm việc của bạn, hãy mở terminal.

  • Clone mã Terraform vào thư mục làm việc hiện tại của bạn.
git clone https://github.com/aws-samples/sample-amazon-eks-q-business-integration.git
  • Thay đổi thư mục làm việc hiện tại của bạn thành Amazon-Q-business bằng cách chạy lệnh sau.
cd "$_"
cat provider.tf


Hình 2: Các nhà cung cấp Terraform

Thư mục này có một tệp tên là provider.tf chứa thông tin về các nhà cung cấp mà bạn sử dụng trong giải pháp này với Terraform. Như được hiển thị trong hình trên, chúng tôi sử dụng nhà cung cấp aws và nhà cung cấp awscc, được cung cấp bởi AWS Cloud Control API, để tạo Amazon Q Business và các phụ thuộc của nó trong bài viết này.

Tất cả các biến và giá trị mặc định của chúng được lưu trữ trong một tệp vars.tf riêng biệt, để bạn có thể thực hiện các thay đổi khi cần. Để quản lý trạng thái Terraform, hãy sử dụng Amazon S3 và Amazon DynamoDB. Để thiết lập không gian làm việc ban đầu và backend Terraform, hãy mở một terminal, điều hướng đến thư mục gốc của bạn và chạy lệnh sau:

make backend

Thao tác này tạo một bảng DynamoDB và một S3 bucket để lưu trữ và khóa các tệp trạng thái Terraform. Lưu ý tên S3 bucket cho bước tiếp theo.

Tạo tài nguyên kiến trúc blog bằng Terraform

Với thiết lập ban đầu đã hoàn tất, bạn có thể tạo môi trường blog hiện tại của mình như được hiển thị trong Hình 1. Đầu tiên, cập nhật tên bucket trong provider.tf với bucket backend từ phần Tạo tài nguyên backend Terraform, và chạy lệnh sau:

make deploy

Việc triển khai trong AWS Region us-east-1 mất khoảng 30 phút. Sau khi triển khai, bạn sẽ thấy các ID tài nguyên như được hiển thị trong hình sau.


Hình 3: Đầu ra Terraform

Triển khai ứng dụng mẫu và Fluent Bit để xuất nhật ký container sang Amazon S3

Trong bước này, bạn triển khai ứng dụng mẫu cửa hàng bán lẻ trên cluster EKS mà bạn đã tạo ở bước trước. Để triển khai ứng dụng, hãy chạy lệnh sau trong terminal của bạn từ thư mục gốc của repo:

make deployapp

Triển khai AWS for Fluent Bit để xuất nhật ký container sang Amazon S3

Sau khi triển khai ứng dụng, bạn triển khai AWS for Fluent Bit dưới dạng DaemonSet trong namespace mặc định. Thao tác này chuyển tiếp nhật ký pod đến một S3 bucket. Sử dụng Helm để triển khai aws-for-fluent-bit, tùy chỉnh cấu hình bằng tệp s3-fluentbit-values.yaml nằm trong thư mục gốc của repo Terraform.

Thay thế serviceAccount IRSA, role-arn, tên bucket và region bằng các giá trị từ môi trường của bạn đã tạo trong hình trên. Bạn cũng có thể lấy các chi tiết tài nguyên này bằng cách chạy make output trong terminal của bạn.

---
serviceAccount:
name: fluent-bit
create: fluent-bit
annotations: {
eks.amazonaws.com/role-arn: <IRSA ROLE_ARN>,
app.kubernetes.io/managed-by: "Helm",
meta.helm.sh/release-name: "fluentbit"
}
s3:
enabled: true
match: "*"
bucket: <BUCKET_NAME>
region: "<AWS Region>"
jsonDateKey: "date"
jsonDateFormat:
totalFileSize: "6M"
uploadChunkSize: "3M"
uploadTimeout: "2m"
storeDir: "/tmp/fluent-bit/s3"
storeDirLimitSize: 0
s3KeyFormat: /pod-logs/$TAG/%Y-%m-%d/%H-%M-%S
s3KeyFormatTagDelimiters:
staticFilePath: false
usePutObject: true
roleArn:
endpoint:
stsEndpoint:
cannedAcl:
compression:
contentType:
sendContentMd5: false
autoRetryRequests: true
logKey:
preserveDataOrdering: true
storageClass:
retryLimit: 1
externalId:
cloudWatchLogs:
enabled: false

Sau khi cập nhật s3-fluentbit-values.yaml, hãy chạy lệnh sau để cài đặt Fluent Bit:

make fluentbit

Xác minh rằng Fluent Bit đang chạy bằng lệnh sau:

kubectl get daemonset

Các nhật ký control plane và data plane được truy vấn thông qua Amazon Q Business được lưu trữ trong một S3 bucket có tên eks-amazonq-business-datastore- dưới các thư mục khác nhau: eks-cluster/pod-logs/. Sau khi bật tính năng ghi nhật ký, bạn sẽ thấy các nhật ký xuất hiện trong S3 bucket đã cấu hình như được hiển thị trong hình sau.


Hình 4: Nhật ký trong S3 bucket

Tạo người dùng và nhóm trong AD và đồng bộ hóa với IAM Identity Center

Trong phần này, bạn tạo người dùng trong AWS Directory Service for Microsoft Active Directory (AWS Managed Microsoft AD), nguồn danh tính tập trung cho Amazon Q Business trong bài viết này. Trong bước tiếp theo, bạn tích hợp Microsoft AD với IAM Identity Center. Bạn có tùy chọn tạo người dùng bằng lệnh make hoặc AWS Management Console. Tuy nhiên, bài viết này tập trung vào phương pháp make.

make users first_name last_name

Trong bước này, bạn phải cung cấp tên và họ của người dùng, nếu không việc tạo người dùng sẽ thất bại. Các tài khoản ban đầu bị vô hiệu hóa, như được hiển thị trong hình ảnh sau. Do đó, bạn phải đặt lại mật khẩu để bất kỳ người dùng nào cũng có thể làm việc với Amazon Q Business.

Để đặt lại mật khẩu, hãy mở AWS Directory Service Console để xem trang Directory Service của bạn và quan sát tất cả các chi tiết người dùng với trạng thái.

  1. Chọn người dùng, chọn Actions, sau đó chọn Reset Password and enable account.
  2. Nhập mật khẩu mạnh và lưu để đặt lại mật khẩu người dùng trong AD.


Hình 5: Tạo người dùng trong AD

Liên kết nguồn danh tính của bạn với IAM Identity Center bằng cách làm theo các bước sau:

  1. Mở console IAM Identity Center.
  2. Chọn Settings.
  3. Trên trang Settings, chọn tab Identity source, và chọn Actions > Change identity source.
  4. Trong Choose identity source, chọn Active Directory, và chọn Next.
  5. Trong Connect active directory, chọn một thư mục trong AWS Managed Microsoft AD từ danh sách, và chọn Next.
  6. Trong Confirm change, xem lại thông tin, khi sẵn sàng nhập ACCEPT, và chọn Change identity source.

Khi bạn thay đổi AD trong IAM Identity Center, nó sẽ yêu cầu bạn đồng bộ hóa người dùng. Chọn Start guided setup ở phía trên bên phải với màu xanh lá cây.

  1. Chọn Start guided setup sau khi thay đổi AD trong IAM Identity Center.
  2. Cấu hình ánh xạ thuộc tính: Giữ nguyên ánh xạ thuộc tính mặc định, và chọn Next.
  3. Cấu hình phạm vi đồng bộ hóa: Tìm kiếm và thêm người dùng mà bạn đã tạo, và lưu cấu hình.


Hình 6: Cấu hình phạm vi đồng bộ hóa người dùng

Cho phép quá trình đồng bộ hóa hoàn tất, thường mất vài phút.

Môi trường của bạn có thể đã có Microsoft AD được tích hợp với IAM Identity Center. Chỉ chạy thao tác này khi không có Microsoft AD và bạn đang làm việc trong một tài khoản mới, sạch.

Thêm người dùng và nhóm vào ứng dụng Amazon Q Business

Trong phần này, bạn thiết lập người dùng và nhóm để minh họa cách quản lý quyền truy cập trong Amazon Q Business.

  1. Mở console Amazon Q Business.
  2. Chọn Get Started và chọn ứng dụng Amazon Q Business eks_amazonq_app mà bạn đã tạo trong quá trình triển khai tài nguyên kiến trúc blog.
  3. Trên trang chủ ứng dụng của bạn, chọn Manage user access. Trên trang Manage access and subscriptions, thêm nhóm và người dùng bằng cách gán người dùng và nhóm hiện có. Tìm kiếm “johndoe” và “janedoe” và gán chúng, như được hiển thị trong hình sau.

Hình 7: Gán người dùng cho Amazon Q Business

Amazon Q Business hỗ trợ Gói Pro và Lite. Trong blog này, hãy chọn pro cho cả hai người dùng trong trang truy cập và đăng ký.

Đồng bộ hóa nguồn dữ liệu Amazon S3

Thu thập và cập nhật chỉ mục Amazon Q Business với các nhật ký control plane, data plane và ứng dụng Amazon EKS mới nhất trong S3 bucket. Hãy nhớ cập nhật chỉ mục của bạn khi nội dung nguồn dữ liệu thay đổi. Khi bạn đồng bộ hóa nguồn dữ liệu của mình với Amazon Q lần đầu tiên, tất cả nội dung sẽ được đồng bộ hóa theo mặc định. Bạn có thể chạy đồng bộ hóa theo yêu cầu hoặc theo lịch trình. Để biết thêm chi tiết, hãy truy cập lịch trình chạy đồng bộ hóa. Để bắt đầu đồng bộ hóa, hãy chạy lệnh make sau trong terminal của bạn từ thư mục gốc của repo.

make sync

Quá trình đồng bộ hóa có thể mất từ vài phút đến vài giờ. Hãy đợi nó hoàn tất.


Hình 8: Đồng bộ hóa nguồn dữ liệu Amazon Q Business

Mô phỏng và truy vấn với Amazon Q

Với thiết lập đã cấu hình, bạn đã sẵn sàng mô phỏng và truy vấn nhật ký dựa trên các kịch bản được nêu trong phần này. Cùng với ứng dụng mẫu và Fluent Bit, bạn đã triển khai các tài nguyên tạo tải, khiến các pod UI bị crash và đồng bộ hóa nhật ký với Amazon Q Business. Sau khi đồng bộ hóa dữ liệu, hãy chạy lệnh make từ thư mục gốc để tìm URL web của Amazon Q Business.

make output_app_url

Sao chép URL trải nghiệm web, mở nó trong trình duyệt của bạn và đăng nhập với tư cách người dùng (jane@EXAMPLE.COM) mà bạn đã tạo.

Mô phỏng 1: Bạn đã cấp cho người dùng system:anonymous quyền truy cập để xem ClusterRole, để người dùng ẩn danh có thể xem tất cả các đối tượng cluster. Đây là một cấu hình không mong muốn cần được xem xét. Bạn cũng đã đồng bộ hóa nguồn dữ liệu Amazon Q để lập chỉ mục các nhật ký đã cập nhật.

Sau khi đăng nhập thành công, hãy truy vấn nhật ký và xem liệu Amazon Q có thể tìm thấy điều này bằng cách hỏi:

Has the anonymous user been granted API permission on a Kubernetes cluster? what is the risk associated with it and how to fix it?”

Bạn sẽ thấy đầu ra tương tự như sau:


Hình 9: Truy vấn quyền truy cập ẩn danh

Amazon Q cung cấp thông tin chi tiết có giá trị liên quan đến quyền người dùng “systems:anonymous” trong cluster. Trong đoạn văn tiếp theo, nó phác thảo các rủi ro liên quan đến các quyền này, kèm theo các khuyến nghị để giảm thiểu những rủi ro đó.

Mô phỏng 2: Bạn đã liên kết định nghĩa ClusterRole và ClusterRoleBinding với service account mặc định trong namespace mặc định với ClusterRole cluster-admin. Bất kỳ pod nào không liên kết với một service account cụ thể đều có thể sử dụng service account mặc định trong namespace của chúng. Cấu hình này có thể cung cấp các đặc quyền quản trị nâng cao không chủ ý cho các pod.

Khi được hỏi một câu hỏi như sau:

Has the default service account been granted admin privileges on a Kubernetes cluster?

Amazon Q Business cung cấp một bản tóm tắt lấy thông tin từ nhật ký pod và nhật ký hệ thống Kubernetes, làm nổi bật các nguồn ở cuối mỗi đoạn trích, như được hiển thị trong hình sau.


Hình 10: Truy vấn đặc quyền quản trị của service account mặc định

Mô phỏng 3: Trong Bước 3, bạn đã tạo một container đặc quyền với quyền truy cập cấp root và một host volume mount có thể ghi.

Khi được hỏi một câu hỏi như sau:

List me all the pods that has spec "privileged: true" setting in the securityContext in default namespace?

Một lần nữa, Amazon Q cung cấp một bản tóm tắt lấy thông tin từ nhật ký pod và nhật ký hệ thống Kubernetes như được hiển thị trong hình sau.


Hình 11: Truy vấn Pods SecurityContext

Để giải quyết vấn đề cấu hình Pods SecurityContext, hãy gửi truy vấn sau đến Amazon Q Business để biết các bước khắc phục chi tiết và các khuyến nghị về thực tiễn tốt nhất, như được hiển thị trong hình sau.

List me all pods with privileged containers and sensitive host path mounts in the default namespace and outline me how to fix them?


Hình 12: Khắc phục Pods SecurityContext

Bạn có thể thấy rằng, cùng với phản hồi từ nhật ký, Amazon Q Business đang cung cấp khuyến nghị để khắc phục vấn đề bảo mật. Bạn có thể áp dụng điều này trên cluster EKS.

Truy vấn liên quan đến control plane trên Amazon EKS

Trong phần này, hãy truy vấn dữ liệu control plane thông qua Amazon Q Business:

“Give me the UI deployments specs in yaml format?”

Bạn có thể thấy từ đầu ra rằng Amazon Q Business từ nhật ký tạo lại các tệp spec cho bạn. Bạn có thể nhanh chóng xem qua các spec và xác định lỗi, như được hiển thị trong hình sau.


Hình 13: Spec triển khai Amazon EKS sử dụng Amazon Q Business

Amazon Q tuân thủ các chính sách kiểm soát truy cập được thiết lập trong nguồn dữ liệu Amazon S3. Nếu bạn muốn cấu hình điều này, bạn có thể tham khảo bài viết về machine learning (ML) của AWS này để được hướng dẫn.

Dọn dẹp

Để dọn dẹp mọi thứ, hãy làm theo các bước sau:

  1. Xóa AWS Managed Microsoft AD được tạo cho bài viết này khỏi IAM Identity Center và liên kết nó với Identity Center Directory.

Trong bảng điều khiển IAM Identity Center, đi tới Settings, chọn Identity source và chọn ActionIdentity Source. Chọn Change Identity Source. Chọn Identity Center directory, và chọn NextAccept.

  1. Chạy lệnh make sau để xóa mọi thứ khỏi tài khoản AWS của bạn sau khi xóa nguồn danh tính khỏi AWS Managed AD.
make cleanup

Kết luận

Amazon Q Business cung cấp một giải pháp mạnh mẽ cho các tổ chức muốn có cái nhìn sâu sắc hơn về môi trường Kubernetes của họ. Các tổ chức có thể áp dụng Amazon Q Business để đạt được khả năng hiển thị chưa từng có vào các ứng dụng doanh nghiệp và môi trường Kubernetes của họ. Bạn có thể sử dụng điều này để giải quyết vấn đề chủ động, tăng cường sử dụng tài nguyên, tối ưu hóa hiệu suất và nâng cao khả năng ra quyết định. Bài viết này cung cấp hướng dẫn toàn diện về cách tạo cluster Amazon EKS và quản lý khả năng quan sát của nó. Chúng tôi đã trình bày cách truyền nhật ký control plane và data plane của Amazon EKS đến Amazon S3 bằng Amazon Data Firehose và Fluent Bit. Các nhật ký này được kết nối với Amazon Q Business thông qua các trình kết nối Amazon S3, để bạn có thể trích xuất thông tin chi tiết có thể hành động từ môi trường Amazon EKS của mình.

Để tìm hiểu thêm về Amazon Q Business, hãy tham khảo Amazon Q Business là gì?


Về tác giả


Imtranur Rahman là một Kiến trúc sư Giải pháp cấp cao giàu kinh nghiệm trong nhóm AWS WWPS với 18 năm kinh nghiệm. Imtranur làm việc với các Đối tác Toàn cầu của AWS và giúp họ xây dựng chiến lược đám mây cũng như áp dụng rộng rãi nền tảng điện toán đám mây của Amazon. Imtranur chuyên về Containers, Dev/SecOps, GitOps, các ứng dụng dựa trên microservices, các giải pháp ứng dụng hybrid, hiện đại hóa ứng dụng, Generative AI và các giải pháp Agentic AI, và yêu thích đổi mới thay mặt khách hàng của mình. Với chuyên môn sâu rộng trong việc tận dụng tự động hóa được hỗ trợ bởi AI và các framework tác nhân thông minh, Imtranur giúp các đối tác kiến trúc các ứng dụng GenAI có khả năng mở rộng và triển khai các quy trình làm việc tác nhân thúc đẩy chuyển đổi kinh doanh. Anh ấy rất tập trung vào khách hàng và tự hào cung cấp các giải pháp tốt nhất thông qua chuyên môn sâu rộng của mình.


Naveen Bathula là Kiến trúc sư Giải pháp Đối tác tại Amazon Web Services. Naveen làm việc với các Đối tác Tích hợp Hệ thống, là đầu mối liên hệ chính của họ cho các câu hỏi kỹ thuật liên quan đến các dịch vụ và giải pháp của AWS, đồng thời cung cấp hướng dẫn về các thực tiễn tốt nhất để vận hành trên AWS Cloud. Trước khi gia nhập AWS, anh đã có hơn 5 năm kinh nghiệm làm Kỹ sư DevOPs. Anh ấy sống ở Dallas, TX. Bạn có thể kết nối với anh ấy trên Linkedin.