3.0ã€ã®ããšããŸããŸãæããã«ãªã£ãŠããã®ã¯ãWeb 3.0(å¥åãweb3ã)ãéããªãç»å Žãã2022幎ã«å®å šã«ç»å ŽããããšãæåŸ ãã人ãããŸãã Web 3.0ã¯ãŸããã€ã³ã¿ãŒãããã®ã³ã¢ã¡ã«ããºã ã®å€ãã倿ŽããããšãçŽæããŸãã éèŠãªèŠçŽ ã®1ã€ã¯å°æ¹åæš©åã§ãã 仿¥ã®ã¢ããªã±ãŒã·ã§ã³ã®å€ãã¯äžå åãããŠãããåœå±ã¯1ã€ã®ãã©ã€ããªãµãŒããŒãä»ããŠããŒã¿ãæäŸããã³ç®¡çããŠããŸãããWeb 3.0ã¢ããªã±ãŒã·ã§ã³ã¯åæ£ã·ã¹ãã ãæŽ»çšããŸãã
JTãªãªãªãããŒãã³ãšã¬ãã¯ãã¯ãªã¹ã¿ã¹ããªãã°ã¹ã¯ããããã®åŸåãåæããŸãã 圌ãã®ãã¬ãŒã³ããŒã·ã§ã³, ãDockerãšWeb 3.0 â Dockerã䜿çšããŠåæ£åã€ã³ãã©ã¹ãã©ã¯ãã£ã掻çšãã忣åã¢ããªãæ§ç¯ããŸããã ãããã£ãŠã圌ãã¯ã³ã³ããåãšããŒãªã³ã°ããã®ç§»è¡ãã©ã®ããã«å®¹æã«ãããã«ã€ããŠè°è«ããŸããã
Â

Â
ãŸãã忣åããŒã¿ã®ä¿åãšäœ¿çšã«ã€ããŠãç¬èªã®èæ ®äºé ããããŸãã ãããã©ã®ããã«æŽ»çšããŸãã? ãã®ã¢ãããŒãã¯ã忣åããŒããŸãã¯ãã§ãã¬ãŒãããã·ã¹ãã ã§ã©ã®ããã«æ©èœããŸãã? ããã«ã¢ãããŒãããããã®åªããæ¹æ³ã®1ã€ã«ã€ããŠèª¬æããããã«ç°¡åãªå¥ã®ãŠãŒã¹ã±ãŒã¹ã®æŠèŠã説æããŸãã é£ã³èŸŒã¿ãŸãããã
äŸ #1: ã¹ãã¬ãŒãžãã±ããããã£ã¬ã¯ããªãšããŠäœ¿çšãã
忣åã¢ããªã±ãŒã·ã§ã³(dApp)ããããã€ããããã»ã¹ã¯ãåŸæ¥ã®æ¹æ³ãšã¯å°ãç°ãªããŸãã ãŠãŒã¶ãŒã¯ãè€æ°ã®ãã©ã³ãã£ã¢ ããŒã (ãŸãã¯ãã§ãã¬ãŒã·ã§ã³ ã¹ãã¬ãŒãž ããŒã) ã«åæ£ãããã¢ã㪠ããŒã¿ã«ã¢ã¯ã»ã¹ããŸãã 忣ãããŠããããããã®ããŒã¿ã¯å³å¯ã«å§ä»»ãããã¢ã¯ã»ã¹ãæã€äžå€®ãµãŒããŒã«ã¯ååšããŸãããÂ
ããã«ã¯ãã¹ãã¬ãŒãžããŒããšãŠãŒã¶ãŒèªèº«ã®éã®å ±æã²ãŒããŠã§ã€ããªããžã®ãããªãã®ãå¿ èŠã§ãã Martonãå ±æããããã«ããã®å ±æããªããžã¯ããŒã«ã«ããªããžãšãã€ãã£ããµããŒãã§ããŸãæ©èœããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã¯ãKubernetes ã§ã䜿çšã§ããKrista ã¯ã㢠#1 ã§èª¬æããŸããã ããã§ã¯ããã®äŸã«åãçµã¿ãä»ã®ããŒã«ã§åæ§ã®çµæãéæããæ¹æ³ã«ã€ããŠèª¬æããŸãã
Â

