Skip to content

TLS และโดเมน

gateway จะจัดการสิ้นสุดการเชื่อมต่อ TLS (terminate TLS) ภายในคลัสเตอร์ของคุณ โดยใช้ใบรับรอง wildcard certificate เพียงใบเดียวครอบคลุมทุกโดเมนย่อย ซึ่งคุณสามารถเลือกวิธีการออกใบรับรองดังกล่าวได้ ไม่ว่าจะเป็นแบบออกใบรับรองอัตโนมัติจาก Let's Encrypt, การระบุใบรับรองของคุณเอง หรือการใช้งานใบรับรองที่ลงนามด้วยตนเอง (self-signed) สำหรับการติดตั้งในระบบปิด (air-gapped)

เอกสารนี้เหมาะสำหรับใคร

วิศวกรแพลตฟอร์ม (platform engineer) เนื่องจากระบบ TLS และ DNS จะถูกตั้งค่าเฉพาะในช่วงเวลาการติดตั้งระบบครั้งแรกและมักไม่มีการแก้ไขหลังจากนั้น

โดเมนย่อย

บริการทั้งหมดจะทำงานอยู่ภายใต้ global.baseDomain ของคุณ ดังนี้

โดเมนย่อยบริการค่ากำหนด
api.Endpoint ของ gateway ที่เข้ากันได้กับ OpenAIglobal.subdomains.api
console.หน้าจอ web consoleglobal.subdomains.console
grafana.แดชบอร์ดระบบตรวจสอบสถานะการทำงานglobal.subdomains.grafana
auth.Keycloak สำหรับระบบยืนยันตัวตนglobal.subdomains.auth
mcp.ระบบ MCP gateway ในกรณีเปิดใช้งานglobal.subdomains.mcp

ตัวคั่นระหว่างชื่อและโดเมนหลักจะกำหนดในคีย์ global.subdomainSeparator ดังนี้

  • "." (ค่าเริ่มต้น) → api.ai-gateway.example.com ซึ่งจำเป็นต้องใช้งานใบรับรองที่ครอบคลุม *.ai-gateway.example.com
  • "-"api-ai-gateway.example.com ซึ่งจะอยู่ภายใต้ wildcard หลักอันเดียว เช่น *.example.com สะดวกอย่างยิ่งในกรณีที่คุณมีใบรับรองแบบดังกล่าวอยู่แล้ว

โหมดการทำงานของ TLS

กำหนดค่าในคีย์ tls.mode เป็นค่าใดค่าหนึ่งดังต่อไปนี้

letsencrypt (ค่าเริ่มต้น)

cert-manager จะร้องขอใบรับรอง wildcard certificate จาก Let's Encrypt โดยใช้วิธีทดสอบ DNS-01 ทำให้ไม่จำเป็นต้องเปิดสิทธิ์การเข้าถึง HTTP ขาเข้าในระหว่างการออกใบรับรอง

yaml
tls:
  mode: letsencrypt
  letsencrypt:
    issuer: letsencrypt-prod        # หรือ letsencrypt-staging ในระหว่างขั้นตอนการทดสอบ
    email: platform@example.com
    dns01:
      provider: cloudflare
      dnsZone: example.com          # โซนโดเมนที่โทเค็น DNS ของคุณมีสิทธิ์จัดการ

แนะนำให้ทดสอบกับสภาพแวดล้อม staging ก่อน

Let's Encrypt จะมีการจำกัดปริมาณการออกใบรับรองในระบบใช้งานจริง โปรดระบุค่า issuer: letsencrypt-staging ไว้ก่อนจนกว่าการตั้งค่า DNS และระบบตรวจสอบความถูกต้องจะทำงานผ่านได้สำเร็จเรียบร้อยดีทั้งหมด จากนั้นจึงสลับมาใช้ค่า letsencrypt-prod สำหรับใช้งานจริง

โหมด provided

คุณเป็นผู้จัดเตรียมใบรับรอง wildcard certificate ของตนเองในรูปแบบ Kubernetes Secret และกำหนดค่าให้แพลตฟอร์มอ้างอิงมายัง Secret ดังกล่าว โปรดเลือกใช้โหมดนี้เมื่อองค์กรของคุณออกใบรับรองผ่าน CA ภายในองค์กรหรือใช้บริการจากผู้ให้บริการเชิงพาณิชย์

yaml
tls:
  mode: provided
  wildcardSecretName: ai-gateway-wildcard-tls   # Secret ที่คุณสร้างขึ้นซึ่งเก็บข้อมูล tls.crt และ tls.key

โหมด selfsigned

cert-manager จะทำหน้าที่ออกใบรับรอง wildcard แบบลงนามด้วยตนเอง (self-signed) โดยมีวัตถุประสงค์หลักสำหรับใช้ในระบบปิด (air-gapped) หรือสภาพแวดล้อมระบบเครือข่ายภายในองค์กรซึ่งไม่สามารถเข้าถึงหน่วยงาน CA สาธารณะได้ และฝั่งไคลเอนต์ปลายทางจะยอมรับความน่าเชื่อถือผ่านระบบ root CA ภายในของคุณเอง

yaml
tls:
  mode: selfsigned

ช่องทางการเข้าถึงจากภายนอก

ใบรับรองจะทำหน้าที่ครอบคลุมพอร์ตเชื่อมต่อ (listener) ภายในคลัสเตอร์โดยไม่ขึ้นอยู่กับช่องทางที่ข้อมูลจะส่งมาถึง โดยมีรูปแบบที่นิยมใช้ 2 รูปแบบดังนี้

  • Ingress หรือ Load Balancer ของคุณเอง: ดำเนินการชี้ระเบียน DNS wildcard มายังส่วนประกอบนี้
  • Cloudflare Tunnel (ingress.tunnel.enabled: true): สำหรับสภาพแวดล้อมที่ไม่มีไอพีสาธารณะขาเข้า โดยระบบอุโมงค์ข้อมูล (tunnel) จะทำหน้าที่ส่งต่อทราฟฟิกมายัง listener ภายในคลัสเตอร์ ซึ่งใบรับรองภายในคลัสเตอร์ของคุณจะยังคงทำหน้าที่ดูแลความปลอดภัยของการเชื่อมต่อตั้งแต่ต้นจนจบกระบวนการเช่นเดิม

ระบบ DNS

สร้าง ระเบียน wildcard (wildcard record) เช่น *.your-domain ชี้มายังที่อยู่ภายนอกของ gateway หรือในกรณีใช้งาน Cloudflare Tunnel จะปล่อยให้ระบบ tunnel เป็นตัวจัดการชื่อโฮสต์สาธารณะแทน สำหรับการออกใบรับรองด้วยวิธี DNS-01 โทเค็นผู้ให้บริการ DNS สำหรับออกใบรับรองจะต้องมีสิทธิ์ในการบริหารจัดการ dnsZone ที่คุณตั้งค่าไว้ด้วย

ขั้นตอนต่อไป

Enterprise AI governance, on infrastructure you own.