سایت خبرکاو

جستجوگر هوشمند اخبار و مطالب فناوری

نحوه راه‌اندازی گردش‌های کاری Argo در Kubernetes

Argo Workflows یک پروژه منبع باز است که امکان هماهنگی چندین شغل Kubernetes را فراهم می کند. Argo Workflows به‌عنوان یک تعریف منبع سفارشی Kubernetes (CRD) پیاده‌سازی شده است، به این معنی که بومی اکوسیستم Kubernetes است و می‌تواند روی هر خوشه Kubernetes اجرا شود. گردش کار مراحلی را تنظیم می کند که توسط آن مشاغل فردی اجرا می شوند. می‌توانید از Argo Workflows برای اهداف مختلفی مانند پردازش داده، یادگیری ماشین، CI/CD و اتوماسیون زیرساخت استفاده کنید. در ...

Argo Workflows یک پروژه منبع باز است که امکان هماهنگی چندین شغل Kubernetes را فراهم می کند. Argo Workflows به‌عنوان یک تعریف منبع سفارشی Kubernetes (CRD) پیاده‌سازی شده است، به این معنی که بومی اکوسیستم Kubernetes است و می‌تواند روی هر خوشه Kubernetes اجرا شود.

گردش کار مراحلی را تنظیم می کند که توسط آن مشاغل فردی اجرا می شوند. می‌توانید از Argo Workflows برای اهداف مختلفی مانند پردازش داده، یادگیری ماشین، CI/CD و اتوماسیون زیرساخت استفاده کنید.

در این مقاله، شما Argo Workflows را بر روی یک خوشه Kubernetes راه اندازی می کنید و از الگوهای موجود برای ایجاد یک گردش کار برای مدیریت در یک خوشه Kubernetes استفاده می کنید.

مفاهیم کلیدی Argo Workflows

همانطور که در بالا ذکر کردم، Argo Workflows به عنوان یک تعریف منبع سفارشی Kubernetes (CRD) توسط کنترل کننده خود پیاده سازی می شود. Argo Workflows از دو مفهوم اصلی تشکیل شده است: workflow و Template .

جریان کار

گردش کار یک منبع مرکزی در Argo Workflows است که گردش کاری را که باید اجرا شود تعریف می کند و وضعیت گردش کار را ذخیره می کند.

یک گردش کار شامل مشخصاتی است که شامل یک نقطه ورودی و فهرست ی از الگوها است.

یک گردش کار می‌تواند منطق پیچیده را با استفاده از نمودارهای غیر چرخه‌ای جهت‌دار (DAG) یا مراحلی برای ثبت وابستگی‌ها یا توالی‌های بین الگوها مدل‌سازی کند.

قالب

قالب یک مفهوم اصلی در Argo Workflows است که دستورالعمل هایی را برای اجرا در مرحله گردش کار تعریف می کند. یک قالب می تواند یکی از انواع زیر باشد:

Container : به شما امکان می دهد ظرف را تعریف کنید. به عنوان مثال:

 - name: hello-world container: image: alpine:latest command: [sh, -c] args: ["echo hello world"]

اسکریپت : الگویی که یک اسکریپت را در یک تصویر ظرف اجرا می کند. این شبیه به نوع کانتینر است، اما به شما امکان می دهد به جای استفاده از یک فایل جداگانه، اسکریپت را درون خطی بنویسید. به عنوان مثال:

 - name: factorial inputs: parameters: - name: num script: image: python:alpine 3.6 command: [python] source: | def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) print(factorial(int({{inputs.parameters.num}})))

منبع : این الگو امکان دستکاری مستقیم منابع خوشه را می دهد. می توان از آن برای عملیاتی مانند بازیابی، ایجاد، اصلاح یا حذف، از جمله درخواست های GET، CREATE، APPLY، PATCH، REPLACE یا DELETE استفاده کرد. به عنوان مثال:

 - name: create-configmap resource: action: create manifest: | apiVersion: v1 kind: ConfigMap metadata: name: my-config data: foo: bar hello: world

