วิธีการติดตั้ง และ ใช้งาน letsencrypt บน Kubernetes
สิ่งที่ต้องเตรียม
- Kubernetes cluster
- kubectl
- 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