Hướng Dẫn Cài Đặt và Sử Dụng Argo Workflows Trên Kubernetes
Argo Workflows là một công cụ mã nguồn mở mạnh mẽ được thiết kế để điều phối và quản lý nhiều job trong môi trường Kubernetes (K8s). Bài viết này sẽ hướng dẫn bạn cách cài đặt Argo Workflows trên cụm Kubernetes, đồng thời cung cấp thông tin về các template có sẵn và cách bạn có thể sử dụng chúng để tạo ra quy trình làm việc (Workflow) hiệu quả trong Kubernetes.
Argo Workflows: Giới Thiệu Các Khái Niệm Cơ Bản
1. Workflow
Workflow là tài nguyên trung tâm trong Argo Workflows, nó định nghĩa chuỗi 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 đó. Workflow có thể mô hình hóa logic phức tạp thông qua đồ thị theo chu trình có hướng (DAG) hoặc các bước tuần tự, giúp nắm bắt các phụ thuộc giữa các template.
2. Template
Template là một khái niệm quan trọng trong Argo Workflows, được sử dụng để định nghĩa các bước thực hiện trong một workflow. Có ba loại template chính:
-
Container: Định nghĩa một bước với một container. Ví dụ:
yaml- name: hello-world container: image: alpine:latest command: [sh, -c] args: ["echo hello world"]
-
Script: Chạy một script trong một container. Ví dụ:
yaml- 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: Quản lý tài nguyên trong cụm Kubernetes. Ví dụ:
yaml- name: create-configmap resource: action: create manifest: | apiVersion: v1 kind: ConfigMap metadata: name: my-config data: foo: bar hello: world
Hướng Dẫn Cài Đặt Argo Workflows
Yêu Cầu Bắt Buộc
- Một cụm Kubernetes hoạt động.
- Kiến thức cơ bản về Kubernetes.
- Công cụ dòng lệnh
kubectl
.
Bước 1: Cài Đặt Argo Workflows
-
Tạo một namespace riêng cho Argo Workflows trong Kubernetes:
bashkubectl create namespace argo
-
Cài đặt phiên bản mới nhất của Argo Workflows:
bashkubectl apply -n argo -f https://github.com/argoproj/argo-workflows/releases/download/v<VERSION>/install.yaml
(Trong hướng dẫn này, bạn nên sử dụng phiên bản v3.5.0).
-
Kiểm tra tình trạng cài đặt:
bashkubectl get all -n argo
Bước 2: Khởi Động Giao Diện Người Dùng Argo
Để sử dụng giao diện người dùng của Argo:
-
Chỉnh sửa chế độ xác thực:
bashkubectl patch deployment argo-server --namespace argo --type='json' -p='[{"op": "replace", "path": "/spec/template/spec/containers/0/args", "value": ["server", "--auth-mode=server"]}]'
-
Cấu hình RBAC để cấp quyền quản trị cho Argo:
bashkubectl create rolebinding argo-default-admin --clusterrole=admin --serviceaccount=argo:default -n argo
-
Chuyển tiếp cổng của giao diện web:
bashkubectl -n argo port-forward deployment/argo-server 2746:2746
Truy cập giao diện web tại địa chỉ
http://localhost:2746
.
Tạo Workflow Mới và Các Thao Tác Cơ Bản
-
Tạo tệp Workflow:
bashnano argo-workflow.yaml
-
Thêm nội dung vào tệp:
yamlapiVersion: 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'"]
-
Áp dụng Workflow vào cụm:
bashkubectl -n argo create -f argo-workflow.yaml
-
Liệt kê tất cả các workflow:
bashkubectl -n argo get wf
-
Xem nhật ký Pod cho Workflow:
bashkubectl -n argo logs demo-workflow
-
Xóa Workflow:
bashkubectl -n argo delete wf workflow-name
-
Tạm dừng hoặc tiếp tục Workflow:
bashkubectl -n argo suspend wf workflow-name kubectl -n argo resume wf workflow-name
-
Gửi Workflow bằng Argo CLI:
bashargo submit -n argo workflow.yaml
Bạn có thể tìm hiểu thêm thông tin về Argo Workflows trong tài liệu chính thức.
Kết Luận
Qua bài viết này, bạn đã nắm vững kiến thức cơ bản về Argo Workflows và cách thức cài đặt cũng như sử dụng chúng trong môi trường Kubernetes. Argo Workflows giúp bạn quản lý và thực thi các tác vụ một cách linh hoạt và hiệu quả, nhờ vào khả năng cấu hình và mở rộng mà công cụ này mang lại. Hãy tận dụng Argo Workflows để tối ưu hóa quy trình làm việc của bạn trong Kubernetes.
source: viblo