åæ æ¡ä»¶
- ã¢ã¯ãã£ã㪠Kubernetes v1.13+ ã®ãããã€
- ããªãã®ããŒã¿ããŒã¹ (PostgreSQLãã®å Žå)
- 忣åã¯ã©ãŠãã¹ãã¬ãŒãž(DCS)ãœãªã¥ãŒã·ã§ã³
- The Container Storage Interface (CSI) for S3 ( ctrox ã«ãããGitHub çµç±)
Â
Kubernetes 1.13+ ã¯ãCSI ãšã®äºææ§ã®ããã«å¿ èŠã§ãã Postgresã䜿çšãããšãããŒã¿ãä»ã®ã¢ã¯ã»ã¹å¯èœãªå Žæã«ä¿åããã³ããã¯ã¢ããã§ããããããŠãŒã¶ãŒã«ãã¡ãªããããããŸãã DCS ã¯ããã®ããã¯ã¢ããã®å ŽæãšããŠæ©èœããŸãã æè¯ã®éšåã¯ããããããªãããã§ã«ç²ŸéããŠããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã§æ©èœããããšã§ãã
DCS ãã±ããã Kubernetes ã³ã³ããå ã«ããŠã³ããã
ã¹ãã¬ãŒãžã忣åããããã«ãCSI for S3 ã䜿çšããŠãS3 ãšã³ããã€ã³ãã§ã¯ãªãç¬èªã®ã²ãŒããŠã§ã€ããã€ã³ãããŸãã CSIã®äž»ãªå©ç¹ã¯ãããã±ãããåçã«å²ãåœãŠããã¥ãŒãºããŠã³ããä»ããŠä»»æã®ã³ã³ããã«ããŠã³ããããããšãã§ããããšã§ãã
ãŸããKubernetes (K8s) ãå¿
èŠã§ã ã¹ãã¬ãŒãžã¯ã©ã¹ YAML ãã¡ã€ã«ã«ãšã¯ã¹ããŒãããŸãã Krista ã®äŸã«åŸã£ãŠãåçŽãªæ§æãã¡ã€ã«ãäœæããã«ã¯ãããã€ãã®ã㌠ãã£ãŒã«ããæå®ããå¿
èŠããããŸãã æ¬¡ã®ãããªèŠçŽ ãæå®ããªãã apiVersion ãã㊠ã¡ã¿ããŒã¿ éèŠãªã®ã§ãããã€ãã®éèŠãªãã£ãŒã«ãã«çŠç¹ãåœãŠãŸãããã
ããããžã§ããŒâ æ°žç¶ããªã¥ãŒã ã®ããããžã§ãã³ã°ã«äœ¿çšããããªã¥ãŒã ãã©ã°ã€ã³ã K8s ã«æç€ºããŸãã ãã®å Žåã¯ã次ã®ããã«æå®ããŸãã ch.ctrox.csi.s3-driver S3 ã® CSI ãã¿ãŒã²ããã«ããŸãã Kubernetesã«ã¯å€æ°ã®å éšãªãã·ã§ã³ãä»å±ããŠããŸããããã®å€éšãªãã·ã§ã³ã瀺ãããšãã§ããŸã ããããžã§ã㌠ãããžã§ã¯ãã§ã¯ãå ¬åŒã®K8sããããžã§ãã³ã°ä»æ§ã«åŸããŸããããŠã³ã¿ãŒâããŒã«ã«ãã¯ã©ãŠãããŸãã¯ä»®æ³ãã¡ã€ã«ã·ã¹ãã ãéžæãããã·ã³ã®ãã£ã¹ã¯ãšããŠããŠã³ãããããã«K8sã«æç€ºããŸãã ã¯ãªã¹ã¿ã¯æå±ããŠããŸã rã¯ããŒã³ãããã§ã¯ããã䜿çšããŸãã ã¯ããŒã³ ã¯ãã¯ã©ãŠãããŒã¹ã®ãã¡ã€ã«ã管çããããã®ã³ãã³ãã©ã€ã³ããã°ã©ã ã§ãããAmazon S3ããã®ä»ã®40ãè¶ ãããã©ãããã©ãŒã ãšçµ±åããéã«éåžžã«éèŠã§ãã ããšãã°ãGoogle CloudãDigital Ocean SpacesãMicrosoft Azure Blob Storage ãªã©ããå§ãããŸãã ãã ãããã®å Žåã¯S3ã䜿çšããŸããbucketâã³ã¢ãªããžã§ã¯ããæ ŒçŽãããŠããå ŽæãK8sã«æç€ºããŸãã ãã±ããã«äžæã®ååãä»ããŸã (ä»»æã®ååã«ããããšãã§ããŸã)ã
Â

Â
ãŸããããã€ãã®ç§å¯ãåŒãåºãå¿
èŠãããããšã«æ°ä»ãããããããŸããã ããã«ã¯ã ã·ãŒã¯ã¬ãã.yml ããªãã®.envsãå«ããã¡ã€ã«(ãŸãã¯åæ§ã®åå)ã§ãã Kubernetes ã®ããã¥ã¡ã³ã 次ã®å®çŸ©æžåŒãæå®ããŸãã
apiVersion: v1
kind: secret
metadata:
name: mysecret
type: Opaque
stringData:
config.yaml:
apiUrl: "https://my.api.com/api/v1"
username: <user>
password: <password>
Â
ã³ãã³ãã䜿çšããŠãæå®ãããã¹ãŠã®ã·ãŒã¯ã¬ãã kubectl apply -f ./secret.yaml ãäœæã§ããŸãã ããã«ãã³ãã³ãã䜿çšããŠã·ãŒã¯ã¬ãããæ£åžžã« kubectl get secret mysecret -o yaml äœæãããããšã確èªã§ããŸãã ããã«ãããäœææå»ãåãåå空éãããã³ãªãœãŒã¹ã®ããŒãžã§ã³ã«é¢é£ããæçšãªè©³çްãåºåãããŸãã mysecret æ§æãã¡ã€ã«å
ã®ã¡ã¿ããŒã¿åãšäžèŽããããã«å€æŽãããããšã«æ³šæããŠãã ããã
ããŒã¿ããŒã¹ããã»ã¹ã®ã»ããã¢ãã
次ã«ããã®æŒç¿ã§ã¯ Postgres ããŒã¿ããŒã¹ã䜿çšããŸãã ãããã£ãŠã pg_dump ãã¹ãŠã®ããŒã¿ããŒã¹ ãªããžã§ã¯ããããã¯ã¢ãã ãã¡ã€ã«ã«è»¢éããŸãã ãã®æ¬¡ã®éèŠãªã¹ãããã¯ãã¢ããªã±ãŒã·ã§ã³ã忣åãããŠããã«ããããããããã®ããŒã¿ã«ã¢ã¯ã»ã¹ããã®ã«åœ¹ç«ã¡ãŸãã [ ãã£ãã«ãŒ (copy)ã³ãã³ãããåªå
ãã£ã¬ã¯ããªãšçµã¿åãããŠãã¿ãŒã²ããDCSããŠã³ããæå®ããŸãã ãã ããå¥ã®ãããžã§ã¯ãã§ã¯ãMariaDBãMySQLããŸãã¯äœ¿ãæ
£ãããã®ä»ã®äž»èŠãªããŒã¿ããŒã¹ãã¯ãããžãŒã䜿çšããããšãéžæã§ããŸãã
Â

Â
ã¢ããªã±ãŒã·ã§ã³ã¯ãDCS ããªã¥ãŒã å ã«å«ãŸããããŒã¿ã«ã¢ã¯ã»ã¹ã§ããŸãã
Cronãžã§ãã®å®çŸ©
ããã«ãPostgres ããã¯ã¢ããã¯ã¢ã¯ãã£ããªã³ã³ãããŒãšããŠååšãããããããŒã¿ã®ææ°æ§ã確ä¿ããããã«äžè²«ããŠå®è¡ãããŸãã ããã§ã ã¯ãã³ãžã§ã å
¥ã£ãŠããŸãã é¢é£ä»ãããã YAML ãã¡ã€ã«ãéšåçã«èŠããããã«ãªããŸãã
Â

Â
ãªããªã ã¯ãã³ãžã§ã ã¯ã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯ã§ãããããå®è¡ããé »åºŠãæå®ããããšãéèŠã§ãã ãã®é »åºŠã¯ã èšç» çã ã¯ãªã¹ã¿ã¯ãã¢ã°ã¬ãã·ããªãæ¯å1åã®ã¯ãªããã§å®è¡ããããã«ä»äºãèšå®ããŠããŸããããã£ãšä¿å®çãªãã®ãéžã¶ããšãã§ããŸãã ããªã·ãŒããŠãŒã¶ãŒã®ããŒãºãããã³ãææ°ã®ãããŒã¿ãããã·ã¥ããããšã®çžå¯ŸçãªéèŠæ§ã¯ããã®é »åºŠã決å®ããã®ã«åœ¹ç«ã¡ãŸãã
æåŸã«ãããªãã«ç¹å¥ãªæ³šæãæã£ãŠãã ãã ç°å¢ ç°çã ãããã䜿çšããŠãã³ã³ãããŒã® DNS ãšã³ã㪠ãã€ã³ããæå®ããCSI ã®æ°žç¶ããªã¥ãŒã èŠæ±ã«é¢é£ããããŠã³ã ãã€ã³ããéžæããŸãã
Â

Â
ããªããå²ãåœãŠãŸã PG_HOST ãã® DNS ãšã³ããªãæãé©åãªå€ã ãããã䜿çšããå¿
èŠããããŸã æ¡åŒµãããããŒã¿ã¯ãšãª ã¯ãªã¹ã¿ã®ããã«ãããã«ããã¢ã¯ãã£ããªPostgresãµãŒãã¹ã«å¹æçã«é£çµ¡ã§ããŸãã
ãã¹ãŠãã¹ãã³ã¢ãã
ãã¹ãŠã®äŸåé¢ä¿ãæŽã£ãããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã¹ãã¬ãŒãžãæ£ããæ¥ç¶ãããŠããããšã確èªããŸãã ãã®ããã»ã¹ãéå§ããã«ã¯ã kubectl apply -f base åœä»€ã ããã«ãããåºæ¬ K8s ãªãœãŒã¹ãäœæãããŸããÂ
次ã«ããµã³ãã« ã¢ããªã±ãŒã·ã§ã³ãé©çšããŸãã StorageClass.yaml ãã¡ã€ã«ãPostgresããã¯ã¢ããã·ã§ã«ã¹ã¯ãªãããããã³ ã¯ãã³ãžã§ã.ãå
¥åããŸã kubectl apply -f ex ã³ãã³ãã§å®è¡ããŸããÂ
ã€ã³ã¿ãŒãã§ã€ã¹ã«ã¯ã次ã®ããšã確èªããåºåã衚瀺ãããŸãã ã¯ãã³ãžã§ã ããã³ CSI æ°žç¶ããªã¥ãŒã èŠæ± (å¡©ã) ãäœæãããŸããÂ
æåŸã«ãããã«ããã€ãã®æé ãå®è¡ã§ããŸãã
-
- ã䜿çšã㊠Kubernetes ã€ãã³ããããŒã«ãã
kubectl get events --sort-by='.metadata.creationTimestamp' --æèšåœä»€ã ããã«ãããPVC ããªã¥ãŒã ãæ£åžžã«ããããžã§ãã³ã°ãããããã¯ã¢ãã ãžã§ããéå§ãããŠããããšã確èªãããŸãã - ã䜿çšããŠãã³ã³ãããŒãå®è¡äžã§äœæãããŠããããšã確èªããŸãã
kubectl get podsåœä»€ã - ããäžåºŠå®è¡ããŠãäž¡æ¹ã®ã³ã³ãããŒãæå³ãããšããã«å®è¡
kubectl get podsãããŠããããšã確èªããŸãã
- ã䜿çšã㊠Kubernetes ã€ãã³ããããŒã«ãã
確èªã®æåŸã®ã¬ã€ã€ãŒãšããŠããã°ã調ã¹ãŠããã¹ãŠãé©åã«å®è¡ãããŠããããšã確èªããããšãã§ããŸãã ããã«ã uplink ls --access [accessgrant] ææ°ã®ããŒã¿ããŒã¹ããã¯ã¢ããã確èªããã³ãã³ãã ã¢ããªã±ãŒã·ã§ã³ã忣åã¹ãã¬ãŒãžã«æ£åžžã«æ¥ç¶ã§ããŸããã
Â
[ããã¯ã¹ã¿ã€ã = "ã·ã£ããŠ"]ã¯ã€ãã¯ãã³ã: ã³ãã³ããçããããå Žåã¯ããšã€ãªã¢ã¹ã䜿çšãããšäŸ¿å©ã§ããæ¯å kubectl ãšå
¥åãã代ããã«ãCLI ã« alias k=kubectl ãå
¥åããåŸã« k ãå
¥åã§ããŸãã/ããã¯ã¹]
Â
ããã¯çŽ æŽãããããšã§ããããã€ãã£ãçµ±åã«äŸåããå¥ã®ã¢ããªã±ãŒã·ã§ã³ãããå Žåã¯ã©ãã§ããããã 2çªç®ã®äŸãèŠãŠã¿ãŸãããã
äŸ #2: Docker ã¬ãžã¹ããªã®äœ¿çš
ããã«ãŒã¬ãžã¹ã㪠ã¯ãã¹ã±ãŒã©ãã«ã§ã¹ããŒãã¬ã¹ãªãµãŒããŒåŽã¢ããªã±ãŒã·ã§ã³ã§ãããDocker ã€ã¡ãŒãžãæ ŒçŽããã³é åžã§ããŸãã ç»åã奜ããªããã«å ±æãããå Žåããç»åã¹ãã¬ãŒãžãå³å¯ã«å¶åŸ¡ãããå Žåã«äŸ¿å©ã§ãã
ãããããããšã«ãDCSã®ã¬ãžã¹ããªã®èšå®ã¯éåžžã«ç°¡åã§ãã ã¬ãžã¹ããªèšå® YAML ãã¡ã€ã«å ã§ã次ã«ç€ºãããã«ãDCS ãã³ããŒãã¢ã¯ã»ã¹èš±å¯ããã±ãããå«ãã¹ãã¬ãŒãž ã»ã¯ã·ã§ã³ãæå®ããŸãã
Â

