Update Route from DC
This commit is contained in:
parent
87cf07dd93
commit
e209d932fe
1 changed files with 532 additions and 263 deletions
|
|
@ -521,72 +521,128 @@ curl http://127.0.0.1:9180/apisix/admin/ssls/1 \
|
||||||
curl https://bma-hrms-id.bangkok.go.th -vvv
|
curl https://bma-hrms-id.bangkok.go.th -vvv
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3rd Party Service (bmahrms-service)
|
### 3rd Party(bmahrms-service)
|
||||||
|
|
||||||
โปรแกรมกลุ่มนี้ที่พัฒนาโดย 3rd Party หรือ Frappet ไม่ได้มีฟังก์ชันงานเจาะจงสำหรับ HRMS ถูกใช้โดยโปรแกรมของ HRMS(เช่นฐานข้อมูล,เว็บเซิร์ฟเวอร์ ฯลฯ) จะแยกมาใส่โฟลเดอร์ bmahrms-service
|
โปรแกรมกลุ่มนี้ที่พัฒนาโดย 3rd Party หรือ Frappet ไม่ได้มีฟังก์ชันงานเจาะจงสำหรับ HRMS ถูกใช้โดยโปรแกรมของ HRMS(เช่นฐานข้อมูล,เว็บเซิร์ฟเวอร์ ฯลฯ) การตั้งค่าจะแยกมาใส่โฟลเดอร์ bmahrms-service
|
||||||
การติดตั้งให้นำ compose.yaml และ คอนฟิกมาใส่โฟลเดอร์ bmahrms-service ให้เรียบร้อยก่อนใช้งาน สร้างโฟลเดอร์แต่ละ servie ทำดังนี้
|
การติดตั้งให้นำ compose.yaml และ คอนฟิกมาใส่โฟลเดอร์นี้ให้เรียบร้อยก่อนใช้งาน โปรแกรมมีรายการดังนี้ดังนี้
|
||||||
|
|
||||||
- **Keycloak (bmahrms-postgres bmahrms-id)** เซิร์ฟเวอร์สำหรับจัดการยูสเซอร์และการ Authentication ในระบบ
|
#### รายการโปรแกรม 3rd Party
|
||||||
- **MySQL (bmahrms-mysql)** เป็นฐานข้อมูลของระบบ
|
|
||||||
- **MiniO (bmahrms-s3)** เป็น Object Storage แบบเดียวกับ AWS s3 ใช้สำหรับเก็บไฟล์ มีประสิทธิ์ภาพสูงสามารถรับโหลดหนัก มีความปลอดภัยกว่าเก็บด้วยระบบไฟล์ทั่วไป สามารถขยายเพิ่มได้ในอนาคต ถูกใช้ในหลายระบบที่ต้องการเก็บไฟล์
|
|
||||||
- **Windmill** รันเวิร์กโฟลว์การทำงานอัตโนมัติจากสคริปต์ หลักๆใช้เพื่อรันตัวสำรองข้อมูล
|
|
||||||
- **Portainer (bmahrms-portainer)** ระบบจัดการ container มี UI ใช้งานง่าย สามารถใช้แทนคำสั่ง docker ได้
|
|
||||||
- **RabbitMQ (bmahrms-mq)** ระบบจัดคิวในการสื่อสารใน Microservice มีความน่าเชื่อถือสูง สามารถรับโหลดหนักๆในช่วงเวลาสั้นๆได้ โดยไม่ต้องเพิ่มทรัพยากรโดยไม่จำเป็น เช่นระบบการลงเวลา
|
- **RabbitMQ (bmahrms-mq)** ระบบจัดคิวในการสื่อสารใน Microservice มีความน่าเชื่อถือสูง สามารถรับโหลดหนักๆในช่วงเวลาสั้นๆได้ โดยไม่ต้องเพิ่มทรัพยากรโดยไม่จำเป็น เช่นระบบการลงเวลา
|
||||||
- **Frappet Report Server (bmahrms-report-server)** ใช้สำหรับสร้างรายงานจากเอกสารต้นแบบ ออกแบบเองได้ในรูปของ ไฟล์ docx และ xlsx เอกสารที่สร้างสามารถส่งออกเป็น docx, xlsx, pdf ได้
|
- **Keycloak (bmahrms-id)**
|
||||||
- **Frappet EDM** ใช้สำหรับจัดการเอกสารที่ปลอดภัยรองรับโหลดจำนวนมากได้ จะมีระบบย่อยเบื้องหลังหลายตัว (bmahrms-edm,bmahrms-elasticsearch,bmahrms-kibana,bmahrms-mq)
|
ใช้สำหรับการ login ในระบบ (Identity Server) เพื่อความปลอดภัยการสื่อสารเฉพาะภายใน จะเป็น https จะสร้าง self-signed certificate ขึ้นมาตัวอย่างนี้มีอายุ 10 ปี
|
||||||
|
|
||||||
docker/bmahrms-service/service.env
|
```sh
|
||||||
การตั้งค่าและรหัสผ่านของคอนเทนเนอร์ผ่านตัวแปรแวดล้อมทำได้สอบแบบ
|
cd bmahrms-service/keycloak_config
|
||||||
- ทำแต่ละ services.service_name.environments ในไฟล์คอมโพส
|
openssl genrsa -out keycloak.key 2048
|
||||||
- แยกออกมาเป็นไฟล์เพื่อใช้ร่วมกันหลาย Service ก็ได้ ในตัวอย่างนี้จะใช้ ไฟล์ service.env
|
openssl req -new -x509 -sha256 -key keycloak.key -out keycloak.crt -days 3650
|
||||||
|
cp keycloak.key keycloak.pem
|
||||||
|
cat keycloak.crt >> keycloak.pem
|
||||||
|
cd ..
|
||||||
|
```
|
||||||
|
- **Portainer (bmahrms-portainer)**
|
||||||
|
ระบบจัดการ container มี UI ใช้งานง่าย สามารถสั่ง/เปิด/ปิด/แก้ไข การทำงานของคอนเทนเนอร์ได้ แทนการใช้คำสั่ง docker เฉพาะผู้ดูแลระดับสูงถึงจะเข้าใช้งานส่วนนี้
|
||||||
|
- **MySQL (bmahrms-postgres)**
|
||||||
|
เป็นฐานข้อมูลของระบบ ในโฟลเดอร์ init_mysql/\*.sql เป็นที่เก็บ SQL Script สำหรับสร้างฐานข้อมูลตั้งต้น
|
||||||
|
จะถูกเรียกใช้ครั้งแรกตอนเริ่มฐานข้อมูลเป็นข้อมูลตั้งต้นของระบบ
|
||||||
|
เนื่องจากไฟล์มีขนาดใหญ่หลายบรรทัดจะไม่ใส่ในเอกสารนี้
|
||||||
|
- **Frappet Report Server (bmahrms-report-server)**
|
||||||
|
เป็น Microservice ใช้สำหรับการออกรายงาน ไม่จำเป็นต้องมี domain ของตัวเอง ให้เป็น path ในโดเมนที่มีอยู่ได้ ให้นำไฟล์ต้นแบบซึ่งสร้างจาก MS Word และ Excel มาไว้ที่โฟลเดอร์นี้ report-server-template/docx/files.docx, report-server-template/xlsx/files.xlsx
|
||||||
|
- **MiniO (bmahrms-s3)**
|
||||||
|
เป็น Object Storage แบบเดียวกับ AWS s3 มีประสิทธิ์ภาพสูงสามารถรับโหลดได้หนักและ มีความปลอดภัยกว่าเก็บด้วยระบบไฟล์ทั่วไป สามารถขยายเพิ่มได้ในอนาคต ถูกใช้ในหลายระบบที่ต้องการเก็บไฟล์ Route จะมีส่วน API กับ console การทำ route จะให้ console อยู่ใต้ subfoler https://domain/console
|
||||||
|
ในการติดตั้งบน production อาจจะไม่ได้อยู่ใน node เดียวกับ hrms และ apisix ดังนั้นควรอ้างเป็นชื่อโดเมนเต็มแทน
|
||||||
|
- **Windmill** รันเวิร์กโฟลว์การทำงานอัตโนมัติจากสคริปต์ หลักๆใช้เพื่อรันตัวสำรองข้อมูล
|
||||||
|
- **Frappet EDM (Enterprise Document Management)**
|
||||||
|
เป็นระบบจัดการเอกสารภายใน ประกอบไปด้วยโปรแกรมหลายตัว
|
||||||
|
- EDM ตัวโปรแกรมหลัก
|
||||||
|
- Elasticsearch ฐานข้อมูลดัชนีเอกสารเพื่อการค้นหาภาษาไทยแบบซับซ้อน อ้างผ่าน IP/PORT ไม่มี Route สู่ภายนอก
|
||||||
|
- Kibana ใน WebUI การจัดการ Elasticsearch มี Route ใช้เฉพาะนักพัฒนา
|
||||||
|
- RabbitMQ จัดการคิวงาน มี Route ใช้เฉพาะนักพัฒนา
|
||||||
|
- MiniO ใช้เพื่อเก็บไฟล์ต่างๆ มีหน้า console ใช้เฉพาะนักพัฒนา
|
||||||
|
|
||||||
|
นอกเหนือจาก compose.yaml มีไฟล์คอนฟิกสองไฟล์
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nano edm_config/keycloak.json
|
||||||
|
nano elasticsearch_config/config.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
edm_config/keycloak.json
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"realm": "EDM",
|
||||||
|
"auth-server-url": "https://bma-hrms-id.bangkok.go.th/",
|
||||||
|
"ssl-required": "external",
|
||||||
|
"resource": "EDM-V1",
|
||||||
|
"public-client": true,
|
||||||
|
"confidential-port": 0
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
elasticsearch_config/config.yaml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
network.host: 0.0.0.0
|
||||||
|
s3.client.default.endpoint: bma-hrms-s3.bangkok.go.th
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Kibana**
|
||||||
|
เป็น UI สำหรับ Elasticsearch สำหรับนักพัฒนามาตรวจสอบค่า ควรใช้จาก VPN และเน็ตเวิร์กภายในเท่านั้น เพื่อความปลอดภัย จะใช้ API gateway ทำ Basic Authentication และ https สำหรับนักพัฒนาเท่านั้น ใช้ผ่าน VPN หรือเน็ตเวิร์กภายในเท่านั้น
|
||||||
|
|
||||||
|
#### ตัวแปรแวดล้อม 3rd Party service
|
||||||
|
การตั้งค่าและรหัสผ่านของคอนเทนเนอร์ผ่านตัวแปรแวดล้อมทำได้สองแบบ
|
||||||
|
- ทำแต่ละ service ใน compose.yaml
|
||||||
|
- แยกออกมาเป็นไฟล์เพื่อใช้ร่วมกันหลาย Service ก็ได้ ในตัวอย่างนี้จะใช้ ไฟล์ service.env
|
||||||
ให้แก้ตัวแปรให้เหมาะสม KEYCLOAK_ADMIN_PASSWORD, KC_DB_PASSWORD, POSTGRES_PASSWORD, MINIO_ROOT_PASSWORD RABBITMQ_DEFAULT_PASS, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD
|
ให้แก้ตัวแปรให้เหมาะสม KEYCLOAK_ADMIN_PASSWORD, KC_DB_PASSWORD, POSTGRES_PASSWORD, MINIO_ROOT_PASSWORD RABBITMQ_DEFAULT_PASS, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD
|
||||||
```
|
|
||||||
# Generic
|
|
||||||
TZ=Asia/Bangkok
|
|
||||||
# Keycloak
|
|
||||||
KEYCLOAK_ADMIN=admin
|
|
||||||
KEYCLOAK_ADMIN_PASSWORD=put_keycloak_admin_password_here
|
|
||||||
|
|
||||||
# Keycloak
|
**docker/bmahrms-service/service.env**
|
||||||
KC_DB=postgres
|
```
|
||||||
#KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak
|
# Generic
|
||||||
KC_DB_URL_HOST=bmahrms-postgres
|
TZ=Asia/Bangkok
|
||||||
KC_DB_URL_DATABASE=keycloak
|
# Keycloak
|
||||||
KC_DB_PASSWORD=put_keycloak_db_password_here
|
KEYCLOAK_ADMIN=admin
|
||||||
KC_DB_USERNAME=keycloak
|
KEYCLOAK_ADMIN_PASSWORD=put_keycloak_admin_password_here
|
||||||
KC_DB_SCHEMA=public
|
|
||||||
|
|
||||||
# PostgreSQL (keycloak)
|
# Keycloak
|
||||||
POSTGRES_DB=keycloak
|
KC_DB=postgres
|
||||||
POSTGRES_USER=keycloak
|
#KC_DB_URL=jdbc:postgresql://postgres:5432/keycloak
|
||||||
POSTGRES_PASSWORD=put_keycloak_db_password_here
|
KC_DB_URL_HOST=bmahrms-postgres
|
||||||
|
KC_DB_URL_DATABASE=keycloak
|
||||||
|
KC_DB_PASSWORD=put_keycloak_db_password_here
|
||||||
|
KC_DB_USERNAME=keycloak
|
||||||
|
KC_DB_SCHEMA=public
|
||||||
|
|
||||||
# MiniO
|
# PostgreSQL (keycloak)
|
||||||
MINIO_ROOT_USER=admin
|
POSTGRES_DB=keycloak
|
||||||
MINIO_ROOT_PASSWORD=put_minio_admin_password_here
|
POSTGRES_USER=keycloak
|
||||||
MINIO_BROWSER_REDIRECT_URL=https://bmahrms-s3.bangkok.go.th/console/
|
POSTGRES_PASSWORD=put_keycloak_db_password_here
|
||||||
|
|
||||||
# RabbitMQ
|
# MiniO
|
||||||
RABBITMQ_DEFAULT_USER=admin
|
MINIO_ROOT_USER=admin
|
||||||
RABBITMQ_DEFAULT_PASS=put_rabbitmq_admin_password_here
|
MINIO_ROOT_PASSWORD=put_minio_admin_password_here
|
||||||
|
MINIO_BROWSER_REDIRECT_URL=https://bmahrms-s3.bangkok.go.th/console/
|
||||||
|
|
||||||
# MySQL
|
# RabbitMQ
|
||||||
MYSQL_ROOT_PASSWORD=put_mysql_admin_password_here
|
RABBITMQ_DEFAULT_USER=admin
|
||||||
MYSQL_DATABASE=bma_ehr
|
RABBITMQ_DEFAULT_PASS=put_rabbitmq_admin_password_here
|
||||||
MYSQL_USER=frappet
|
|
||||||
MYSQL_PASSWORD=put_mysql_db_password_here
|
|
||||||
|
|
||||||
# Elasticsearch & Kibana
|
# MySQL
|
||||||
xpack.security.enabled=false
|
MYSQL_ROOT_PASSWORD=put_mysql_admin_password_here
|
||||||
discovery.type=single-node
|
MYSQL_DATABASE=bma_ehr
|
||||||
ELASTICSEARCH_HOSTS=http://bmahrms-elasticsearch:9200
|
MYSQL_USER=frappet
|
||||||
|
MYSQL_PASSWORD=put_mysql_db_password_here
|
||||||
|
|
||||||
# REDIS
|
# Elasticsearch & Kibana
|
||||||
REDIS_PORT=6379
|
xpack.security.enabled=false
|
||||||
REDIS_DATABASES=16
|
discovery.type=single-node
|
||||||
```
|
ELASTICSEARCH_HOSTS=http://bmahrms-elasticsearch:9200
|
||||||
|
|
||||||
docker/bmahrms-service/compose.yaml จะใช้ docker volume (keycloak_data, minio_data ฯลฯ) แทน file system (ตัวอย่างก่อนหน้า) เพื่อประสิทธิ์ภาพสูงกว่าในการเก็บขอมูลที่มีการเขียนอ่านบ่อย
|
# REDIS
|
||||||
|
REDIS_PORT=6379
|
||||||
|
REDIS_DATABASES=16
|
||||||
|
```
|
||||||
|
#### compose.yaml ของ 3rd Party service
|
||||||
|
docker/bmahrms-service/compose.yaml จะใช้ docker volume (keycloak_data, minio_data ฯลฯ) แทน file system (ตัวอย่างก่อนหน้า) เพื่อประสิทธิ์ภาพสูงกว่าในการเก็บข้อมูลที่มีการเขียนอ่านบ่อย
|
||||||
|
|
||||||
ให้แก้ค่า PUBLIC_KEY MINIO_ACCESS_KEY,MINIO_SECRET_KEY, ipaddress_bma_hrms_id ให้เหมาะสม
|
ให้แก้ค่า PUBLIC_KEY MINIO_ACCESS_KEY,MINIO_SECRET_KEY, ipaddress_bma_hrms_id ให้เหมาะสม
|
||||||
|
|
||||||
|
|
@ -750,7 +806,136 @@ docker compose up -d bmahrms-postgres
|
||||||
docker compose up -d bmahrms-id
|
docker compose up -d bmahrms-id
|
||||||
```
|
```
|
||||||
|
|
||||||
### BMA HRMS Service
|
#### Route ของ 3rd Service
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Keycloak Route
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-id",
|
||||||
|
"host": "bma-hrms-id.bangkok.go.th",
|
||||||
|
"uri": "/*",
|
||||||
|
"upstream": {
|
||||||
|
"scheme": "https",
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-id:8443": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
# Portainer route
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-portainer",
|
||||||
|
"host": "bmahrms-portainer.bangkok.go.th",
|
||||||
|
"uri": "/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-portainer:9000": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
# Report Server Route
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-report-server",
|
||||||
|
"hosts": ["bma-hrms.bangkok.go.th","bma-hrms-user.bangkok.go.th"],
|
||||||
|
"uris": ["/api/v1/report-template/*"],
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-report-server:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
|
||||||
|
# MiniO Rote
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-s3",
|
||||||
|
"host": "bma-hrms-s3.bangkok.go.th",
|
||||||
|
"uri": "/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-s3:9000": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
# Health test
|
||||||
|
curl -k -I https://bma-hrms-s3.bangkok.go.th/minio/health/live
|
||||||
|
# MiniO Console Route
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-s3-console",
|
||||||
|
"host": "bma-hrms-s3.bangkok.go.th",
|
||||||
|
"uri": "/console/*",
|
||||||
|
"enable_websocket": true,
|
||||||
|
"plugins": {
|
||||||
|
"proxy-rewrite": {
|
||||||
|
"regex_uri": ["^/console/(.*)","/$1"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-s3:9001": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
# EDM Route
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-edm",
|
||||||
|
"host": "bma-hrms-edm.bangkok.go.th",
|
||||||
|
"uri": "/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-edm:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
# Kibana Route
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "bmahrms-kibana",
|
||||||
|
"host": "bma-hrms-kibana.bangkok.go.th",
|
||||||
|
"uri": "/*",
|
||||||
|
"plugins": {
|
||||||
|
"basic-auth": {}
|
||||||
|
},
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-kibana:5601": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
# Kibana Basic Authentication
|
||||||
|
curl http://127.0.0.1:9180/apisix/admin/consumers \
|
||||||
|
-H 'X-API-KEY: put_admin_api_key_here' -X PUT -d '
|
||||||
|
{
|
||||||
|
"username": "admin",
|
||||||
|
"plugins": {
|
||||||
|
"basic-auth": {
|
||||||
|
"username": "admin",
|
||||||
|
"password": "kibana-password-here"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### BMA HRMS
|
||||||
|
|
||||||
ระบบที่พัฒนาเพื่อ HRMS โดยเฉพาะ จะมี 3 ไฟล์
|
ระบบที่พัฒนาเพื่อ HRMS โดยเฉพาะ จะมี 3 ไฟล์
|
||||||
|
|
||||||
|
|
@ -791,8 +976,11 @@ docker compose up -d bmahrms-id
|
||||||
- bmahrms-development
|
- bmahrms-development
|
||||||
- bmahrms-kpi
|
- bmahrms-kpi
|
||||||
|
|
||||||
docker/bmahrms/fe.env แก้ตัวแปร VITE_CLIENTSECRET_KEYCLOAK KC_SERVICE_ACCOUNT_SECRET
|
#### ตัวแปรแวดล้อมของ BMA HRMS (Frontend)
|
||||||
|
|
||||||
|
**docker/bmahrms/fe.env**
|
||||||
|
|
||||||
|
แก้ตัวแปร VITE_CLIENTSECRET_KEYCLOAK KC_SERVICE_ACCOUNT_SECRET
|
||||||
```
|
```
|
||||||
# Frontend Global
|
# Frontend Global
|
||||||
TZ=Asia/Bangkok
|
TZ=Asia/Bangkok
|
||||||
|
|
@ -816,8 +1004,10 @@ KC_SERVICE_ACCOUNT_CLIENT_ID=bma-ehr-dev
|
||||||
KC_SERVICE_ACCOUNT_SECRET=put_service_account_secret_here
|
KC_SERVICE_ACCOUNT_SECRET=put_service_account_secret_here
|
||||||
MANAGEMENT_ROLE=storage_management
|
MANAGEMENT_ROLE=storage_management
|
||||||
```
|
```
|
||||||
|
#### ตัวแปรแวดล้อมของ BMA HRMS (Backendend)
|
||||||
|
**docker/bmahrms/be.env**
|
||||||
|
|
||||||
docker/bmahrms/be.env แก้ค่าของ DB_PASSWORD,AUTH_PUBLIC_KEY, MINIO_KEY, MINIO_SECRET, STORAGE_SECRET,KC_SERVICE_ACCOUNT_SECRET,REDIS_HOST,KEYCLOAK_KEY,AUTH_PUBLIC_KEY, PUBLIC_KEY
|
แก้ค่าของ DB_PASSWORD,AUTH_PUBLIC_KEY, MINIO_KEY, MINIO_SECRET, STORAGE_SECRET,KC_SERVICE_ACCOUNT_SECRET,REDIS_HOST,KEYCLOAK_KEY,AUTH_PUBLIC_KEY, PUBLIC_KEY
|
||||||
|
|
||||||
ค่าของ public key ของ keycloak ให้สำเนาจากส่วนนี้
|
ค่าของ public key ของ keycloak ให้สำเนาจากส่วนนี้
|
||||||
|
|
||||||
|
|
@ -873,8 +1063,11 @@ ELASTICSEARCH_PORT=9200
|
||||||
ELASTICSEARCH_INDEX=bma-ehr-log-index
|
ELASTICSEARCH_INDEX=bma-ehr-log-index
|
||||||
```
|
```
|
||||||
|
|
||||||
docker/bmahrms/compose.yaml
|
#### compose.yaml ของ BMA HRMS
|
||||||
|
ใช้สำหรับ Backend และ Frontend
|
||||||
|
**docker/bmahrms/compose.yaml**
|
||||||
|
|
||||||
|
มี Backend และ Frontend
|
||||||
```yaml
|
```yaml
|
||||||
networks:
|
networks:
|
||||||
hrms:
|
hrms:
|
||||||
|
|
@ -1265,24 +1458,17 @@ services:
|
||||||
# End Backend Section
|
# End Backend Section
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
#### Route ของ BMA-HRMS frontend
|
||||||
|
|
||||||
การตั้งค่าเฉพาะของแต่ละ service มีสองส่วน
|
|
||||||
- เป็นการตั้งค่าเฉพาะโปรแกรม จะแตกต่างกันไปตามโปรแกรม
|
|
||||||
- ตั้งค่า route สำหรับโดเมนต่างๆ (สำหรับ Frontend) และ Microservice (เป็นการรวมหลาย backend เข้าในโดเมนเดียวกันแต่อยู่คนละ Subfolder)
|
|
||||||
|
|
||||||
### BMA-HRMS frontend
|
|
||||||
โดเมนสำหรับหน้าโปรแกรมจะมีดังนี้
|
โดเมนสำหรับหน้าโปรแกรมจะมีดังนี้
|
||||||
bmahrms.bangkok.go.th,bmahrms-user.bangkok.go.th,bmahrms-admin.bangkok.go.th,bmahrms-checkin.bangkok.go.th,bmahrms-recruiting.bangkok.go.th,bmahrms-exam.bangkok.go.th
|
bmahrms.bangkok.go.th,bmahrms-user.bangkok.go.th,bmahrms-admin.bangkok.go.th,bmahrms-checkin.bangkok.go.th,bmahrms-recruiting.bangkok.go.th,bmahrms-exam.bangkok.go.th จะต้องสร้าง route ให้ตรงกับหน้าเวปที่ใช้งาน ใช้แค่ methods GET
|
||||||
|
|
||||||
จะต้องสร้าง route ให้ตรงกับหน้าที่ใช้งาน
|
|
||||||
```sh
|
```sh
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
{
|
{
|
||||||
"id": "bmahrms",
|
"id": "bmahrms",
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"host": "bmahrms.bangkok.go.th",
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/*",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
|
|
@ -1297,7 +1483,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
{
|
{
|
||||||
"id": "bmahrms-user",
|
"id": "bmahrms-user",
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"host": "bmahrms-user.bangkok.go.th",
|
"host": "bma-hrms-user.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/*",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
|
|
@ -1311,7 +1497,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
{
|
{
|
||||||
"id": "bmahrms-admin",
|
"id": "bmahrms-admin",
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"host": "bmahrms-admin.bangkok.go.th",
|
"host": "bma-hrms-admin.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/*",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
|
|
@ -1325,7 +1511,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
{
|
{
|
||||||
"id": "bmahrms-checkin",
|
"id": "bmahrms-checkin",
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"host": "bmahrms-checkin.bangkok.go.th",
|
"host": "bma-hrms-checkin.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/*",
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
|
|
@ -1337,7 +1523,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
{
|
{
|
||||||
"id": "bmahrms-recruiting",
|
"id": "bma-hrms-recruiting",
|
||||||
"methods": ["GET"],
|
"methods": ["GET"],
|
||||||
"host": "bmahrms-recruiting.bangkok.go.th",
|
"host": "bmahrms-recruiting.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/*",
|
||||||
|
|
@ -1348,237 +1534,320 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}'
|
}'
|
||||||
|
|
||||||
|
```
|
||||||
|
Faq and Manual เป็น Micro Frontend เป็นพาร์ทย่อยของโดเมนหลัก
|
||||||
|
- Faq: /faq
|
||||||
|
- Manual: /manual
|
||||||
|
|
||||||
|
```sh
|
||||||
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
{
|
{
|
||||||
"id": "bmahrms-exam",
|
"id": "bmahrms-faq",
|
||||||
"methods": ["GET"],
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
"host": "bmahrms-exam.bangkok.go.th",
|
"uri": "/faq/*",
|
||||||
"uri": "/*",
|
|
||||||
"upstream": {
|
|
||||||
"type": "roundrobin",
|
|
||||||
"nodes": {
|
|
||||||
"bmahrms-exam:80": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
### BMA-HRMS backend
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Keycloak (bmahrms-id)
|
|
||||||
|
|
||||||
ใช้สำหรับการ login ในระบบ (Identity Server) เพื่อความปลอดภัยการสื่อสารเฉพาะภายใน จะเป็น https จะสร้าง self-signed certificate ขึ้นมาตัวอย่างนี้มีอายุ 10 ปี
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd bmahrms-service/keycloak_config
|
|
||||||
openssl genrsa -out keycloak.key 2048
|
|
||||||
openssl req -new -x509 -sha256 -key keycloak.key -out keycloak.crt -days 3650
|
|
||||||
cp keycloak.key keycloak.pem
|
|
||||||
cat keycloak.crt >> keycloak.pem
|
|
||||||
cd ..
|
|
||||||
```
|
|
||||||
|
|
||||||
Keycloak Route
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
|
||||||
{
|
|
||||||
"id": "bmahrms-id",
|
|
||||||
"host": "bma-hrms-id.bangkok.go.th",
|
|
||||||
"uri": "/*",
|
|
||||||
"upstream": {
|
|
||||||
"scheme": "https",
|
|
||||||
"type": "roundrobin",
|
|
||||||
"nodes": {
|
|
||||||
"bmahrms-id:8443": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Portainer (bmahrms-portainer)
|
|
||||||
|
|
||||||
เป็นโปรแกรมสำหรับบริหารจัดการ container สามารถสั่งเปิดปิดแก้ไขการทำงานของคอนเทนเนอร์ได้ เฉพาะผู้ดูแลระดับสูงถึงจะเข้าใช้งานส่วนนี้
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|
||||||
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f2" -X PUT -d '
|
|
||||||
{
|
|
||||||
"id": "bmahrms-portainer",
|
|
||||||
"host": "bmahrms-portainer.bangkok.go.th",
|
|
||||||
"uri": "/*",
|
|
||||||
"upstream": {
|
|
||||||
"type": "roundrobin",
|
|
||||||
"nodes": {
|
|
||||||
"bmahrms-portainer:9000": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
### MySQL (bmahrms-postgres)
|
|
||||||
|
|
||||||
init_mysql/\*.sql เป็นที่เก็บ SQL Script สำหรับสร้างฐานข้อมูลตั้งต้น
|
|
||||||
จะถูกเรียกใช้ครั้งแรกตอนเริ่มฐานข้อมูลเป็นข้อมูลตั้งต้นของระบบ
|
|
||||||
เนื่องจากไฟล์มีขนาดใหญ่หลายบรรทัดจะไม่ใส่ในเอกสารนี้
|
|
||||||
|
|
||||||
### Report Server
|
|
||||||
|
|
||||||
เป็น Microservice ใช้สำหรับการออกรายงาน ไม่จำเป็นต้องมี domain ของตัวเอง ให้เป็น path ในโดเมนที่มีอยู่ได้ ให้นำไฟล์ต้นแบบซึ่งสร้างจาก MS Word และ Excel มาไว้ที่โฟลเดอร์นี้
|
|
||||||
report-server-template/docx/files.docx, report-server-template/xlsx/files.xlsx
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
|
||||||
{
|
|
||||||
"id": "bmahrms-report-server",
|
|
||||||
"hosts": ["bma-hrms.bangkok.go.th","bma-hrms-user.bangkok.go.th"],
|
|
||||||
"uris": ["/api/v1/report-template/*"],
|
|
||||||
"upstream": {
|
|
||||||
"type": "roundrobin",
|
|
||||||
"nodes": {
|
|
||||||
"bmahrms-report-server:80": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
```
|
|
||||||
|
|
||||||
### MiniO
|
|
||||||
|
|
||||||
Object Storage ใช้เพื่อเก็บไฟล์ของระบบถูกใช้โดย HRMS และ EDM
|
|
||||||
Route จะมีส่วน API กับ console การทำ route จะให้ console อยู่ใต้ subfoler https://domain/console
|
|
||||||
ในการติดตั้งบน production อาจจะไม่ได้อยู่ใน node เดียวกับ hrms และ apisix ดังนั้นควรอ้างเป็นชื่อโดเมนเต็มแทน
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# bma-hrms-s3.bangkok.go.th
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
|
||||||
{
|
|
||||||
"id": "bmahrms-s3",
|
|
||||||
"host": "bma-hrms-s3.bangkok.go.th",
|
|
||||||
"uri": "/*",
|
|
||||||
"upstream": {
|
|
||||||
"type": "roundrobin",
|
|
||||||
"nodes": {
|
|
||||||
"bmahrms-s3:9000": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}'
|
|
||||||
# test
|
|
||||||
curl -k -I https://bma-hrms-s3.bangkok.go.th/minio/health/live
|
|
||||||
# bma-hrms-s3.bangkok.go.th/console
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
|
||||||
{
|
|
||||||
"id": "bmahrms-s3-console",
|
|
||||||
"host": "bma-hrms-s3.bangkok.go.th",
|
|
||||||
"uri": "/console/*",
|
|
||||||
"enable_websocket": true,
|
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"proxy-rewrite": {
|
"proxy-rewrite": {
|
||||||
"regex_uri": ["^/console/(.*)","/$1"]
|
"regex_uri": ["^/faq/(.*)","/$1"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"bmahrms-s3:9001": 1
|
"bmahrms-faq:80": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}'
|
}'
|
||||||
```
|
|
||||||
|
|
||||||
### EDM (Enterprixe Document Management)
|
|
||||||
|
|
||||||
เป็นระบบจัดการเอกสารภายใน ประกอบไปด้วยโปรแกรมหลายตัว
|
|
||||||
|
|
||||||
- EDM ตัวโปรแกรมหลัก
|
|
||||||
- Elasticsearch ฐานข้อมูลดัชนีเอกสารเพื่อการค้นหาภาษาไทยแบบซับซ้อน อ้างผ่าน IP/PORT ไม่มี Route สู่ภายนอก
|
|
||||||
- Kibana ใน WebUI การจัดการ Elasticsearch มี Route ใช้เฉพาะนักพัฒนา
|
|
||||||
- RabbitMQ จัดการคิวงาน มี Route ใช้เฉพาะนักพัฒนา
|
|
||||||
- MiniO ใช้เพื่อเก็บไฟล์ต่างๆ มีหน้า console ใช้เฉพาะนักพัฒนา
|
|
||||||
|
|
||||||
นอกเหนือจาก compose.yaml มีไฟล์คอนฟิกสองไฟล์
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nano edm_config/keycloak.json
|
|
||||||
nano elasticsearch_config/config.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
edm_config/keycloak.json
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"realm": "EDM",
|
|
||||||
"auth-server-url": "https://bma-hrms-id.bangkok.go.th/",
|
|
||||||
"ssl-required": "external",
|
|
||||||
"resource": "EDM-V1",
|
|
||||||
"public-client": true,
|
|
||||||
"confidential-port": 0
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
elasticsearch_config/config.yaml
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
network.host: 0.0.0.0
|
|
||||||
s3.client.default.endpoint: bma-hrms-s3.bangkok.go.th
|
|
||||||
```
|
|
||||||
|
|
||||||
EDM Route
|
|
||||||
|
|
||||||
```sh
|
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f2" -X PUT -d '
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
{
|
{
|
||||||
"id": "bmahrms-edm",
|
"id": "bmahrms-manual",
|
||||||
"host": "bma-hrms-edm.bangkok.go.th",
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/manual/*",
|
||||||
|
"plugins": {
|
||||||
|
"proxy-rewrite": {
|
||||||
|
"regex_uri": ["^/manual/(.*)","/$1"]
|
||||||
|
}
|
||||||
|
},
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"bmahrms-edm:80": 1
|
"bmahrms-manual:80": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}'
|
}'
|
||||||
```
|
```
|
||||||
|
#### Route ของ BMA-HRMS backend
|
||||||
|
|
||||||
Kibana Route
|
Route ของ API จะอยู่ในรูปแบบ domain/api/v1/*
|
||||||
เป็น UI สำหรับ Elasticsearch สำหรับนักพัฒนามาตรวจสอบค่า ควรใช้จาก VPN และเน็ตเวิร์กภายในเท่านั้น เพื่อความปลอดภัย ให้ API gateway จะช่วยทำ Basic Authentication และ https ให้ ควรใช้ภายในเสำหรับนักพัฒนาเท่านั้น
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
{
|
{
|
||||||
"id": "bmahrms-kibana",
|
"id": "hrms-backend-org",
|
||||||
"host": "bma-hrms-kibana.bangkok.go.th",
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
"uri": "/*",
|
"uri": "/api/v1/org/*",
|
||||||
"plugins": {
|
|
||||||
"basic-auth": {}
|
|
||||||
},
|
|
||||||
"upstream": {
|
"upstream": {
|
||||||
"type": "roundrobin",
|
"type": "roundrobin",
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"bmahrms-kibana:5601": 1
|
"bmahrms-org:80": 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}'
|
}'
|
||||||
# Basic Authentication
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
curl http://127.0.0.1:9180/apisix/admin/consumers \
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
-H 'X-API-KEY: put_admin_api_key_here' -X PUT -d '
|
|
||||||
{
|
{
|
||||||
"username": "admin",
|
"id": "hrms-backend-recruit",
|
||||||
"plugins": {
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
"basic-auth": {
|
"uri": "/api/v1/recruit/*",
|
||||||
"username": "admin",
|
"upstream": {
|
||||||
"password": "kibana-password-here"
|
"type": "roundrobin",
|
||||||
}
|
"nodes": {
|
||||||
|
"bmahrms-recruit:80": 1
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-report",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/report/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-report:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-insignia",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/insignia/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-insignia:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-recruit-exam-cms",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/cms/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-recruit-exam:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-recruit-exam-candidate",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/candidate/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-recruit-exam:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-org-employee",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/organization-employee/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-org-employee:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-placement",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/placement/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-placement:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-retirement",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/retirement/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-retirement:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-report-v2",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v2/report/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-report-v2:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-probation",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/probation/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-probation:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-command",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/order/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-command:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
}'
|
}'
|
||||||
|
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-command-message",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/message/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-command:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-discipline",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/discipline/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-discipline:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-evaluation",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/evaluation/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-evaluation:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-leave",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/leave/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-leave:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-salary",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/salary/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-salary:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-development",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/development/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-development:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-kpi",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/kpi/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-kpi:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
|
|
||||||
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
-H "X-API-KEY: put_admin_api_key_here" -X PUT -d '
|
||||||
|
{
|
||||||
|
"id": "hrms-backend-metadata",
|
||||||
|
"host": "bma-hrms.bangkok.go.th",
|
||||||
|
"uri": "/api/v1/metadata/*",
|
||||||
|
"upstream": {
|
||||||
|
"type": "roundrobin",
|
||||||
|
"nodes": {
|
||||||
|
"bmahrms-metadata:80": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
## บทสรุป
|
## บทสรุป
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue