Tác giả: Eric Yuen, Michael Shaul và Bhavin Shah
Ngày đăng: ngày 04 THÁNG 04 NĂM 2025
Danh mục: Amazon Elastic Kubernetes Service, Amazon FSx for NetApp ONTAP, AWS Marketplace, Intermediate (200), Partner solutions, Technical How-to
NetApp Trident cho Amazon FSx for NetApp ONTAP có sẵn dưới dạng tiện ích bổ sung (add-on) của AWS Marketplace cho Amazon EKS. Giải pháp này đơn giản hóa các quy trình đăng ký và triển khai bằng cách tự động hóa việc cài đặt và cấu hình ban đầu của NetApp Trident trên các cụm Amazon EKS.
Khi sử dụng NetApp Trident cùng với FSx for ONTAP, nó không chỉ cung cấp lưu trữ Container Storage Interface (CSI) cơ bản, mà còn cung cấp các tính năng quản lý dữ liệu nâng cao như nhân bản PersistentVolumeClaim (PVC) giữa các cụm Amazon EKS để khôi phục sau thảm họa (DR), tạo ảnh chụp nhanh (snapshot) tức thời để bảo vệ dữ liệu và khôi phục ảnh chụp nhanh tại chỗ. Vì các tính năng này có sẵn dưới dạng tài nguyên tùy chỉnh (custom resources) của Kubernetes, bạn có thể quản lý chúng thông qua các công cụ Amazon EKS và tích hợp chúng vào các quy trình GitOps như một phần của quản lý vòng đời ứng dụng để đơn giản hóa việc triển khai.
Bài viết này chỉ cho bạn cách triển khai Trident bằng tiện ích bổ sung (add-on) từ AWS Marketplace, thiết lập sao chép dữ liệu giữa hai cụm Amazon EKS với hai hệ thống tệp FSx for ONTAP và kiểm tra chuyển đổi dự phòng.
Điều kiện tiên quyết
Các điều kiện tiên quyết sau là bắt buộc để thiết lập môi trường demo này:
- Tạo hai cụm EKS trong cùng một hoặc các AWS Region khác nhau làm cụm chính và DR.
- Bật trình cung cấp (provider) IAM OpenID Connect (OIDC) cho cả hai cụm Amazon EKS để cấu hình vai trò IAM cho tài khoản dịch vụ (service accounts).
- Tạo hai hệ thống tệp FSx for ONTAP làm hệ thống chính và DR.
- Tạo các liên kết ngang hàng (peerings) NetApp SnapMirror giữa các hệ thống tệp FSx for NetApp ONTAP chính và DR cũng như các máy ảo lưu trữ (Storage Virtual Machines – SVM).
- Cài đặt eksctl và cấu hình máy chủ cục bộ của bạn để truy cập cả hai cụm EKS.
- Đặt các biến môi trường (như được hiển thị trong hình 1) với tên cụm EKS Chính và DR:

Hình 1: Script shell minh họa thiết lập đa cụm Amazon EKS có tính sẵn sàng cao (high availability)
- Các quyền AWS Marketplace sau là bắt buộc:
"aws-marketplace:ViewSubscriptions",
"aws-marketplace:Subscribe",
"aws-marketplace:Unsubscribe"
- Sử dụng lệnh sau (như được hiển thị trong hình 2) để tạo các bí mật (secrets) khác nhau bằng AWS Secrets Manager cho mỗi FSx for ONTAP SVM:

Hình 2: Lệnh AWS CLI tạo một secret trong AWS Secrets Manager
Tổng quan giải pháp
Giải pháp bao gồm bốn bước cấp cao (như được hiển thị trong hình 3):

Hình 3: Sao chép PVC Amazon EKS sử dụng NetApp Trident và Amazon FSx for NetApp ONTAP
- Cài đặt Trident EKS add-on trên cả hai cụm Amazon EKS chính và DR
- Cấu hình Trident trên cả hai cụm EKS
- Tạo PVC nguồn và mối quan hệ sao chép Trident Mirror Relationship (TMR) trên cụm EKS chính
- Tạo TMR tương ứng và PVC đích trên cụm EKS DR
Hướng dẫn giải pháp: Triển khai bảo vệ dữ liệu nâng cao cho Amazon EKS bằng NetApp Trident AWS Marketplace EKS add-on và Amazon FSx for NetApp ONTAP
Các bước sau đây hướng dẫn bạn qua quy trình triển khai Trident và thiết lập sao chép dữ liệu bằng cách sử dụng kết hợp AWS CLI và eksctl.
Cài đặt Trident EKS add-on trên cả hai cụm Amazon EKS chính và DR.
1. Tạo chính sách IAM
Sử dụng mẫu sau (như được hiển thị trong hình 4) để tạo tệp policy.json, thiết lập các tham số cho chính sách IAM bắt buộc:

