วิธีใช้งาน Acme (Let’s Encrypt) อย่างง่ายๆ ใน Kong

สวัสดีครับวันที่มาบันทึก วิธีการใช้งาน เจ้า acme เอาไว้กันลืมหน่อย

Acme คืออะไรกัน

Acme คือ ปลั๊กอิน ACME ช่วยให้ Kong Gateway สามารถใช้ใบรับรองจาก Let's Encrypt หรือบริการ ACMEv2 อื่นๆ และยังจัดการเรื่องการต่ออายุให้อีกด้วยนะ
ACME| Kong Docs
Documentation for Kong, the Cloud Connectivity Company for APIs and Microservices.
ตามไปดูที่ official doc

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

  • Kong API (ผมใช้งานผ่าน docker-compose file ง่ายๆ)
version: "3.9"

x-kong-config: &kong-env
  KONG_DATABASE: ${KONG_DATABASE}
  KONG_PG_DATABASE: ${KONG_PG_DATABASE}
  KONG_PG_HOST: ${KONG_PG_HOST}
  KONG_PG_USER: ${KONG_PG_USER}
  KONG_PG_PASSWORD: ${KONG_PG_PASSWORD}

networks:
  internal-kong-gw:
    external: true
    name: internal-kong-gw

services:
  kong:
    image: kong:latest
    environment:
      <<: *kong-env
      KONG_DECLARATIVE_CONFIG: /kong/declarative/kong.yml
      KONG_ADMIN_ACCESS_LOG: /dev/stdout
      KONG_ADMIN_ERROR_LOG: /dev/stderr
      KONG_PROXY_ACCESS_LOG: /dev/stdout
      KONG_PROXY_ERROR_LOG: /dev/stderr
      KONG_ADMIN_LISTEN: 0.0.0.0:8001
      KONG_PROXY_LISTEN: 0.0.0.0:8000, 0.0.0.0:8443 http2 ssl
      KONG_LUA_SSL_TRUSTED_CERTIFICATE: system
    networks:
      - internal-kong-gw
    ports:
      - 80:8000 # HTTP
      - 443:8443 # HTTPS
      # - 8001:8001
      # - 8444:8444
      # - 8002:8002 # for admin manager GUI
      # - 8445:8445
      # - 8003:8003
      # - 8004:8004
ตัวอย่าง docker-compose ไฟล์ สำหรับ run kong

วิธีใช้งาน Acme

หลังจากที่เรา setup kong api เรียบร้อยแล้ว

  • สร้าง service, route รอไว้ก่อนได้เลย
  • มาเปิดใช้งานตัว ปลั๊กอิน ACME กันก่อน
curl --request POST \
  --url http://localhost:8001/plugins \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data name=acme \
  --data config.domains=your.domain.name \
  --data config.tos_accepted=true \
  --data [email protected] \
  --data config.storage=kong
  • ต่อมาสั่ง trigger ให้สร้าง certificate
curl http://localhost:8001/acme -d host=your.domain.name
😍
acme ยังจัดการเรื่อง auto-renew ให้เราอีกด้วย

ขั้นตอนการ setup ก็เรียบร้อยแล้ว

ยังมี API อื่นๆ ที่เอาไว้จัดการอีกหลายอัน

Admin API - v3.4.x | Kong Docs
Documentation for Kong, the Cloud Connectivity Company for APIs and Microservices.

command เอาไว้ตรวจสอบ plugin ที่เปิดใช้งานไว้ เอาไว้หา plugin id ไปอัพเดท

curl --request GET \
  --url http://localhost:8001/plugins

แล้วถ้าเราจะอัพเดทข้อมูล plugin ล่ะทำไงดี

curl --request PATCH \
  --url http://localhost:8001/plugins/{plugin_id} \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data config.domains=new.your.domain.name

เย้ๆ คิดว่าทุกคนจะทำได้เหมือนกัน :)