Slide 1

Slide 1 text

PHPΧϯϑΝϨϯε෱Ԭ2018 2018-06-16 4LB⒎PMEΛ࢖ͬͯ ,VCFSOFUFTͯ͠Έͨ খࢁ఩ࢤ !LPZIPHF

Slide 2

Slide 2 text

ࣗݾ঺հ খࢁ఩ࢤ ͜΍·ͯͭ͡  ߹ಉձࣾ΄ٕ͛ݚ Ϣʔβձ͍͔ͭ͘ ೔ຊ6/*9Ϣʔβձ ೔ຊ1PTUHSF42-Ϣʔβձ ೔ຊ1)1Ϣʔβձ SBLVNPגࣜձࣾΤϯδχΞ !LPZIPHF LPZIPHF

Slide 3

Slide 3 text

w (4VJUF (NBJM (PPHMFΧϨϯμʔͳͲ ʹػೳ௥Ճ͠ ͯൢച w ಋೖ ࣾҎ্ w IUUQTSBLVNPDPN w ࡢ೥(PPHMF$MPVE1MBUGPSN ($1 ͷύʔτφʔʹ

Slide 4

Slide 4 text

ࠓճͷ಺༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ௃ w 4LB⒎PMEͷಛ௃ w 4LB⒎PMEͷ࢖͍ํ

Slide 5

Slide 5 text

,VCFSOFUFT w IUUQTLVCFSOFUFTJP w LTͱུ͞ΕΔ w ಡΈ͸ʮ͘ʔ͹Ͷͯ͌͢ʯ w %PDLFS޲͚ΦʔέετϨʔγϣϯπʔϧ

Slide 6

Slide 6 text

ࠓճͷ಺༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ௃ w 4LB⒎PMEͷಛ௃ w 4LB⒎PMEͷ࢖͍ํ

Slide 7

Slide 7 text

LTIJTUPSZ w ೥(PPHMFͷࣾ಺πʔϧͱͯ͠։ൃ։࢝ w (PPHMFͷ#PSH͔Βڧ͍ӨڹΛड͚ͨ1SPKFDU4FWFO w 4FWFO͸4UBS5SFL7PZBHFSͷ4FWFOPG/JOF͔Β w ϩΰͷຊεϙʔΫͷ଩ͷ༝དྷ w ʹWϦϦʔε w ͦͷޙ$/$'ʹҠ؅ #Z4PVSDF 81/'$$ 'BJSVTF  IUUQTFOXJLJQFEJBPSHXJOEFYQIQ DVSJE

Slide 8

Slide 8 text

LT%PDLFS w %PDLFS$PO&6 w LTͷ%PDLFSͱ౷߹Λൃද w ࣄ্࣮ͷඪ४ΦʔέετϨʔγϣϯπʔϧʹ w ͦͷޙΫϥ΢υք۾͕૽͕͘͠ͳΔ

Slide 9

Slide 9 text

w (PPHMF$POUBJOFS&OHJOF w ($1ͷ%PDLFSίϯςφӡ༻ϚωʔδυαʔϏε w ུশ͸(,& ($&͸$PNQVUF&OHJOFʹ࢖ΘΕ͍ͯ ͨ  w (PPHMF,VCFSOFUFT&OHJOF (,& ʹվ໊ LTPO($1

Slide 10

Slide 10 text

w "[VSF$POUBJOFS4FSWJDF "$4  w ࠷ॳ͸"QBDIF.FTPTϕʔε w ෳ਺ͷΦʔέετϨʔγϣϯπʔϧΛαϙʔτ w "[VSF$POUBJOFS4FSWJDF ",4  w ,VCFSOFUFTϕʔε w "[VSF,VCFSOFUFT4FSWJDF ",4 ʹվ໊ LTPO"[VSF

Slide 11

Slide 11 text

w &MBTUJD$POUBJOFS4FSWJDFGPS,VSCFSOFUFT &,4   w &$4ͱ͍͏ಠࣗϚωʔδυαʔϏεΛ͢Ͱʹ΋͍ͬͯ ͨ w LTඪ४ͷྲྀΕΛड͚ͯαʔϏε௥Ճ LTPO"84

Slide 12

Slide 12 text

ࠓճͷ಺༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ௃ w 4LB⒎PMEͷಛ௃ w 4LB⒎PMEͷ࢖͍ํ

Slide 13

Slide 13 text

w ʮγεςϜΛߏ੒͢ΔϓϥοτϑΥʔϜ΍ϛυϧ΢ΣΞɺ αʔϏεɺΞϓϦέʔγϣϯɺ؅ཧπʔϧͳͲͷઃఆ΍؅ ཧΛࣗ཯తʹ࿈ܞͤ͞Δ͜ͱɻʯ
 ;%/FU+BQBOΩʔϫʔυղઆΑΓ w ΦʔέετϨʔγϣϯͱ͸ͳʹ͔

Slide 14

Slide 14 text

w ༷ʑͳ໾ׂͷίϯςφΛ૊Έ߹ΘͤͯαʔϏεΛ࡞Δͱ ͖ͷɺӡ༻ͷෳࡶੑΛղܾ͢Δ w (PPHMF͕#PSHΛӡ༻͖ͯͨ͠ͱ͖ͷ஌ݟ͕٧·ͬͯ ͍Δ LT͸ԿΛղܾ͢Δͷ͔

Slide 15

Slide 15 text

w Πϛϡʔλϒϧ w એݴతઃఆ w ΦϯϥΠϯͰࣗݾճ෮͢Δ LTͷઃܭίϯηϓτ

Slide 16

Slide 16 text

w *NNVUBCJMJUZ w Ұ౓࡞੒ͨ͠Βมߋ͞Εͳ͍ w ඞཁʹԠͯ͡ಉ͡಺༰ͷίϯςφΛ͍ͭ͘΋ىಈͰ͖Δ Πϛϡʔλϒϧ

Slide 17

Slide 17 text

w ʮԿΛ͢Δ͔ʯͰ͸ͳ͘ʮͲ͏͋Δ΂͖͔ʯΛهड़͢Δ w ࠷ऴతͳ๬·͍͠ঢ়ଶΛॻ͘ એݴతઃఆ

Slide 18

Slide 18 text

w ๬·͍͠ঢ়ଶ͸஌͍ͬͯΔ w ܧଓతʹ؂ࢹ͠ɺ๬·͍͠ঢ়ଶʹͳ͍ͬͯͳ͔ͬͨΒͦΕ ʹҰக͢ΔΑ͏ʹಈ͖ଓ͚Δ ࣗݾճ෮͢Δ

Slide 19

Slide 19 text

apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80 nginx-pod.yml

Slide 20

Slide 20 text

w Ϋϥελ w 1PE w 4FSWJDF w 3FQMJDB4FU w %BFNPO4FU w +PC w %FQMPZNFOU w $POpH.BQ LTߏ੒ཁૉ

Slide 21

Slide 21 text

w Ϋϥελ w 1PE w 4FSWJDF w 3FQMJDB4FU w %BFNPO4FU w +PC w %FQMPZNFOU w $POpH.BQ LTߏ੒ཁૉ

Slide 22

Slide 22 text

w LT؀ڥΛߏ੒͢ΔϚγϯ܈ w %PDLFS͕ಈ͚͹෺ཧ࿦ཧͲͪΒͰ΋ྑ͍ w Ϋϥ΢υαʔϏεͰ͸؅ཧը໘ͰϙνΔ͚ͩ Ϋϥελ

Slide 23

Slide 23 text

w ϫʔΫϩʔυ ίϯςφ ͕ಈ࡞͢Δ࿦ཧϊʔυ w ෳ਺ͷϫʔΫϩʔυ͕ಈ࡞͢Δ৔߹΋͋Δ w ಉҰ1PEͷ৔߹͸ɺϑΝΠϧγεςϜͰίϯςφಉ࢜ ͕΍ΓऔΓ͢Δ͜ͱ΋Մೳ 1PE

Slide 24

Slide 24 text

w ໊લղܾ w ಺෦Ͱ%/4͕ಈ͍͍ͯΔ w ֎෦΁ͷΤϯυϙΠϯτ࡞੒ 4FSWJDF

Slide 25

Slide 25 text

w αʔϏεҰࣜΛ഑ஔ͢Δ࢓૊Έ w ࢮ׆؂ࢹ w ߏ੒มߋɾΦʔτεέʔϧ w %PDLFSΠϝʔδͷߋ৽ w Ξοϓσʔτઓུ %FQMPZNFOU

Slide 26

Slide 26 text

w LT؅ཧίϚϯυ w جຊ͸͜ͷίϚϯυ͔Β͢΂ͯΛߦ͏ LVCFDUM

Slide 27

Slide 27 text

w IPHFZNMʹαʔϏεͷ͢΂ͯΛॻ͘ํࣜ w ͍ͨ΁Μγϯϓϧ w :".-Ͱ͔͗͢໰୊ σϓϩΠ $ kubectl apply -f hoge.yml

Slide 28

Slide 28 text

ࠓճͷ಺༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ௃ w 4LB⒎PMEͷಛ௃ w 4LB⒎PMEͷ࢖͍ํ

Slide 29

Slide 29 text

w IUUQTHJUIVCDPN(PPHMF$POUBJOFS5PPMT TLB⒎PME w ϫʔΫϑϩʔͷࣗಈԽπʔϧ w ·ͩΞϧϑΝ൛Ͱ࣮ݧతͳҐஔ͚ͮ w ࠷৽൛͸ʹϦϦʔε͞Εͨ 4LB⒎PME

Slide 30

Slide 30 text

w .BUU3JDLBSE͞Μ w IUUQTHJUIVCDPNSE w ($1ΤϯδχΞ w NJOJLVCFʹ΋ؔΘ͍ͬͯΔ ࡞ͬͨͷ͸͜ͷਓ

Slide 31

Slide 31 text

w ίϯςφϕʔε։ൃͷ$* w %PDLFSΠϝʔδͷ࡞੒ɺϨδετϦ΁ͷొ࿥ɺσϓϩΠ ͷͦΕͧΕΛࣗಈԽ ԿΛղܾ͢Δ΋ͷ

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

w ։ൃ࣌ w ϏϧυϩʔΧϧͷEPDLFSCVJME w ొ࿥ͳ͠ w σϓϩΠNJOJLVCFʹLVCFDUM w ຊ൪࣌ ($1ͷ৔߹  w Ϗϧυ(PPHMF$POUBJOFS#VJMEFSʹ౤͛Δ w ొ࿥(PPHMF$POUBJOFS3FHJTUSZʹొ࿥͢Δ w σϓϩΠ(,&ʹLVCFDUM ྆ऀͷҧ͍

Slide 34

Slide 34 text

w ΠϝʔδSFQPͷλάΛࣗಈͰଧͬͯ͘ΕΔɻ w ։ൃ࣌͸ϑΝΠϧΛ؂ࢹͯ͠ɺมߋ͕͋ͬͨΒࣗಈͰσϓ ϩΠ·Ͱ΍ͬͯ͘ΕΔ ·ͩ͋Δศརػೳ

Slide 35

Slide 35 text

w #B[FM w IUUQTCB[FMCVJME w )FMN w IUUQTIFMNTI w LBOJLP w IUUQTHJUIVCDPN(PPHMF$POUBJOFS5PPMTLBOJLP w LVTUPNJ[F w IUUQTHJUIVCDPNLVCFSOFUFTTJHTLVTUPNJ[F w ෳ਺ΠϝʔδͷରԠ NJDSPTFSWJDF ֤छπʔϧରԠ

Slide 36

Slide 36 text

ࠓճͷ಺༰ w ,VCFSOFUFTͷྺ࢙ w ,VCFSOFUFTͷಛ௃ w 4LB⒎PMEͷಛ௃ w 4LB⒎PMEͷ࢖͍ํ

Slide 37

Slide 37 text

w TLB⒎PMEίϚϯυͷΠϯετʔϧ w ඞཁͳΒ LVCFDUM NJOJLVCFͷΠϯετʔϧ w ຊ൪σϓϩΠ؀ڥͷ༻ҙ ྫ(,& Ͱ͸࢖ͬͯΈΑ͏

Slide 38

Slide 38 text

w TLB⒎PME͸HP੡ w ֤ϓϥοτϑΥʔϜ༻όΠφϦΛ഑͍ͬͯΔͷͰࣗ෼Ͱ Ϗϧυ͢Δඞཁ͸ͳ͍ w .BDͳΒ TLB⒎PMEίϚϯυ curl -Lo skaffold https://storage.googleapis.com/skaffold/ releases/latest/skaffold-darwin-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin

Slide 39

Slide 39 text

w NBJOHPΛίϯύΠϧ࣮ߦ͢Δ͚ͩͷαϯϓϧ FYBNQMFTHFUUJOHTUBSUFE

Slide 40

Slide 40 text

NBJOHP package main import ( "fmt" "time" ) func main() { for { fmt.Println("Hello world!") time.Sleep(time.Second * 1) } }

Slide 41

Slide 41 text

%PDLFSpMF FROM golang:1.10.1-alpine3.7 as builder COPY main.go . RUN go build -o /app main.go FROM alpine:3.7 CMD ["./app"] COPY --from=builder /app .

Slide 42

Slide 42 text

TLB⒎PMEZNM apiVersion: skaffold/v1alpha2 kind: Config build: artifacts: - imageName: gcr.io/myproj-koyhoge/skaffold-gcb deploy: kubectl: manifests: - k8s-* profiles: - name: gcb build: googleCloudBuild: projectId: myproj-koyhoge

Slide 43

Slide 43 text

LTQPEZNM apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: getting-started image: gcr.io/myproj-koyhoge/skaffold-gcb

Slide 44

Slide 44 text

TLB⒎PMEEFW Ϗϧυ ొ࿥ σϓϩΠ

Slide 45

Slide 45 text

w ϑΝΠϧอଘͱಉ࣌ʹҰ࿈ͷ࡞ۀ͕࠶ͼߦΘΕΔ ͦͷ··ϑΝΠϧมߋ fmt.Println("Hello world!") Λ fmt.Println("Hello phpconfuk!") ΁

Slide 46

Slide 46 text

w Ҏ্ɺऴྃ ຊ൪σϓϩΠ $ skaffold run

Slide 47

Slide 47 text

w ඪ४తͳ$*$%ͱόοςΟϯά͠ͳ͍  w ͱ΋͋Ε͢΂ͯΛίϯςφͰ·͔ͳ͏ࢼΈ͸໘ന͍ w ͜͜ͰഓΘΕ͍ͯΔ஌ݟ͸ɺผͷ$*$%ͷ࢓૊ΈͰ΋׆ ͔ͤΔͩΖ͏ ࢼͯ͠ͷײ૝

Slide 48

Slide 48 text

w LT͸ࠓͱͯ΋Ξπ͍ w TLB⒎PMEΛ͸͡Ίɺ͞·͟·ͳपลπʔϧ͕։ൃ͞Εɺ ৽͍͠ࢼΈ͕ߦΘΕ͍ͯΔ w αʔϏεͷ044ج൫ͱͯ͠ͷඪ४ʹͳΓͭͭ͋Δ ·ͱΊ