Hình 4: policy.json chứa các quyền AWS IAM cho các hoạt động FSx và quyền truy cập Secrets Manager
Chạy lệnh sau (như được hiển thị trong hình 5) để tạo chính sách:

Hình 5: Lệnh AWS CLI tạo chính sách AWS IAM cho tích hợp trình điều khiển Trident CSI
2. Tạo vai trò IAM
Chạy lệnh sau (như được hiển thị trong hình 6) để tạo vai trò IAM cho tài khoản dịch vụ với tên vai trò tùy chỉnh. Trong ví dụ này, đó là <AmazonEKS_FSxN_CSI_DriverRole>:

Hình 6: Lệnh tạo tài khoản dịch vụ AWS IAM bằng eksctl
3. Cài đặt Trident add-on trên cả hai cụm EKS
Tạo tệp add-on.json (như được hiển thị trong hình 7) để ghi lại các tham số thiết lập add-on. Cập nhật clusterName với tên cụm EKS chính và DR của bạn. Cập nhật serviceAccountRoleArn với Amazon Resource Name (ARN) của vai trò bạn, được tạo ở bước trước. Trong ví dụ này, ARN là <arn:aws:iam::<account_ID>:role/AmazonEKS_FSXN_CSI_DriverRole>. Cập nhật configurationValues với cùng ARN ở cuối giá trị chuỗi:

Hình 7: add-on.json hiển thị cài đặt cụm cho Trident operator add-on với đặc tả vai trò tài khoản dịch vụ
Chạy lệnh sau (như được hiển thị trong hình 8) để cài đặt Trident trên cả hai cụm Amazon EKS chính và DR:

Hình 8: Lệnh AWS CLI để tạo EKS add-on sử dụng add-on.json làm tệp cấu hình
Xác minh trạng thái triển khai Trident add-on bằng cách kiểm tra phiên bản hiện tại thông qua lệnh eksctl (như được hiển thị trong hình 9). Thực hiện bước này trên cả hai cụm EKS chính và DR, thay thế primary/DR-Cluster bằng tên cụm tương ứng.

Hình 9: Lệnh eksctl lấy Trident operator add-on cho một cụm được chỉ định
Bạn sẽ thấy đầu ra như được hiển thị trong hình 10:

Hình 10: Đầu ra của Trident operator add-on
Cấu hình Trident trên cả hai cụm EKS chính và DR
1. Cấu hình cả hai hệ thống tệp FSx for ONTAP.
Tạo backend-config.yaml riêng biệt bằng cách sử dụng thông tin xác thực SVM (tên người dùng và mật khẩu) được lưu trữ trong AWS Secrets Manager, như đã đề cập trong điều kiện tiên quyết (mục về AWS Secrets Manager). Thực hiện điều này cho cả hai cụm EKS chính và DR cũng như các hệ thống tệp FSx for ONTAP tương ứng.
Trong tệp YAML ví dụ sau (như được hiển thị trong hình 11), bạn cần cập nhật cả fsxFileSystemID, <fs-xxxxxxxxxx> và <region> với ID hệ thống tệp và AWS Region của bạn.

Hình 11: backend-config.yaml định nghĩa cấu hình lưu trữ backend Trident sử dụng trình điều khiển ONTAP
Chạy các lệnh sau (như được hiển thị trong hình 12) trên cả hai cụm EKS:

Hình 12: Các lệnh kubectl tạo cấu hình backend sử dụng backend-config.yaml cho cả hai cụm chính và DR
2. Cấu hình các đối tượng Kubernetes StorageClass cho cả hai cụm EKS chính và DR.
Sử dụng ví dụ storageclass.yaml sau (như được hiển thị trong hình 13), tạo các tệp YAML và chạy lệnh từ cả hai cụm EKS chính và DR:

Hình 13: storageclass.yaml định nghĩa StorageClass sử dụng trình cấp phát NetApp Trident cho FSx ONTAP
Chạy các lệnh sau (như được hiển thị trong hình 14):

Hình 14: Các lệnh kubectl tạo cấu hình StorageClass sử dụng storageclass.yaml
Tạo PVC nguồn và mối quan hệ sao chép TMR trên cụm Amazon EKS chính.
1. Tạo PVC.
Trên cụm EKS chính, tạo một PVC bằng cách sử dụng tệp pvc.yaml sau (như được hiển thị trong hình 15) làm ví dụ. Bạn có thể thay đổi tên PVC và kích thước lưu trữ để đáp ứng yêu cầu của bạn:

