Slide 1

Slide 1 text

2025/06/04ʢਫʣTechBull LT&ަྲྀձ ʲྩ࿨࠷৽൛ʳ ؾܰʹ͸͡ΊΔࣗ୐αʔόʔΛࢧ͑Δٕज़

Slide 2

Slide 2 text

resource “human” “this” { name = “Kazuma Inamura”ɹ company = “Medley, Inc.” role = “SRE” hobbies = [ “ride a motor bike”, “camping”, “playng the guitar” ] tags = { sns_x = “kzm0211” github = “inamuu” } }

Slide 3

Slide 3 text

ࠓ೔͸ࣗ୐αʔόʔʹؔ͢Δ࿩Λ͠·͢

Slide 4

Slide 4 text

ࠓ೔ͷΰʔϧ 👉ࣗ୐αʔόʔະܦݧͷਓʹ͸ɺࣗ୐αʔόʔʹڵຯ Λ΋ͬͯ΋Β͏͜ͱ 👉طʹ΍͍ͬͯΔਓʹ͸࢖͍ͬͯΔٕज़ͷڞ༗

Slide 5

Slide 5 text

ࣗ୐αʔόʔมભ 2010೥ࠒɿϊʔτPCͰLAMP →ɹΠϯϑϥΤϯδχΞΛ໨ࢦͨ͢Ίʹ 2012೥ࠒɿλϫʔܕαʔόʔͰKVMɹ→ɹKVMΛཧղ͢ΔͨΊʹ 2016೥ࠒɿλϫʔܕαʔόʔͰγϯϓϧͳLinux؀ڥɹ→ɹIaCΛษڧ͢ΔͨΊʹ 2018೥ࠒɿλϫʔܕαʔόʔͰHyper−Vɹ→ɹ͜ͷลΓ͔Βͪΐͬͱ೤͕ྫྷΊΔʢAWS͕ϝΠϯʣ 2020೥ࠒɿ͘͞ΒͷVPS→Conohaɹ→ɹলྗԽ͢ΔͨΊʹVPS΁ 2025೥ࠓɿϛχPCͰࣗ୐αʔόʔΛӡ༻

Slide 6

Slide 6 text

2025೥6݄ݱࡏͷࣗ୐αʔόʔߏ੒ ASRock X300ϕΞϘʔϯΩοτ Router(10Gps), WiFi AccessPoint NAS x 2୆ʢ8TB, 2TBʣ

Slide 7

Slide 7 text

ެ։ʹ޲͚ͨ࠷௿ݶͷ࡞ۀʢNWʣ • άϩʔόϧIPΞυϨεͷݻఆ • ༗ঈ • Ξαώωοτ͸ੲ͸880ԁͩͬͨʢࠓ͸1980ԁͰ஋্ ͛ʣ • ·ͨ͸ɺDDNSͳͲͷ࢓૊Έͷಋೖ • ͔ͭͯDynDNSͱ͍͏αʔϏεͰ͸ແঈͰ࢖͕͑ͯͨࠓ͸ ༗ঈ • BuffaloͳͲ΋ઐ༻ͷDDNSαʔϏε͕͋Δ • ແྉͰؤுΔํ๏΋͋Δʢࠓճ͸ͪ͜ΒΛઆ໌͠·͢ʣ

Slide 8

Slide 8 text

ެ։ʹ޲͚ͨ࠷௿ݶͷ࡞ۀʢNWʣ • ϧʔλʔʹΑΔ੩తIPϚεΧϨʔυ • ଟ͘ͷίϯγϡʔϚʔػͰઃఆՄೳ • ը໘ͰϓϥΠϕʔτIPͱϙʔτΛඥ͚ͭΔ͚ͩ

Slide 9

Slide 9 text

ެ։ʹ޲͚ͨ࠷௿ݶͷ࡞ۀʢυϝΠϯʣ • υϝΠϯΛͲ͔͜Ͱऔಘ • DNS͸API͕࢖͑Δͱ͜Ζ͕͍͍ʢGUI ͚ͩͩͱ৭ʑ΍ΓͮΒ͍, ޙड़ʣ • Amazon Route53 ͸஋ஈ͕҆Ձͩ ͠ɺIaCͰ͖ΔͷͰΦεεϝ

Slide 10

Slide 10 text

ASRock X300 ࣗ୐αʔόʔߏ੒

Slide 11

Slide 11 text

VM؅ཧ • VM؅ཧ͸Cockpitͱ͍͏OSSʢLGPLϥΠηϯεʣ • VNCίϯιʔϧ΋͋Δɺ͋ͱͰεϖοΫ΍ετϨʔδΛม͑Δͷ΋؆୯ • ը໘ϙνϙνͰOK

