ดำทำไรบันทึกวิธีคิด · ชีวิต · เทคโนโลยี
← กลับหน้าแรก
Tech

ติดตั้ง NGIX Ingress Controller v3.3.2 ด้วย Manifests

ติดตั้ง NGIX Ingress Controller v3.3.2 ด้วย Manifests

เตรียมของการติดตั้ง

สิ่งที่เรากำลังจะทำตามเอกสารนี้ ก็คือการติดตั้ง NGINX Ingress Controller ที่เป็น Ingress Controller จาก F5 (เจ้าของ NGINX) และ คนละตัวกับ Ingress NGINX Controller ที่ถูกพัฒนาโดย Kubernetes เอง และสิ่งที่ต้องเตรียมให้เรียบร้อย ก่อนที่จะลงมือติดตั้ง มีประมาณนี้ครับ

  • Kubernetes Cluster ผมติดตั้ง v1.28.2 เพื่อใช้ในการทดสอบ
  • kubeconfig ที่มีสิทธิ์ในการสร้าง component ใน K8s Cluster
  • kubectl ผมใช้ v1.28.2
  • node ใน cluster ชื่อว่า app0.d8k.io
  • ทดสอบบนระบบปฎิบัติการ macOS 14.1.2 (23B92)

ติดตั้ง NGINX Ingress Controller v3.3.2

  1. เตรียม d/l NGINX Ingress Controller v3.3.2 จาก github

    bash
    > git clone https://github.com/nginxinc/kubernetes-ingress.git --branch v3.3.2
    Cloning into 'kubernetes-ingress'...
    remote: Enumerating objects: 55908, done.
    remote: Counting objects: 100% (1368/1368), done.
    remote: Compressing objects: 100% (848/848), done.
    remote: Total 55908 (delta 850), reused 883 (delta 472), pack-reused 54540
    Receiving objects: 100% (55908/55908), 66.54 MiB | 5.86 MiB/s, done.
    Resolving deltas: 100% (34807/34807), done.
    Note: switching to 'd239c207534aaa4fc524fb276f8d44330dbe8571'.
    [... truncated output ...]
    
    > cd kubernetes-ingress/deployments
  2. สร้าง Namespace, ServiceAccount, ClusterRole และ ClusterRoleBinding

    bash
    > kubectl apply -f common/ns-and-sa.yaml
    namespace/nginx-ingress created
    serviceaccount/nginx-ingress created
    
    > kubectl apply -f rbac/rbac.yaml
    clusterrole.rbac.authorization.k8s.io/nginx-ingress created
    clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress created
  3. สร้าง Secret สำหรับเป็น key pair เป็นใช้เป็นค่า default สำหรับ HTTPs

    bash
     > kubectl apply -f ../examples/shared-examples/default-server-secret/default-server-secret.yaml
    secret/default-server-secret created
  4. สร้าง ConfigMap สำหรับเป็น Customize configuration ของ NGINX

    bash
     > kubectl apply -f common/nginx-config.yaml
    configmap/nginx-config created
  5. กำหนดชื่อ IngressClass สำหรับ NGINX Ingress Controller

    bash
    > kubectl apply -f common/ingress-class.yaml
    ingressclass.networking.k8s.io/nginx created
  6. ติดตั้ง Custom Resource Definition

    bash
     > kubectl apply -f ./common/crds/k8s.nginx.org_virtualservers.yaml
    customresourcedefinition.apiextensions.k8s.io/virtualservers.k8s.nginx.org created
    
    > kubectl apply -f ./common/crds/k8s.nginx.org_virtualserverroutes.yaml
    customresourcedefinition.apiextensions.k8s.io/virtualserverroutes.k8s.nginx.org created
    
    > kubectl apply -f ./common/crds/k8s.nginx.org_transportservers.yaml
    customresourcedefinition.apiextensions.k8s.io/transportservers.k8s.nginx.org created
    
    > kubectl apply -f ./common/crds/k8s.nginx.org_policies.yaml
    customresourcedefinition.apiextensions.k8s.io/policies.k8s.nginx.org created
  7. แก้ไข Deployment และ สร้าง Deployment ของ NGINX Ingress Controller

    bash
    > sed -i.bak 's/\#- -default-server/ - -default-server/g' deployment/nginx-ingress.yaml
    
    > kubectl apply -f deployment/nginx-ingress.yaml
    deployment.apps/nginx-ingress created
  8. กำหนดค่า nodePort และสร้าง Service ชนิด nodePort

    bash
    > nl=$'\n'
    
    > sed -i.bak "/targetPort: 80/a\\${nl}    nodePort: 30080${nl}" service/nodeport.yaml
    
    > sed -i.bak "/targetPort: 443/a\\${nl}    nodePort: 30443${nl}" service/nodeport.yaml
    
    > kubectl create -f service/nodeport.yaml
    service/nginx-ingress created
    
    > kubectl get service -n nginx-ingress
    NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
    nginx-ingress   NodePort   10.106.82.156   none        80:30080/TCP,443:30443/TCP   2m
  9. ทดสอบความพร้อมของ NGINX Ingress Controller

ผลลัพธ์ที่ได้จะเห็นได้ว่า NGINX Ingress Controller ทำงานเรียบร้อยแล้ว แต่ที่แสดงผลออกมาโดยการ return 404 เนื่องจากยังไม่มีการกำหนด Ingress

Ref: