Crossplane cung cấp tiện ích mở rộng mã nguồn mở cho Kubernetes để tạo mặt phẳng điều khiển chung. Với Crossplane, bạn có thể sắp xếp và quản lý toàn bộ cơ sở hạ tầng rộng hơn của mình bằng các công cụ Kubernetes. Crossplane có thể giao tiếp với hầu hết mọi API nền tảng đám mây, bao gồm cả Akamai Cloud, và cung cấp các tính năng như trừu tượng hóa API và kiểm soát truy cập của Kubernetes.
Trong hướng dẫn này, bạn sẽ tìm hiểu thêm về Crossplane là gì và cách so sánh với các công cụ tương tự. Bạn cũng có thể làm theo hướng dẫn từng bước để thiết lập phiên bản Crossplane của riêng mình.
Crossplane là gì?
Crossplane tạo ra các mặt phẳng điều khiển đám mây trên bất kỳ nền tảng đám mây nào. Crossplane mở rộng Kubernetes thành một mặt phẳng điều khiển chung. Với nó, bạn có thể cung cấp và quản lý các nhu cầu cơ sở hạ tầng rộng hơn của mình bằng cách sử dụng các biểu hiện và API Kubernetes quen thuộc.
Việc mở rộng Kubernetes của Crossplane thành một mặt phẳng điều khiển chung cho phép nó giao tiếp với hầu như bất kỳ API bên ngoài nào. Điều đó đúng cho dù bạn đang triển khai trên một nền tảng đám mây lớn, đặt pizza hay tận dụng một công cụ điều phối khác như Terraform .
Mặt phẳng điều khiển là gì?
Trong bối cảnh tài nguyên đám mây, mặt phẳng điều khiển cung cấp giao diện để tạo tài nguyên và quản lý vòng đời của chúng. Do đó, mặt phẳng điều khiển tương ứng với việc sắp xếp tài nguyên cho cơ sở hạ tầng đám mây.
Bản thân Kubernetes là một ví dụ. Thiết lập Kubernetes triển khai và giám sát tài nguyên, quản lý trạng thái của từng tài nguyên theo cấu hình nhất định.
Crossplane sử dụng mặt phẳng điều khiển Kubernetes và mở rộng nó sang một bối cảnh rộng hơn. Trong khi Kubernetes hoạt động như một mặt phẳng điều khiển cho các tài nguyên trên cụm Kubernetes, Crossplane hoạt động như một mặt phẳng điều khiển chung . Crossplane có thể là giao diện cho các tài nguyên trên hầu như bất kỳ nền tảng đám mây nào.
Crossplane và Terraform: Sự khác biệt là gì?
Terraform có lẽ là công cụ phổ biến nhất cho cơ sở hạ tầng dưới dạng mã. Giống như Crossplane, Terraform cho phép bạn quản lý cơ sở hạ tầng đó trên nhiều dịch vụ. Vậy điều gì khiến Crossplane khác biệt so với Terraform và khi nào bạn nên sử dụng Crossplane thay vì Terraform?
Về cơ bản, sự khác biệt nằm ở mục đích sử dụng của công cụ. Terraform là công cụ dòng lệnh để triển khai cơ sở hạ tầng bằng cách sử dụng cấu hình khai báo. Ngược lại, Crossplane là mặt phẳng điều khiển sử dụng cấu hình khai báo để tạo và cung cấp khả năng quản lý liên tục cơ sở hạ tầng.
Ngoài ra, có hai sự khác biệt đáng kể về chức năng giữa các công cụ. Những sự khác biệt này chủ yếu ảnh hưởng đến cách các công cụ phù hợp với cấu trúc tổ chức và nhóm.
- Cấu hình của Terraform không cập nhật theo những thay đổi trên cơ sở hạ tầng đã triển khai. Terraform hướng đến việc triển khai cơ sở hạ tầng và những thay đổi đối với cấu hình Terraform đòi hỏi phải áp dụng lại toàn bộ quá trình triển khai.Là một mặt phẳng điều khiển, Crossplane sử dụng các cấu hình khai báo của mình để chủ động duy trì và sửa đổi trạng thái của cơ sở hạ tầng. Điều này có nghĩa là Crossplane không bị ảnh hưởng bởi “trôi dạt” cấu hình có thể xảy ra với các cấu hình Terraform.
- Với Terraform, một nhà phát triển cộng tác cần một số quyền truy cập cơ sở hạ tầng phải biết cả Terraform và API cơ bản. Không chỉ vậy, nhà phát triển còn cần quyền truy cập chi tiết vào các tài nguyên cơ bản.Ngược lại, Crossplane có thể cung cấp giao diện tự phục vụ. Crossplane sử dụng các toán tử xử lý thông tin xác thực và hiển thị các giao diện đơn giản, trừu tượng cho các nhà phát triển cộng tác. Theo cách đó, các nhà phát triển chỉ cần truy cập và hiểu biết về chính giao diện, thay vì các khía cạnh chi tiết.
Việc Crossplane sử dụng Kubernetes cũng khiến nó trở thành giải pháp có lợi cho các nhóm đã sử dụng Kubernetes. Crossplane tận dụng cơ sở hạ tầng và sự quen thuộc của Kubernetes hiện có.
Cách cài đặt Crossplane
Crossplane triển khai đến cụm Kubernetes tương tự như nhiều ứng dụng Kubernetes khác. Sau khi cài đặt Crossplane trên cụm của mình, bạn có thể tận dụng kubectl
để tạo và quản lý tài nguyên Crossplane.
Thực hiện theo các bước trong phần này để thiết lập cụm Kubernetes và chạy Crossplane trên cụm đó.
Thiết lập cụm Kubernetes
Crossplane chạy trên cụm Kubernetes, do đó bạn cần có một cụm đang chạy để bắt đầu sử dụng.
Với Linode, bạn có thể nhanh chóng triển khai cụm Kubernetes từ Cloud Manager. Để thực hiện, hãy làm theo hướng dẫn của chúng tôi Linode Kubernetes Engine – Getting Started . Khi hoàn tất, bạn sẽ có một cụm Kubernetes hoạt động đầy đủ và một kubectl
phiên bản được cấu hình để quản lý cụm đó.
Ngoài việc có một cụm Kubernetes đang hoạt động, bạn cần cấu hình kubectl để quản lý cụm đó. Bạn có thể tìm thấy thông tin này được đề cập trong hướng dẫn LKE được liên kết ngay phía trên.
Để cài đặt Helm trên hệ thống của bạn, hãy làm theo phần có liên quan trong hướng dẫn Cài đặt ứng dụng trên Kubernetes bằng Helm 3 của chúng tôi .
Triển khai Crossplane với Helm
Sau khi chạy Kubernetes và cài đặt Helm, bây giờ bạn có thể tiến hành cài đặt Crossplane.
1.Thêm kho lưu trữ Crossplane vào phiên bản Helm của bạn:
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "crossplane-stable" chart repository
Update Complete. ⎈Happy Helming!⎈
Nếu bạn muốn tùy chỉnh cài đặt của mình, hãy theo liên kết ở trên để tạo tệp giá trị với các tùy chọn và đặt tên values.yml
cho ví dụ này. Sau đó thêm -f values.yml
vào cuối lệnh cài đặt bên dưới để áp dụng cấu hình của bạn vào cài đặt.
Nếu bạn muốn tùy chỉnh cài đặt của mình, hãy theo liên kết ở trên để tạo tệp values.yaml
có các tùy chọn. Sau đó thêm -f values.yml
vào cuối lệnh cài đặt bên dưới để áp dụng cấu hình của bạn.
2.Thực hiện theo khuyến nghị chính thức, lệnh này sẽ cài đặt Crossplane trong không gian tên Kubernetes của riêng nó:
helm install crossplane --namespace crossplane-system --create-namespace crossplane-stable/crossplane
3.Xác nhận cài đặt bằng cách kiểm tra các pod Crossplane được triển khai vào cụm của bạn. Có thể mất một thời gian ngắn để các pod sẵn sàng, vì vậy bạn có thể phải đợi để xem trạng Running
thái.
kubectl get pods --namespace crossplane-system
NAME READY STATUS RESTARTS AGE
crossplane-766d6647bc-b57lz 1/1 Running 0 44s
crossplane-rbac-manager-f94699c7c-zvvtb 1/1 Running 0 44s
Cách sử dụng Crossplane
Crossplane hiện đang chạy trên cụm của bạn và bạn đã sẵn sàng bắt đầu sử dụng các mặt phẳng điều khiển của nó để triển khai cơ sở hạ tầng của riêng bạn. Có vô số tùy chọn khả dụng, vì Crossplane là một mặt phẳng điều khiển chung có khả năng điều khiển một phạm vi API bên ngoài gần như vô hạn.
Để bắt đầu, phần này sẽ hướng dẫn một ví dụ hoạt động đầy đủ. Ví dụ này cho thấy cách sử dụng nhà cung cấp Linode cho Crossplane để triển khai một phiên bản Linode Compute mới.
Mặc dù tương đối đơn giản, ví dụ này cung cấp một mô hình cơ sở mạnh mẽ. Bạn có thể dễ dàng xây dựng trên các cấu hình ở đây để Crossplane hoạt động cho nhiều nhu cầu cơ sở hạ tầng khác nhau.
Cảnh báo: Cấu hình và lệnh được sử dụng trong hướng dẫn này sẽ thêm một hoặc nhiều phiên bản Linode vào tài khoản của bạn. Hãy đảm bảo theo dõi chặt chẽ tài khoản của bạn trong Linode Cloud Manager để tránh các khoản phí không mong muốn.
1.Nhà cung cấp cho phép bạn triển khai các phiên bản Akamai Cloud (trước đây là Linode) với Crossplane.
2.Tạo một bản kê khai triển khai (ví dụ provider.yml
) để cài đặt nhà cung cấp Linode ( provider-linode
) vào phiên bản Crossplane của bạn:
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-linode
spec:
package: xpkg.upbound.io/linode/provider-linode:v0.0.10
Xem nhiều nhà cung cấp có sẵn cho Crossplane trên Upbound Marketplace . Upbound là những người sáng lập Crossplane và họ duy trì kho lưu trữ nhà cung cấp này.
3.Áp dụng bản kê khai mới tạo để cài đặt provider-linode
vào cụm Kubernetes:
kubectl apply -f provider.yml
provider.pkg.crossplane.io/provider-linode created
Xác minh cài đặt bằng kubectl
lệnh liệt kê provider
các tài nguyên:
kubectl get providers
NAME INSTALLED HEALTHY PACKAGE AGE
provider-linode True True xpkg.upbound.io/linode/provider-linode:v0.0.7 15s
4.Tạo tệp kê khai Kubernetes (ví dụ deployment.yml
) để triển khai phiên bản Linode Compute mới. Đây là nơi bạn bắt đầu tận dụng Crossplane và nhà cung cấp Linode để cung cấp tài nguyên.
Trong ví dụ này, bạn cần thay thế một số giá trị bằng giá trị cụ thể theo nhu cầu và thông tin đăng nhập tài khoản Linode của bạn:
- Thay thế
${ROOT_PASSWORD}
bằng mật khẩu gốc để sử dụng cho phiên bản Linode Compute mới. - Thay thế
${LINODE_API_TOKEN}
bằng mã thông báo truy cập cá nhân API Linode của bạn, bạn có thể tạo mã thông báo này bằng cách làm theo phần có liên quan trong hướng dẫn của chúng tôi về Bắt đầu với API Linode - Thay thế
${SSH_PUBLIC_KEY}
bằng khóa SSH công khai để truy cập phiên bản Linode Compute. Tìm hiểu thêm về khóa SSH trong hướng dẫn Sử dụng xác thực khóa công khai SSH của chúng tôi .
apiVersion: v1
kind: Secret
metadata:
name: crossplane-secrets
namespace: crossplane-system
type: Opaque
stringData:
linodeRootPass: ${ROOT_PASSWORD}
linodeCredentials: |
{
"token": "${LINODE_API_TOKEN}"
}
---
apiVersion: linode.upbound.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
name: crossplane-secrets
namespace: crossplane-system
key: linodeCredentials
---
apiVersion: instance.linode.upbound.io/v1alpha1
kind: Instance
metadata:
annotations:
meta.upbound.io/example-id: instance/v1alpha1/instance
labels:
testing.upbound.io/example-name: web
name: web
spec:
forProvider:
authorizedKeys:
- ssh-rsa ${SSH_PUBLIC_KEY}
image: linode/ubuntu20.04
type: g6-standard-1
label: crossplane-deployment-example
region: us-southeast
rootPassSecretRef:
key: linodeRootPass
name: crossplane-secrets
namespace: crossplane-system
Bản kê khai này bao gồm ba phần thực hiện các chức năng sau:
- Tài
Secret
nguyên (crossplane-secrets
) lưu trữ các biến cho mật khẩu gốc của phiên bản của bạn và mã thông báo API Linode của bạn. Các tài nguyên sau đó có thể sử dụng những biến này. - Tài
ProviderConfig
nguyên cung cấp các cấu hình ban đầu để tài nguyên sắp tới sử dụng. Đối với nhà cung cấp Linode, điều đó chỉ đơn giản có nghĩa là trỏ đến giá trị bí mật bằng mã thông báo API Linode. - Tài
Instance
nguyên (web
) nêu rõ chi tiết về phiên bản Linode Compute mới sẽ được tạo. Ví dụ này tạo một phiên bản chia sẻ 2GB tại Atlanta chạy Ubuntu 20.04 LTS.Sử dụng điểm cuối API để tìm hiểu thêm về các loại phiên bản , vùng và hình ảnh khả dụng .
5.Áp dụng bản kê khai triển khai theo cách tương tự như triển khai tài nguyên chuẩn cho cụm Kubernetes:
kubectl apply -f deployment.yml
secret/crossplane-secrets created
providerconfig.linode.upbound.io/default created
instance.instance.linode.upbound.io/web created
6.Xác minh rằng phiên bản đã được triển khai bằng cách sử dụng lệnh sau kubectl
để lấy danh sách instance
tài nguyên:
kubectl get instances
Đầu tiên, bạn sẽ thấy đầu ra như thế này, cho biết quá trình cung cấp phiên bản chưa hoàn tất:
NAME READY SYNCED EXTERNAL-NAME AGE
web False True 33s
Đợi một lúc rồi thử lại lệnh, bạn sẽ thấy phiên bản trở thành READY
, cho biết phiên bản Compute của bạn đã được cung cấp thành công.
NAME READY SYNCED EXTERNAL-NAME AGE
web True True 45521497 2m46s
Tiếp tục xác minh việc triển khai thành công thông qua Linode Cloud Manager. Điều hướng đến phần Linodes và bạn sẽ thấy phiên bản Compute mới được liệt kê. Sử dụng ví dụ deployment.yml
trên, phiên bản mới sẽ được đặt tên là crossplane-deployment-example
, như được hiển thị ở đây:

