Submit Search
Upload
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
•
0 likes
•
848 views
Y
yoshito funayose
Follow
ハンズオン資料になります。 https://linkbal.connpass.com/event/67437/
Read less
Read more
Technology
Report
Share
Report
Share
1 of 48
Download now
Download to read offline
Recommended
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
yoshito funayose
Facebookアプリケーション開発ガイド読んでみた
Facebookアプリケーション開発ガイド読んでみた
Yuya Fujiwara
Sta py20210609 dokugakuprogrammer
Sta py20210609 dokugakuprogrammer
ku_taka
#o_giriのタグでネタPOSTするといいことがあるらしい
#o_giriのタグでネタPOSTするといいことがあるらしい
meru_akimbo
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
Tomoki Hasegawa
テックリンク資料20170529
テックリンク資料20170529
yoshito funayose
Go言語ハンズオン資料flagパッケージを使ってみる
Go言語ハンズオン資料flagパッケージを使ってみる
yoshito funayose
Golang入門
Golang入門
Yukihiro Kitazawa
Recommended
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
yoshito funayose
Facebookアプリケーション開発ガイド読んでみた
Facebookアプリケーション開発ガイド読んでみた
Yuya Fujiwara
Sta py20210609 dokugakuprogrammer
Sta py20210609 dokugakuprogrammer
ku_taka
#o_giriのタグでネタPOSTするといいことがあるらしい
#o_giriのタグでネタPOSTするといいことがあるらしい
meru_akimbo
PHPカンファレンス福岡に 行ってきた
PHPカンファレンス福岡に 行ってきた
Tomoki Hasegawa
テックリンク資料20170529
テックリンク資料20170529
yoshito funayose
Go言語ハンズオン資料flagパッケージを使ってみる
Go言語ハンズオン資料flagパッケージを使ってみる
yoshito funayose
Golang入門
Golang入門
Yukihiro Kitazawa
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
Ouka Yuka
What is "Go" Gopher?
What is "Go" Gopher?
Ryuji Iwata
My Portfolio_Taichi Hidaka
My Portfolio_Taichi Hidaka
TaichiHidaka
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
Pythonを始めよう
Pythonを始めよう
shouta yoshikai
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
My Portfolio Taichi Hidaka
My Portfolio Taichi Hidaka
TaichiHidaka
Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)
Shinichirou Nakamura
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Takuya Ueda
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Ryuji Iwata
インターネットで 可能性をつなげる、ひろげる 〜ペパボ福岡デザインチーム〜
インターネットで 可能性をつなげる、ひろげる 〜ペパボ福岡デザインチーム〜
Keita Kawamoto
アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツール
Keishi Hosoba
Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発
Yuji Otani
Easy easy2
Easy easy2
ssuser944f29
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
Antoine Choppin
勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126
Akihiro Fujiwara
2017823 pythonを始めよう
2017823 pythonを始めよう
shouta yoshikai
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
SENSY Inc
Flow用kintoneカスタムコネクタ - スマホで使える「ふとアプリ」を作ってみた
Flow用kintoneカスタムコネクタ - スマホで使える「ふとアプリ」を作ってみた
Masao Niizuma
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
More Related Content
Similar to テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
Ouka Yuka
What is "Go" Gopher?
What is "Go" Gopher?
Ryuji Iwata
My Portfolio_Taichi Hidaka
My Portfolio_Taichi Hidaka
TaichiHidaka
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
Pythonを始めよう
Pythonを始めよう
shouta yoshikai
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
My Portfolio Taichi Hidaka
My Portfolio Taichi Hidaka
TaichiHidaka
Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)
Shinichirou Nakamura
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Takuya Ueda
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Ryuji Iwata
インターネットで 可能性をつなげる、ひろげる 〜ペパボ福岡デザインチーム〜
インターネットで 可能性をつなげる、ひろげる 〜ペパボ福岡デザインチーム〜
Keita Kawamoto
アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツール
Keishi Hosoba
Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発
Yuji Otani
Easy easy2
Easy easy2
ssuser944f29
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
Antoine Choppin
勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126
Akihiro Fujiwara
2017823 pythonを始めよう
2017823 pythonを始めよう
shouta yoshikai
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
SENSY Inc
Flow用kintoneカスタムコネクタ - スマホで使える「ふとアプリ」を作ってみた
Flow用kintoneカスタムコネクタ - スマホで使える「ふとアプリ」を作ってみた
Masao Niizuma
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
Similar to テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
(20)
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
What is "Go" Gopher?
What is "Go" Gopher?
My Portfolio_Taichi Hidaka
My Portfolio_Taichi Hidaka
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Pythonを始めよう
Pythonを始めよう
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
My Portfolio Taichi Hidaka
My Portfolio Taichi Hidaka
Rubyでアプリ開発(2013 0430)
Rubyでアプリ開発(2013 0430)
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
私なりのGo言語のご紹介
私なりのGo言語のご紹介
インターネットで 可能性をつなげる、ひろげる 〜ペパボ福岡デザインチーム〜
インターネットで 可能性をつなげる、ひろげる 〜ペパボ福岡デザインチーム〜
アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツール
Hack+FuelPHPによるWebサービス開発
Hack+FuelPHPによるWebサービス開発
Easy easy2
Easy easy2
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
RaspberryPiで日本の子供たちにプログラミングのパッションを伝えよう!
勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126
2017823 pythonを始めよう
2017823 pythonを始めよう
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
Flow用kintoneカスタムコネクタ - スマホで使える「ふとアプリ」を作ってみた
Flow用kintoneカスタムコネクタ - スマホで使える「ふとアプリ」を作ってみた
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
1.
9/28開催 Go言語初心者向け ハンズオン#3 株式会社リンクバル 技術部 技術グループ
船寄良登 APIアプリをGKEで動かしてみよう
2.
1. 自己紹介 2. はじめに 3.
GKEとkubernetesについて 4. ハンズオン 5. 最後に アジェンダ 2
3.
自己紹介 3 船寄 良登 (ふなよせ
よしと) 経歴: 受託開発会社、広告代理店などでサーバサイドエンジニアとして、 webサービスの開発をおこなってきました。 これまでPHPerでしたが、最近、Railsを本格的に触り始めました。 リンクバルでは「街コンジャパン」の開発を担当しています。 趣味: 美味しい物を食べること、子供と遊ぶこと。 その他: Go言語に興味があります。Hatchobori.goというGo言語のもくもく会を立ち上げ ました。https://hatchobori-go.connpass.com/
4.
今回のハンズオンは、Go言語で作成した、簡単なapiアプリを Google Container Engine(GKE)上へデプロイして、実行する内容となっております。 はじめに 4
5.
Google Container Engine(GKE)とは 5 Google
Cloud Platform内で、Dockerコンテナを実行できる フルマネージドサービス。 kubernetesで管理されている。
6.
kubernetesとは kubernetes 「オーケストレーション・ツール」と呼ばれる分野の管理ツールで、 Googleが主体的に開発に参画しているオープンソース・ソフトウェアです。 ● 関連するコンテナのグルーピング ● コンテナに割り振られるIPアドレスの管理 ●
コンテナの監視 ● コンテナ間のネットワークルーティング管理 ● コンテナに割り当てるストレージの管理 などをやってくれるソフト 6
7.
Google Cloud Platformアカウントの作成 7 サイトへアクセスし、無料トライアルをクリック。 https://cloud.google.com
8.
Google Cloud Platformアカウントの作成 8 入力をすすめる
9.
Google Cloud Platformアカウントの作成 9 住所、氏名、クレカ情報を入力後、「無料トライアルを開始」ボタンを押下
10.
Google Cloud Platformアカウントの作成 10 登録完了
11.
Google Cloud Platform
プロジェクトの作成 11
12.
Google Cloud Platform
プロジェクトの作成 12 今回「techlink」というプロジェクトを作成する。
13.
Google Cloud Platform
プロジェクトの作成 13 ハンズオンの中でIDを使用しますので、 どこかにメモしておいてください
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.
.bash_profileの再読込 初期化用のコマンドを実行 yを選択し、ブラウザが開かれる(開かれない場合はURLをアドレスバーへ入力) Google Cloud SDKの初期化 15 gcloud
init source ~/.bash_profile
16.
使用するアカウントを選択する Google Cloud SDKの初期化 16
17.
スコープの許可を行う Google Cloud SDKの初期化 17
18.
ユーザ認証完了 Google Cloud SDKの初期化 18
19.
プロジェクトの選択 Google Cloud SDKの初期化 19
20.
Google Compute Engineは使わない Google
Cloud SDKの初期化 20
21.
dockerを起動させます。 apiサーバの作成 21
22.
apiサーバの作成 22 下記のリポジトリを任意の場所へcloneし、 ディレクトリへ移動します。 起動させます。 git clone https://github.com/funayoseyoshito/techlink-go3.git cd
techlink-go3 docker-compose up
23.
apiサーバの作成 23 このような画面が表示されれば成功です
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.
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.
kubectlをインストールする。 (API経由でKubenetesを操作するためのクライアントツール) kubectlのインストール 26 gcloud components install
kubectl
27.
GCP上でGoogleCloudSQLを作成する 27 コンソール上でCloudSQLの画面を表示し、 「インスタンスを作成」を押下します。
28.
GCP上でGoogleCloudSQLを作成する 28 MySQLを選択し、「次へ」を押下します。
29.
GCP上でGoogleCloudSQLを作成する 29 「第2世代を選択」を押下します。
30.
GCP上でGoogleCloudSQLを作成する 30 赤枠部分を入力及び選択します。
31.
GCP上でGoogleCloudSQLを作成する 31 マシンスペックを変更し、「作成」ボタンを押下します。
32.
GoogleCloudSQLへテーブルを作成します 32 インスタンスが起動したら、インスタンスIDを押下します。 「Cloud Shell を使用して接続」 を押下します。
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.
下記の画面へアクセスします。 「techlink」プロジェクトを選択し、「続行」を押下。 https://console.cloud.google.com/flows/enableapi?apiid=sqladmin Cloud SQL Administration
API を有効にする。 34
35.
下記の画面へアクセスします。 「techlink」プロジェクトを選択し、「続行」を押下。 https://console.cloud.google.com/projectselector/iam-admin/servicea ccounts?hl=ja サービスアカウントを作成する 35
36.
赤枠の部分を入力&選択し、「作成」を押下する。 キーがダウンロードされます。 サービスアカウントを作成する 36
37.
コンテナクラスタの作成 37 下記のコマンドを実行する gcloud container clusters
create api-cluster --scopes cloud-platform --zone asia-northeast1-a --machine-type f1-micro --num-nodes 3
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.
deploymentの作成 39 deploymentを作成する設定ファイルを編集します。(api-deployment.yml) APIのdocker imageを指定します 接続名を指定します
40.
下記のコマンドを実行します。 deploymentを作成する 40 kubectl create -f
api-deployment.yml
41.
deploymentの作成 41 deploymentの確認をしてみましょう クラスタ上にpodsが作成されていて、既に動いている状態です kubectl get deployments kubectl
get pods
42.
Public IPの紐付け 42 deploymentへPublic IPを紐付ける 紐付けを確認する kubectl
expose deployment api --type="LoadBalancer" kubectl get services
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 下記のコマンドでクラスタを削除します gcloud container clusters
delete api-cluster --zone asia-northeast1-a
45.
最後に 45 本日は、弊社の勉強会にご参加いただきまして、ありがとうございました。 これからも、有意義な勉強会を開催できるように努めますので、どうぞよろしくお願いします。 最後に、弊社ではエンジニア職を絶賛募集中です。 弊社に興味がある方、は是非、スタッフまでお声かけくださいませ。 また、お知り合いでご転職をお考えの方がいらっしゃいましたら、 弊社の事をお伝えいただけましたら幸いです。 [採用ページ] http://linkbal.co.jp/recruit/ [エンジニアブログ] http://tech.linkbal.co.jp/ どうもありがとうございました。
46.
46 街コンジャパン https://machicon.jp ・日本初のイベント特化型ECサイト ・4万件以上の街コン・パーティー情報を掲載 ・会員数約100万 (2017年7月現在)
47.
47 カップリンク https://couplink.jp/ 恋活・婚活 マッチングアプリ
48.
Hatchobori.go https://hatchobori-go.connpass.com/event/63145/ ・Go言語のコミュニティを立ち上げました。 ・主にもくもく会がメインです。 ・参加者絶賛募集中ですので、 こちらもよろしくお願いします。 48
Download now