1. Giới thiệu
Trong lớp học lập trình này, bạn sẽ triển khai ứng dụng Hackathon Judge trên Google Kubernetes Engine (GKE) và sử dụng Hộp cát tác nhân Kubernetes-sigs để chạy các tải công việc dựa trên tác nhân một cách an toàn và bảo mật.
Nền tảng này được thiết kế để tự động hoá quy trình xem xét, kiểm thử và chấm điểm các dự án hackathon bằng cách sử dụng các tác nhân LLM. Vì việc chấm điểm đòi hỏi phải đánh giá các bài nộp mã của người tham gia không đáng tin cậy, nên hộp cát thực thi an toàn là yếu tố quan trọng để ngăn chặn hành vi chèn mã, leo thang đặc quyền hoặc lạm dụng tài nguyên.
Bạn sẽ thực hiện
- Cung cấp các dịch vụ Google Cloud mục tiêu và thiết lập các API mục tiêu.
- Khởi động GKE Autopilot và cài đặt CRD Hộp cát của tác nhân, cấu hình cụm và Bộ định tuyến hộp cát.
- Triển khai Cổng Hộp cát, Mẫu yêu cầu Hộp cát và WarmPool Hộp cát.
- Triển khai REST Backend API, ADK Judging worker Agent và React Frontend UI.
- Định tuyến cân bằng tải bên ngoài và truy cập vào nền tảng để chạy quy trình chấm điểm an toàn, được cách ly.
Bạn cần có
- Một trình duyệt web như Chrome.
- Một dự án trên Google Cloud đã bật tính năng thanh toán.
Các tài nguyên được tạo trong lớp học lập trình này sẽ có tổng chi phí thời gian chạy dưới 5 USD.
2. Vấn đề: Đánh giá an toàn mã không đáng tin cậy
Sự kiện hackathon là sự kiện đổi mới diễn ra nhanh chóng, nơi người tham gia xây dựng và gửi dự án (thường bao gồm cả mã nguồn) để đánh giá. Việc đánh giá các nội dung này theo cách thủ công tốn nhiều thời gian và nguồn lực. Sử dụng tác nhân AI để tự động chấm điểm là một giải pháp đầy hứa hẹn, nhưng lại đặt ra một thách thức bảo mật đáng kể: làm cách nào để chạy an toàn mã do người tham gia cung cấp mà có thể có lỗi, độc hại hoặc tốn nhiều tài nguyên?
Việc chạy trực tiếp mã không đáng tin cậy trên cơ sở hạ tầng của bạn sẽ khiến bạn gặp phải các rủi ro như:
- Chèn mã: Tập lệnh độc hại có thể tìm cách truy cập hoặc sửa đổi dữ liệu nhạy cảm.
- Leo thang đặc quyền: Mã có thể tìm cách giành quyền truy cập trái phép vào các hệ thống hoặc tài nguyên mạng khác.
- Lạm dụng tài nguyên: Mã được viết kém hoặc các cuộc tấn công từ chối dịch vụ có thể tiêu thụ quá nhiều CPU, bộ nhớ hoặc băng thông mạng, ảnh hưởng đến các hoạt động khác.
Để tự động hoá việc đánh giá hackathon bằng AI, chúng ta cần một cách để thực thi mã đã gửi trong một môi trường hoàn toàn tách biệt với phần còn lại của hệ thống và các bản gửi khác.
3. Giải pháp: Hộp cát tác nhân GKE
GKE Agent Sandbox là một tính năng được thiết kế cho chính thử thách này. Hộp cát này giúp quản lý các khối lượng công việc riêng biệt, có trạng thái và một bản sao trên GKE, đồng thời được tối ưu hoá cho các trường hợp sử dụng như thời gian chạy tác nhân AI, trong đó mã không đáng tin cậy phải được thực thi một cách an toàn và hiệu quả.
Sau đây là những lợi ích chính của Hộp cát dành cho đặc vụ:
- Phân vùng ở cấp độ hạt nhân: Cung cấp khả năng phân vùng mạnh mẽ ở cấp độ hạt nhân cho mã không đáng tin cậy bằng cách sử dụng các công nghệ như gVisor, ngăn mã truy cập vào hệ thống máy chủ hoặc các vùng chứa khác.
- Cung cấp trong vòng chưa đến một giây: Cung cấp nhanh các môi trường hộp cát (thường là <1 giây), điều này rất quan trọng đối với việc đánh giá mã theo yêu cầu.
- Khả năng mở rộng trên nền tảng đám mây: Tận dụng sức mạnh của Kubernetes và cơ sở hạ tầng được quản lý của GKE.
Bằng cách sử dụng Hộp cát dành cho tác nhân, chúng tôi có thể tạo các môi trường riêng biệt theo yêu cầu cho từng bản gửi tại cuộc thi hackathon. Sau đó, tác nhân đánh giá AI có thể hướng dẫn Hộp cát tác nhân chạy các kiểm thử, biên dịch mã hoặc thực hiện các bước đánh giá khác trong hộp cát bảo mật này mà không gây rủi ro cho tính toàn vẹn của nền tảng tổng thể. Điều này mang đến một cách thức có thể mở rộng quy mô, bảo mật và hiệu quả để tự động hoá việc chấm điểm hackathon.
4. Trước khi bắt đầu
Khởi động Cloud Shell
Nhấp vào nút bên dưới để khởi động Google Cloud Shell. Công cụ này được định cấu hình sẵn với các tiện ích dòng lệnh cần thiết cho nhà phát triển và đám mây.
Bật API
Chạy lệnh sau trong Cloud Shell để bật tất cả các Cloud APIs mục tiêu của Google Cloud cần thiết để chạy nền tảng:
gcloud services enable \
container.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
pubsub.googleapis.com \
aiplatform.googleapis.com \
cloudresourcemanager.googleapis.com \
iam.googleapis.com \
bigquery.googleapis.com \
bigqueryconnection.googleapis.com
Lý do chúng tôi bật các API này: Các dịch vụ của Google Cloud bị tắt theo mặc định để ngăn chặn truy cập và tính phí trái phép. Chúng tôi bật các API cụ thể này để kích hoạt tính năng điều phối vùng chứa (GKE), bộ nhớ vùng chứa an toàn (Artifact Registry), đóng gói bản dựng không máy chủ (Cloud Build), hàng đợi nhắn tin đáng tin cậy (Pub/Sub), dịch vụ mô hình AI (Vertex AI), cấu hình dự án (Cloud Resource Manager và IAM), phân tích dữ liệu không máy chủ (BigQuery) và các liên kết AI ở cấp cơ sở dữ liệu (BigQuery Connection).
5. Thiết lập cơ sở hạ tầng
Trong bước này, bạn sẽ sao chép kho lưu trữ mã và thực thi tập lệnh thiết lập tự động để triển khai cấu trúc đám mây mục tiêu và các thành phần cụm cơ sở.
Sao chép Kho lưu trữ
Sao chép kho lưu trữ chứa tất cả các dịch vụ ứng dụng, tập lệnh thiết lập và khai báo tệp kê khai Kubernetes:
git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
git sparse-checkout set codelabs/ai-toolkit-lab-2/hackathon-judge
cd codelabs/ai-toolkit-lab-2/hackathon-judge
Chạy tập lệnh triển khai
Thiết lập cơ bản cho các tài nguyên trên đám mây, mô hình cơ sở dữ liệu và các chính sách cơ bản về cụm Kubernetes được tự động hoá bằng tập lệnh deploy.sh.
Chạy tập lệnh:
./deploy.sh
Làm theo lời nhắc của trình bao tương tác để cung cấp các cấu hình như mã dự án đang hoạt động và Khu vực mục tiêu. Tập lệnh này tự động tạo cấu hình .env cục bộ, liên kết các tài nguyên, biên dịch hình ảnh vùng chứa và đăng ký cơ sở hạ tầng cơ sở của GKE.
Sau đây là các thao tác mục tiêu mà tập lệnh thực hiện:
1. Thiết lập cấu hình môi trường
Tập lệnh này tạo một tệp cấu hình .env để lưu trữ các thông số biến dự án, BigQuery, Pub/Sub và GKE. Việc tìm nguồn cho tệp này sẽ tự động điền tất cả các định nghĩa tệp kê khai Kubernetes tiếp theo.
Lý do chúng ta định cấu hình tệp môi trường này: Tệp .env tập trung các tham số cấu hình, đảm bảo rằng các tệp kê khai GKE mà chúng ta áp dụng theo cách thủ công trong các bước tiếp theo sử dụng các chế độ cài đặt theo khu vực, tên dự án và tài nguyên giống nhau, tách biệt hoàn toàn cấu hình môi trường với mã nguồn.
2. Google Cloud CLI và cấu hình dự án mục tiêu
Tập lệnh này xác minh rằng các tiện ích gcloud, bq, kubectl và envsubst đã được cài đặt, kiểm tra trạng thái xác thực và khoá các mục tiêu cấu hình đang hoạt động vào dự án trên đám mây của Google Cloud đang hoạt động của bạn.
Lý do chúng tôi nhắm đến dự án đang hoạt động: Việc đặt dự án mục tiêu đang hoạt động sẽ ngăn các lệnh CLI ảnh hưởng đến những dự án khác trong tài khoản của bạn và thực hiện các bước kiểm tra xác thực trước khi triển khai, đảm bảo rằng các lệnh thiết lập không bị lỗi giữa quá trình triển khai do thông tin đăng nhập không hợp lệ.
3. Bật các API Google Cloud mục tiêu
Tập lệnh này thực hiện một quy trình kiểm tra bất biến để xác minh và bật các API dịch vụ mục tiêu của Google Cloud (GKE, Artifact Registry, Cloud Build, Pub/Sub, Vertex AI, BigQuery và IAM).
Lý do chúng tôi bật Google Cloud API: Bạn phải kích hoạt các dịch vụ đám mây được quản lý trước khi có thể truy cập vào các điểm cuối hoặc tạo tài nguyên. Việc bật các lệnh này ngay từ đầu sẽ giúp cổng API GCP theo khu vực chuẩn bị xử lý các lệnh cấp phát tài nguyên tiếp theo.
4. Cung cấp kho lưu trữ Docker của Artifact Registry
Tập lệnh này cung cấp một kho lưu trữ vùng chứa Docker có tên là hackathon-judge-repo ở vị trí mục tiêu đã chọn.
Lý do chúng tôi tạo một kho lưu trữ Artifact Registry: Các cụm GKE yêu cầu quyền truy cập an toàn vào các sổ đăng ký vùng chứa riêng tư trong cùng một mạng lưới khu vực để kéo nhanh hình ảnh ứng dụng. Artifact Registry cung cấp một máy chủ riêng tư, an toàn để lập danh mục, quét và lưu trữ hình ảnh vùng chứa Docker.
5. Cung cấp Cụm Autopilot GKE
Tập lệnh này cung cấp một cụm Autopilot của Google Kubernetes Engine (GKE) có tên là hackathon-judge-cluster.
Lý do chúng tôi triển khai một cụm GKE Autopilot: GKE Autopilot tự động quản lý việc cung cấp nút, mở rộng quy mô, giám sát tình trạng và nâng cấp bảo mật hệ điều hành máy chủ. Nền tảng này cung cấp một nền tảng vùng chứa cấp sản xuất để điều phối các dịch vụ liên tục của chúng tôi và lên lịch động cho các hộp cát bảo mật theo yêu cầu.
6. Định cấu hình chủ đề và gói thuê bao Pub/Sub
Tập lệnh cung cấp các chủ đề thông báo (judging-tasks và judging-results) cùng với các trình thực thi và gói thuê bao API tương ứng.
Lý do chúng tôi triển khai chủ đề và gói thuê bao Pub/Sub: Việc đánh giá các nội dung gửi mã diễn ra chậm và tốn nhiều tài nguyên. Việc sử dụng cấu trúc hàng đợi tin nhắn sẽ tách API đồng bộ hướng đến người dùng khỏi các nút worker. Phần phụ trợ API sẽ đẩy các công việc vào chủ đề judging-tasks và các tác nhân worker sẽ kéo các tác vụ khi có sẵn, ngăn chặn việc chặn API và cung cấp khả năng thử lại tự động.
7. Định cấu hình Tập dữ liệu, Bảng và Mối kết nối AI của BigQuery
Tập lệnh này tạo tập dữ liệu hackathon_judge, áp dụng các giản đồ cơ sở dữ liệu SQL có cấu trúc, tải các bản ghi ban đầu và cấp các vai trò AI và lưu trữ cần thiết cho tài khoản dịch vụ kết nối BigQuery ML.
8. Kích hoạt quy trình xây dựng vùng chứa bằng Cloud Build
Tập lệnh này kích hoạt định nghĩa cloudbuild.yaml để biên dịch giao diện người dùng React, máy chủ Go REST, trình xử lý ADK Python và hộp cát FastAPI, đóng gói chúng vào các hình ảnh vùng chứa riêng biệt được gắn thẻ bằng SHA của cam kết Git trong kho lưu trữ đang hoạt động và lưu chúng vào Artifact Registry.
9. Đăng ký Định nghĩa tài nguyên tuỳ chỉnh (CRD) Hộp cát của tác nhân
Tập lệnh này tải xuống và đăng ký các Định nghĩa tài nguyên tuỳ chỉnh mới nhất của Hộp cát tác nhân Kubernetes-sigs (manifest.yaml và extensions.yaml) để mở rộng các chức năng cốt lõi của GKE.
Lý do chúng tôi cài đặt cơ sở hạ tầng Hộp cát của tác nhân: Các cụm Kubernetes tiêu chuẩn không hỗ trợ việc phân bổ các hộp cát được bảo vệ theo yêu cầu. Việc đăng ký CRD Hộp cát tác nhân sẽ mở rộng mặt phẳng điều khiển của GKE, cho phép Kubernetes điều phối các vi vùng chứa được cách ly an toàn một cách tự nhiên bằng cách sử dụng Tài nguyên tuỳ chỉnh (chẳng hạn như SandboxTemplates và SandboxClaims).
10. Định cấu hình không gian tên, tài khoản dịch vụ và Workload Identity
Tập lệnh này cung cấp không gian tên hackathon-judge, đăng ký Tài khoản dịch vụ Kubernetes (KSA) và thiết lập các mối liên kết Workload Identity để cấp cho các nhóm GKE quyền truy cập vào Google Cloud.
11. Triển khai Bộ định tuyến hộp cát
Tập lệnh này áp dụng tệp kê khai k8s/sandbox_router.yaml, khởi tạo quá trình triển khai và dịch vụ Sandbox Router, đồng thời chờ các dịch vụ này đạt được trạng thái ổn định.
Lý do chúng tôi triển khai Sandbox Router: Sandbox Router là cổng trung tâm của lớp kiểm soát nội bộ. Nó cung cấp một API đơn giản mà tác nhân worker đánh giá ADK gọi để xác nhận quyền sở hữu, truy cập hoặc phát hành các hộp cát bảo mật, quản lý các ánh xạ định tuyến và trừu tượng hoá việc phân bổ nhóm cấp cụm từ logic ứng dụng.
6. Định cấu hình Cổng Hộp cát của tác nhân, Xác nhận quyền sở hữu và WarmPool
Trong bước này, bạn sẽ định cấu hình Cổng mạng Hộp cát chuyên biệt theo cách thủ công, đăng ký Mẫu yêu cầu Hộp cát và triển khai WarmPool Hộp cát để bật tính năng tạo hộp cát có độ trễ thấp nhất.
Biến môi trường nguồn
Trước khi áp dụng các mẫu yêu cầu biến môi trường, hãy tìm nguồn tập lệnh setup-env.sh để phân tích cú pháp và xuất tất cả các biến cần thiết vào trình bao của bạn:
source ./setup-env.sh
Áp dụng Cổng hộp cát
Triển khai cổng được định cấu hình cụ thể để định tuyến lưu lượng truy cập hộp cát:
kubectl apply -f k8s/sandbox-gateway.yaml
Lý do chúng tôi triển khai Sandbox Gateway: Sandbox Gateway hoạt động như một bộ kiểm soát lưu lượng truy cập an toàn, hiệu suất cao, chỉ dành riêng cho việc định tuyến hộp cát. Thao tác này sẽ cô lập mạng hộp cát, cung cấp một mục tiêu cục bộ, an toàn cho phép các tác nhân worker giao tiếp với các hộp cát đã xác nhận quyền sở hữu mà không để lộ các điểm cuối ra bên ngoài.
Áp dụng mẫu yêu cầu cấp quyền trong hộp cát
Sử dụng envsubst để điền thông tin vào định nghĩa mẫu hộp cát bằng các biến môi trường đang hoạt động của bạn và áp dụng định nghĩa đó:
source ./setup-env.sh
envsubst < k8s/sandbox-claim-template.yaml | kubectl apply -f -
Lý do chúng tôi triển khai Mẫu yêu cầu Hộp cát: Mẫu yêu cầu Hộp cát đóng vai trò là cấu hình bản thiết kế xác định môi trường. Tệp này chỉ định hình ảnh vùng chứa cần chạy (được đóng gói sẵn bằng các công cụ dành cho nhà phát triển), các thông số môi trường (Mã dự án GCP), cổng và giới hạn tài nguyên (mục tiêu CPU/Bộ nhớ). Thao tác này sẽ định cấu hình GKE để chạy các thực thể vùng chứa này bằng cách sử dụng gVisor (thời gian chạy gvisor), đảm bảo rằng mã của người tham gia không đáng tin cậy chạy trong một lớp tách biệt ảo hoá nhân hệ điều hành bổ sung.
Áp dụng Sandbox WarmPool
Áp dụng WarmPool của Hộp cát để khởi động trước các hộp cát đang chạy:
kubectl apply -f k8s/sandbox-warmpool.yaml
Xác minh rằng các phiên bản dự phòng trong nhóm khởi động nhanh đã khởi động thành công:
kubectl get pods -n hackathon-judge -l app=sandbox
Lý do chúng tôi triển khai Sandbox WarmPool: Việc cung cấp, lập lịch, kéo hình ảnh và khởi động các nhóm vùng chứa mới theo yêu cầu sẽ làm tăng đáng kể chi phí khởi động (thời gian khởi động nguội từ 30 giây trở lên). Sandbox WarmPool duy trì một nhóm dự phòng gồm các nhóm hộp cát đang hoạt động và được làm nóng trước (theo mặc định là 5 bản sao). Khi tác nhân worker yêu cầu một môi trường đánh giá, Sandbox Router sẽ phân bổ ngay một nhóm đã được khởi động trước, giảm độ trễ khi khởi động xuống dưới 1 giây.
7. Triển khai các thành phần ứng dụng
Khi cơ sở hạ tầng hộp cát bảo mật hoạt động đầy đủ, bạn sẽ triển khai API phụ trợ trung tâm, tác nhân worker, giao diện web React và ánh xạ Cổng kết nối đầu vào.
Triển khai phần phụ trợ
Triển khai phần phụ trợ API REST của trình điều phối:
source ./setup-env.sh
envsubst < k8s/backend.yaml | kubectl apply -f -
Triển khai tác nhân
Triển khai tác nhân worker chấm điểm ADK:
source ./setup-env.sh
envsubst < k8s/agent.yaml | kubectl apply -f -
Triển khai giao diện người dùng
Triển khai giao diện người dùng web tương tác:
source ./setup-env.sh
envsubst < k8s/frontend.yaml | kubectl apply -f -
Định cấu hình Cổng và định tuyến bên ngoài
Triển khai Gateway chính và ánh xạ các tuyến HTTP đầu vào cho lưu lượng truy cập của máy khách bên ngoài:
kubectl apply -f k8s/gateway.yaml
Lý do chúng tôi triển khai Cổng vào bên ngoài: Cổng bên ngoài hiển thị các dịch vụ của chúng tôi bằng API Cổng của Kubernetes. Nó cung cấp một địa chỉ IP công khai được cân bằng tải và lập bản đồ các tuyến đường dựa trên quy tắc đường dẫn – chuyển các yêu cầu API trong /api/* đến Go Backend và lập bản đồ tất cả lưu lượng truy cập web khác của ứng dụng (/) đến React Frontend, đảm bảo quyền truy cập vào cụm công khai.
Xác minh hoạt động phát hành
Chặn quá trình thực thi shell và đợi cho đến khi cả 3 hoạt động triển khai dịch vụ cốt lõi đều đạt được trạng thái triển khai ổn định và sẵn sàng:
kubectl rollout status deployment/backend -n hackathon-judge --timeout=300s
kubectl rollout status deployment/agent -n hackathon-judge --timeout=300s
kubectl rollout status deployment/frontend -n hackathon-judge --timeout=300s
8. Xác minh và sử dụng ứng dụng
Truy cập vào giao diện người dùng
Tìm nạp địa chỉ IP công khai bên ngoài của cổng cân bằng tải chính mới được cung cấp:
Để xem trạng thái cấp phép theo thời gian thực, hãy chạy lệnh bằng cờ đồng hồ (-w) và đợi cho đến khi địa chỉ IP công khai được điền vào trường ADDRESS:
kubectl get gateway -n hackathon-judge hackathon-judge-gateway -w
Khi được cấp phép thành công, bạn sẽ thấy kết quả tương tự như sau:
NAME CLASS ADDRESS PROGRAMMED AGE hackathon-judge-gateway gke-l7 34.120.120.120 True 3m
Sau khi bạn thấy một địa chỉ IP công khai hợp lệ trong cột ADDRESS và trạng thái PROGRAMMED là True, hãy nhấn Ctrl+C để dừng đồng hồ.
Lý do chúng tôi nhận được trạng thái Cổng kết nối: Gateway API xử lý lưu lượng truy cập công khai. Khi kiểm tra trạng thái Cổng, bạn sẽ nhận được địa chỉ IP ngoài, được cân bằng tải và công khai do trình cân bằng tải bên ngoài toàn cầu của Google Cloud phân bổ cho cụm của chúng tôi. Địa chỉ này đại diện cho địa chỉ công khai của nền tảng.
Mở địa chỉ IP công khai được phân bổ trong trình duyệt để tải trang tổng quan của Giám khảo Hackathon.
Gửi việc cần làm
- Sử dụng giao diện người dùng để chuyển đến trang tổng quan, chọn cuộc thi hackathon.

- Trong bất kỳ dự án nào, bạn cũng có thể nhấp vào
Run Agentđể bắt đầu đánh giá toàn bộ dự án dựa trên bộ tiêu chí.

Xem sự kiện ra mắt Hộp cát
Theo dõi các nhóm đang hoạt động trong không gian tên hackathon-judge để xem một nhóm hộp cát được yêu cầu và cung cấp động để đánh giá quá trình thực thi:
kubectl get pods -n hackathon-judge -w
Kiểm tra nhật ký của nhóm tác nhân worker để xem logic đánh giá ADK từng bước:
kubectl logs -l app=agent -n hackathon-judge
Lý do chúng tôi kiểm tra nhật ký của Agent: Việc kiểm tra nhật ký của worker agent sẽ cho thấy các bước nội bộ chi tiết của quy trình đánh giá theo thời gian thực. Bạn có thể theo dõi tác nhân ADK tìm nạp tác vụ, yêu cầu một vùng chứa hộp cát, thực thi các mục tiêu biên dịch, phân tích báo cáo bằng Gemini và xuất bản thẻ điểm.
9. (Không bắt buộc) Cách hoạt động
Kiến trúc hộp cát của tác nhân
Mặc dù các hàm AI của BigQuery rất hữu ích trong việc đánh giá các nội dung gửi dựa trên văn bản và các tuyên bố trong tệp README, nhưng việc đánh giá một dự án kỹ thuật đòi hỏi phải biên dịch mã, cài đặt các thư viện bên thứ ba và chạy các bộ kiểm thử thực.
Việc chạy mã người dùng thô gây ra rủi ro bảo mật lớn, bao gồm cả việc xâm nhập máy chủ lưu trữ, xâm nhập vùng chứa và truy cập trái phép vào tài nguyên. Khung GKE Agent Sandbox giúp giảm thiểu những rủi ro này bằng cách điều phối các tải công việc hộp cát riêng biệt bằng cách sử dụng ảo hoá gVisor (runsc).
Luồng tương tác hệ thống
Sơ đồ dưới đây cho biết cách các phần tử khác nhau của hệ thống dựa trên sự kiện giao tiếp trong quá trình thực thi chấm điểm an toàn trong hộp cát:

Cách các công cụ và thành phần tương tác phối hợp với nhau
- Giao diện người dùng React Frontend: Cung cấp một giao diện tương tác, nơi người dùng định cấu hình các mô hình tiêu chí, đăng ký nhóm, gửi URL dự án và xem xét bảng điểm chấm điểm cuối cùng, bao gồm cả sự khác biệt về tệp đầy đủ và nhận xét của kỹ sư.
- Go REST Backend API: Quản lý các điểm cuối API trên toàn cầu. Nền tảng này lưu trữ cấu hình dự án trong BigQuery và đẩy các tác vụ chấm điểm đến Pub/Sub để tách các quy trình thực thi tính toán nặng.
- Google Pub/Sub: Broker hướng thông báo, lưu giữ an toàn các thông báo về tác vụ trong hàng đợi, điều phối hoạt động giao tiếp không đồng bộ giữa API và các thực thể worker đang hoạt động.
- Worker ADK Python (Tác nhân giám sát): Một worker trong nền kéo các tác vụ từ Pub/Sub. Công cụ này tận dụng Bộ công cụ phát triển tác nhân (ADK) của Google để khởi động một tác nhân giám sát cấp cao, được hướng dẫn điều phối quá trình đánh giá. Giám sát viên sẽ gọi công cụ chính của mình là
evaluate_repositoryđể uỷ quyền kiểm thử lệnh thô chuyên sâu. - Bộ định tuyến và cổng hộp cát (Mặt phẳng điều khiển GKE): Một cổng điều khiển nội bộ đăng ký các Định nghĩa tài nguyên tuỳ chỉnh tiêu chuẩn của hộp cát (
SandboxClaims,SandboxTemplates). Cổng này điều phối các mạng GKE để phân bổ và bảo mật các nhóm, trả lại các luồng kết nối cho các máy khách là nhân viên. - Sandbox WarmPool: Để tránh thời gian khởi động vùng chứa GKE quá lâu ("khởi động nguội" từ 30 giây trở lên), WarmPool duy trì các nhóm dự phòng đang hoạt động. Khi một hộp cát được yêu cầu, Bộ định tuyến sẽ ánh xạ hộp cát đó ngay lập tức trong thời gian chưa đến một giây, sau đó lên lịch tái chế khi hộp cát được phát hành.
- Tính năng cách ly gVisor (runsc): Một nhân ảo trong không gian người dùng đóng vai trò là ranh giới hộp cát bảo mật. Nó chặn các lệnh gọi hệ thống từ không gian vùng chứa đến các nhân nút GKE, đảm bảo rằng các lệnh thô nguy hiểm (chẳng hạn như tập lệnh hệ thống hoặc thiết lập gói) chạy trong môi trường cách ly ảo hoá tuyệt đối.
- Thời gian chạy hộp cát FastAPI: Một máy chủ API Python có dung lượng nhẹ chạy bên trong vùng chứa hộp cát. Nó hiển thị các điểm cuối bảo mật (
/execute,/upload,/download) cho phép các công cụ worker bên ngoài thao tác với tệp và kích hoạt các tác vụ shell. - Gemini CLI (
@google/gemini-cli): Một tập lệnh tác nhân tự động được cài đặt trong hộp cát. Khi được kích hoạt bằng cờ thời gian chạy môi trường dành cho nhà phát triển (--yolo), công cụ này sẽ sử dụng một bảng hướng dẫn chấm điểm nghiêm ngặt (prompt.md) và định nghĩa tiêu chí (criteria.md) để:- Phân tích động hệ phân cấp cơ sở mã (bằng cách sử dụng các công cụ như
treehoặcripgrep). - Tự động cài đặt các yêu cầu (thông qua các lệnh như
npm install,pip install,go build). - Chạy các kiểm thử phát triển thực (chẳng hạn như
npm testhoặcpytest) để xác minh chức năng. - Gọi các mô hình Vertex AI (thông qua thông tin đăng nhập liên kết Workload Identity của vùng chứa) để đánh giá logic tệp, kiểm tra chéo các tuyên bố với tệp README, phát hiện các tính năng ảo, ghi lại các vấn đề về chất lượng và viết báo cáo thẻ điểm có cấu trúc vào
evaluation.json.
- Phân tích động hệ phân cấp cơ sở mã (bằng cách sử dụng các công cụ như
- Môi trường phát triển tiêu chuẩn: Gói các nút, npm, yarn, pnpm, python, pip, uv, go, gh, git, tree, ripgrep và playwright trong hình ảnh vùng chứa hộp cát, cung cấp cho tác nhân phụ tự trị một không gian làm việc kiểm thử hoàn chỉnh.
10. Dọn dẹp
Để tránh các khoản phí phát sinh cho tài khoản Google Cloud của bạn, hãy xoá các tài nguyên đã tạo trong lớp học lập trình này.
./destroy.sh
Lý do chúng tôi dọn dẹp tài nguyên: Google Cloud tính phí theo mô hình sử dụng tài nguyên. Các tài nguyên đang hoạt động như cụm GKE Autopilot, bộ cân bằng tải mạng và đĩa liên tục sẽ phát sinh các khoản phí liên tục ngay cả khi không hoạt động. Việc chạy bước này sẽ xoá không gian tên của cụm để xoá các đối tượng Kubernetes và xoá chính máy chủ lưu trữ cụm GKE Autopilot để chấm dứt ngay mọi khoản phí thanh toán cơ bản.
11. Xin chúc mừng
Xin chúc mừng! Bạn đã triển khai thành công ứng dụng Hackathon Judge bằng Agent Sandbox trên GKE!
Bạn đã triển khai một nền tảng AI hiện đại, an toàn, dựa trên sự kiện, có khả năng kiểm thử và đánh giá các bản gửi cơ sở mã không đáng tin cậy trong các quy tắc ràng buộc bảo mật được chứa trong vùng chứa riêng biệt.
Kiến thức bạn học được
- Cơ sở hạ tầng GKE: Cách cung cấp chế độ Tự vận hành của GKE và các dịch vụ hỗ trợ của Google Cloud như Pub/Sub và BigQuery.
- Cấu hình Hộp cát của tác nhân: Cách định cấu hình Định nghĩa tài nguyên tuỳ chỉnh, SandboxTemplate, SandboxClaim và Sandbox WarmPool hiệu suất cao.
- Triển khai vi dịch vụ: Cách định cấu hình các liên kết Workload Identity và triển khai một kiến trúc vi dịch vụ gồm nhiều thành phần (Frontend React, REST Go, Worker ADK Agent và Isolated Sandbox).
- Hộp cát bảo mật: Cách sử dụng các vùng chứa ảo hoá gVisor để chạy các lệnh không đáng tin cậy của bên thứ ba một cách an toàn trên các nút GKE.
Các bước tiếp theo
- Khám phá tài liệu về Hộp cát của tác nhân.
- Tìm hiểu thêm về các tính năng của GKE Autopilot.
- Hãy xem Tài liệu về nền tảng của tác nhân.