Phần kết luận
Với điều đó, bạn đã thiết lập mọi thứ để bắt đầu sử dụng Crossplane như một mặt phẳng điều khiển chung. Triển khai phiên bản Linode trong ví dụ trên cho bạn thấy những điều cơ bản về quản lý cơ sở hạ tầng của Crossplane. Và khám phá với manifest triển khai đó có thể cung cấp cho bạn nhiều ý tưởng hơn về cách Crossplane quản lý cơ sở hạ tầng của mình.
Crossplane cũng là một công cụ cực kỳ linh hoạt và có các tính năng đáp ứng nhiều nhu cầu về cơ sở hạ tầng khác nhau. Một lĩnh vực có giá trị để khám phá thực sự là các tính năng kiểm soát truy cập dựa trên vai trò (RBAC) của Kubernetes . Crossplane cũng có thể sử dụng các tính năng kiểm soát truy cập mạnh mẽ này cho các mặt phẳng điều khiển của nó.
Để tìm hiểu thêm về các khái niệm đằng sau phiên bản Crossplane của bạn, hãy xem tài liệu giới thiệu của Crossplane . Tài liệu này đề cập đến một số khái niệm quan trọng nhất để tận dụng tối đa các mặt phẳng điều khiển của bạn. Và để biết thêm thông tin, hãy theo liên kết bên dưới đến tài liệu Crossplane đầy đủ.
Thông tin thêm
Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.
Nguồn: https://www.linode.com/docs/guides/getting-started-with-crossplane/