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

gcp_gke_infla_design.pdf

 gcp_gke_infla_design.pdf

E4064268abb8254bc0fb2ace062bd348?s=128

TakutoYoshimura

February 14, 2019
Tweet

Transcript

  1. Angular +Elixir 製SPA をGKE で動かす Takuto Yoshimura tcr.yoshimura@karabiner.tech

  2. 自己紹介 本名 吉村 拓人 カラビナテクノロジー株式会社 社内のあだ名は つちろー 元はJava の金融系SIer 昨年より顧問エンジニアとしてElixir

    でWeb システ ム開発はじめました
  3. 顧問エンジニアとは 月額定額で0 からのシステム開発をサポート Web サービス立ち上げのビジネスモデル構築など からお供いたします 数名の担当で複数のお客様のサービスを開発

  4. 数名とは ぶっちゃけ3名です ※2018 年実績 ・デザイン&フロントエンジニア ・バックエンドエンジニア(つちろー) ・バックエンド-> フロントエンジニア

  5. 基盤がしんどい そうだGCP にしよう

  6. GCP に決めた理由 コンソールのUI が素敵

  7. GKE に決めた理由 GAE プログラムの実行環境ホスティング 抽象度高 (ElixirRuntime がWebSocket に未対応) GKE コンテナオーケストレーションのホスティン

    グ 抽象度中 GCE 仮想サーバーのホスティング 抽象度低
  8. 結論 今回はGKE で

  9. システムの論理構成

  10. ソフトウェア/ サービススタック

  11. デプロイフロー

  12. クライアントポッド構成

  13. クライアント構成定義(1/2) apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: client-app name:

    client-app namespace: default spec: progressDeadlineSeconds: 600 replicas: 2 revisionHistoryLimit: 10 selector: matchLabels: app: client-app strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate ~~
  14. クライアント構成定義(2/2) ~~ template: metadata: creationTimestamp: null labels: app: client-app spec:

    containers: - image: us.gcr.io/sample-deploy-project/client-app:latest command: ["nginx", "-g", "daemon off;"] imagePullPolicy: Always name: client-sha256 resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30
  15. サーバーポッド構成

  16. サーバー構成定義(1/2) ~~ spec: containers: - image: us.gcr.io/hogehoge-project/app-ex:latest command: ["/bin/sh"] args:

    ["/opt/app_ex/app_start_prod.sh"] env: - name: "APP_EX_DB_USER" valueFrom: secretKeyRef: name: "app-ex-repo" key: "APP_EX_DB_USER" - name: "APP_EX_DB_PASS" valueFrom: secretKeyRef: name: "app-ex-repo" key: "APP_EX_DB_PASS" imagePullPolicy: Always name: vanking-server-sha256 ~~
  17. わかりやすいまとめ

  18. ご静聴ありがとうございました。