DAG : این الگو یک نمودار غیر چرخه ای جهت دار از سایر الگوها را تعریف می کند. در این مثال، DAG دارای سه وظیفه است: A، B، و C. وظیفه A ابتدا اجرا می شود، سپس وظایف B و C به صورت موازی اجرا می شوند. به عنوان مثال:

 - name: my-dag dag: tasks: - name: A template: echo arguments: parameters: [{name: message, value: A}] - name: B dependencies: [A] template: echo arguments: parameters: [{name: message, value: B}] - name: C dependencies: [A] template: echo arguments: parameters: [{name: message, value: C}]

حالا بیایید شروع کنیم.

پیش نیازها

برای پیروی از این راهنما، مطمئن شوید که موارد زیر را دارید:

یک خوشه Kubernetes. برای ایجاد یک خوشه Kubernetes جدید، این را دنبال کنید
راهنما

دانش اولیه درباره چیستی Kubernetes. می توانید از اسناد رسمی Kubernetes اطلاعات بیشتری کسب کنید

Kubectl CLI

مرحله 1 - Argo Workflows را نصب کنید

    با استفاده از Kubectl ، یک فضای نام برای Argo Workflows ایجاد کنید تا منابع خوشه kubernetes خود را جدا کنید.

 $ kubectl create namespace argo

    آخرین فایل انتشار Argo Workflows را از صفحه github Argo Workflows نصب کنید.

 $ kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v<VERSION>/install.yaml

نسخه Argo Workflows مورد استفاده در این راهنما v3.5.0 است.

    تحلیل کنید که آیا تمام منابع به درستی نصب شده اند یا خیر.

 $ kubectl get all -n argo

خروجی:

 NAME READY STATUS RESTARTS AGE pod/workflow-controller-7f8c9f8f5-9qj2l 1/1 Running 0 2m pod/argo-server-6f8f9c9f8f-6kx4d 1/1 Running 0 2m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/argo-server ClusterIP 10.3.240.123 <none> 2746/TCP 2m service/workflow-controller-metrics ClusterIP 10.3.240.124 <none> 9090/TCP 2m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/workflow-controller 1/1 1 1 3m05s deployment.apps/argo-server 1/1 1 1 3m07s NAME DESIRED CURRENT READY AGE replicaset.apps/workflow-controller-7f8c9f8f5 1 1 1 3m33s replicaset.apps/argo-server-6f8f9c9f8f 1 1 1 2m33s

مرحله 2 - رابط کاربری Argo برای مانیتورینگ را شروع کنید

Argo Server یک رابط کاربری گرافیکی دارد که می‌توانید از آن برای مدیریت و نظارت بر گردش‌های کاری خوشه Kubernetes خود استفاده کنید.

در این راهنما، فرآیند احراز هویت درخواست توکن برای دسترسی به رابط وب Argo را دور می‌زنید زیرا به صورت عمومی قابل دسترسی نیست. این حالت احراز هویت سرور نامیده می‌شود، اگرچه می‌توانید از حالت دیگر، تأیید اعتبار مشتری استفاده کنید، که برای دسترسی به رابط وب نیاز به درخواست یک نشانه دارید.

    حالت احراز هویت را به Server Authentication تغییر دهید.

 $ kubectl patch deployment \ argo-server \ --namespace argo \ --type='json' \ -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args", "value": [ "server", "--auth-mode=server" ]}]'

خروجی:

 deployment.apps/argo-server patched

توجه داشته باشید که این حالت برای محیط های تولیدی توصیه نمی شود، زیرا خطرات امنیتی قابل توجهی ایجاد می کند. یک گزینه امن تر، استفاده از حالت احراز هویت مشتری است که از مشتریان می خواهد توکن حامل Kubernetes خود را ارائه دهند.

    کنترل دسترسی مبتنی بر نقش Kubernetes (RBAC) را برای اعطای مجوزهای سطح مدیریت Argo برای مدیریت منابع در فضای نام argo پیکربندی کنید.

 $ kubectl create rolebinding argo-default-admin --clusterrole=admin --serviceaccount=argo:default -n argo

    پورت رابط وب سرور Argo را با kubectl port-forward فوروارد کنید.

 $ kubectl -n argo port-forward deployment/argo-server 2746:2746