Â
次ã«ãã䜿çšããŠã¬ãžã¹ããªãèµ·åããå¿
èŠããããŸã registry serve cmd/registry/config-dev.yml åœä»€ã åºåã¯æ¬¡ã®ããã«ãªããŸãã
Â

Â
次ã«ãéžæããç»åããã«ããŸãã ãã®äŸã§ã¯ã次ã®ã³ãã³ãã䜿çšããŠææ°ã®ãã®ããã«ããŸã ã¢ã«ãã€ã³ ç»åïŒ
ããã«ãŒãã«ã¢ã«ãã€ã³:ææ°
Alpineã€ã¡ãŒãžã¯ããµã€ãºãå°ãããå®å
šãªããã±ãŒãžãªããžããªã«ã¢ã¯ã»ã¹ã§ãããããæãŸãããã®ã§ãã ãã ããå¿
èŠã«å¿ããŠããããžã§ã¯ãã«é©ããå¥ã®ç»åã䜿çšã§ããŸãã ãã®åŸã次ã®ããšãè¡ãå¿
èŠããããŸã ãã®ç»åã«äžæã®ååãä»ãã.ããã¯åŸã§åœ¹ã«ç«ã¡ãŸãã ãã®ã€ã¡ãŒãžãã¬ãžã¹ããªã«ããã·ã¥ããŸãã docker push image.dcs.localhost:5000/alpine:[tag åå] åœä»€ã ãã®ããã»ã¹ã¯ãå®äºãããŸã§ã¬ã€ã€ãŒããšã«è¡ãããŸãã
次ã«ãã¢ãããªã³ã¯ããŒã«ã䜿çšããŠããã¹ãŠãã¬ãžã¹ããªå
ã«ããããšã確èªããŸãã å
¥ã ã¢ãããªã³ã¯ ls --access [ã¢ã¯ã»ã¹ã°ã©ã³ã] sj://registry/docker/registry/v2/repositories/alpine ãã®ããã»ã¹ããžã£ã³ãã¹ã¿ãŒãããã«ã¯ãAlpineãªããžããªã®ãªã¹ããåŒã³åºããŸãã
Â