Slide 12

Slide 12 text

Kubernets Cluster • SingleMaster, Controle Plane x 2 • Metallb → IP ΞυϨεͷࣗಈׂΓ౰ͯ • nginx ingress controller → ෳ਺HostʢυϝΠϯʣͷ؅ཧ • cert manager → ূ໌ॻ؅ཧ • cronjob → AWS ECR ΁ΞΫηε͢ΔͨΊͷSessionTokenͷऔಘɺάϩʔόϧIPͷߋ৽ΛRoute53΁

Slide 13

Slide 13 text

Deploy 1. هࣄϑΝΠϧͷ࡞੒ 2. GitHub΁Push 3. GitHub ActionsͰbuildͯ͠ECR΁Push 4. Deployʢࠓͷͱ͜ΖखಈͰkubectlΛ࣮ߦ → FluxCDΛ ݕ౼தʣ

Slide 14

Slide 14 text

IPΞυϨεͷߋ৽ 1. ConfigMapʹ ShellScriptΛه ड़ 2. CronJobͰRoute53 ͷϨίʔυΛఆظత ʹߋ৽ #!/bin/bash set -euo pipefail IP=$(curl -s https://checkip.amazonaws.com) aws route53 change-resource-record-sets --hosted- zone-id "XXXXXXX" --change-batch "{ \"Comment\": \"Auto update DDNS\", \"Changes\": [{ \"Action\": \"UPSERT\", \"ResourceRecordSet\": { \"Name\": \"inamuu.com.\", \"Type\": \"A\", \"TTL\": 300, \"ResourceRecords\": [{\"Value\": \"$IP\"}] } }] }"

Slide 15

Slide 15 text

ࣗ୐αʔόʔͷϝϦοτ w ҆Ձʢ࠷ۙͩͱߴੑೳͳϛχ1$͕୔ࢁചͬͯΔ ͷͰಋೖ͠΍͍͢ʣ w "84΋3PVUFͱ&$3͚ͩͳΒ݄ʑ਺ඦԁఔ౓ ʢࠓͷͱ͜Ζԁ͘Β͍ʣ w ࣗ෼ͷ޷͖ͳ؀ڥ΍γεςϜ͕࡞ΕΔʢ(16ͭ ΑͭΑʹͯ͠--.Ϛγϯʹͯ͠΋ྑ͠ɺϫʔΫ ϑϩʔϚγϯʹͯ͠΋ྑ͠ɺ/"4Ͱେࣄͳσʔλ Λ؅ཧͯ͠΋ྑ͠ʣ

Slide 16

Slide 16 text

ࣗ୐αʔόʔͷϝϦοτ w ٕज़ͷ޲্ʹͭͳ͕Γ΍͍͢ʢյ͠ ͯ΋୭ʹ΋ౖΒΕͳ͍ͷͰτϥΠ͠ ΍͍͢ʣ w ࣗݾߠఆײ͕͕͋ΔʢԿ͔ݏͳ͜ͱ ͕͋ͬͯ΋·͊ࣗ୐ʹΫϥελʔ͋ Δ͠ʣ

Slide 17

Slide 17 text

ࣗ୐αʔόʔͷσϝϦοτ ಛʹ͋Γ·ͤΜʢݸਓͷݟղʣ ిؾ୅͕ͪΐͬͱ͔͔Δ͘Β͍ ˞աڈɺࢠͲ΋͕খ͍࣌͞ʹɺޫΔ-&%ʢిݯϘ λϯʣ͕ؾʹͳΓɺ௕ԡͯ͠͠ڧ੍γϟοτμ΢ϯ ͯ͠͠·͍ɺαΠτ͕ఀࢭ͢Δͱ͍͏Πϯγσϯτ ͕͋ͬͨͷͰ͝Ո଒͕͍Δ৔߹͸஫ҙ͕ඞཁ😇

Slide 18

Slide 18 text

ϩʔΧϧ։ൃ؀ڥͱ͸ҟͳΓɺΠϯλʔωο τʹ໘ͨ͠؀ڥ͕͋Δ͜ͱͰɺΑΓֶͼͷ෯ ͕޿͕Δ

Slide 19

Slide 19 text

ͥͻࣗ୐αʔόʔΛ࡞ͬͯɺ αʔόʔͱࣗ෼ͷٕज़Λҭ͍͖ͯͯ·͠ΐ͏ ʢαʔόʔΛຍ࠿ͷΑ͏ʹҭͯΔͷਤʣ

Slide 20

Slide 20 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