با استفاده از مرورگری مانند Chrome، به آدرس IP http://localhost:2746 مراجعه کنید.

اسکرین شات-20240213-003321

یک گردش کار جدید ایجاد کنید

می‌توانید از مانیفست YAML برای تعریف گردش‌های کاری Agro و اعمال آن در خوشه Kubernetes استفاده کنید.

    یک فایل Workflow جدید ایجاد کنید.

 Nano argo-workflow.yaml

    موارد زیر را به فایل اضافه کنید:

 apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: name: demo-workflow spec: entrypoint: main templates: - name: main container: image: busybox command: ["/bin/sh"] args: ["-c", "echo 'The first step of the Workflow'"]

در اینجا یک تفکیک سریع از اجزای فایل آورده شده است:

entrypoint نقطه ورودی برای گردش کار را مشخص می کند که به عنوان main تعریف می شود.

templates حاوی فهرست ی از الگوها هستند که مراحل یا وظایف را در گردش کار تعریف می کنند.

name نام قالب است که به عنوان main تنظیم شده است.

container یک مرحله مبتنی بر کانتینر را در گردش کار مشخص می کند.

image تصویر Docker را برای استفاده برای کانتینر مشخص می کند که در اینجا به عنوان busybox تنظیم شده است.

command دستوری را که باید در داخل کانتینر اجرا شود مشخص می‌کند که به صورت ["/bin/sh"] تنظیم شده است.

args آرگومان هایی را مشخص می کند که باید به دستور داخل کانتینر ارسال شوند، به صورت ["-c", "echo 'The first step of the Workflow'"] تنظیم شده است. این دستور echo برای چاپ "مرحله اول گردش کار" اجرا می کند.

    گردش کار را در خوشه خود اعمال کنید:

 $ kubectl -n argo create -f argo-workflow.yaml

این خروجی است:

 workflow.argoproj.io/hello-world-nb42c created

نحوه مدیریت گردش کار Argo

    برای فهرست کردن تمام گردش‌های کاری در فضای نام argo ، موارد زیر را انجام دهید:

 $ kubectl -n argo get wf

این خروجی است:

 NAME STATUS AGE MESSAGE demo-workflow Succeeded 4m23s

    برای مشاهده گزارش‌های غلاف مربوط به گردش کار، موارد زیر را انجام دهید:

 $ kubectl -n argo logs demo-workflow

این خروجی است:

 This template is the first step of the Workflow time="2024-02-13T19:56:54.629Z" level=info msg="sub-process exited" argo=true error="<nil>"

    برای حذف یک گردش کار، این کار را انجام دهید:

 $ kubectl -n argo delete wf workflow-name

    برای تعلیق یا از سرگیری یک گردش کار، این کار را انجام دهید:

 $ kubectl -n argo suspend wf workflow-name $ kubectl -n argo resume wf workflow-name

    برای ارسال یک گردش کار با استفاده از Argo CLI، این کار را انجام دهید:

 $ argo submit -n argo workflow.yaml

در اسناد رسمی Argo Workflows می توانید اطلاعات بیشتری کسب کنید.

نتیجه

شما اکنون Argo Workflows را کاوش کرده و با موفقیت آن را راه اندازی کرده اید. این ابزار قدرتمند شما را قادر می‌سازد تا با استفاده از DAG یا گام‌های جداگانه، منطق ایجاد کنید و به شما در اجرای وظایف مختلف از طریق قالب‌های مختلف کمک می‌کند. همچنین می توانید با استفاده از ابزارهایی مانند Argo CLI، Argo UI و Argo Events با گردش کار خود تعامل داشته باشید و پیشرفت آنها را پیگیری کنید.

با استفاده از Argo Workflows، می‌توانید از مقیاس‌پذیری و انعطاف‌پذیری Kubernetes برای اطمینان از اجرای مطمئن وظایف بهره ببرید.

خبرکاو