[Ansible] Cài đặt AWX Operator trên Kubernetes – Phần 9

Tác giả: 08/05/2023

Xin chào tất cả bạn đọc, hôm nay hãy để Nhân Hòa giới thiệu về Ansible AWX operator cho Kubernetes với Operator SDK và Ansible.

I. Mục đích

Operator này giúp đem lại 1 cách thức triển khai AWX trên Kubernetes-native thông qua 1 AWX Custom Resource Definition (CRD).

II. Cài đặt

1. Tạo 1 minikube cluster

Nếu bạn đang không có sẵn 1 K8s cluster thì awx-operator cũng có thể triển khai trên Minikube cluster cho mục đích thử nghiệm. Để biết cách thức triển khai K8s cluster thông qua Minikube, hãy xem tại đây.

2. Cài đặt cơ bản

Khi bạn đã có K8s cluster rồi, bạn có thể triển khai AWX Operator sử dụng Kustomize, từ phiên bản 1.14 của kubectl thì kustomize đã trở thành 1 tính năng built-in, do đó không cần cài đặt gì thêm.

Đầu tiên, tạo 1 file gọi là kustomization.yaml với nội dung như sau:

apiVersion: kustomize.config.k8s.io/v1
kind: Kustomization
resources:
  # Ta có thể tìm kiếm phiên bản mới nhất ở https://github.com/ansible/awx-operator/releases
  - github.com/ansible/awx-operator/config/default?ref=2.0.1
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.0.1
namespace: awx

Áp dụng kustomization

kubectl apply -k .

Tiếp đến, ta hãy tạo 1 tệp tên awx-demo.yaml trong cùng folder và có nội dung như sau

apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
spec:
  service_type: nodeport

Thêm file vừa tạo vào anh sách resources trong tệp kustomization.yaml

...
resources:
  - github.com/ansible/awx-operator/config/default?ref=<tag>
  # Thêm dòng dưới đây vào
  - awx-demo.yaml
...

Cuối cùng, áp dụng thay đổi để tạo 1 AWX instance mới trong cluster:

kubectl apply -k . -n awx

Sau vài phút, 1 AWX instance mới sẽ được triển khai. Ta có thể nhìn vào pod logs để biết quá trình cài đặt diễn ra đến đâu:

kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager -n awx

Ta có thể kiểm tra trạng thái của pods và services do awx operator tạo ra, nếu là running tức là quá trình khởi tạo đã hoàn tất

kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx
kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator" -n awx

Quá trình deploy instance có thể tốn nhiều thời gian, để kiểm tra tiến trình này đã hoàn thành hay chưa, hãy thực hiện lệnh

kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"

kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator" -n awx

Bây giờ, hãy lấy thông tin đăng nhập bằng cách chạy lệnh sau

kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo

Như vậy thông tin để đăng nhập AWX UI sẽ là admin và kết quả trả về của lệnh trên. Còn đường dẫn sẽ là <Cluster_IP>:<NodePort> trong đó Cluster IP là bất kỳ IP nào thuộc cluster, còn NodePort là Port của awx-demo-service có được khi chúng ta sử dụng lệnh get svc

3. Cài đặt AWX với Helm

AWX Operator cũng có thể cài đặt sử dụng Helm trên 1 K8s cluster có sẵn.

Việc cài đặt với helm rất đơn giản, hãy sử dụng các lệnh sau (yêu cầu helm đã được cài đặt trên cluster)

helm repo add awx-operator https://ansible.github.io/awx-operator/
helm repo update
helm search repo awx operator
helm install -n awx --create namespace my-awx-operator awx-operator/awx-operator

III. Tổng kết

Trong bài viết này, Nhân Hòa đã giới thiệu đến các bạn những bước đơn giản nhất để cài đặt AWX trên 1 Kubernetes cluster.

Mình là Vương Bảo Trung, đang là thực tập và học việc tại Nhân Hòa, rất mong các bạn tiếp tục theo dõi bài viết của mình tại Wiki Nhân Hòa.

 

Chúc các bạn luôn may mắn và thành công trong công việc!

Trả lời