Hình 15: pvc.yaml định nghĩa một PVC với các cấu hình cơ bản bao gồm kích thước lưu trữ, quyền truy cập ReadWriteMany và lớp lưu trữ basic-csi
Chạy các lệnh sau (như được hiển thị trong hình 16) để chạy việc tạo PVC:

Hình 16: Các lệnh kubectl tạo PVC từ pvc.yaml và truy xuất thông tin PVC
Kiểm tra trạng thái PVC trên cụm EKS chính, sau đây là đầu ra dự kiến (như được hiển thị trong hình 17):

Hình 17: Thông tin PVC
2. Tạo TMR.
Sau khi PVC được tạo trên cụm EKS chính, sử dụng ví dụ sau để tạo tệp mirrorsource.yaml (như được hiển thị trong hình 18) cho TMR giữa các PVC chính và DR.

Hình 18: mirrorsource.yaml định nghĩa tài nguyên TridentMirrorRelationship với trạng thái promoted
Sau khi bạn có tệp mirrorsource.yaml sẵn sàng, chạy các lệnh sau (như được hiển thị trong hình 19):

Hình 19: Các lệnh kubectl cấu hình mối quan hệ nhân bản Trident từ mirrorsource.yaml
Kiểm tra TMR trên cụm Amazon EKS chính, sau đây là đầu ra dự kiến (như được hiển thị trong hình 20):

Hình 20: TMR ở trạng thái promoted từ cụm EKS chính
Lấy mã định danh volume cục bộ (local volume handle) của FSx for ONTAP cho PVC của bạn từ cụm Amazon EKS chính bằng cách chạy lệnh sau (như được hiển thị trong hình 21).

Hình 21: Lệnh kubectl sử dụng jsonpath để trích xuất xử lý khối lượng cục bộ
Đầu ra sẽ trông giống như ví dụ sau, với tên SVM FSx for ONTAP và ID volume của bạn. Ghi lại các giá trị này vì bạn sẽ sử dụng chúng trong bước tiếp theo.
[pvc-storage ,<fsxn_svm>:<volume_id>]
Tạo TMR tương ứng và PVC đích trên cụm Amazon EKS DR.
1. Tạo TMR trên cụm Amazon EKS DR
Tạo TMR trên cụm EKS DR bằng cách sử dụng manifest mirrordest.yaml (như được hiển thị trong hình 22). Đảm bảo bạn cập nhật tất cả localPVCName (chẳng hạn như pvc-storage, từ bước trước) và remoteVolumeHandle, chẳng hạn như ví dụ sau:
<fsxn_svm>:<volume_id>

Hình 22: mirrordest.yaml thiết lập các mối quan hệ nhân bản lưu trữ
Chạy các lệnh sau (như được hiển thị trong hình 23) để tạo TMR trên cụm Amazon EKS DR:

Hình 23: Các lệnh kubectl tạo đích nhân bản sử dụng mirrordest.yaml
Bạn sẽ nhận được đầu ra dự kiến sau (như được hiển thị trong hình 24):

Hình 24: TMR được tạo thành công
2. Tạo PVC trên cụm Amazon EKS DR và bắt đầu sao chép dữ liệu.
Bước cuối cùng là tạo PVC trên cụm EKS DR và bắt đầu sao chép. Đảm bảo bạn cập nhật chú thích (annotation) metadata TridentMirrorRelationship với tên TMR được thiết lập trong ví dụ trước. Trong ví dụ sau (như được hiển thị trong hình 25), nó được đặt thành pvc-storage.

Hình 25: pvcdest.yaml định nghĩa yêu cầu lưu trữ với quyền truy cập ReadWriteMany
Bây giờ bạn có thể chạy các lệnh sau (như được hiển thị trong hình 26) để tạo PVC:

Hình 26: Các lệnh kubectl đặt ngữ cảnh, tạo PVC và xác minh trạng thái nhân bản
Tại thời điểm này, TMR sẽ được thiết lập sau khi PVC đích được tạo. Bạn có thể kiểm tra trạng thái TMR bằng cách so sánh với đầu ra dự kiến này (như được hiển thị trong hình 27):

