ã¯ãããŠã® ãã°ãããã¡ã
1æãããäžæ¬ã§ããã»ã»ã»
æ°å¹ŽãããŸããŠããã§ãšãããããŸãïŒ
ä»åã¯ïŒ
æ°äººã«ãªã£ãŠåããŠäžäººã§åºç€æ§ç¯ããã話ã§ãïŒ
âä»åæ§ç¯ããåºç€ã®æ§æå³
ã¯ããã«
ããæ¥
äŒæŽ¥è¥æŸã§è¡ãããããã«ãœã³ã«åºç€ãæäŸããŠæ¬²ãããšããã話ãé ããŸããã
ð€ãåŠç¿ããããŠåºç€æ§ç¯ããã£ãŠã¿ãŸããããã
ãšããããšã§ã»ã»ã»
ããŒã¿é£æºåºç€ãæ§ç¯ããããšã«ãªããŸããïœïŒ
(é£ãããã ãã©ãé 匵ã£ãŠãã£ãŠã¿ããïŒð
)
ãããããã¡ã®ãŠã§ã«ããŒã€ã³ã°ã®ããã®ããã«ãœã³ã
çŠå³¶çäŒæŽ¥è¥æŸåžã§2018幎床ããæ¯å¹Žéå¬ãããŠããããã«ãœã³ã§ãïŒ
2022幎床 éçºã®äŸ
ðæ²»çã§ã¯ãªãç¡ç æ¯æŽã¢ããªãã¹ã€ããŒããç ãã¬æéã«æ圱ãããããšããšã¢ã¯ã¢ãªãŠã ã
ð±ãã³ã®ããŸã®æ°æã¡ããããïŒãã©ã£ã¡ãªã®ïŒããã¿ã³
ð¬ãå©ãåãã§èªåã®çºãèªæ
¢ã®çºã«ãwell-beingãªããããå
±åµãããµãŒãã¹ãwell-cityã
ð¶èµ€ã¡ããã®è¡åãã°ã§å¥œå¥å¿ãèŠããåã§ãããèµ€ã¡ãã倧åå©ã«ã¡ã©ã
ðãããããšããªãã®"ãŠã§ã«"ããäžç®ã§åããïŒãïœãŸã¡ã®å
æ°ãå¯èŠåããè¡è·¯ç¯ïœ
ãªã©ãªã©ãåæ§çã§é¢çœãéçºãè¡ãããŠããŸããïŒ
ãŠã§ã«ããŒã€ã³ã°ã£ãŠïŒ
å¥åº·ãšã¯ãç
æ°ã§ãªããšãã匱ã£ãŠããªããšããããšã§ã¯ãªãã
èäœçã«ãã粟ç¥çã«ãããããŠç€ŸäŒçã«ãããã¹ãŠãæºããããç¶æ
ã«ããããšããããŸãã
ïŒæ¥æ¬WHOåäŒèš³ïŒ
ãã£ãããšãå¥åº·ã§ä»äºããã©ã€ããŒããå å®ããŠããŠã幞ãããšããç¶æ ãšç解ããŠããŸãð€
ããã«ãœã³ã£ãŠïŒ
äžèšã§ãããšãéçºãããã€ãã³ããã§ãïŒ
ä»ã®ã€ãã³ããšéãç¹åŸŽãšããŠ
- åå è å士ã§ããŒã ãçµæ(ããŒã ã§åå ããããšãå¯èœ)
- éãããæéã®äžã§éçºãè¡ã
- éçºãããã®ã«ã€ããŠçºè¡šãã競ãåã
æè¡åã®ãããªãé¢ä¿ãªããæ§ã ãªèæ¯ãæã£ã人ãšé¢ããããšãåºæ¥ãŸãïŒ
å€ã¯çç«ãå²ãã§ã®å£ãã
ããããœäŒïŒåžå
æ£çïŒ
2023幎床ãéå¬ãäºå®ããŠãããããªã®ã§ããèå³ã®ããæ¹ã¯åå ãæ€èšããŠã¿ãŠã¯ïŒ
2022幎床å
¬åŒããŒã ããŒãž
ããŒã¿é£æºåºç€ãšã¯
ã¹ããŒãã·ãã£ãå®è£ ããäžã§å¿ èŠãšãããŠããèŠçŽ
ãªãã»ã©ïŒð€
ããå°ã詳ããèŠãŠãããŸãããïŒ
â»ããžã¿ã«ç°åéœåžåœå®¶æ§æ³ã®ã€ã¡ãŒãžå³
è¬ã®å€§å°ã«ãããã©ãã€ããŠç©ºãé£ãã§ãããããªå³ãªã®ã§ã
äžéšã§ã¯ã©ãã¥ã¿ãšåŒã°ããŠããŸãã(ãã«ã¹ãæãã§ããã»ã»ã»)
èµ€ãããä»ããéšåãããŒã¿é£æºåºç€ã®ç«ã¡äœçœ®ã«ãªããŸãã
ãã£ããèšãã°ãããŒã¿ããµãŒãã¹å士ãé£æºããŠç掻ã«åœ¹ç«ã€ãµãŒãã¹ãåµåºããããã®åºç€ãšããããšã§ãïŒ
äŸ)é²çœÃä»è·
äœçœ®ããŒã¿ãé¿é£æããŒã¿ãçµã¿åãããŠé¿é£èšç»ãçå®ãããµãŒãã¹Ãä»è·æ¯æŽã¢ããª
âãçœå®³çºçæã«æ¯æŽãå¿
èŠãšããã人ãšæ¯æŽãã人ãã€ãªããããšã§ããå®å
šãªæ®ãããå®çŸïŒ
åèURL
å©çšè ããã¯èŠããªãéšåã§ãããæ°ããªãµãŒãã¹åµåºã®æ ¹æ¬éšåãšããããšã«ãªããŸãïŒ
ããŒã¿é£æºåºç€ãæ§ç¯ããäžã§ãåœãã掻çšãæšé²ãããŠããæè¡ã«FIWAREãšãããã®ããããŸãïŒ
ããã¯EUã§å®æ°ãé£æºãããªãŒãã³ãªå Žã§éçºãé²ããããŠäœããããªãŒãã³ãœãŒã¹ã®ãã©ãããã©ãŒã ã§ãïŒ
以äžã«HPã®æ
å ±ãèŒããŠãããŸãã
ä»åã¯ãã®FIWAREã䜿ã£ãŠåºç€æ§ç¯ãé²ããŠãããŸãïŒ
ããã§ã¯æ©éäœã£ãŠãããŸãããïŒ
âGitHubã®ãªããžããª(ä»å䜿ã£ãyamlãã¡ã€ã«ãå ¥ããŠããŸãïŒ)
å©çšããæè¡
以äžãå©çšããŠåºç€ãæ§ç¯ããŸããïŒ
- Azure AKS(Azure Kubernetes Service)
ããã«ãœã³çµäºåŸãéçºãç¶ããããŒã ããããšããäºã§ã
ä»åŸã®æ¡åŒµã«ã€ããŠãèãããã£ãããšKubernetesã§æ§ç¯ãè¡ããŸããïŒ
- FIWARE
- Orion â ããŒã¿ç»é²åŽãšããŒã¿å©çšåŽã®ä»²ä»æ©èœ(ãããŒã«ãŒæ©èœ)
- MongoDB
- QuantumLeap â æç³»åããŒã¿ã®ç®¡çãšèç©
- CrateDB
- Kong â APIããŒã«ããèªèšŒ
æè¡ã«ã€ããŠã®èª¿æ»
-
Azure AKS
å ¬åŒã®ããã¥ã¡ã³ãããããäžã®æ å ±ãå å®ããŠããã調æ»ã¯é 調ã«é²ã¿ãŸããïŒ -
FIWARE
æ°ããæè¡ãšããããšã§ããããäžã«æ å ±ã»äºäŸãå°ãªãã»ã»ã»
äž»ã«å ¬åŒã®ããã¥ã¡ã³ããåèã«æ§ç¯ãé²ããŠãããŸããïŒ
(以äžã®æ§ç¯ç·šã§ã¯å ¬åŒã«ãæèšãããŠããªãä»æ§ã«èŠãããããããããŠããŸãð)
Azure AKSæ§ç¯
Azure AKSã®æ§ç¯ã¯ããŒã¿ã«äžããè¡ããŸããïŒ
â AzureããŒã¿ã«ã«ãã°ã€ã³
â¡ ããŒã¿ã«äžéšã«ããæ€çŽ¢ããŒã§"Kebernetes ãµãŒãã¹"ãšæ€çŽ¢
⢠以äžã®èšå®ã§AKSãæ§ç¯ïŒ
èšå®å 容
ãµãã¹ã¯ãªãã·ã§ã³ïŒä»»æ
ãªãœãŒã¹ã°ã«ãŒãïŒä»»æ
ã¯ã©ã¹ã¿ãŒåïŒä»»æ
å°åïŒä»»æ(ç§ã¯"Japan East"ã§äœæ)
ããŒããµã€ãºïŒStandard A4 v2
ã¹ã±ãŒãªã³ã°æ¹æ³ïŒæå
ããŒãæ°ïŒ3
â»ãã®ä»ã®èšå®ã¯ããã©ã«ãã§è¡ããŸããïŒ
Azureãæ§ç¯ããŠããããŸã§å°ãæéã¯ããããŸããããåé¡ãªãå®äºããŸããïŒ
â»CLIãããæ§ç¯åºæ¥ãŸãããAzureåå¿è
ã ã£ãã®ã§ãããŒã¿ã«ããäœæããŸããð
Orion,MongoDB,Kongã®æ§ç¯
ãã®3ã€ã®æ§ç¯ã¯ä»¥äžã®èšäºãåèã«æ§ç¯ããŸããïŒ
ã»ãšãã©åãã«ãªã£ãŠããŸã£ãŠããã®ã§ãæè¡ã«æããæ¹ã¯ä»¥äžã®èšäºãèŠãæ¹ãããããããããã§ãð
FIWAREãšç»ååŠçã®é£æº
ããããã¯Azure CLIãçšããŠæ§ç¯ãè¡ã£ãŠããŸãïŒ
äžæºå
- 以äžãã€ã³ã¹ããŒã«ããŸããïŒ
â Azureã«ãã°ã€ã³
azure login --tenant TENANT_NAME
â¡ Kubernetesã«ãã°ã€ã³
az aks get-credentials --resource-group RESOURCE_GROUP_NAME --name AKS_NAME --overwrite-existing
MongoDBæ§ç¯
â MongoDBã¯Helmãå©çšããŠæ§ç¯
helm repo add azure-marketplace https://marketplace.azurecr.io/helm/v1/repo
helm repo update
helm install azure-marketplace/mongodb --name-template mongodb -f ./qiita-fiware-construct/MONGO_DB.yaml
ãã£ãŠããã»ã»ã»ïŒã
ã3å°äžã1å°ãããããã€ãããªããã§ããã»ã»ã»ð ã
ïœåæ°ååŸïœ
ã3å°ãšããããã€ãããŠããïŒã
ãããã€ã«æéããããå Žåãããã®ã§ãåŸ
ã£ãŠã¿ãŸãããïŒ
å
ã«ä»¥äžã®ã¯ã©ã¹ã¿ã®èšå®ãããããšã§ããããã€ãããããšããã£ããããŸããã
â¡ MongoDBã®ã¯ã©ã¹ã¿èšå®
kubectl run mongodb-client --rm --tty -i --restart='Never' --image marketplace.azurecr.io/bitnami/mongodb:4.4.15-debian-10-r2 --command -- \
mongosh admin --host 'mongodb-0.mongodb-headless.default.svc.cluster.local:27017,mongodb-1.mongodb-headless.default.svc.cluster.local:27017,mongodb-2.mongodb-headless.default.svc.cluster.local:27017' \
--eval 'rs.add("mongodb-1.mongodb-headless.default.svc.cluster.local:27017")'
kubectl run mongodb-client --rm --tty -i --restart='Never' --image marketplace.azurecr.io/bitnami/mongodb:4.4.15-debian-10-r2 --command -- \
mongosh admin --host 'mongodb-0.mongodb-headless.default.svc.cluster.local:27017,mongodb-1.mongodb-headless.default.svc.cluster.local:27017,mongodb-2.mongodb-headless.default.svc.cluster.local:27017' \
--eval 'rs.add("mongodb-2.mongodb-headless.default.svc.cluster.local:27017")'
kubectl run mongodb-client --rm --tty -i --restart='Never' --image marketplace.azurecr.io/bitnami/mongodb:4.4.15-debian-10-r2 --command -- \
mongosh admin --host 'mongodb-0.mongodb-headless.default.svc.cluster.local:27017,mongodb-1.mongodb-headless.default.svc.cluster.local:27017,mongodb-2.mongodb-headless.default.svc.cluster.local:27017' \
--eval 'rs.status().members.map(function(e) {return {name: e.name, stateStr:e.stateStr};})'
OrionãšKongã¯ã¬ããªã«æ°ã1ã«ããŠæ§ç¯ããŸããïŒ
çç±ãšããŠã¯ä»¥äžã®2ã€ã«ãªããŸãã
- ããã«ãœã³ã§å©çšãããåºç€ã§ããããããŸã§é«ãå¯çšæ§ãæ±ããããŠããªãã£ããã
- ãªãœãŒã¹ãæãããã
Orionæ§ç¯
èšäºãšããŠã¯é¢çœããªããã©ãç¹ã«åé¡ãªãå®äºïŒ
â»ã¡ãªã¿ã«ãMongoDBã®ãããã€ãããŸããã£ãŠããªããšåèµ·åãç¹°ãè¿ããŸã
â Orionããããã€
kubectl apply -f ./qiita-fiware-construct/ORION_SERVICE.yaml
kubectl apply -f ./qiita-fiware-construct/ORION_DEPLOYMENT.yaml
Kongæ§ç¯
â Kongããããã€
kubectl create -f https://bit.ly/k4k8s
kubectl -n kong scale deployments.v1.apps/ingress-kong --replicas=1
IPã¢ãã¬ã¹ããã®ãŸãŸæãã®ã¯åŸ®åŠã ãšããããšã§ããã¡ã€ã³ãååŸïŒ
â¡ DNSèšå®
AzureããŒã¿ã«äžã§"App Service ãã¡ã€ã³"ãšæ€çŽ¢ããäžæã®ãã¡ã€ã³åãæåŸïŒ(人çåð)
â»ãã¡ã€ã³1ã€ã«ã€ãã11.99ç±³åœãã«ããããŸã
APIããŒã䜿ã£ãæäœéã®èªèšŒãèšå®ããŸãïŒ
⢠Kongã®èšå®
(i) HTTPSéä¿¡ãšããããã«Cert-managerããããã€ããŸãã
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.2/cert-manager.yaml
(ii) åºç€ãå©çšããããšããéä¿¡ãKongãééããããã«èšå®
az network dns record-set a add-record --resource-group DNS_RESOURCE_GROUP --zone-name "DOMAIN_NAME" --record-set-name "HOST_NAME" --ipv4-address "KONG_EXTERNAL_IP"
(iii) TLS蚌ææžãååŸ
kubectl apply -f ./qiita-fiware-construct/CERTMANAGER_CLUSTERISSURE.yaml
(iv) HTTPSéä¿¡ã®ã¿ãèš±å¯ããããã«èšå®
kubectl apply -f ./qiita-fiware-construct/KONG_INGRESS.yaml
(v) APIããŒã䜿ã£ãŠéä¿¡ããèšå®
kubectl create secret generic kong-keyauth --from-literal=kongCredType=key-auth --from-literal=key=API_KEY
kubectl apply -f ./qiita-fiware-construct/KONG_CONSUMER.yaml
kubectl apply -f ./qiita-fiware-construct/KONG_PLUGINS.yaml
(vi) Orionãžã®éä¿¡èšå®
- ä»åã¯ç¹ã«APIã«ç¹ã«å¶éãèšããªã
- ãã¹ãåã®èšå®
kubectl apply -f ./qiita-fiware-construct/ORION_INGRESS.yaml
QuantumLeap,CrateDBã®æ§ç¯
QuantumLeapæ§ç¯
Orionã®æ§ç¯ãåèã«ããŠyamlãã¡ã€ã«ãäœæãããããã€
Quantumleapããããã€
ãããã€ãè¡ã
kubectl apply -f ./qiita-fiware-construct/QUANTUMLEAP_SERVICE.yaml
kubectl apply -f ./qiita-fiware-construct/QUANTUMLEAP_STATEFULSET.yaml
QuantumLeapãžã®éä¿¡èšå®
- APIã¯GETã®ã¿ãèš±å¯
- ãã¹ãåãèšå®
kubectl apply -f ./qiita-fiware-construct/QUANTUMLEAP_INGRESS.yaml
CrateDBæ§ç¯
ãããæã倧å€ã ã£ãæ§ç¯ã§ãð
ãHelmã䜿ã£ãŠ1çºæ§ç¯ãã¡ãããïŒã
â èŠã€ãã£ã䜿ããããªHelmãã£ãŒãã¯2ã€ïŒ
1ã€ç®ãå€éšããå ¥ãããšã®ã§ããããŒããéæŸããŠããŸããããä»åã®æ§ç¯ã«åããªã
2ã€ç®ããããã€åŸãäœåºŠãåèµ·åãç¹°ãè¿ã(åå äžæ)
2ã€ç®ã¯ããèŠãããversionã0.2.0ã§ãããð
çµå±ãèªåã§yamlãã¡ã€ã«ãæžããŸãã(ç¬)
CrateDBããããã€
kubectl apply -f ./qiita-fiware-construct/CRATEDB_SERVICE.yaml
kubectl apply -f ./qiita-fiware-construct/CRATEDB_DEPLOYMENT.yaml
CrateDBãè€æ°å°ã§åé·åãããã£ãã®ã§ãããã¯ã©ã¹ã¿ãŒåãããå¿
èŠããããŸããã
ããããã¯ã©ã¹ã¿ãŒåãããããã«èšå®ãå°ã
ããããããæéãããã£ãŠããŸããŸãð€
ä»åã¯ããã«ãœã³ã§ã®éèŠãšæ§ç¯ã®æéãèããŠ1å°ã®æ§æã§é²ããããšã«ããŸããã
æç³»åããŒã¿ãæ¿å ¥ããããã®èšå®
QuantumLeapãžæç³»åããŒã¿ãçŽæ¥æ¿å
¥ããããšã¯åºæ¬çã«ã¯ãªãããã§ãã
OrionãéããŠãããŒã¿æ¿å
¥ãããããã以äžã®èšå®ãè¡ããŸãïŒ
Orionãžã®Subscriptionèšå®
curl -v localhost:1026/v2/subscriptions -s -S -H 'Content-Type: application/json' -X POST -d @ ./qiita-fiware-construct/SUBSCRIPTION_SETTING.json
â»ããŒã¿ã®åãåºãã«ã€ããŠã®æ³šæäºé
QuantumLeapã«ããŒã¿ãæ¿å
¥ããéã«Orionãããã©ã«ãã§"fiware-ServicePath: /"ãšèšå®ãããŸãïŒ
fiware-ServicePathãæå®ããã«ããŒã¿ååŸãè©Šã¿ãŠããäœãèŠã€ãããŸããïŒ
å
¬åŒã®ããã¥ã¡ã³ãã«ãæèšãããŠããããæ§ç¯ã«åé¡ããããšæããäœåºŠãäœåºŠãèŠçŽãããŠããŸããã»ã»ã»ðª
å ·äœçãªå©çšæ¹æ³ã«ã€ããŠã®ããã¥ã¢ã«ãäœæïŒ
ãããã«
ä»åã¯ããŒã ã¡ã³ããŒã«å©ããŠé ãããšããããŸãããã
åºæ¬çã«ã¯äžäººã§æ°ãããæ
å ±ã®å°ãªãFIWAREã䜿ã£ãåºç€ã®æ§ç¯ãè¡ããŸããã
æè¡ä»¥å€ã®éšåã§åŠã¶ããšãå€ãããšãŠãè¯ãçµéšãšãªããŸããïŒ
ä»å¹ŽåºŠæ«ã«ãŸãšãããã®ãèšäºãšããŠæçš¿äºå®ã§ãã®ã§ãã楜ãã¿ã«ð
(ä»å¹ŽåºŠæ«ã«æçš¿äºå®)
ãã®èšäºãããŒã¿é£æºåºç€ã掻çšããããšããŠããæ¹ã®å©ãã«ãªããã°å¹žãã§ãã
ããããšãããããŸããïŒ