All Articles
เริ่มต้นใช้งาน ArgoCD

2023-10-24

เริ่มต้นใช้งาน ArgoCD

Read on Medium

เริ่มต้นใช้งาน ArgoCD

ArgoCD เป็นเครื่องมือ Continuous Delivery (CD) แบบ declarative สำหรับ Kubernetes ซึ่งหมายความว่าการกำหนดค่าของแอปพลิเคชันจะถูกเก็บไว้ใน Git repository และ ArgoCD จะคอยตรวจสอบการเปลี่ยนแปลงและทำการ deploy ไปยัง Kubernetes cluster โดยอัตโนมัติ หรือที่เราเรียกกันว่าการทำ GitOps นั่นเอง

ในบทความนี้ เราจะมาเรียนรู้วิธีการติดตั้ง ArgoCD ลงบน Kubernetes cluster ของเรา

Prerequisites

ก่อนอื่น เราจะต้องมีสิ่งต่อไปนี้:

  • ติดตั้ง kubectl cli
  • มีไฟล์ kubeconfig สำหรับ cluster ที่เราจะติดตั้ง ArgoCD

มาเริ่มติดตั้ง ArgoCD กันนน

เราจะใช้คำสั่ง kubectl ในการติดตั้งลงไปใน cluster ของเรา
อย่าลืมตรวจสอบนะครับ ว่าเราอยู่ cluster ที่ถูกต้องไหม ถ้าไม่ชัวร์ลองเช็คดูก่อนก็ได้ครับ ใช้คำสั่ง

kubectl config current-context ถ้าไม่ใช่ก็ลองใช้คำสั่ง

kubectl config get-contexts เพื่อดูว่า cluster ของเรานั้นชื่ออะไร แล้วจึงเปลี่ยนไปใช้ตัวนั้นด้วยคำสั่ง

kubectl config use-context <ชื่อ cluster> เมื่ออยู่ที่ cluster ที่ต้องการแล้ว เราจะใช้คำสั่งนี้ในการติดตั้ง

kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml โดยคำสั่งนี้จะเป็นคำสั่งจากเว็บ official ของ argocd เลยครับ เข้าไปดูกันได้ครับ (https://argo-cd.readthedocs.io/en/stable/getting_started)
เมื่อรันคำสั่งแล้วใน cluster ของเราจะมีอีกหนึ่ง namespace เพิ่มขึ้นมาชื่อว่า argocd โดยในนั้นจะมี ArgoCD services และ application อยู่บนนั้นเรียบร้อย

ตั้งค่า TLS

อันนี้เป็นพาร์ทเสริมนะครับ ผมจะให้ ArgoCD server ทำงานโดยไม่ใช้ TLS เพราะว่าผมมี Domain ที่จะไว้ใช้กับตัว argocd อยู่แล้ว ไม่งั้นจะกลายเป็นว่าตอนที่ผมจะแมพ ingress กับ DNS เราจะต้องกำหนดค่าของ ingress ให้ไปใช้พวก cert ต่าง ๆ ด้วย ซึ่งมันก็จะยุ่งยากไปนิดนึง ฮ่าๆๆๆ แต่ถ้าหากใครที่ customize ตัว server argocd เยอะๆ แล้วมีข้อมูล secret บางอย่างอยู่ด้วย ผมแนะนำให้เปิดใช้ TLS ด้วยนะครับ เพื่อความปลอดภัย

สร้างไฟล์ argo-config.yaml ข้างในจะเป็นประมานนี้

apiVersion: v1
kind: ConfigMap
metadata:

namespace: argocd
labels:
app.kubernetes.io/name: argocd-cmd-params-cm
app.kubernetes.io/part-of: argocd
name: argocd-cmd-params-cm
data:
server.insecure: "true"

server.insecure: “true” หมายถึงการกำหนดค่าให้ ArgoCD server ทำงานโดยไม่ใช้ TLS ซึ่งหมายความว่าการสื่อสารระหว่าง ArgoCD server และ client จะไม่ได้รับการเข้ารหัส

เสร็จแล้วก็ใช้คำสั่ง apply ได้เลย

kubectl apply -f argo-config.yml

ลองรัน ArgoCD และตั้งค่า Ingress

เมื่อเราติดตั้งเสร็จแล้ว เราสามารถลองเข้าผ่าน browser ของเราได้ โดยที่เราต้องทำการ port forwarding ออกมาก่อนนะครับ ใช้คำสั่งนี้

kubectl port-forward svc/argocd-server -n argocd 8080:443 ตัว argocd api server ก็จะรันอยู่ที่ https://localhost:8080 เรียบร้อย

แต่ในที่นี้ผมมี DNS ไว้สำหรับแมพตัว argued api server อยู่ เดี๋ยวเรามาลองทำ ingress กันครับ ไฟล์ argocd-ingress.yml ของเราจะเป็นประมานนี้

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd

namespace: argocd
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/proxy-body-size: 100M
ingress.kubernetes.io/app-root: "/"
spec:
rules:
  • host: argo.example.com
    http:
    paths:
  • path: /
    pathType: ImplementationSpecific
    backend:
    service:
    name: argocd-server
    port:
    number: 80 อ้อ ลืมบอกไป ผมใช้ nginx เป็น web server นะครับสำหรับ cluster นี้

เพียงเท่านี้เราก็จะแมพ DNS กับ argocd api server ของเราเรียบร้อยครับ

มาดู Username and Password กันครับ

ต่อไปเมื่อเราเข้าหน้า ui ของ ArgoCD ได้แล้ว เราก็ต้องมีรหัสผ่านเนาะ โดยตัว ArgoCD จะมีการ generate username and password ให้ครับ โดย username จะเหมือนกันก็คือ adminเดี๋ยวผมจะมาสอนวิธีดู password กันครับ

โดยคำสั่งที่ผมจะใช้คือคำสั่งที่เข้าไป get secret ออกมาจากใน services ของ argocd บน cluster ของเรากันครับ ดังนี้

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d เราจะได้ string มาชุดนึง นั่นแหละครับคือ password ของเรา เราก็เอาข้อมูลชุดนี้ไปใช้ login หน้าเว็บได้เลย

Example :

Image 3

© 2026 Nanpipat Klinpratoom. All Rights Reserved.