update content
This commit is contained in:
parent
289e965ba5
commit
b4fa5180b0
1 changed files with 22 additions and 15 deletions
|
|
@ -263,7 +263,7 @@ API Gateway เป็นส่วนสำคัญในระบบ Microservi
|
||||||
|
|
||||||
# ขั้นตอนการติดตั้งระบบ
|
# ขั้นตอนการติดตั้งระบบ
|
||||||
|
|
||||||
ผู้อ่านจำเป็นต้องมีความรู้และเข้าใจคำสั่ง และระบบไฟล์ของ Linux เป็นอย่างดีมาก่อน เอกสารจะแสดงวิธีการติดตั้งระบบของ BMA HRMS บนเทคโนโลยีคอนเทนเนอร์ มีการปูพื้นคำสั่งพื้นฐานของ Docker ที่จำเป็นให้ ลักษณะการติดตั้งและใช้งานจะอยู่ในรูปแบบเดียวกัน ทำให้ สามารถจัดการบริการเพิ่มเติมที่จะเกิดขึ้นอนาคตได้ นอกจากการใช้งานผ่านคำสั่งแล้วสามารถใช้ Portainer จัดการผ่าน Web UI ได้ การติดตั้งจะอยู่ในเอกสารนี้
|
ผู้อ่านจำเป็นต้องมีความรู้และเข้าใจคำสั่ง และระบบไฟล์ของ Linux เป็นอย่างดีมาก่อน เอกสารจะแสดงวิธีการติดตั้งระบบของ BMA HRMS บนเทคโนโลยีคอนเทนเนอร์ มีการปูพื้นคำสั่งพื้นฐานของ Docker ที่จำเป็นให้ ลักษณะการติดตั้งและใช้งานจะอยู่ในรูปแบบเดียวกัน ทำให้สามารถจัดการบริการเพิ่มเติมที่จะเกิดขึ้นอนาคตได้ นอกจากการใช้งานผ่านคำสั่งแล้วสามารถใช้ Portainer จัดการผ่าน Web UI ได้ การติดตั้งจะอยู่ในเอกสารนี้
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
@ -311,7 +311,7 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
||||||
|
|
||||||
# การใช้งานไฟล์ Docker Compose
|
# การใช้งานไฟล์ Docker Compose
|
||||||
## Docker Compose File คืออะไร?
|
## Docker Compose File คืออะไร?
|
||||||
**Docker Compose File** เป็นไฟล์ที่มีรูปแบบเป็น YAML (มักมีชื่อไฟล์ docker-compose.yml) ซึ่งใช้สำหรับการกำหนดค่าและจัดการการทำงานของ **หลายคอนเทนเนอร์** ในโปรเจกต์เดียวกัน ช่วยให้นักพัฒนาสามารถกำหนดบริการต่างๆ ที่คอนเทนเนอร์จะต้องรัน เช่น ฐานข้อมูล เว็บเซิร์ฟเวอร์ และบริการอื่นๆ ได้ในที่เดียว
|
**Docker Compose File** เป็นไฟล์ที่มีรูปแบบเป็น YAML (มักมีชื่อไฟล์ docker-compose.yml หรือ compose.yaml) ซึ่งใช้สำหรับการกำหนดค่าและจัดการการทำงานของ **หลายคอนเทนเนอร์** ในโปรเจกต์เดียวกัน ช่วยให้นักพัฒนาสามารถกำหนดบริการต่างๆ ที่คอนเทนเนอร์จะต้องรัน เช่น ฐานข้อมูล เว็บเซิร์ฟเวอร์ และบริการอื่นๆ ได้ในที่เดียว
|
||||||
|
|
||||||
## Docker Compose File มีไว้ทำไม?
|
## Docker Compose File มีไว้ทำไม?
|
||||||
1. จัดการบริการหลายตัวพร้อมกัน
|
1. จัดการบริการหลายตัวพร้อมกัน
|
||||||
|
|
@ -323,7 +323,7 @@ docker network create [network_name] # สร้างเน็ตเวิร
|
||||||
3. กำหนดค่าที่ซับซ้อน
|
3. กำหนดค่าที่ซับซ้อน
|
||||||
สามารถกำหนดค่าเครือข่าย, การเชื่อมโยงคอนเทนเนอร์, พอร์ต, Volume, และ Environment Variable ได้ในไฟล์เดียว
|
สามารถกำหนดค่าเครือข่าย, การเชื่อมโยงคอนเทนเนอร์, พอร์ต, Volume, และ Environment Variable ได้ในไฟล์เดียว
|
||||||
|
|
||||||
4. ทำให้การพกพาโปรเจกต์ง่ายขึ้น
|
4. ทำให้การพกพาและย้ายโปรเจกต์ง่ายขึ้น
|
||||||
แชร์ docker-compose.yml ไฟล์ให้ผู้อื่นเพื่อสร้างสภาพแวดล้อมที่เหมือนกันได้อย่างง่ายดาย
|
แชร์ docker-compose.yml ไฟล์ให้ผู้อื่นเพื่อสร้างสภาพแวดล้อมที่เหมือนกันได้อย่างง่ายดาย
|
||||||
|
|
||||||
## Docker Compose File ใช้งานเพื่ออะไร?
|
## Docker Compose File ใช้งานเพื่ออะไร?
|
||||||
|
|
@ -449,7 +449,7 @@ plugin_attr:
|
||||||
port: 9091
|
port: 9091
|
||||||
```
|
```
|
||||||
|
|
||||||
apisix/compose.yaml จะมีสอง service ตัว apisix จะเป็นโปรแกรมหลัก ส่วน etcd ฐานข้อมูลแบบกระจายตัว ใช้สำหรับเก็บการตั้งค่าของ apisix
|
apisix/compose.yaml จะมีสอง service ตัว apisix จะเป็นโปรแกรมหลัก ส่วน etcd ฐานข้อมูลแบบกระจายตัว ใช้สำหรับเก็บการตั้งค่าของ apisix เน็ตเวิร์ก apisix จะเป็นการสื่อสารระหว่างสองเซอร์วิสเท่านั้น ส่วนเน็ตเวิร์ก hrms จะเป็นการสื่อสารระหว่าง apisix กับโปรแกรมต่างๆของระบบ
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
services:
|
services:
|
||||||
|
|
@ -534,8 +534,10 @@ curl https://bma-hrms-id.bangkok.go.th -vvv
|
||||||
- **Frappet EDM** ใช้สำหรับจัดการเอกสารที่ปลอดภัยรองรับโหลดจำนวนมากได้ จะมีระบบย่อยเบื้องหลังหลายตัว (bmahrms-edm,bmahrms-elasticsearch,bmahrms-kibana,bmahrms-mq)
|
- **Frappet EDM** ใช้สำหรับจัดการเอกสารที่ปลอดภัยรองรับโหลดจำนวนมากได้ จะมีระบบย่อยเบื้องหลังหลายตัว (bmahrms-edm,bmahrms-elasticsearch,bmahrms-kibana,bmahrms-mq)
|
||||||
|
|
||||||
docker/bmahrms-service/service.env
|
docker/bmahrms-service/service.env
|
||||||
การตั้งค่าและรหัสผ่านของคอนเทนเนอร์ผ่านตัวแปรแวดล้อม สามารถทำแต่ละ server กำหนดในไฟล์คอมโพส หรือแยกออกมาเป็นไฟล์เพื่อใช้ร่วมกันหลาย Service ก็ได้ ในตัวอย่างนี้จะใช้ ไฟล์ service.env
|
การตั้งค่าและรหัสผ่านของคอนเทนเนอร์ผ่านตัวแปรแวดล้อมทำได้สอบแบบ
|
||||||
ให้แก้ตัวแปรซึ่งเป็นระหัสผ่านให้เหมาะสม KEYCLOAK_ADMIN_PASSWORD, KC_DB_PASSWORD, POSTGRES_PASSWORD, MINIO_ROOT_PASSWORD RABBITMQ_DEFAULT_PASS, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD
|
- ทำแต่ละ services.service_name.environments ในไฟล์คอมโพส
|
||||||
|
- แยกออกมาเป็นไฟล์เพื่อใช้ร่วมกันหลาย Service ก็ได้ ในตัวอย่างนี้จะใช้ ไฟล์ service.env
|
||||||
|
ให้แก้ตัวแปรให้เหมาะสม KEYCLOAK_ADMIN_PASSWORD, KC_DB_PASSWORD, POSTGRES_PASSWORD, MINIO_ROOT_PASSWORD RABBITMQ_DEFAULT_PASS, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD
|
||||||
```
|
```
|
||||||
# Generic
|
# Generic
|
||||||
TZ=Asia/Bangkok
|
TZ=Asia/Bangkok
|
||||||
|
|
@ -582,7 +584,9 @@ REDIS_PORT=6379
|
||||||
REDIS_DATABASES=16
|
REDIS_DATABASES=16
|
||||||
```
|
```
|
||||||
|
|
||||||
docker/bmahrms-service/compose.yaml ให้แก้ค่า PUBLIC_KEY MINIO_ACCESS_KEY,MINIO_SECRET_KEY, ipaddress_bma_hrms_id ให้เหมาะสม
|
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 ให้เหมาะสม
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
networks:
|
networks:
|
||||||
|
|
@ -737,7 +741,7 @@ services:
|
||||||
- hrms
|
- hrms
|
||||||
```
|
```
|
||||||
|
|
||||||
รันคำสั่งดังนี้ในตัวอย่างเรียกใช้งาน Keycloak จะใช้ 2 service ตัวอย่างนี้จะเรียกใช้ฐานข้อมูลแล้วค่อยเรียกใช้โปรแกรม keycloak
|
รันคำสั่งดังนี้ในตัวอย่างเรียกใช้งานเฉพาะ Keycloak จะใช้ 2 service ตัวอย่างนี้จะเรียกใช้ฐานข้อมูลแล้วค่อยเรียกใช้โปรแกรม keycloak
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker compose up -d bmahrms-postgres
|
docker compose up -d bmahrms-postgres
|
||||||
|
|
@ -1257,11 +1261,13 @@ services:
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
การตั้งค่าเฉพาะของแต่ละ service และการตั้งค่า route การตั้งค่า route ส่วนใหญ่จะทำคล้ายๆกัน ส่วนที่เป็น Frontend จะเป็นการเซ็ตโดเมน(URL)ของแต่ละโปรแกรม ส่วนที่เป็น Backend จะเป็นการรวมหลาย backend เข้าในโดเมนเดียวกันแต่อยู่คนละ Subfolder ซึ่งเป็นการรวม Microservice เข้าด้วยกัน
|
การตั้งค่าเฉพาะของแต่ละ service มีสองส่วน
|
||||||
|
- เป็นการตั้งค่าเฉพาะโปรแกรมแตกต่างกันไปตามโปรแกรม
|
||||||
|
- ตั้งค่า route สำหรับ โดเมนต่างๆ(สำหรับ Frontend) และ Microservice (เป็นการรวมหลาย backend เข้าในโดเมนเดียวกันแต่อยู่คนละ Subfolder)
|
||||||
|
|
||||||
### Keycloak (bmahrms-id)
|
### Keycloak (bmahrms-id)
|
||||||
|
|
||||||
ใช้สำหรับการ login ในระบบ (Identity Server) การสือสารหลัง API Gateway จะเป็น https แบบ self-signed
|
ใช้สำหรับการ login ในระบบ (Identity Server) เพื่อความปลอดภัยการสื่อสารเฉพาะภายใน จะเป็น https จะสร้าง self-signed certificate ขึ้นมาตัวอย่างนี้มีอายุ 10 ปี
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cd bmahrms-service/keycloak_config
|
cd bmahrms-service/keycloak_config
|
||||||
|
|
@ -1291,7 +1297,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
}'
|
}'
|
||||||
```
|
```
|
||||||
|
|
||||||
### Portainer ()
|
### Portainer (bmahrms-portainer)
|
||||||
|
|
||||||
เป็นโปรแกรมสำหรับบริหารจัดการ container สามารถสิ่งเปิดปิดแก้ไขการทำงานของคอนเทนเนอร์ได้ เฉพาะผู้ดูแลระดับสูงถึงจะเข้าใช้งานส่วนนี้
|
เป็นโปรแกรมสำหรับบริหารจัดการ container สามารถสิ่งเปิดปิดแก้ไขการทำงานของคอนเทนเนอร์ได้ เฉพาะผู้ดูแลระดับสูงถึงจะเข้าใช้งานส่วนนี้
|
||||||
|
|
||||||
|
|
@ -1320,7 +1326,7 @@ init_mysql/\*.sql เป็นที่เก็บ SQL Script สำหรั
|
||||||
### Report Server
|
### Report Server
|
||||||
|
|
||||||
เป็น Microservice ใช้สำหรับการออกรายงาน ไม่จำเป็นต้องมี domain ของตัวเอง ให้เป็น path ในโดเมนที่มีอยู่ได้ ให้นำไฟล์ต้นแบบซึ่งสร้างจาก MS Word และ Excel มาไว้ที่โฟลเดอร์นี้
|
เป็น Microservice ใช้สำหรับการออกรายงาน ไม่จำเป็นต้องมี domain ของตัวเอง ให้เป็น path ในโดเมนที่มีอยู่ได้ ให้นำไฟล์ต้นแบบซึ่งสร้างจาก MS Word และ Excel มาไว้ที่โฟลเดอร์นี้
|
||||||
report-server-template/docx/_.docx, report-server-template/xlsx/_.xlsx
|
report-server-template/docx/files.docx, report-server-template/xlsx/files.xlsx
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
|
@ -1342,9 +1348,10 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
|
|
||||||
Object Storage ใช้เพื่อเก็บไฟล์ของระบบถูกใช้โดย HRMS และ EDM
|
Object Storage ใช้เพื่อเก็บไฟล์ของระบบถูกใช้โดย HRMS และ EDM
|
||||||
Route จะมีส่วน API กับ console การทำ route จะให้ console อยู่ใต้ subfoler https://domain/console
|
Route จะมีส่วน API กับ console การทำ route จะให้ console อยู่ใต้ subfoler https://domain/console
|
||||||
ในการติดตั้งบน production อาจจะไม่ได้อยู่ใน node เดียวกับ hrms และ apisix ดังนั้นควรอ้างเป็นโดเมนเต็มแทน
|
ในการติดตั้งบน production อาจจะไม่ได้อยู่ใน node เดียวกับ hrms และ apisix ดังนั้นควรอ้างเป็นชื่อโดเมนเต็มแทน
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
# bma-hrms-s3.bangkok.go.th
|
||||||
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 '
|
||||||
{
|
{
|
||||||
|
|
@ -1360,7 +1367,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
}'
|
}'
|
||||||
# test
|
# test
|
||||||
curl -k -I https://bma-hrms-s3.bangkok.go.th/minio/health/live
|
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" \
|
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 '
|
||||||
{
|
{
|
||||||
|
|
@ -1437,7 +1444,7 @@ curl "http://127.0.0.1:9180/apisix/admin/routes" \
|
||||||
```
|
```
|
||||||
|
|
||||||
Kibana Route
|
Kibana Route
|
||||||
เป็น UI สำหรับ Elasticsearch สามารถใช้แบบ HTTP ตรงๆได้ผ่าน VPN ถ้า โดยทั่วไปใช้ผ่านเน็ตเวิร์กภายใน API gateway จะช่วยทำ Basic Authentication และ https ให้ควรใช้ ใช้ภายในเสำหรับนักพัฒนาเท่านั้น
|
เป็น 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" \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue