Triển khai

Trang này mô tả cách triển khai Trình tạo cấu hình chỉ số (MCG).

Truy cập vào mã nguồn

Mã nguồn cho MCG được lưu trữ trên GitHub, trong aaos-sdv-telemetry-mcg. Bạn có thể chạy MCG cục bộ để phát triển và kiểm thử hoặc triển khai MCG vào một môi trường đám mây để nhóm có thể truy cập.

Chạy cục bộ

Để chạy MCG từ thư mục nguồn cho quá trình phát triển và kiểm thử cục bộ, hãy sử dụng Bazel. Bạn phải cài đặt Bazel. Bạn phải bật tính năng lưu vào bộ nhớ đệm trong bộ nhớ bằng cách đặt MCG_LOCALCACHE=true khi chạy cục bộ. Thư viện này hỗ trợ việc lưu trữ Danh mục tín hiệu xe. Để tạo và chạy dịch vụ cục bộ, hãy sử dụng các lệnh sau trong thư mục nguồn:

# Build and run on default port 8005
MCG_LOCALCACHE=true bazel run //:mcg

# Or, to change the port, use:
MCG_LOCALCACHE=true bazel run //:mcg -- --listen :9000

Triển khai lên Google Cloud

Toàn bộ mã nguồn MCG bao gồm các tệp Terraform và Google Cloud Build để triển khai MCG vào Google Cloud dưới dạng một dịch vụ Google Cloud Run. Các phần sau đây sẽ hướng dẫn bạn thực hiện quy trình triển khai, bao gồm tạo tệp biến, triển khai cơ sở hạ tầng, tạo và triển khai ứng dụng, cũng như cấp quyền truy cập và xác minh việc triển khai.

Vì Cloud Run là một nền tảng không máy chủ, nên nền tảng này tiết kiệm tài nguyên bằng cách chỉ chạy các vùng chứa khi xử lý yêu cầu, thay vì duy trì trạng thái hoạt động của máy chủ 24/7. Điều này có nghĩa là dữ liệu trong bộ nhớ sẽ bị mất khi các phiên bản vùng chứa tắt giữa các yêu cầu; do đó, bạn cần có Redis để cung cấp bộ nhớ liên tục cho dữ liệu danh mục trên các lệnh gọi dịch vụ. Phương pháp này cung cấp một quy trình triển khai có thể mở rộng, phù hợp với việc sử dụng theo nhóm hoặc sử dụng trong môi trường phát hành công khai.

Điều kiện tiên quyết

Trước khi bắt đầu triển khai trên Google Cloud, hãy xác minh rằng bạn có các điều kiện tiên quyết sau:

Cấu trúc tệp

Việc triển khai lên Google Cloud bao gồm việc chạy các lệnh Terraform từ thư mục con infrastructure/ và các lệnh Cloud Build từ thư mục gốc của kho lưu trữ. Các tệp và thư mục chính mà bạn tương tác là:

repository-root/
├── cloudbuild.yaml
└── infrastructure/
    └── terraform.tfvars  <-- you create this file

Tạo tệp biến Terraform

Trong thư mục infrastructure/, hãy tạo một tệp có tên là terraform.tfvars để cung cấp các giá trị cho biến được xác định trong variables.tf và tuỳ chỉnh việc triển khai của bạn. Bạn cần xác định các giá trị cho project_idregion trong tệp này; tất cả các biến khác đều không bắt buộc. Thêm nội dung sau vào terraform.tfvars:

project_id        = "<var label="Google Cloud project ID">your-gcp-project-id</var>"
region            = "<var label="Google Cloud region">your-gcp-region</var>" # For example, us-central1 or europe-west1

Hãy xem variables.tf để biết tất cả các biến có sẵn và giá trị mặc định của chúng. Bạn có thể ghi đè các giá trị mặc định bằng cách đặt các giá trị đó trong terraform.tfvars.

Triển khai cơ sở hạ tầng

Sau khi tạo terraform.tfvars, bạn có thể khởi động và áp dụng cấu hình Terraform. Bước này cung cấp tất cả tài nguyên cần thiết trên Google Cloud, bao gồm cả Artifact Registry, Redis và Cloud Run. Khi hoàn tất, Terraform sẽ tạo dịch vụ Google Cloud Run chạy một hình ảnh vùng chứa giữ chỗ. Bước này có thể mất vài phút.

# Run from the infrastructure/ directory
terraform init
terraform apply

Khi terraform apply nhắc, hãy xem lại kế hoạch và nhập yes để xác nhận.

Tạo và triển khai ứng dụng MCG

Sau khi cơ sở hạ tầng được cung cấp, bước tiếp theo là tạo mã nguồn MCG và triển khai mã nguồn đó lên Google Cloud Run. Việc này được thực hiện bằng cách gửi mã nguồn đến Google Cloud Build. Google Cloud Build sẽ tạo hình ảnh Docker, đẩy hình ảnh đó vào Artifact Registry và cập nhật dịch vụ Google Cloud Run để sử dụng hình ảnh mới.

Google Cloud Build sử dụng biến thay thế COMMIT_SHA để gắn thẻ hình ảnh đã tạo. Bạn có thể sử dụng số phiên bản (ví dụ: v1.0.0) hoặc SHA cam kết của kho lưu trữ. Việc gắn thẻ giúp bạn phân biệt các phiên bản trong Artifact Registry, quản lý việc triển khai và khôi phục về phiên bản trước nếu cần.

Chạy lệnh gcloud sau đây để kích hoạt quá trình tạo và triển khai:

# Run from the repository root
#
# The command tags the image with the Git commit SHA.
# To tag with a version number, replace '$(git rev-parse --short HEAD)' with the version number.
gcloud builds submit . \
  --config=cloudbuild.yaml \
  --substitutions=COMMIT_SHA=$(git rev-parse --short HEAD)

Lệnh này thực hiện việc triển khai ban đầu của mã xử lý ứng dụng. Để triển khai các bản cập nhật cho mã nguồn MCG, hãy chạy lại lệnh này.

Cấp quyền truy cập và xác minh quá trình triển khai

Để cho phép người dùng hoặc tài khoản dịch vụ gọi MCG API, bạn phải cấp cho họ vai trò Cloud Run Invoker (roles/run.invoker) IAM:

gcloud run services add-iam-policy-binding mcg-service \
  --member=<var label="member type, e.g. user or serviceAccount">MEMBER_TYPE</var>:<var label="email address of member">EMAIL_ADDRESS</var> \
  --role=roles/run.invoker \
  --region=<var label="Google Cloud region">your-gcp-region</var>

Bạn có thể lấy URL dịch vụ bằng cách chạy lệnh sau. URL vẫn ổn định trên các lượt triển khai.

SERVICE_URL=$(gcloud run services describe mcg-service \
  --region <var label="Google Cloud region">your-gcp-region</var> \
  --format='value(status.url)')

Sau khi cấp quyền, hãy xác nhận rằng dịch vụ đang chạy và có thể truy cập bằng cách gọi điểm cuối /health của dịch vụ. Vì các dịch vụ Google Cloud Run yêu cầu xác thực, nên bạn phải thêm mã thông báo uỷ quyền từ gcloud vào tiêu đề của yêu cầu khi gọi điểm cuối:

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
  $SERVICE_URL/health

Nếu dịch vụ đang chạy, lệnh này sẽ trả về OK và giờ đây, bạn có thể gọi bất kỳ điểm cuối API nào như mô tả trong phần Gọi API.