Hướng dẫn cài đặt Argo Workflows trên Kubernetes

0 0 0

Người đăng: Kubernetes

Theo Viblo Asia

Argo Workflows là một dự án mã nguồn mở cho phép điều phối nhiều job Kubernetes. Trong bài viết này, bạn sẽ được hướng dẫn cài đặt Argo Workflows trên một cụm Kubernetes và sử dụng các template có sẵn để tạo Workflow quản lý trong cụm Kubernetes.

Argo Workflows: Các khái niệm chính

Argo Workflows là một dự án mã nguồn mở cho phép điều phối nhiều job Kubernetes. Argo Workflows được triển khai như một định nghĩa tài nguyên tùy chỉnh (CRD) của Kubernetes, có nghĩa là nó là một phần của hệ sinh thái Kubernetes và có thể chạy trên bất kỳ cụm Kubernetes nào. Argo Workflows bao gồm hai khái niệm chính: workflow và Template.

1. Workflow

Workflow là một tài nguyên trung tâm trong Argo Workflows, nó định nghĩa quy trình công việc sẽ được thực hiện và lưu trữ trạng thái của quy trình công việc.

Workflow bao gồm một đặc tả chứa entrypoint và danh sách các template.

Workflow có thể mô hình hóa logic phức tạp bằng cách sử dụng đồ thị theo chu trình có hướng (DAG) hoặc các bước để nắm bắt các dependency hoặc chuỗi giữa các template.

2. Template

Template là một khái niệm cốt lõi trong Argo Workflows, nó định nghĩa các hướng dẫn để thực thi trong một bước workflow. Template có thể là một trong các loại sau:

  • Container: Cho phép bạn có thể định nghĩa container. Dưới đây là một ví dụ:
- name: hello-world container: image: alpine:latest command: [sh, -c] args: ["echo hello world"]
  • Script: Template chạy script trong một container image. Loại này tương tự như loại container nhưng cho phép bạn viết script inline thay vì sử dụng một tệp riêng biệt. Dưới đây là một ví dụ:
- 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}})))
  • Resource: Template này cho phép thao tác trực tiếp với các tài nguyên của cụm. Nó có thể được sử dụng cho các hoạt động như truy xuất, tạo, sửa đổi hoặc xóa, bao gồm các yêu cầu GET, CREATE, APPLY, PATCH, REPLACE hoặc DELETE. Dưới đây là một ví dụ:
- name: create-configmap resource: action: create manifest: | apiVersion: v1 kind: ConfigMap metadata: name: my-config data: foo: bar hello: world
  • DAG: Template này định nghĩa một đồ thị theo chu trình có hướng của các template khác. Trong ví dụ này, DAG có ba task: A, B và C. Task A chạy trước, sau đó các task B và C chạy song song. Dưới đây là một ví dụ:
- 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}]

Hướng dẫn cài đặt Argo Workflows chi tiết

Để làm theo hướng dẫn này, hãy đảm bảo bạn có những điều sau:

  • Một cụm Kubernetes. Để tạo cụm Kubernetes mới, hãy làm theo hướng dẫn này.
  • Kiến thức cơ bản về Kubernetes là gì. Bạn có thể tìm hiểu thêm về Kubernetes từ tài liệu chính thức của họ.
  • Kubectl CLI

Bước 1 - Cài đặt Argo Workflows

  1. Sử dụng Kubectl, tạo một namespace cho Argo Workflows để phân tách các tài nguyên cụm kubernetes của bạn.
$ kubectl create namespace argo
  1. Cài đặt tệp phát hành Argo Workflows mới nhất từ trang github Argo Workflows.
$ kubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v<VERSION>/install.yaml

Phiên bản Argo Workflows được sử dụng trong hướng dẫn này là v3.5.0.

  1. Kiểm tra xem tất cả các tài nguyên đã được cài đặt chính xác chưa.
$ kubectl get all -n argo

Output:

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

Bước 2 - Khởi động Argo UI để giám sát

Argo Server có giao diện người dùng đồ họa mà bạn có thể sử dụng để quản lý và giám sát Workflows cụm Kubernetes của mình.

Trong hướng dẫn này, bạn sẽ bỏ qua quy trình xác authentication yêu cầu token để truy cập giao diện web Argo vì nó không thể được truy cập công khai. Điều này được gọi là chế độ Xác thực máy chủ, mặc dù bạn có thể sử dụng chế độ khác, Xác thực máy khách, yêu cầu bạn phải yêu cầu token để có thể truy cập giao diện web.

  1. Thay đổi chế độ xác thực thành Xác thực máy chủ.
$ kubectl patch deployment \ argo-server \ --namespace argo \ --type='json' \ -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args", "value": [ "server", "--auth-mode=server"
]}]'

Output:

deployment.apps/argo-server patched

Lưu ý rằng chế độ này không được khuyến nghị cho môi trường production, vì nó tạo ra rủi ro bảo mật đáng kể. Một tùy chọn an toàn hơn là sử dụng chế độ xác thực máy khách, yêu cầu máy khách cung cấp Kubernetes bearer token của họ.

  1. Định cấu hình Kubernetes Role-Based Access Control (RBAC) để cấp quyền quản trị viên Argo cho phép quản lý tài nguyên trong namespace argo.
