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

สิ่งที่ต้องเตรียม
- 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
วิธีใช้งาน 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
เย้ๆ คิดว่าทุกคนจะทำได้เหมือนกัน :)