Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう

297 views

Published on

ハンズオン資料になります。
https://linkbal.connpass.com/event/67437/

Published in: Technology
  • Login to see the comments

  • Be the first to like this

テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう

  1. 1. 9/28開催 Go言語初心者向け ハンズオン#3 株式会社リンクバル 技術部 技術グループ 船寄良登 APIアプリをGKEで動かしてみよう
  2. 2. 1. 自己紹介 2. はじめに 3. GKEとkubernetesについて 4. ハンズオン 5. 最後に アジェンダ 2
  3. 3. 自己紹介 3 船寄 良登 (ふなよせ よしと) 経歴: 受託開発会社、広告代理店などでサーバサイドエンジニアとして、 webサービスの開発をおこなってきました。 これまでPHPerでしたが、最近、Railsを本格的に触り始めました。 リンクバルでは「街コンジャパン」の開発を担当しています。 趣味: 美味しい物を食べること、子供と遊ぶこと。 その他: Go言語に興味があります。Hatchobori.goというGo言語のもくもく会を立ち上げ ました。https://hatchobori-go.connpass.com/
  4. 4. 今回のハンズオンは、Go言語で作成した、簡単なapiアプリを Google Container Engine(GKE)上へデプロイして、実行する内容となっております。 はじめに 4
  5. 5. Google Container Engine(GKE)とは 5 Google Cloud Platform内で、Dockerコンテナを実行できる フルマネージドサービス。 kubernetesで管理されている。
  6. 6. kubernetesとは kubernetes 「オーケストレーション・ツール」と呼ばれる分野の管理ツールで、 Googleが主体的に開発に参画しているオープンソース・ソフトウェアです。 ● 関連するコンテナのグルーピング ● コンテナに割り振られるIPアドレスの管理 ● コンテナの監視 ● コンテナ間のネットワークルーティング管理 ● コンテナに割り当てるストレージの管理 などをやってくれるソフト 6
  7. 7. Google Cloud Platformアカウントの作成 7 サイトへアクセスし、無料トライアルをクリック。 https://cloud.google.com
  8. 8. Google Cloud Platformアカウントの作成 8 入力をすすめる
  9. 9. Google Cloud Platformアカウントの作成 9 住所、氏名、クレカ情報を入力後、「無料トライアルを開始」ボタンを押下
  10. 10. Google Cloud Platformアカウントの作成 10 登録完了
  11. 11. Google Cloud Platform プロジェクトの作成 11
  12. 12. Google Cloud Platform プロジェクトの作成 12 今回「techlink」というプロジェクトを作成する。
  13. 13. Google Cloud Platform プロジェクトの作成 13 ハンズオンの中でIDを使用しますので、 どこかにメモしておいてください
  14. 14. Google Cloud SDKのインストール 14 ツールを任意の場所へダウンロードし、展開してください。 展開したツールの中に移動し、パス追加などを行います。 install.shの質問1(sdkの改善に協力してくれますか?) install.shの質問2(パスを通してタブ補完を有効にしますか?) google-cloud-sdk-158.0.0-darwin-x86_64.tar.gz cd google-cloud-sdk ./install.sh
  15. 15. .bash_profileの再読込 初期化用のコマンドを実行 yを選択し、ブラウザが開かれる(開かれない場合はURLをアドレスバーへ入力) Google Cloud SDKの初期化 15 gcloud init source ~/.bash_profile
  16. 16. 使用するアカウントを選択する Google Cloud SDKの初期化 16
  17. 17. スコープの許可を行う Google Cloud SDKの初期化 17
  18. 18. ユーザ認証完了 Google Cloud SDKの初期化 18
  19. 19. プロジェクトの選択 Google Cloud SDKの初期化 19
  20. 20. Google Compute Engineは使わない Google Cloud SDKの初期化 20
  21. 21. dockerを起動させます。 apiサーバの作成 21
  22. 22. apiサーバの作成 22 下記のリポジトリを任意の場所へcloneし、 ディレクトリへ移動します。 起動させます。 git clone https://github.com/funayoseyoshito/techlink-go3.git cd techlink-go3 docker-compose up
  23. 23. apiサーバの作成 23 このような画面が表示されれば成功です
  24. 24. apiサーバの作成 24 create read update delete curl -F "name=test1" -F "email=test@test.com" localhost:4000/users curl localhost:4000/users/1 curl -F "name=test1change1" -X PUT -F "email=test@test.com" localhost:4000/users/1 curl -X DELETE localhost:4000/users/1
  25. 25. apiサーバの作成とdocker imageのpush 25 docker image の名前を変更します Container Registryへプッシュします。 gcloud docker -- push gcr.io/techlink-hogehoge/api:1.0 gcloud docker -- push {registroy host}/{プロジェクトID}/api:1.0 docker tag techlinkgo3_app gcr.io/techlink-hogehoge/api:1.0 docker tag techlinkgo3_app {registroy host}/{プロジェクトID}/api:1.0
  26. 26. kubectlをインストールする。 (API経由でKubenetesを操作するためのクライアントツール) kubectlのインストール 26 gcloud components install kubectl
  27. 27. GCP上でGoogleCloudSQLを作成する 27 コンソール上でCloudSQLの画面を表示し、 「インスタンスを作成」を押下します。
  28. 28. GCP上でGoogleCloudSQLを作成する 28 MySQLを選択し、「次へ」を押下します。
  29. 29. GCP上でGoogleCloudSQLを作成する 29 「第2世代を選択」を押下します。
  30. 30. GCP上でGoogleCloudSQLを作成する 30 赤枠部分を入力及び選択します。
  31. 31. GCP上でGoogleCloudSQLを作成する 31 マシンスペックを変更し、「作成」ボタンを押下します。
  32. 32. GoogleCloudSQLへテーブルを作成します 32 インスタンスが起動したら、インスタンスIDを押下します。 「Cloud Shell を使用して接続」 を押下します。
  33. 33. 接続ができたら、下記のSQLを実行します。 create database user; use user; CREATE TABLE `users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, `deleted_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_users_deleted_at` (`deleted_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; GoogleCloudSQLへテーブルを作成します 33
  34. 34. 下記の画面へアクセスします。 「techlink」プロジェクトを選択し、「続行」を押下。 https://console.cloud.google.com/flows/enableapi?apiid=sqladmin Cloud SQL Administration API を有効にする。 34
  35. 35. 下記の画面へアクセスします。 「techlink」プロジェクトを選択し、「続行」を押下。 https://console.cloud.google.com/projectselector/iam-admin/servicea ccounts?hl=ja サービスアカウントを作成する 35
  36. 36. 赤枠の部分を入力&選択し、「作成」を押下する。 キーがダウンロードされます。 サービスアカウントを作成する 36
  37. 37. コンテナクラスタの作成 37 下記のコマンドを実行する gcloud container clusters create api-cluster --scopes cloud-platform --zone asia-northeast1-a --machine-type f1-micro --num-nodes 3
  38. 38. クレデンシャルファイルをupload <PATH_TO_CREDENTIAL_FILE>は先ほどダウンロードしたjsonファイルパス DB接続情報を登録する <USERNAME>と<PASSWORD>は設定した値をそれそれ指定してください。 kubectl create secret generic cloudsql-db-credentials --from-literal=username=<USERNAME> --from-literal=password=<PASSWORD> DB接続用の認証情報をuploadする 38 kubectl create secret generic cloudsql-instance-credentials --from-file=credentials.json=<PATH_TO_CREDENTIAL_FILE>
  39. 39. deploymentの作成 39 deploymentを作成する設定ファイルを編集します。(api-deployment.yml) APIのdocker imageを指定します 接続名を指定します
  40. 40. 下記のコマンドを実行します。 deploymentを作成する 40 kubectl create -f api-deployment.yml
  41. 41. deploymentの作成 41 deploymentの確認をしてみましょう クラスタ上にpodsが作成されていて、既に動いている状態です kubectl get deployments kubectl get pods
  42. 42. Public IPの紐付け 42 deploymentへPublic IPを紐付ける 紐付けを確認する kubectl expose deployment api --type="LoadBalancer" kubectl get services
  43. 43. APIサーバの動作確認 43 create read update delete curl -F "name=test1" -F "email=test@test.com" {EXTERNAL-IP}:4000/users curl {EXTERNAL-IP}:4000/users/1 curl -F "name=test1change1" -X PUT -F "email=test@test.com" {EXTERNAL-IP}:4000/users/1 curl -X DELETE {EXTERNAL-IP}:4000/users/1
  44. 44. クラスタの削除 44 下記のコマンドでクラスタを削除します gcloud container clusters delete api-cluster --zone asia-northeast1-a
  45. 45. 最後に 45 本日は、弊社の勉強会にご参加いただきまして、ありがとうございました。 これからも、有意義な勉強会を開催できるように努めますので、どうぞよろしくお願いします。 最後に、弊社ではエンジニア職を絶賛募集中です。 弊社に興味がある方、は是非、スタッフまでお声かけくださいませ。 また、お知り合いでご転職をお考えの方がいらっしゃいましたら、 弊社の事をお伝えいただけましたら幸いです。 [採用ページ] http://linkbal.co.jp/recruit/ [エンジニアブログ] http://tech.linkbal.co.jp/ どうもありがとうございました。
  46. 46. 46 街コンジャパン https://machicon.jp ・日本初のイベント特化型ECサイト ・4万件以上の街コン・パーティー情報を掲載 ・会員数約100万 (2017年7月現在)
  47. 47. 47 カップリンク https://couplink.jp/ 恋活・婚活 マッチングアプリ
  48. 48. Hatchobori.go https://hatchobori-go.connpass.com/event/63145/ ・Go言語のコミュニティを立ち上げました。 ・主にもくもく会がメインです。 ・参加者絶賛募集中ですので、  こちらもよろしくお願いします。 48

×