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

วิธีใช้งาน 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

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