برنامه نویسی

Crossplane یا ترکیبی از عملگرها

در این قسمت جدید از مجموعه در مورد اپراتورهای Kubernetes، ما در مورد یک اپراتور صحبت خواهیم کرد که از قبل وجود دارد: Crossplane.

Crossplane چیست؟

Crossplane یک اپراتور Kubernetes است که به شما امکان می دهد منابع Kubernetes را در ارائه دهندگان مختلف ابری مدیریت کنید. (AWS، GCP …)

این به آن معنا است از خوشه Kubernetes خود، می توانید منابعی را در یک Cloud Provider ایجاد کنید.

مثال زیر اجازه می دهد تا یک سطل S3 در AWS ایجاد کنید

apiVersion: s3.aws.upbound.io/v1beta1 
kind: Bucket 
metadata: 
    generateName: crossplane-bucket- 
    labels:
        docs.crossplane.io/example: provider-aws 
spec: 
    forProvider:
        region: us-east-2 
    providerConfigRef: 
        name: default
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

احتمالات در حال دیوانه شدن هستند درست است؟


چگونه آن را نصب کنیم؟

اگر علاقه مند به نصب Crossplane در کلاستر خود و استفاده از آن هستید، از شما دعوت می کنم به لینک های زیر مراجعه کنید، مستندات بسیار خوبی هستند:


استفاده از crossplane از اپراتور دیگر؟

از آنجایی که می‌توانیم Crossplane را روی خوشه Kubernetes خود نصب کنیم، بنابراین تمام منابع سفارشی آن در خوشه موجود است. در نتیجه اپراتور شما می تواند ایجاد/به روز رسانی این منابع را مدیریت کند.

در مقالات قبلی این مجموعه، اشاره کردیم که یک اپراتور می تواند به ما اجازه دهد تا مدیریت استقرار Grafana، Prometheus، Postgres و OpenTelemetry را تسهیل کنیم. دانستن اینکه 3 مورد اول بخشی از خدمات ارائه شده در AWS هستند، به این معنی است که در اپراتور خود می توانید به صورت پویا منابع را برای مشتریان خود در AWS ایجاد کنید!

توجه: برای همه مثال‌های زیر، من فقط در مورد AWS صحبت خواهم کرد، اما همه چیز برای سایر ارائه‌دهندگان ابری در دسترس است.

دانلود کتابخانه ها

اولین کاری که باید انجام داد این است که کتابخانه های crossplane را دانلود کنید در پروژه شما

go install github.com/crossplane-contrib/provider-aws 
go install github.com/crossplane/crossplane-runtime
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آنها به شما امکان دسترسی به همه موارد را می دهند منابع مشترک crossplane، و همچنین به همه منابع اختصاصی AWS.

طرحواره ها را مدیریت کنید

در فایل main.go، اعلان تابع وجود دارد init که تا کنون عمدتاً نادیده گرفته ایم.

func init() {  
   utilruntime.Must(clientgoscheme.AddToScheme(scheme))  
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چنین اعلام کرد (ساده سازی مبتذل)، به اپراتور امکان دسترسی به تمام منابع پایه Kubernetes را می دهد از طریق روش AddToScheme.

بنابراین، اگر کسی بخواهد به منابعی دسترسی پیدا کند که جزء عناصر اساسی نیستند، باید یک بیانیه جدید اضافه کنید.

import (
    crossplane "github.com/crossplane-contrib/provider-aws/apis"
)

func init() {  
    utilruntime.Must(clientgoscheme.AddToScheme(scheme))    
    utilruntime.Must(crossplane.AddToScheme(scheme))
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنوز هم با همان فرمت کار می کنید، باید بروید روش واردات AddToScheme از کتابخانه حاوی منابع مورد علاقه شما وفراخوانی در تابع init.

RBAC

این چیزی است که باید به خاطر بسپارید! برو توضیحاتی را که برای اجازه دادن به اپراتور خود برای استفاده از این منابع جدید نیاز دارید، اضافه کنید.

استفاده از منابع جدید

اکنون که تمام کارهای لازم را انجام داده اید تا به اپراتور خود اجازه دهید از این منابع جدید استفاده کند، می توانید در درمان های خود استفاده کنید!

مثال

import (
    "github.com/crossplane-contrib/provider-aws/apis/s3/v1beta1"
)

...
    myBucket := &v1beta1.Bucket{}
    err := r.Get(ctx, req.NamespacedName, myBucket)
...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


نتیجه

در نهایت در این مقاله خواهیم دید که امکان ترکیب عملگرها با مثال Crossplane وجود دارد. و اپراتورهای زیادی وجود دارد! داگ داده، گرافانا، کنگ یا تورنسل هرج و مرج فقط به نقل از آنها!

اگر به دنبال آن هستید، بهترین مکان برای جستجو است Operatorhub.io.

اما در نهایت، این درهم آمیختن اپراتورها، توسعه بسیاری از چیزها را بسیار ساده تر می کند، مانند میکروسرویس ها که هر یک محدوده خاصی دارند. پس تصور کنید همه چیزهایی که از نظر اتوماسیون ممکن است!

و دقیقاً در قسمت آخر این مجموعه که قرار است در مورد آن صحبت کنیم، در مورد آن صحبت خواهیم کرد Crossplane vs Terraform.

امیدوارم این کمک کند و اگر سوالی دارید (هرگز سوال احمقانه ای وجود ندارد!) یا نکاتی که برای شما واضح نیست، در نظرات پیام بگذارید یا مستقیماً در لینکدین با من تماس بگیرید (حتی برای صحبت در مورد موضوعات دیگر!).


آیا می خواهید از من حمایت کنید؟

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا