วิธีการติดตั้ง และ ใช้งาน letsencrypt บน Kubernetes

สิ่งที่ต้องเตรียม

  1. Kubernetes cluster
  2. kubectl
  3. helm

บทความนี้ เราใช้ helm ติดตั้ง cert-manager โดยพิมพ์คำสั่ง

kubectl apply -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml

หลังจากติดตั้งเรียบร้อย ก่อนอื่นเรามาลองเช็ค pod กันก่อน โดยพิมพ์คำสั่ง

kubectl get pod -n=cert-manager

*จากที่เราสั่ง apply ไปจะถูกสร้างใน namespace cert-manager

จะได้หน้าตาประมาณนี้ขั้นตอนต่อมาเราจะมาสร้าง Issuer  

Issuer แบ่งเป็น 2 แบบ

  • ClusterIssuer ใช้งานได้ในทุกๆ namespace
  • Issuer ใช้งานได้ภายใน namespace ที่สร้าง
😊
Issuer is a namespaced resource allowing you to use different CAs in each namespace, a ClusterIssuer is used to issue certificates in any namespace 

เราจะมาสร้าง แบบ  Issuer ใช้งานได้ภายใน namespace ที่สร้าง สร้างไฟล์ issuer.yaml

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: {email_address}
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
      - http01:
          ingress:
            class: nginx

หลังจากสร้างไฟล์เรียบร้อย เราจะมา apply โดยพิมพ์คำสั่ง

kubectl apply -f issuer.yaml

ลองเช็ค Issuer โดยพิมพ์คำสั่ง

kubectl get issuer

เพียงเท่านี้ก็พร้อมใช้งานแล้ว ต่อมาไปดูวิธีการนำไปใช้งานกันเตรียม Ingress ของเราที่ต้องการตัวอย่าง

ingress:
  enabled: true
  annotations:
    cert-manager.io/issuer: letsencrypt-prod
    kubernetes.io/ingress.class: nginx
  hosts:
    - host: {domain}
      paths:
        - path: /
          pathType: ImplementationSpecific
  tls: # []
   - secretName: {name}
     hosts:
       - {domain}

สั่ง apply project ของเราอีกทีเพียงเท่านี้ก็เรียบร้อยแล้ว

วิธีถอนการติดตั้ง

ถ้าต้องการลบ cert-manager

kubectl delete -f https://github.com/jetstack/cert-manager/releases/latest/download/cert-manager.yaml

ถ้าต้องการลบ Issuer โดยพิมพ์คำสั่ง

kubectl delete issuer letsencrypt-prod