Â
远å / åŸ ã¢ã«ãã€ã³ ã¬ã€ã€ãŒããããã§ã¹ããªã©ã®è¿œå é
ç®ãäžèŠ§è¡šç€ºããŸãã ã¿ããã³ã°ãªã³ _manifests/ã¿ã° ã¿ã°ãã£ã¬ã¯ããªãè§£æããŸãã
äžäžïŒããã§ãDocker ã¬ãžã¹ããªçšã®åæ£åã¹ãã¬ãŒãž ãœãªã¥ãŒã·ã§ã³ãæ£åžžã«ç¢ºç«ãããŸããã
çµè«
Web 3.0ã®æ®åã¯ãŸããŸã匷ããªã£ãŠããŸãã æšå¹Žã ãã§ãã 34,000人以äžã®éçºè ã ãªãŒãã³ãœãŒã¹ã®Web 3.0ãããžã§ã¯ãã«è²¢ç®ããŸããã ãããã£ãŠã忣åã¹ãã¬ãŒãžã®æ©æµãåããããšãã§ããå€ãã®æ¥çãšãŠãŒã¹ã±ãŒã¹ããããŸãã ãã®ããŒãºã¯ãWeb 3.0ãæšæºã«ãªãã«ã€ããŠé«ãŸãã§ãããã Dockerãå©çšããŠãã¹ãã¬ãŒãžã¡ã«ããºã ãããç°¡åã«èšå®ããããšãã§ããŸãã ã³ã³ãããšWeb 3.0ã®åæ£åã¯éè€ããŠãããããDockerããŒã¹ãšéDockerããŒã¹ã®äž¡æ¹ã§ãããã«å€ãã®ã¢ããªã±ãŒã·ã§ã³ãåæ§ã®ã¢ãããŒããæ¡çšããããã«ãªããŸãã
ã¡ã³ããã³ã¹ãªãã§ããç°¡åã«ãªãœãŒã¹ããã¹ããããã§ãã? Docker Hub ãããžã§ã¯ããšããŒã ã®ç»åã®ããã®äžå åãããå ±åã¹ãã¬ãŒãžãæäŸããŸãã ã€ã¡ãŒãžã Docker Hub ã«ããã·ã¥ããŠãã«ããŠã³ã§ããŸãã Docker Hub ã¯ã Docker Desktop å±éã®ã·ãŒã ã¬ã¹ãªç®¡çã容æã«ããŸãã æ¬¡ã®dAppã«DockerãæŽ»çšããããšãèšç»ããŠããå ŽåãDocker Desktopã®GUIã䜿çšãããšãã³ã³ãããšã¢ããªã±ãŒã·ã§ã³ã®ç®¡çããã»ã¹ãç°¡çŽ åãããŸãã