Upgrade to Pro — share decks privately, control downloads, hide ads and more …

knative-serving

 knative-serving

2021/03/09 Kubernetes Novice Tokyo #9
KnativeでKubernetesをラクにする

セッション動画
https://www.youtube.com/watch?v=BbPCcrSQPEQ&t=2956s

mochizuki875

March 01, 2021
Tweet

More Decks by mochizuki875

Other Decks in Technology

Transcript


  1. !NPDIJ[VLJ
    ,OBUJWFͰ,VCFSOFUFTΛϥΫʹ͢Δ
    ,VCFSOFUFT/PWJDF5PLZP

    View Slide

  2. ɾܝࡌ಺༰͸ݸਓͷݟղͰ͋Γɺॴଐ͢Δاۀ΍૊৫ͷཱ৔ɺઓུɺҙݟΛ
    ɹ୅ද͢Δ΋ͷͰ͸͋Γ·ͤΜ
    ɾهࡌ͞Ε͍ͯΔձ໊ࣾɺ঎඼໊ɺ·ͨ͸αʔϏε໊͸ɺ֤ࣾͷ঎ඪొ࿥·ͨ͸঎ඪͰ͢

    View Slide

  3. XIPBNJ
    !NPDIJ[VLJ
    /BNF
    ,FJUB.PDIJ[VLJʢNPDIJ[VLJʣ
    8PSL
    $MPVE"SDIUFDU
    $POUBJOFS3%

    View Slide

  4. એ఻
    2JJUBʹͯ,VCFSOFUFTೝఆࢿ֨$,"$,"%डݧ5JQTͷهࣄΛࣥච
    ͍͖ͤͯͨͩ͞·ͨ͠ɻ
    ΑΖ͚͠Ε͹͝׆༻͍ͩ͘͞ɻ
    💧
    💧
    ੋඇ-(5.Լ͍͞🙏🙏🙏
    IUUQTRJJUBDPNNPDIJ[VLJJUFNTBEDEGCCEG

    View Slide

  5. "HFOEB
    ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε
    ,OBUJWFͷ֓ཁ
    <σϞ>,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε
    ɹɹ,OBUJWF4FSWJOHϦιʔε
    ɹɹθϩεέʔϧ
    <σϞ>࣮ӡ༻Λ૝ఆͨ͠έʔε
    <σϞ>ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε
    ࢀߟ
    ɹɹ0CTFSWBCJMJUZ
    ɹɹ಺෦తͳ࢓૊Έͷ࿩
    ·ͱΊ

    View Slide

  6. σϞͰ༻͍Δࢿࡐ
    ˗αϯϓϧΞϓϦ
    ɹNPDIJ[VLJTQSJOHCPPUXFC
    ɹIUUQTHJUIVCDPNNPDIJ[VLJTQSJOHCPPUXFC
    ˗σϞ ͷࢿࡐ
    ɹNPDIJ[VLJLOBUJWFTFSWJOHEFNP
    ɹIUUQTHJUIVCDPNNPDIJ[VLJLOBUJWFTFSWJOHEFNP
    ˗σϞͷࢿࡐ
    ɹNPDIJ[VLJCPPLJOGPLOBUJWF
    ɹIUUQTHJUIVCDPNNPDIJ[VLJCPPLJOGPLOBUJWF

    View Slide

  7. ,VCFSOFUFT͸ίϯςφΦʔέετϨʔγϣϯϓϥοτϑΥʔϜͱͯ͠
    ൚༻ੑ͕ߴ͍͕ίϯςφԽͨ͠ΞϓϦέʔγϣϯΛσϓϩΠެ։͢Δ
    ج൫ͱͯ͠͸೉қ౓͕ߴ͍
    ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε
    ίϯςφ׬શʹཧղͨ͠ʂ
    ͸ʁϚδͳΜͳͷʁ
    ʢϩΰ͸ੈքҰΧοίΠΠ͚Ͳɾɾɾʣ

    View Slide

  8. ,VCFSOFUFT͸ίϯςφΦʔέετϨʔγϣϯϓϥοτϑΥʔϜͱͯ͠
    ൚༻ੑ͕ߴ͍͕ίϯςφԽͨ͠ΞϓϦέʔγϣϯΛσϓϩΠެ։͢Δ
    ج൫ͱͯ͠͸೉қ౓͕ߴ͍
    ίϯςφ׬શʹཧղͨ͠ʂ
    ͸ʁϚδͳΜͳͷʁ
    ʢϩΰ͸ੈքҰΧοίΠΠ͚Ͳɾɾɾʣ
    ܝࡌ಺༰͸ݸਓͷݟղͰ͋Γɺॴଐ͢Δاۀ΍૊৫ͷཱ৔ɺઓུɺҙݟΛ
    ୅ද͢Δ΋ͷͰ͸͋Γ·ͤΜ
    ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  9. ˗ଟ͘ͷ,VCFSOFUFTͷϦιʔεʹର͢Δཧղ΍Ϧιʔεؒͷؔ࿈෇͚͕ඞཁ
    ɹˠֶशίετɺ:".-هࡌྔ૿Ճ
    ˗ΞϓϦͷόʔδϣϯΛ੾Γସ͑ΔࡍͷτϥϑΟοΫ੍ޚ
    ɹˠ੾Γସ͑ํ๏Λج൫ར༻ऀͰ޻෉
    ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸*OHSFTTΤϯυϙΠϯτʢ֎෦-#΍֎෦ެ։͞Εͨ*OHSFTT$POUSPMMFS౳ʣ
    ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  10. ˗ଟ͘ͷ,VCFSOFUFTͷϦιʔεʹର͢Δཧղ΍Ϧιʔεؒͷؔ࿈෇͚͕ඞཁ
    ɹˠֶशίετɺ:".-هࡌྔ૿Ճ
    ˗ΞϓϦͷόʔδϣϯΛ੾Γସ͑ΔࡍͷτϥϑΟοΫ੍ޚ
    ɹˠ੾Γସ͑ํ๏Λج൫ར༻ऀͰ޻෉
    ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸*OHSFTTΤϯυϙΠϯτʢ֎෦-#΍֎෦ެ։͞Εͨ*OHSFTT$POUSPMMFS౳ʣ
    apiVersion: apps/v1


    kind: Deployment


    metadata:


    labels:


    app: spring-boot-web


    name: spring-boot-web


    spec:


    replicas: 3


    selector:


    matchLabels:


    app: spring-boot-web


    template:


    metadata:


    labels:


    app: spring-boot-web


    spec:


    containers:


    - image: keitamochizuki/spring-boot-web


    name: spring-boot-web


    env:


    - name: APP_VERSION


    value: v1


    resources:


    requests:


    cpu: "250m"
    apiVersion: autoscaling/v2beta2


    kind: HorizontalPodAutoscaler


    metadata:


    name: spring-boot-web-hpa


    spec:


    scaleTargetRef:


    apiVersion: apps/v1


    kind: Deployment


    name: spring-boot-web


    minReplicas: 3


    maxReplicas: 5


    metrics:


    - type: Resource


    resource:


    name: cpu


    target:


    type: Utilization


    averageUtilization: 50


    EFQMPZNFOUZNM
    IQBZNM
    ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  11. ˗ଟ͘ͷ,VCFSOFUFTͷϦιʔεʹର͢Δཧղ΍Ϧιʔεؒͷؔ࿈෇͚͕ඞཁ
    ɹˠֶशίετɺ:".-هࡌྔ૿Ճ
    ˗ΞϓϦͷόʔδϣϯΛ੾Γସ͑ΔࡍͷτϥϑΟοΫ੍ޚ
    ɹˠ੾Γସ͑ํ๏Λج൫ར༻ऀͰ޻෉
    ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸*OHSFTTΤϯυϙΠϯτʢ֎෦-#΍֎෦ެ։͞Εͨ*OHSFTT$POUSPMMFS౳ʣ
    apiVersion: networking.k8s.io/v1


    kind: Ingress


    metadata:


    name: spring-boot-web


    annotations:


    nginx.ingress.kubernetes.io/rewrite-target: /


    spec:


    rules:


    - host: "spring-boot-web.example.com"


    http:


    paths:


    - path: "/"


    pathType: Prefix


    backend:


    service:


    name: spring-boot-web


    port:


    number: 8080
    JOHSFTTZNM
    apiVersion: v1


    kind: Service


    metadata:


    name: spring-boot-web


    spec:


    selector:


    app: spring-boot-web


    ports:


    - protocol: TCP


    port: 8080


    targetPort: 8080
    TFSWJDFZNM
    ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  12. ,VCFSOFUFTͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  13. ,OBUJWFͷ֓ཁ
    ˗(PPHMF$MPVE/FYU`Ͱൃද
    ɹIUUQTZPVUVCF-U&-[QXM.
    ˗$/$'-BOETDBQFͰ4FSWFSMFTTΧςΰϦʹؚ·ΕΔ
    ˗ݱࡏ͸1SFSFMFBTFʢWʣঢ়ଶ
    ˗($1ͷαʔόϨεαʔϏεͰ͋Δ$MPVE3VOͰ༻͍ΒΕ͍ͯΔʢ("ʣ
    ˗ػೳ
    ɹ͍ͣΕͷػೳ΋,VCFSOFUFT্ͷίϯϙʔωϯτͱͯ͠ಈ࡞
    ɹɾ4FSWJOH
    ɹɹ,VCFSOFUFT্΁ͷίϯςφσϓϩΠެ։ΛϥΫʹͯ͘͠ΕΔػೳ
    ɹɹ*TUJPͳͲͷ/8ιϦϡʔγϣϯΛ׆༻
    ɹɾ&WFOUJOH
    ɹɹԿ͔Λܖػʹ,VCFSOFUFT্ʹ1PEΛσϓϩΠͯ͠ॲཧΛ࣮ߦ͢Δػೳ
    ɹɹʢྫʣ0#4ʹը૾ϑΝΠϧ͕ஔ͔ΕͨΒϦαΠζ

    View Slide

  14. ˗,OBUJWFΠϯετʔϧखॱ
    ɹIUUQTLOBUJWFEFWEPDTJOTUBMMBOZLVCFSOFUFTDMVTUFS
    ˗,OBUJWF޲͚*TUJPΠϯετʔϧखॱ
    ɹIUUQTLOBUJWFEFWEPDTJOTUBMMJOTUBMMJOHJTUJP
    ,OBUJWFͷ֓ཁ

    View Slide

  15. ิ଍
    Ҏલ͸΋͏Ұͭ#VJMEͱ͍͏ػೳؚ͕·Ε͍ͯͨ
    ɹ೥·Ͱ͸4FSWJOHɺ&WFOUJOHͱ͍͏ػೳʹՃ͑ɺίϯςφΠϝʔδͷϏϧυΛࣗಈԽ͢ΔCVJME
    ɹͱ͍͏ػೳؚ͕·Ε͍ͯ·ͨ͠ɻ
    ɹ͔͠͠ݱࡏ͸ඇਪ঑ͱͳΓɺUFLUPOΛ༻͍Δ͜ͱ͕ਪ঑͞Ε͍ͯ·͢ɻ
    ɹ˞ڪΒ͘$*$%͸ύΠϓϥΠϯπʔϧʹ੹೚Λ࣋ͨͤΔͱ͍͏ࢥ૝ʁ
    ɹIUUQTHJUIVCDPNLOBUJWFCVJME
    ,OBUJWF㱠'BB4
    ɹΑ͘,OBUJWF'BB4ͱ͍͏ޡղ͕ͳ͞Ε·͢ɻʢࣗ਎΋࠷ॳ͸͜ͷޡղΛ͍ͯ͠·ͨ͠ʣ
    ɹ,OBUJWFࣗମ͸͋͘·Ͱ΋4FSWJOHɺ&WFOUJOHͱ͍͏4FSWFSMFTTΛ࣮ݱ͢ΔͨΊͷػೳΛఏڙ͠ɺ
    ɹ,VCFSOFUFT্Ͱͷෳࡶ͞Λந৅Խ͢Δ΋ͷͱ͍͏ཧղΛ͍ͯ͠·͢ɻ
    ɹݴ͍׵͑Ε͹͜ΕΒͷػೳΛར༻ͯ͠"84-BNCEBͷ༷ͳ'BB4΋࣮ݱͰ͖Δͱ͍͏͜ͱʹͳΓ·͢ɻ

    View Slide

  16. <σϞ>
    ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  17. ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε
    ˞֎෦͔ΒͷΞΫηεΤϯυϙΠϯτ͸֎෦ެ։͞Εͨ*OHSFTT(BUFXBZ
    TFSWJDFTQSJOHZNM
    apiVersion: serving.knative.dev/v1


    kind: Service


    metadata:


    name: spring-boot-web


    spec:


    template:


    spec:


    containers:


    - image: keitamochizuki/spring-boot-web


    env:


    - name: APP_VERSION


    value: "v1"
    ˗࠷΋γϯϓϧʹσϓϩΠެ։͢Δ৔߹͸4FSWJDFϦιʔεͷఆٛͷΈͰྑ͍

    View Slide

  18. ❯❯❯ kubectl apply -f service-spring.yml


    service.serving.knative.dev/spring-boot-web created


    ❯❯❯ kubectl get all


    NAME READY STATUS RESTARTS AGE


    pod/spring-boot-web-00001-deployment-7ccd57c85d-vjm84 2/2 Running 0 25s


    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE


    service/kubernetes ClusterIP 10.96.0.1 443/TCP 19d


    service/spring-boot-web ExternalName knative-local-gateway.istio-system.svc.cluster.local 80/TCP 10s


    service/spring-boot-web-00001 ClusterIP 10.99.90.143 80/TCP 26s


    service/spring-boot-web-00001-private ClusterIP 10.110.150.217 80/TCP,9090/TCP,9091/TCP,8022/TCP 26s


    NAME READY UP-TO-DATE AVAILABLE AGE


    deployment.apps/spring-boot-web-00001-deployment 1/1 1 1 26s


    NAME DESIRED CURRENT READY AGE


    replicaset.apps/spring-boot-web-00001-deployment-7ccd57c85d 1 1 1 25s


    NAME URL LATESTCREATED LATESTREADY READY REASON


    service.serving.knative.dev/spring-boot-web http://spring-boot-web.default.example.com spring-boot-web-00001 spring-boot-web-00001 True


    NAME LATESTCREATED LATESTREADY READY REASON


    configuration.serving.knative.dev/spring-boot-web spring-boot-web-00001 spring-boot-web-00001 True


    NAME CONFIG NAME K8S SERVICE NAME GENERATION READY REASON


    revision.serving.knative.dev/spring-boot-web-00001 spring-boot-web spring-boot-web-00001 1 True


    NAME URL READY REASON


    route.serving.knative.dev/spring-boot-web http://spring-boot-web.default.example.com True
    4FSWJDFϦιʔεͷ࡞੒ͱ֬ೝ
    Ϧιʔεͷ࡞੒
    4FSWJDFϦιʔεΛ࡞੒͢ΔͱҎԼͷ༷ʹ,OBUJWFͷ$3%͓ΑͼͦΕʹ෇ਵͯ͠,VCFSOFUFTϦιʔε͕
    ࡞੒͞ΕΔɻ˞͜͜Ͱ4FSWJDFͱ͸,VCFSOFUFTͷ΋ͷͰͳ͘,OBUJWFͷ$3%Λࢦ͠·͢
    ❯❯❯ kn service list


    NAME URL LATEST AGE CONDITIONS READY REASON


    spring-boot-web http://spring-boot-web.default.example.com spring-boot-web-00001 8m54s 3 OK / 3 True


    ~/w/k/k/s/s/service ❯❯❯ kn route list


    NAME URL READY


    spring-boot-web http://spring-boot-web.default.example.com True


    ~/w/k/k/s/s/service ❯❯❯ kn revision list
    NAME SERVICE TRAFFIC TAGS GENERATION AGE CONDITIONS READY REASON


    spring-boot-web-00001 spring-boot-web 100% 1 9m29s 3 OK / 4 True
    ҎԼͷ༷ʹ,OBUJWF$-*Λ࢖ͬͨ֬ೝ΋ՄೳͰ͢ɻ
    ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  19. ֎෦͔ΒͷΞΫηε֬ೝ४උ
    ˗ΞΫηεΤϯυϙΠϯτͷऔಘ
    ɹ,OBUJWFͰσϓϩΠͨ͠ΞϓϦʹ֎෦͔ΒΞΫηε͢ΔࡍͷΤϯυϙΠϯτ͸,OBUJWFΠϯετʔϧ࣌ʹ
    ɹ࡞੒͢Δ*TUJP(BUFXBZͱͳΓ·͢ɻ
    ɹ*TUJP(BUFXBZ͸5ZQF-PBE#BMBODFSͰ֎෦ެ։͞Ε·͕͢ࠓճ͸ϩʔΧϧͰͷݕূͱͳΔͨΊ/PEF1PSU
    ɹͰ୅༻͠·͢ɻ
    ❯❯❯ kubectl get svc -n istio-system


    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE


    cluster-local-gateway ClusterIP 10.105.184.8 15020/TCP,80/TCP,443/TCP 18d


    istio-ingressgateway LoadBalancer 10.100.235.103 15021:32326/TCP,80:30134/TCP,443:31454/TCP,15012:31018/TCP,15443:30837/TCP 18d
    ˗໊લղܾ
    ɹ,OBUJWFσϑΥϧτͰ͸ΞϓϦ΁ͷΞΫηε63-͕
    ɹɹIUUQTFSWJDFOBNFTQBDFFYBNQMFDPN
    ɹͱ͍͏໋໊نଇͰࣗಈൃߦ͞Ε·͢ɻ˞มߋՄೳ
    ɹຊདྷ͸
    ɹɹFYBNQMFDPN"JTUJPJOHSFTTHBUFXBZ&YUFSOBM*1/PEF*1
    ɹͷܗͰ%/4ొ࿥͓ͯ͘͠΂͖ͳͷͰ͕͢ɺ
    ɹࠓճͷݕূͰ͸͋Β͔͡Ί෷͍ग़͞ΕΔ63-޲͚ϨίʔυΛFUTIPTUTʹ௚઀هࡌ͍ͯ͠·͢ɻ
    ❯❯❯ cat /etc/hosts


    192.168.2.154 spring-boot-web.default.example.com


    192.168.2.154 spring-boot-web.default.example.com


    192.168.2.154 spring-boot-web-stg.default.staging.org


    192.168.2.154 v1-spring-boot-web.default.example.com


    192.168.2.154 v2-spring-boot-web.default.example.com
    ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  20. ֎෦͔ΒͷΞΫηε֬ೝ
    3PVUFͰ෷͍ग़͞Εͨ63-ʹϒϥ΢β͔ΒΞΫηε͢ΔͱҎԼͷ༷ʹσϓϩΠͨ͠ΞϓϦʹΞΫηεͰ͖Δɻ
    ΞΫηε63-ɿIUUQTQSJOHCPPUXFCEFGBVMUFYBNQMFDPN
    ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δέʔε

    View Slide

  21. IUUQTLOBUJWFEFWEPDTTFSWJOH
    ɾίϯςφͷىಈઃఆΛఆٛ
    ɾίϯςφͱͯ͠ಈ͘ΞϓϦͷ࣮ମ
    ɾ$PO
    fi
    HVSBUJPOߋ৽ຖʹ࡞੒͞ΕΔ
    ɾJNNVUBCMF
    ɾΞΫηε༻63-Λൃߦ
    ɾ3FWJTJPO΁ͷτϥϑΟοΫ؅ཧ
    ɾ3PVUFͱ$PO
    fi
    HVSBUJPOΛ·ͱΊͯఆٛ
    ,OBUJWF4FSWJOHͰΞϓϦΛσϓϩΠެ։͢Δࡍ͸ओʹҎԼͭͷϦιʔεΛ؅ཧ
    ,OBUJWFϦιʔε

    View Slide

  22. ઌͷྫͰ͸4FSWJDFϦιʔεͱͯ͠3PVUF $PO
    fi
    HVSBUJPOϦιʔεΛ·ͱΊͯѻ͍ͬͯ·͕ͨ͠ɺ
    ҎԼͷΑ͏ʹͦΕͧΕ෼͚ͯѻ͏͜ͱ΋ՄೳͰ͢ɻ
    σϞͰ͸ͦΕͧΕΛ෼͚ͯѻ͍·͢ɻ
    apiVersion: serving.knative.dev/v1


    kind: Service


    metadata:


    name: spring-boot-web


    namespace: default


    spec:


    template:


    metadata:


    name: spring-boot-web-v1


    spec:


    containers:


    - image: keitamochizuki/spring-boot-web


    env:


    - name: APP_VERSION


    value: "v1"


    traffic:


    - percent: 100


    revisionName: spring-boot-web-v1


    tag: v1


    TFSWJDFTQSJOHZNM
    apiVersion: serving.knative.dev/v1


    kind: Configuration


    metadata:


    name: spring-boot-web


    spec:


    template:


    metadata:


    name: spring-boot-web-v1 # ࡞੒͢Δrevision໊


    spec:


    containers:


    - image: keitamochizuki/spring-boot-web


    env:


    - name: APP_VERSION


    value: "v1"
    apiVersion: serving.knative.dev/v1


    kind: Route


    metadata:


    name: spring-boot-web


    spec:


    traffic:


    - percent: 100


    revisionName: spring-boot-web-v1
    DPO
    fi
    HVSBUJPOTQSJOHZNM
    SPVUFTQSJOHZNM
    ˞ઌͷྫͰ͸͔ͳΓলུͨ͠TFSWJDFఆٛͰ͕ͨ͠
    ɹਖ਼֬ʹهࡌ͢Δͱ্هͷΑ͏ʹͳΓ·͢
    ,OBUJWFϦιʔε

    View Slide

  23. ,OBUJWFσϑΥϧτͰ͸,1"ͱ͍͏࢓૊ΈʹΑΓαʔϏεʢ1PEʣͷΦʔτεέʔϧΛߦ͍·͢ɻ
    ಛʹσϑΥϧτͰ͸αʔϏεʹରͯ͠ϦΫΤετ͕͋ͬͨࡍʹ1PEΛىಈ͠ɺ
    ͠͹Β͘ϦΫΤετ͕ͳ͔ͬͨΒࣗಈతʹ1PEΛఀࢭ͢Δʢ୆·ͰεέʔϧΠϯ͢Δʣͱ͍͏ಈ࡞Λ͠·͢ɻ
    ͜ͷಈ࡞ʹΑΓॳճΞΫηε࣌͸1PEىಈ͕࣌ؒ0)ͱͳΓϨεϙϯεʹएׯͷ஗Ԇ͕ൃੜ͠·͢ɻ
    ˞ৗ࣌ىಈ͢Δઃఆ΋Մೳ
    ˞θϩεέʔϧ͢Δ·Ͱͷ࣌ؒࢦఆ΋Մೳ
    ❯❯❯ kubectl get po


    No resources found in default namespace.


    ~/w/k/k/s/s/service ❯❯❯ kubectl get po -w


    NAME READY STATUS RESTARTS AGE


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 Pending 0 0s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 Pending 0 0s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 ContainerCreating 0 1s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 ContainerCreating 0 2s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 1/2 Running 0 3s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 2/2 Running 0 8s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 2/2 Terminating 0 70s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 1/2 Terminating 0 97s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 1/2 Terminating 0 117s


    spring-boot-web-00001-deployment-7ccd57c85d-rp6gl 0/2 Terminating 0 119s
    ˡϦΫΤετͳ͠
    ˡϦΫΤετൃੜ
    ˡϦΫΤετͳ͠ঢ়ଶͰҰఆ࣌ؒܦա
    θϩεέʔϧ
    ˡϨεϙϯεฦ٫

    View Slide

  24. σϞͷ·ͱΊ
    ˗,OBUJWF4FSWJOHΛ༻͍ΔͱϥΫʹΞϓϦέʔγϣϯΛσϓϩΠެ։Ͱ͖Δ
    ɹɾجຊίϯςφΠϝʔδͱ؀ڥม਺ͷࢦఆͷΈ
    ɹɾΦʔτεέʔϧΛࣗಈͰઃఆ
    ɹɾࣗಈͰ֎෦ެ։༻ͷ63-͕෷͍ग़͞ΕΔ
    ɹɾ,VCFSOFUFT୯ମͱൺֱͯ͠:".-هࡌྔ໿ݮɺґଘؔ܎هࡌՕॴݮ
    έʔεʹΑͬͯ͸3PVUFͱ3FWJTJPOΛඥ෇͚Δඞཁ͋ΓʢσϞʣ
    ˗θϩεέʔϧͷಈ࡞
    ɹɾσϑΥϧτͩͱθϩεέʔϧ͕༗ޮʹͳ͓ͬͯΓϦΫΤετ͕ແ͍ͱىಈ1PE਺͕୆ʹͳΔ
    ɹɾॳճ͸ଟগϨεϙϯε஗Ԇ͕ൃੜ͢Δ

    View Slide

  25. σϞ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  26. ࣮ӡ༻Λ૝ఆͨ͠έʔε
    ᶃWΞϓϦΛσϓϩΠ͢Δ
    ᶄWΞϓϦΛ֎෦ެ։͢Δ
    ᶅWΞϓϦΛσϓϩΠ͢Δ
    ᶆWΞϓϦ֬ೝ༻63-Λൃߦͯ͠ಈ࡞֬ೝ͢Δ
    ᶇҰ෦ͷτϥϑΟοΫΛWʹ੾Γସ͑Δ
    ᶈશͯͷτϥϑΟοΫΛWʹ੾Γସ͑Δ
    ˞ࠓճ͸ϨεϙϯελΠϜΛߟྀͯ͠θϩεέʔϧ͸ߦΘͳ͍ઃఆʹ͢Δ
    ੾Γସ͑લʹWΞϓϦΛαʔϏε֬ೝ

    View Slide

  27. ·ͣ͸$PO
    fi
    HVSBUJPOϦιʔεΛ࡞੒͠ɺΞϓϦͷ࣮ଶͱͳΔW3FWJTJPOΛ࡞੒͠·͢ɻ
    ͜ͷ࣌఺Ͱ͸·ͩΞϓϦΛσϓϩΠ͚ͨͩ͠ͳͷͰ֎෦͔ΒͷΞΫηε͸ߦ͑·ͤΜɻ
    ᶃWΞϓϦΛσϓϩΠ͢Δ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  28. apiVersion: serving.knative.dev/v1


    kind: Configuration


    metadata:


    name: spring-boot-web


    spec:


    template:


    metadata:


    annotations: # Φʔτεέʔϧؔ࿈ύϥϝʔλ


    autoscaling.knative.dev/minScale: "1" # ࠷খεέʔϧ਺(default 0)


    autoscaling.knative.dev/maxScale: "4" # ࠷େεέʔϧ਺(default 0 unlimited)


    autoscaling.knative.dev/metric: "rps" # Φʔτεέʔϧͷࢦඪͱ͢ΔϝτϦΫεΛࢦఆ(default concurrency)


    autoscaling.knative.dev/target: "3" # ΦʔτεέʔϧͷϝτϦΫε஋soft ௒աͯ͠΋ϦΫΤετ͸ड͚෇͚Δ(default 100)


    name: spring-boot-web-v1 # ࡞੒͢Δrevision໊


    spec:


    containers:


    - image: keitamochizuki/spring-boot-web


    env:


    - name: APP_VERSION


    value: "v1"
    DPO
    fi
    HVSBUJPOTQSJOHWZNM
    ࠓճ͸$PO
    fi
    HVSBUJPOͷϚχϑΣετ಺ͰΦʔτεέʔϧͷύϥϝʔλΛઃఆ͍ͯ͠·͢ɻ
    ઃఆ͠ͳͯ͘΋σϓϩΠࣗମ͸ߦ͑·͕͢ɺσϞ޲͚ʹઃఆ͍ͯ͠·͢ɻ
    ಛʹ࠷খεέʔϧ਺ʢNJO4DBMFʣΛͱ͢Δ͜ͱͰθϩεέʔϧΛߦΘͳ͍༷ʹ͍ͯ͠·͢ɻ
    ᶃWΞϓϦΛσϓϩΠ͢Δ
    ❯❯❯ kubectl apply -f configuration-spring-v1.yml


    configuration.serving.knative.dev/spring-boot-web created
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  29. ݱঢ়͸WΞϓϦ͕3FWJTJPOͱͯ͠σϓϩΠ͞ΕͨͷΈͰɺ֎෦͔ΒΞϓϦʹΞΫηε͢ΔͨΊͷ
    3PVUF͕͋Γ·ͤΜɻ
    W3FWJTJPO΁ͷ3PVUFΛ࡞੒͠ɺ֎෦͔ΒΞΫηεͰ͖Δ༷ʹ͠·͢ɻ
    ᶄWΞϓϦΛ֎෦ެ։͢Δ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  30. apiVersion: serving.knative.dev/v1


    kind: Route


    metadata:


    name: spring-boot-web


    spec:


    traffic:


    - percent: 100


    revisionName: spring-boot-web-v1
    SPVUFTQSJOHWZNM
    3PVUFϦιʔεͰ͸ᶃͷ$PO
    fi
    HVSBUJPOʹΑΓ࡞੒͞Εͨ3FWJTJPOʢTQSJOHCPPUXFCWʣʹ
    શͯͷτϥϑΟοΫΛసૹ͢Δ༷ʹઃఆΛߦ͍ͬͯ·͢ɻ
    ࠓճ͸3PVUFʹΑͬͯIUUQSPVUF໊OBNFTQBDFFYBNQMFDPNͱ͍͏63-͕ൃߦ͞ΕΔ༷ʹ
    ઃఆ͍ͯ͠·͢ɻ˞มߋՄೳ
    ᶄWΞϓϦΛ֎෦ެ։͢Δ
    ❯❯❯ kubectl apply -f route-spring-v1.yml


    route.serving.knative.dev/spring-boot-web created
    ❯❯❯ kubectl get route


    NAME URL READY REASON


    spring-boot-web http://spring-boot-web.default.example.com True
    3PVUFϦιʔεͷ࡞੒͕׬ྃ͢ΔͱҎԼͷ༷ʹ63-͕ൃߦ͞Ε·͢ɻ
    ͜͜ʹ֎෦͔ΒΞΫηε͢ΔͱᶃͰσϓϩΠͨ͠W3FWJTJPOͷΞϓϦʹΞΫηεͰ͖·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  31. ଓ͍ͯ$PO
    fi
    HVSBUJPOϦιʔεΛߋ৽͠ɺW3FWJTJPOΛ࡞੒͠·͢ɻ
    ͜͜Ͱ͸·ͩ3PVUFઃఆΛมߋ͍ͯ͠ͳ͍ͨΊɺ֎෦͔Β͸Wʹ͔͠ΞΫηεͰ͖ͳ͍ঢ়ଶͰ͢ɻ
    ᶅWΞϓϦΛσϓϩΠ͢Δ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  32. ᶅWΞϓϦΛσϓϩΠ͢Δ
    WͰ༻͍ͨ$PO
    fi
    HVSBUJPOϦιʔεͷϚχϑΣετΛʹͯ؀ڥม਺ΛWͱ͍͏஋ʹมߋ͍ͯ͠·͢ɻ
    ͜ΕΛద༻͢Δ͜ͱͰ$PO
    fi
    HVSBUJPO͕ߋ৽͞Εɺ৽ͨʹW3FWJTJPO͕࡞੒͞Ε·͢ɻ
    apiVersion: serving.knative.dev/v1


    kind: Configuration


    metadata:


    name: spring-boot-web


    spec:


    template:


    metadata:


    annotations: # Φʔτεέʔϧؔ࿈ύϥϝʔλ


    autoscaling.knative.dev/minScale: "1" # ࠷খεέʔϧ਺(default 0)


    autoscaling.knative.dev/maxScale: "4" # ࠷େεέʔϧ਺(default 0 unlimited)


    autoscaling.knative.dev/metric: "rps" # Φʔτεέʔϧͷࢦඪͱ͢ΔϝτϦΫεΛࢦఆ(default concurrency)


    autoscaling.knative.dev/target: "3" # ΦʔτεέʔϧͷϝτϦΫε஋soft ௒աͯ͠΋ϦΫΤετ͸ड͚෇͚Δ(default 100)


    name: spring-boot-web-v2 # ࡞੒͢Δrevision໊


    spec:


    containers:


    - image: keitamochizuki/spring-boot-web


    env:


    - name: APP_VERSION


    value: "v2"


    DPO
    fi
    HVSBUJPOTQSJOHWZNM
    ❯❯❯ kubectl apply -f configuration-spring-v2.yml


    configuration.serving.knative.dev/spring-boot-web configured
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  33. ᶆWΞϓϦ֬ೝ༻63-Λൃߦͯ͠ಈ࡞֬ೝ͢Δ
    ৽όʔδϣϯΛ͍͖ͳΓ֎෦ެ։༻63-Ͱެ։͢Δͷ͸ා͍ͷͰɺ
    ·ͣ͸֬ೝ༻63-Ͱ֎෦ެ։͠αʔϏε֬ೝΛߦ͍·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  34. ᶆWΞϓϦ֬ೝ༻63-Λൃߦͯ͠ಈ࡞֬ೝ͢Δ
    apiVersion: serving.knative.dev/v1


    kind: Route


    metadata:


    name: spring-boot-web-stg


    labels: # ϥϕϧͰ͜ͷrouteʹׂΓ౰ͯΔυϝΠϯΛࢦఆ


    domain: stg


    spec:


    traffic:


    - percent: 100


    revisionName: spring-boot-web-v2


    SPVUFTQSJOHTUHWZNM
    WΛ֬ೝ༻63-Ͱ֎෦ެ։͢ΔͨΊʹެ։༻ͱ͸ผʹ֬ೝ༻3PVUFϦιʔεΛ࡞੒͠·͢ɻ
    ࠓճ͸,OBUJWFͷઃఆͰϥϕϧʢNFUBEBUBMBCFMTEPNBJOTUHʣΛࢦఆ͢Δͱ4UBHJOH༻υϝΠϯ͕
    63-ʹׂΓ౰ͯΒΕΔΑ͏ʹͯ͋͠Γ·͢ɻʢ࣍ϖʔδࢀরʣ
    ❯❯❯ kubectl apply -f route-spring-v2-stg.yml


    route.serving.knative.dev/spring-boot-web-stg created
    ❯❯❯ kubectl get route


    NAME URL READY REASON


    spring-boot-web http://spring-boot-web.default.example.com True


    spring-boot-web-stg http://spring-boot-web-stg.default.staging.org True
    ҎԼͷ༷ʹ৽نͰ3PVUFϦιʔε͕࡞੒͞ΕɺTUBHJOHPSHυϝΠϯͷ63-͕ൃߦ͞Ε·͢ɻ
    ͜͜ʹ֎෦͔ΒΞΫηε͢ΔͱᶅͰσϓϩΠͨ͠W3FWJTJPOͷΞϓϦʹΞΫηεͰ͖·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  35. ɹσϑΥϧτͰ͸SPVUFͰൃߦ͞ΕΔ63-ʹFYBNQMFDPNͱ͍͏υϝΠϯׂ͕Γ౰ͯΒΕΔΑ͏ʹ
    ɹͳ͍ͬͯ·͢ɻ
    ɹDPO
    fi
    HEPNBJOͱ͍͏$PO
    fi
    H.BQΛॻ͖׵͑Δ͜ͱͰ͜ͷυϝΠϯΛมߋͨ͠Γɺ
    ɹ3PVUFʹ෇༩ͨ͠λάʹԠͯ͡೚ҙͷυϝΠϯΛ༻͍Δ͜ͱ͕Ͱ͖·͢ɻ
    apiVersion: v1


    kind: ConfigMap


    metadata:


    name: config-domain


    namespace: knative-serving


    data:


    # σϑΥϧτͰ෇༩͢ΔυϝΠϯ


    example.com: ""


    # domain=devͷϥϕϧΛ࣋ͭrouteʹ෇༩͢ΔυϝΠϯ


    development.org: |


    selector:


    domain: dev


    # domain=stgͷϥϕϧΛ࣋ͭrouteʹ෇༩͢ΔυϝΠϯ


    staging.org: |


    selector:


    domain: stg


    DPO
    fi
    HEPNBJOZNM
    ❯❯❯ kubectl apply -f config-domain.yml
    ࣮ӡ༻Λ૝ఆͨ͠έʔε
    ʢࢀߟʣ3PVUFυϝΠϯͷઃఆ

    View Slide

  36. ᶇҰ෦ͷτϥϑΟοΫΛWʹ੾Γସ͑Δ
    WΞϓϦ͕ਖ਼ৗʹಈ࡞͍ͯ͠Δ͜ͱΛ֬ೝͰ͖ͨͷͰɺ͍Α͍Α֎෦ެ։༻63-͔Β΋WΞϓϦʹ
    ΞΫηεͰ͖ΔΑ͏ʹ͠·͢ɻ
    ͜͜Ͱ͸Ұؾʹ੾Γସ͑Λߦ͏#MVF(SFFOͰ͸ͳ͘ฒߦظؒΛڬΜͰ੾Γସ͑Λߦ͏
    $BOBSZ3FMFBTFํࣜΛ࠾༻͠·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  37. ᶇҰ෦ͷτϥϑΟοΫΛWʹ੾Γସ͑Δ
    apiVersion: serving.knative.dev/v1


    kind: Route


    metadata:


    name: spring-boot-web


    spec:


    traffic:


    - percent: 70


    revisionName: spring-boot-web-v1


    tag: v1


    - percent: 30


    revisionName: spring-boot-web-v2


    tag: v2
    SPVUFTQSJOHWWZNM
    ެ։༻3PVUFϦιʔεΛߋ৽͠·͢ɻʢᶄͰ࡞੒ͨ͠΋ͷʣ
    ݱঢ়͸W3FWJTJPOʹͷτϥϑΟοΫΛసૹ͢Δઃఆʹͳ͍ͬͯ·͕͢ɺ
    ҎԼͷઃఆΛద༻͢Δ͜ͱͰWͱWͷ3FWJTJPOʹͦΕͧΕ͓ΑͼͷτϥϑΟοΫΛ
    సૹ͢Δ༷ʹͳΓ·͢ɻ
    ❯❯❯ kubectl apply -f route-spring-v1v2.yml


    route.serving.knative.dev/spring-boot-web configured
    3PVUFϦιʔεͷߋ৽ޙʹެ։༻63-ʹ֎෦͔ΒΞΫηε͢ΔͱɺWͱW͕֬཰తʹ੾ΓସΘͬͯ
    දࣔ͞ΕΔ͜ͱ͕෼͔Γ·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  38. ᶈશͯͷτϥϑΟοΫΛWʹ੾Γସ͑Δ
    ࠷ޙʹ׬શ੾Γସ͑ͱ͍͏͜ͱͰશͯͷϦΫΤετ͕WΞϓϦసૹ͞ΕΔ༷ʹ͠·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  39. ᶈશͯͷτϥϑΟοΫΛWʹ੾Γସ͑Δ
    ެ։༻3PVUFϦιʔεΛߋ৽͠·͢ɻ
    ҎԼͷઃఆΛద༻͢Δ͜ͱͰશͯͷτϥϑΟοΫ͕Wͷ3FWJTJPOʹసૹ͞ΕΔ༷ʹͳΓ·͢ɻ
    apiVersion: serving.knative.dev/v1


    kind: Route


    metadata:


    name: spring-boot-web


    spec:


    traffic:


    - percent: 100


    revisionName: spring-boot-web-v2
    SPVUFTQSJOHWZNM
    ❯❯❯ kubectl apply -f route-spring-v2.yml


    route.serving.knative.dev/spring-boot-web configured
    3PVUFϦιʔεͷߋ৽ޙʹެ։༻63-ʹ֎෦͔ΒΞΫηε͢ΔͱɺWͷը໘ͷΈ͕දࣔ͞ΕΔ༷ʹ
    ͳͬͨ͜ͱ͕෼͔Γ·͢ɻ
    ·ͨສҰW3FWJTJPOͷΞϓϦʹෆ۩߹͕ݟ͔ͭΓWʹ໭͍ͨ͠৔߹͸࠶౓3PVUFઃఆΛมߋ͢Δ͜
    ͱͰ؆୯ʹ੾Γ໭͠Λߦ͏͜ͱ͕Ͱ͖·͢ɻ
    ࣮ӡ༻Λ૝ఆͨ͠έʔε

    View Slide

  40. ˗σϓϩΠͱτϥϑΟοΫͷ؅ཧͰϦιʔεΛ෼͚ͯѻ͏͜ͱ͕Ͱ͖Δ
    ɹɾσϓϩΠͷ؅ཧɿ$PO
    fi
    HVSBSJPOͱ3FWJTJPO
    ɹɾτϥϑΟοΫͷ؅ཧɿ3PVUF
    ˗τϥϑΟοΫͷ؅ཧΛϥΫʹߦ͑Δ
    ɹɾ֤όʔδϣϯʢ3FWJTJPOʣ΁ͷτϥϑΟοΫ੍ޚΛ3PVUFઃఆͰ؆ܿʹߦ͑Δ
    ɹɾ$BOBSZ3FMFBTFɺ#MVF(SFFOΛಠࣗͰ࢓૊ΈΛߟ͑ͣʹ࣮ݱͰ͖Δ
    σϞͷ·ͱΊ

    View Slide

  41. σϞ
    ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε

    View Slide

  42. ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε
    IUUQTJTUJPJPMBUFTUEPDTFYBNQMFTCPPLJOGP
    1SPEVDUQBHF4FSWJDF
    %FUBJMT4FSWJDF
    3FWJFXT4FSWJDF
    3BUJOHT4FSWJDF
    σϞ Ͱ͸୯ҰαʔϏεΛ,OBUJWF4FSWJOHͰσϓϩΠ͠·͕ͨ͠ɺ
    *TUJPCPPLJOGPͷ༷ͳϚΠΫϩαʔϏεΛσϓϩΠ͢Δ͜ͱ΋ՄೳͰ͢ɻ

    View Slide

  43. IUUQTJTUJPJPMBUFTUEPDTFYBNQMFTCPPLJOGP
    ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε

    View Slide

  44. ,OBUJWF4FSWJOHͷ࢓૊ΈΛ༻͍ͯϚΠΫϩαʔϏεCPPLJOGPΛσϓϩΠ͢Δͱ
    ҎԼͷ༷ͳߏ੒ʹͳΓ·͢ɻ
    ͳ͓͜͜Ͱ͸θϩεέʔϧΛ༗ޮʹ͍ͯ͠·͢ɻ
    ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε

    View Slide

  45. ࣮ࡍʹ63-ʹΞΫηεͯ͠ΈΔͱCPPLJOGPͷը໘͕දࣔ͞ΕΔ͜ͱ͕֬ೝͰ͖·͢ɻ
    ॳճΞΫηεͰ͸ҎԼͷ༷ʹ֤αʔϏεʹ͓͍ͯθϩεέʔϧঢ়ଶ͔Βͷىಈ͕ൃੜ͢ΔͨΊɺ
    Ϩεϙϯεʹ࣌ؒΛཁ͠·͢ɻ
    ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε
    ❯❯❯ kubectl get po -n bookinfo -w


    NAME READY STATUS RESTARTS AGE


    bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 Pending 0 0s


    bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 Pending 0 0s


    bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 ContainerCreating 0 0s


    bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 0/2 ContainerCreating 0 1s


    bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 1/2 Running 0 3s


    bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 Pending 0 0s


    bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 Pending 0 0s


    bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 ContainerCreating 0 0s


    bookinfo-details-v1-deployment-d56fb557b-2xsfz 0/2 ContainerCreating 0 2s


    bookinfo-details-v1-deployment-d56fb557b-2xsfz 1/2 Running 0 4s


    bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 Pending 0 0s


    bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 Pending 0 0s


    bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 ContainerCreating 0 0s


    bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 0/2 ContainerCreating 0 1s


    bookinfo-productpage-v1-deployment-757c7cc77b-qwtp2 2/2 Running 0 11s


    bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 1/2 Running 0 3s


    bookinfo-details-v1-deployment-d56fb557b-2xsfz 2/2 Running 0 12s


    bookinfo-reviews-v3-deployment-66cdd7f69d-76bl9 2/2 Running 0 17s


    bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 Pending 0 0s


    bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 Pending 0 0s


    bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 ContainerCreating 0 0s


    bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 0/2 ContainerCreating 0 2s


    bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 1/2 Running 0 5s


    bookinfo-ratings-v1-deployment-6976b4ccf7-d2ts2 2/2 Running 0 9s

    View Slide

  46. SFWJFXTTFSWJDFͷॳճىಈ͕
    ϨεϙϯελΠϜͷ໿Λ઎ΊΔ
    ,OBUJWF͸;JQLJO"1*΁ͷ4QBO৘ใͷૹ৴ʹରԠ͍ͯ͠ΔͨΊɺΞϓϦʹมߋΛՃ͑ͣʹ
    ;JQLJO+BFHFSͱ͍ͬͨπʔϧʹΑΓ5SBDJOH৘ใΛࢀর͢Δ͜ͱ͕ՄೳͰ͢ɻ
    ҎԼʹ+BFHFSͰࠓճͷCPPLJOGPʹ͍ͭͯ5SBDJOH৘ใΛऔಘͨ݁͠ՌΛࣔ͠·͢ɻ
    ϚΠΫϩαʔϏεΛσϓϩΠ͢Δέʔε

    View Slide

  47. ˗ϚΠΫϩαʔϏεΞʔΩςΫνϟͷ৔߹Ͱ΋,OBUJWF4FSWJOHͷԸܙΛड͚ΒΕΔ
    ɹɾ୯ҰαʔϏεͱಉ͡উखͰσϓϩΠެ։Ͱ͖Δ
    ˗θϩεέʔϧʹର͢Δߟྀ͕ඞཁ
    ɹɾىಈ࣌ؒʹΑΔϨεϙϯε஗ԆʢಛʹϚΠΫϩαʔϏεΞʔΩςΫνϟͰ͸Өڹ͕ݦஶʣ
    ɹɾΞϓϦଆͰλΠϜΞ΢τͷߟྀ͕ඞཁʢ୹͗͢Δͱॲཧ͕ਖ਼ৗʹߦ͑ͳ͍ʣ
    ɹɾඞཁ༗ແͷݕ౼
    ˗,OBUJWFͰ͸5SBDJOH৘ใͷࢀর͕Մೳ
    ɹɾϚΠΫϩαʔϏεΞʔΩςΫνϟͰ͸ϘτϧωοΫͷಛఆʹ༗ޮ
    σϞͷ·ͱΊ

    View Slide

  48. ʢࢀߟʣ0CTFSWBCJMJUZ
    ˗.FUSJDT
    ɹ1SPNFUIFVT(SBGBOBͳͲҰൠతͳ,VCFSOFUFTϝτϦΫεऩूελοΫʹΑΓ࣮ݱɻ
    ˗-PHHJOH
    ɹ'MVFOU#JU΍(SBGBOB-PLJͳͲҰൠతͳ,VCFSOFUFTϩάऩूελοΫʹΑΓ࣮ݱɻ
    ɹಛʹ,OBUJWFͰ͸1PE͕θϩεέʔϧ͢ΔͨΊ͜ΕΒͷελοΫΛ༻ҙ͓ͯ͘͜͠ͱ͸
    ɹ௨ৗͷ,VCFSOFUFTར༻ͱൺ΂ͯ΋ॏཁʹͳΔɻ
    ɹ$PMMFDUJOH-PHTXJUI'MVFOUCJU
    ɹIUUQTLOBUJWFEFWEPDTJOTUBMMDPMMFDUJOHMPHT
    ˗5SBDJOH
    ɹ,OBUJWFͰ͸4JEFDBSͱͯ͠1PEʹ*OKFDU͞ΕΔRVFVFQSPYZ͕;JQLJO͓Αͼ
    ɹ($14UBDLESJWFS΁ͷ4QBO৘ใૹ৴ʹରԠɻ
    ɹ*TUJP4FSWJDF.FTIಉ༷ΞϓϦέʔγϣϯʹखΛՃ͑Δ͜ͱͳ͘;JQLJO΍+BFHFSΛ༻͍ͯ
    ɹ5SBDJOH৘ใͷऩूࢀর͕Մೳɻ
    ɹ"DDFTTJOHSFRVFTUUSBDFT
    ɹIUUQTLOBUJWFEFWEPDTTFSWJOHBDDFTTJOHUSBDFT

    View Slide

  49. ʢࢀߟʣ0CTFSWBCJMJUZ
    4QBO৘ใͷૹ৴Λ༗ޮԽ͢Δ͜ͱͰҎԼͷ༷ʹ5SBDJOH৘ใΛࢀর͢Δ͜ͱ͕Ͱ͖·͢ɻ
    +BFHFSʢ*TUJPEPDTʣ
    IUUQTJTUJPJPMBUFTUEPDTPQTJOUFHSBUJPOTKBFHFSJOTUBMMBUJPO
    "DDFTTJOHSFRVFTUUSBDFT
    IUUQTLOBUJWFEFWEPDTTFSWJOHBDDFTTJOHUSBDFT
    +BFHFSʹΑΔ5SBDJOHͷྫ

    View Slide

  50. ʢࢀߟʣ಺෦తͳ࢓૊Έͷ࿩
    ˞͜͜Ͱ͸ؔ࿈͢ΔϦιʔεͷΈͷهࡌʹཹΊ͍ͯ·͢
    3PVUF $PO
    fi
    HVSBUJPOϦιʔεͷ಺෦ߏ଄͸ҎԼͷ༷ʹͳ͍ͬͯ·͢ɻ
    ɾ*TUJPͷ(BUFXBZͱ7JSUVBM4FSWJDFͷ࢓૊ΈʹΑΓτϥϑΟοΫ੍ޚ
    ɾঢ়گʹԠͯ͡4FSWJDF&OEQPJOUΛ෇͚ସ͑
    ɾBDUJWBUPSʹΑΓόοϑΝϦϯάϝτϦΫεૹ৴
    ɾBVUPTDBMFSʹΑΓ1PEىಈ؅ཧ

    View Slide

  51. ,OBUJWF4FSWJOHͰىಈ͞ΕΔ1PEʹ͸4JEF$BSͱͯ͠RVFVFQSPYZ͕*OKFDU͞Ε·͢ɻ
    *TUJPͱಉ༷4JEF$BSͱͯ͠1SPYZΛૠೖ͢ΔํࣜͰ͕͢ɺ*TUJPͷΑ͏ʹ&OWPZΛ༻͍͓ͯΒͣ
    (P࣮૷ͷRVFVFQSPYZͱ͍͏ಠࣗ1SPYZ͕༻͍ΒΕ͍ͯ·͢ɻ
    ͳ͓ɺ͜ͷRVFVFQSPYZ΋JTUJPQSPYZͱಉ༷ʹ4QBO৘ใͷૹ৴ʹରԠ͍ͯ͠ΔͨΊ5SBDF৘ใͷऔಘ͕
    ՄೳͰ͢ɻʢ೥ʹରԠʣ
    LOBUJWFTFSWJOHDNERVFVF
    IUUQTHJUIVCDPNLOBUJWFTFSWJOHUSFFNBTUFSDNERVFVF
    ʢࢀߟʣ಺෦తͳ࢓૊Έͷ࿩

    View Slide

  52. ·ͱΊ
    ˗,OBUJWF4FSWJOHΛ༻͍Δ͜ͱͰΞϓϦͷσϓϩΠެ։͕ϥΫʹͳΔ
    ɹɾ,OBUJWFಠࣗϦιʔεʢ4FSWJDFɺ$PO
    fi
    HVSBUJPOɺ3PVUFʣʹΑΔந৅Խ
    ɹɾͨͩ͠,OBUJWFࣗମ͸·ͩ1SF3FMFBTFͷͨΊ঎༻ར༻ʹ͸೉͋Γ
    ɹɾҰํϚωʔδυ,OBUJWFͷ$MPVE3VO͸("͓ͯ͠Γಋೖࣄྫ͋Γ
    ˗ಛ௃ͷͭͰ͋Δθϩεέʔϧ͸ѻ͍ʹ஫ҙ͕ඞཁ
    ɹɾॳճىಈ࣌ʹ͸ϨεϙϯελΠϜͷ0)ʹͳΔ
    ɹɾΦϯϓϨӡ༻Ͱ͸ݕূ༻్Λআ͖ಛʹඞཁͳ͍ͷͰ͸ʁ
    ɹɾҰํ$MPVE3VOͷΑ͏ͳΫϥ΢υαʔϏεʢىಈ࣌ؒ՝ۚʣͰ͸ίετޮՌ͕͋Γͦ͏
    ɹɹɾ$MPVE3VOͰ͸8BSN6Qͱ͍͏࢓૊Έ͕͋Δ໛༷

    View Slide

  53. 5IBOL:PV

    View Slide