Käesolev repo sisaldab mikroteenusarhitektuuri tehnoloogiate katsetusi (proof-of-concept-e).
- Kafka POC
- gRPC POC
- Envoy POC
Vajad kolme sõlme: 1) Kafka server; 2) sõnumitootja (producer); 3) sõnumitarbija (consumer). Võib paigaldada ühte masinasse, kuid siis peab portidega eristama.
1 Paigalda Kafka.
2 Paigalda sõnumitootja
- paigalda Node.js ja npm.
- paigalda kood - https://github.com/e-gov/Mesh-POC, oluline on kaust
Kafka-POC
. - asenda failis
producer.js
väärtuskafkaserveraddresshere
Kafka serveri tegeliku aadressiga. - paigalda vajalikud teegid (
kafka-node
,optimist
).
3 Paigalda sõnumitarbija
- paigalda Node.js ja npm.
- paigalda kood - https://github.com/e-gov/Mesh-POC, oluline on kaust
Kafka-POC
. - asenda failis
consumer.js
väärtuskafkaserveraddresshere
Kafka serveri tegeliku aadressiga. - paigalda vajalikud teegid (
kafka-node
).
käivita: node consumer
4 Sõnumi saatmiseks käivita:
node producer [teema]
Vaikimisi on teemaks test
.
Süsteem on paigaldatud ja töötab kõrgkäideldava mikroteenusvõrguna (mesh).
Süsteemi koosseisus on kaks teenust - "Monkey" ja "Banana". Kumbki teenus on paigaldatud klasterdatult (vt skeem).
Teenus Monkey reageerib pöördumistele (HTTP):
/monkey
- elutukseteatega ("Monkey kuuldel")/getbanana
- teeb pöördumise teenuse Banana poole ja edastab sealt saadud vastuse.
Teenus Banana reageerib pöördumistele (HTTP):
/banana
- elutukseteatega ("Banana kuuldel")/getbanana
- teatega "Please, your banana!"
Süsteemi poole saab pöörduda läbi Välisliikluse vahendaja (Edge Proxy). Välisliikluse vahendaja (masinas priitp-mesh-1.ci.kit) kuulab pordil 5100
ja marsruudib pöördumise vastavalt URL-iteele (Path):
/monkey...
- teenusesse Monkey
/banana...
- teenusesse Banana
Koormusejaotamist ja marsruutimist teevad iga instantsi masinas olevad vahendajad (Proxy) Envoy. Rakendus suhtleb ainult oma masinas oleva Envoy-ga. Rakenduse port on 5000
, kuid masinast välja paistab ainult Envoy port 5100
.
POC-is ei ole teostatud Envoy-de vahelise liikluse kaitsmine HTTPS-ga. Samuti ei ole rakenduse pordid (5000
) masinast väljast pöördumisele suletud (kuid neid ei kasutata). Toodangupaigalduses loomulikult on vaja HTTPS-i rakendada ja mitteettenähtud pordid sulgeda.
PAC-POC on pääsuõiguste moodul, mis on mõeldud kasutamiseks suurema süsteemi koosseisus.
PAC-POC pakub järgmisi teenuseid:
- kasutajate nimekirja pidamine
- kasutaja konto lisamine
- kasutajate nimekirja väljastamine
- kasutaja profiili väljastamine
- isikukood
- ees- ja perekonnanimi
- rollid
- kasutaja konto sulgemine
- kasutajale rolli omistamine
PAC-POC kasutatakse pöördumisega PAC-POC API poole.
API on teostatud gRPC protokolli kohaselt. Käesolev projekt ongi gPRC kasutuselevõtu proof-of-concept.
Serveri käivitamine:
$ git clone https://github.com/e-gov/PAS-POC
$ cd PAS-POC
$ node PAS-POC
PAS-POC Access Control Server Started
Testimine:
kasutaja lisamine:
$ node PAS-Test insert "EE55000000000" "Jaan" "Kuusk"
{ opresultmessage: 'OK' }
kasutajale rolli andmine:
$ node PAS-Test assign "EE55000000000" "admin"
{ opresultmessage: 'OK' }
kasutaja profiili väljastamine:
$ node PAS-Test get "EE55000000000"
{ roles: [ 'admin' ],
personcode: 'EE55000000000',
firstname: 'Jaan',
lastname: 'Kuusk' }
kasutajate nimekirja väljastamine:
$ node PAS-Test list
{ users:
[ { roles: [],
personcode: 'EE36100000000',
firstname: 'Aino',
lastname: 'Kuusk' },
{ roles: [Object],
personcode: 'EE55000000000',
firstname: 'Jaan',
lastname: 'Kuusk' } ] }
PAC-POC.js
- PAC-POC server.
PAC-Test.js
- rakendus, millega saab PAC-POC-i testida.
PAS.proto
- protobuf-fail.
Sõltuvused:
- gRPC
- Node.js