Hình 27: TMR ở trạng thái established
Thiết lập và cấu hình môi trường Amazon EKS hiện đã hoàn tất. Đợi vài phút để sao chép bắt kịp và hoàn thành, sau đó bạn sẽ có một cặp PVC Amazon EKS sẵn sàng DR hoàn toàn.
Đối với giai đoạn tiếp theo, kích hoạt thủ công chuyển đổi dự phòng để mô phỏng kịch bản DR, cho mục đích kiểm tra.
Cách kích hoạt thủ công chuyển đổi dự phòng từ cụm Amazon EKS DR
Chạy các bước sau để mô phỏng quy trình DR trong cụm EKS Chính của bạn và di chuyển cả ứng dụng và dữ liệu vào cụm DR.
Sử dụng môi trường kiểm tra của bạn, bạn có thể dừng sao chép dữ liệu và nâng cấp (promote) PVC trên cụm EKS DR thành ReadWrite (cho phép đọc-ghi) và có thể gắn kết (mountable). Sử dụng manifest mirrordestdr.yaml sau làm ví dụ (như được hiển thị trong hình 28), bạn có thể thay đổi TMR từ “established” sang “promoted”, đó là những gì bạn cần để biến cụm Amazon EKS DR của bạn thành cụm chính.

Hình 28: mirrordestdr.yaml khai báo TMR với trạng thái promoted
Chạy lệnh sau (như được hiển thị trong hình 29) để kích hoạt chuyển đổi dự phòng:

Hình 29: Lệnh kubectl kích hoạt chuyển đổi dự phòng cụm
Lưu ý: Điều quan trọng là phải xác thực (validate) rằng trạng thái của TMR thay đổi thành promoted. Đôi khi trạng thái có thể là promoting vì việc chuyển đổi dự phòng mất thời gian. Điều này là bình thường; đợi vài phút và thử lại nếu cần thiết.
Để lấy trạng thái của TMR, sử dụng lệnh sau:
kubectl get tmr
Sau đây là đầu ra dự kiến (như được hiển thị trong hình 30):

Hình 30: TMR ở trạng thái promoted
Chúc mừng! Bạn đã thiết lập thành công DR cho các cụm Amazon EKS của mình và xác thực khôi phục sau thảm họa bằng cách chuyển sang cụm DR.
Tại thời điểm này, cụm EKS DR của bạn đang ở môi trường production và có thể lưu trữ khối lượng công việc production của bạn. Khi cụm EKS chính và hệ thống tệp FSx for ONTAP của bạn sẵn sàng hoạt động, bạn có thể thực hiện các bước sao chép theo thứ tự ngược lại để chuyển đổi ngược (fail back) về site chính (primary site) ban đầu của bạn.
Dọn dẹp
Để xóa môi trường kiểm tra, chạy các lệnh sau (như được hiển thị trong hình 31):\

Hình 31: Các lệnh kubectl xóa môi trường kiểm tra
Kết luận
Amazon EKS với NetApp Trident và FSx for ONTAP cung cấp khả năng bảo vệ dữ liệu và khôi phục sau thảm họa mạnh mẽ cho các khối lượng công việc được container hóa (containerized workloads) trên AWS. AWS Marketplace add-on đơn giản hóa việc triển khai, cho phép các kỹ sư DevOps thiết lập và quản lý môi trường của họ bằng các công cụ Amazon EKS quen thuộc.
Bài viết này đã minh họa cách triển khai Trident và cấu hình Trident Mirror Relationship giữa hai cụm Amazon EKS bằng AWS CLI, eksctl và kubectl. Để bắt đầu, hãy truy cập NetApp Trident trong AWS Marketplace. Để biết tài liệu Trident, hãy truy cập kho tài liệu Trident.
Về các tác giả
Michael Shaul

Michael Shaul là Principal Architect tại văn phòng CTO của NetApp. Ông có hơn 20 năm kinh nghiệm xây dựng các hệ thống quản lý dữ liệu, ứng dụng và giải pháp cơ sở hạ tầng. Ông có một quan điểm chuyên sâu độc đáo về các công nghệ đám mây, giải pháp cho người phát triển (builder), và giải pháp AI.
Bhavin Shah

Bhavin Shah là Principal Product Manager với NetApp. Ông có hơn một thập kỷ kinh nghiệm trong quản lý dữ liệu và đã dành hơn năm năm làm việc với Kubernetes và giúp các tổ chức xây dựng các giải pháp bảo vệ dữ liệu và khôi phục sau thảm họa cho các container đang chạy trong môi trường production.
Eric Yuen

Eric Yuen là Senior Partner Solutions Architect với AWS. Ông làm việc chặt chẽ với các Đối tác Lưu trữ AWS xây dựng giải pháp và giúp khách hàng thiết kế môi trường lưu trữ trên AWS. Eric mang đến 20 năm kinh nghiệm ngành làm việc với các công nghệ lưu trữ và bảo vệ dữ liệu khác nhau.