$ kubectl create rolebinding argo-default-admin --clusterrole=admin --serviceaccount=argo:default -n argo
  1. Chuyển tiếp cổng giao diện web của máy chủ Argo bằng kubectl port-forward.
$ kubectl -n argo port-forward deployment/argo-server 2746:2746

Sử dụng trình duyệt như Chrome, hãy truy cập Địa chỉ IP http://localhost:2746.

Tạo Workflow mới và các thao tác cơ bản

Bạn có thể sử dụng một tệp kê khai YAML để xác định Agro Workflows và áp dụng cho cụm Kubernetes của bạn.

  1. Tạo một tệp Workflow mới.
Nano argo-workflow.yaml
  1. Thêm nội dung sau vào tệp
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'"]

Dưới đây là phần phân tích nhanh về các thành phần của tệp:

  • entrypoint chỉ định điểm vào cho workflow, được định nghĩa là main.
  • templates chứa danh sách các template, xác định các bước hoặc task trong workflow.
  • name là tên của template, được đặt là main.
  • container chỉ định một bước dựa trên container trong workflow.
  • image chỉ định Docker image sẽ sử dụng cho container, được đặt ở đây là busybox.
  • command chỉ định command sẽ được thực thi bên trong container, được đặt là ["/bin/sh"].
  • args chỉ định các đối số sẽ được chuyển đến command bên trong container, được đặt là ["-c", "echo 'The first step of the Workflow'"]. Command này sẽ chạy echo để in "The first step of the Workflow".

Áp dụng Workflow vào cụm của bạn:

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

Đây là kết quả đầu ra:

workflow.argoproj.io/hello-world-nb42c created
  1. Để liệt kê tất cả các workflow trong namespace argo, hãy làm như sau:
$ kubectl -n argo get wf

Đây là kết quả đầu ra:

NAME STATUS AGE MESSAGE
demo-workflow Succeeded 4m23s
  1. Để xem nhật ký pod cho Workflow của bạn, hãy làm như sau:
$ kubectl -n argo logs demo-workflow

Đây là kết quả đầu ra:

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>"
  1. Để xóa workflow, hãy làm như sau:
$ kubectl -n argo delete wf workflow-name
  1. Để tạm dừng hoặc tiếp tục workflow, hãy làm như sau:
$ kubectl -n argo suspend wf workflow-name
$ kubectl -n argo resume wf workflow-name
  1. Để gửi workflow bằng Argo CLI, hãy làm như sau:
$ argo submit -n argo workflow.yaml

Bạn có thể tìm hiểu thêm về Argo Workflows trên tài liệu chính thức của họ.

Kết luận

Bạn đã tìm hiểu về Argo Workflows và thiết lập thành công. Công cụ mạnh mẽ này cho phép bạn tạo logic bằng cách sử dụng DAG hoặc các bước riêng lẻ, giúp bạn thực hiện các tác vụ khác nhau thông qua các template khác nhau. Bạn cũng có thể tương tác với workflow của mình và theo dõi tiến trình của chúng bằng cách sử dụng các công cụ như Argo CLI, Argo UI và Argo Events.

Bằng cách sử dụng Argo Workflows, bạn có thể tận dụng khả năng mở rộng và tính linh hoạt của Kubernetes để đảm bảo thực thi các tác vụ một cách đáng tin cậy. Cảm ơn các bạn đã theo dõi bài viết vừa rồi.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Deploying A Containerized Web Application On Kubernetes

1. Overview. Kubernetes is an open source project (available on kubernetes.io) which can run on many different environments, from laptops to high-availability multi-node clusters; from public clouds to on-premise deployments; from virtual machines to bare metal.

0 0 47

- vừa được xem lúc

Kubernetes - Học cách sử dụng Kubernetes Namespace cơ bản

Namespace trong Kubernetes là gì. Tại sao nên sử dụng namespace.

0 0 108

- vừa được xem lúc

[Kubernetes] Kubectl và các command cơ bản

Mở đầu. Kubectl là công cụ quản trị Kubernetes thông qua giao diện dòng lệnh, cho phép bạn thực thi các câu lệnh trong Kubernetes cluster.

0 0 54

- vừa được xem lúc

Triển khai EFK Stack trên Kubernetes

EFK stack on K8S. Giới thiệu. Một hệ thống có thể chạy nhiều dịch vụ hoặc ứng dụng khác nhau, vì vậy việc. theo dõi hệ thống là vô cùng cần thiết.

0 0 65

- vừa được xem lúc

Thực hành Kubernetes (K8S) bằng cách sử dụng lệnh Command

Bài hướng dẫn hôm nay sẽ hướng dẫn sử dụng K8S bằng cách sử dụng câu lệnh thay vì UI trên web. Có 2 lựa chọn để thực hiện:. . Sử dụng Cloud Shell.

0 0 50

- vừa được xem lúc

Kubernetes best practices - Liveness và Readiness Health checks

Mở đầu. Kubernetes cung cấp cho bạn một framework để chạy các hệ phân tán một cách mạnh mẽ.

0 0 42