2019年4月30日火曜日

実務経験なくても【Associate Cloud Engineer】合格しました!

 他の人の合格談がたくさんあるので素人的な視点で体験記を書いてみようと思います。
こういう試験受けるの初めてだったので、いろいろ不安がありました。

◆必要な物
・クレジットカード
・身分証明書二つ

写真付き身分証明書が必要だというのはよくある質問に書いてあるのでよく読みましょう。ちゃんと隅々まで読まないと証明書が二つ必要だという事に気が付かないので要注意。わたしは気づかなかったけれどもたまたま二つ持っていたのでセーフでした。

◆役に立ったもの
試験ガイドで試験範囲を確認
GCPの無料アカウントで実際に操作してみる
・各サービスのドキュメント
・Quizlet

一番役に立ったのはCourseraの講座でGCPは参考書になる本が少なく内容も古くなっていて役に立ちませんでした。どこから手を付けていいのか分からないっていうわたしくらいなレベルでないよりはあった方がマシなくらい。
最初からCouseraで講座を見てたら本は買わなかったと思います。3,000円以上するし受験費用が125ドルかかるから。

ドキュメントは多すぎてどこまでやればいいのかわからず、公式の模擬試験とCouseraの講座の設問やquizletで8,9割出来るまで頑張るのが目標。
いくら読んでもキリがないのでテスト問題は役に立ちました。

主要サービスのチュートリアルは一通りこなして、コンソール上からではなくコマンドでもやっておこう。yamlで構成ファイルを用意する辺りは特に必要かなと思います。

特に何が重要かというのは講座で強調してくれているので、聞いた内容とテストで失敗した所を整理する。無料アカウントではIAMの組織は操作出来ないので講座とドキュメントをよく読もう。

2019年3月23日土曜日

無知から始める仮想環境-vCenterを立ててみよう


1.早々に諦める

仮想環境の管理用の環境が欲しくてGCP上にvCenterとやらを立てようとするも失敗。
まあようするに失敗談の記事です。
最終的にはいちおう環境構築終わりましたが土曜日一日中かかってしまった。

とりあえずSQLServerがあればいいのかな、じゃあGCEでSQLserver入りのイメージを選ぼう!
⇒続いてvmwareに登録して無償版のisoファイルを落とそうとするもwindows版が見当たらない。ダウンロードページには”LinuxベースのvCenterソフトウェア”のみ
vmwareのblogではこんな記事が・・・
Farewell, vCenter Server for Windows
https://blogs.vmware.com/vsphere/2017/08/farewell-vcenter-server-windows.html

6.7からって聞いたからまだあるのかと思ったけど、もう無いみたい?
てゆっか2017年の記事じゃん・・・。


2.GCP上で作るのも諦める


まあとにかく。
SQLserver(windows2012)は用意してしまったのでLinuxサーバーも用意してisoをSQLserverに転送してメディアの中身からwindows用のインストーラーを開く。(当初はあっなんだwindows版あるんじゃんって思っていましたが、windows上でインストーラーを起動してGUIで操作できるだけ・・・)

そしてこのインストーラーはまずESXiが無いと駄目だと分かったので(先にvcenterだけは作れない)
そしてESXiも落としてきていれようとしたものの、起動するにはメディアに焼いてそこからインストールしないと駄目らしい。(でもそんなのめんどくさい)
そんなわけで次に用意したのはVM WorkStationPro15。
せっかく作ったSQLserver(windows2012)上に置いて動かす。
これは正常にインストール可能。でも続くESXiを新規仮想マシンにインストールするのが駄目でした。
これをやるとインストールが始まった途端にWorkStationどころかSQLserver(windows2012)毎クラッシュして切断されてしまう。
何度やっても駄目で調べてみるとどうやらVMの上にVMを乗せるのはnestedVMというらしくあまり対応している所はないようです。

GCPだとここらへんですね。
https://cloud.google.com/compute/docs/instances/enable-nested-virtualization-vm-instances?authuser=2&hl=ja

Hyper-V、ESX、Xen などの他のハイパーバイザは現在サポートされていません。Haswell または新しいプラットフォーム上で実行されている Linux VM インスタンスでは、ネストされた仮想化を使用できます。

あるにはあるけど、ESXはサポート外。
インスタンスについてもwindowsは選択できない。
GCPではKVMを用意しているもののどうやら欲しいものはGCPじゃ出来ないみたいですね。
nested VMは今回は諦めました。
世の中他のVM環境と組み合わせてなんとか実現している方がいるようですが、ちょっとわたしには無理っス。

GCPの勉強するのになんか作ってみようと始めたのでもう諦めようかと思ったけれど。

3.でもなんか悔しいので立ててみる

まあしょうがないのでGCPでは無く無駄にスペックの高いローカルPC環境で構築してみました。



GCP上でさんざん失敗したのでそこそこ早く進みました。

・ローカルHDDにWorkstationProを入れる。
・そこにESXiの仮想マシンを一つ建てる
・作業用にwindows2012サーバーを建てる
・作業用にしたwindowsサーバーでDNSとIISをサーバー機能追加
・win上でVCSAのメディアをマウントしてインストール
⇒VCSAのサーバーが出来た!
あとはURLに接続して上記画像の通り管理環境が出来ました。

4.トラブったこと

windowsのVM環境でキーボードが何故か英字キーボードになっているようでどうやっても日本語にならず、気づいていなかった為パスワードが意図した物と違っていた。
URLにアクセスした際いくらやってもログインできずに悩んでしまった。
そんなわけでVMリモートコンソールを急遽インストールして作業(4Kモニタだと文字が小さい)

意図した物とは違ったけどとりあえず終わった(貴重な土曜日が・・・
まあDNSとかFQDNとか何それ状態から頑張りました。

5.手持ちの環境と用意したもの

■HW
【CPU】
できるだけ
【メモリ】
10GB以上
【HDD】
300GB

■OS
【WindowsServer2012R2評価版】
9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_JA-JP-IR3_SSS_X64FREE_JA-JP_DV9.ISO

■他
【ESXi】
VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso
【VCSA】
VMware-VCSA-all-6.7.0-11726888.iso
【SQLServer】
SQLServer2017-x64-JPN.iso
【VMリモートコンソール】
VMware-VMRC-10.0.4-11818843.exe
【VMWorkStationPro15(windows)】
VMware-workstation-full-15.0.3-12422535.exe

2019年2月10日日曜日

【GCP】Associate Cloud Engineerの試験受けてみた!

結果は・・・悲惨なものでした。

模擬試験より何倍も難しい・・・。

一応GCEでインスタンスグループやテンプレートとかの機能は一通り試したり、
サンプルとしてGKEもWordPressやGuestbook作ってみるとかロードバランス、オートスケールとかはやってみたし、Bigqueryもダウンロードしてきた国税庁の法人番号表のデータをCloudStorageにおいて読み込ませてクエリ実行試してみたりとか一通りやったものの全然駄目。

コマンド隅々まで丸暗記しないと駄目かも。
試行錯誤でヘルプ見ながらどうにかするっていうレベルじゃなくてGoogle推奨のやり方でスパっと回答できるレベルが必要そう。

2019年2月4日月曜日

GKEのおさらいと料金アラート通知設定

■GKEのおさらい

模擬試験でてんで駄目だった部分や、ドキュメント読んでるだけではなかなか実感がわかなかった部分のおさらいを兼ねて

KubernetesEngineのクイックスタートをやってみる。

ガワをつくるだけなら本でやったのでせっかくだからSDKをローカルのPCにインストールしてそこでコマンドプロンプトから実行してみる事にした。
書いてある通りにやるだけなので勉強にはならないかと思ったけど、意外とやると勉強になるかもしれない。模擬試験で適当にやってしまった部分が理解出来たので良かった。

コマンド/説明

gcloud config set project [PROJECT_ID]gcloud config set project >_<デフォルトプロジェクトの指定
gcloud config set compute/zone [COMPUTE_ZONE]gcloud config set compute/zone asia-east1-aゾーンの設定。
gcloud container clusters create [CLUSTER_NAME]gcloud container clusters create gkecluster
ゾーンの設定が間違っているとエラーになる。
kubernetesが作成できるリージョンとゾーンの名称が違った。GUIで作成していれば間違った組み合わせにはならない。
作成が完了すると↓のメッセージが出力
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
gkecluster asia-east1-a 1.11.6-gke.2 35.185.141.127 n1-standard-1 1.11.6-gke.2 3 RUNNING
gcloud container clusters get-credentials [CLUSTER_NAME]gcloud container clusters get-credentials gkecluster認証情報を取得
gcloud components install kubectlkubectlコマンドが効くようになる
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080サンプルアプリを起動する
kubectl expose deployment hello-server --type "LoadBalancer"サンプルアプリを公開する
kubectl get service hello-server外部IPなどの情報を取得する(EXTERNAL-IPの部分)

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-server LoadBalancer >_< >_< 8080:31619/TCP 1m
http://[EXTERNAL_IP]:8080ブラウザで実際に見てみる
Hello worldという文字列が表示されていればOK
kubectl delete service hello-server
gcloud container clusters delete [CLUSTER_NAME]
gcloud container clusters delete gkecluster
課金されちゃうので、止めて消す。


実際にクバちゃんのクラスタ作成する前に打ったgcloud configのコマンドでデフォルト設定を指定している。模擬試験でも出てたね!
本見ながらGUIで操作して作る時には躓かなかった所で躓いたりしてるのが面白い。
ゾーン設定が間違っていたのでcreateコマンドがエラーになった。
ゾーンでは無くリージョンの名称を調べて入れていたのだけど、そのconfig setコマンドはエラーにならなかったのにcreateの段になってからエラーになった。

デフォルト設定を指定する時は”gcloud”クバちゃんを操作する時は"kubectl"で!
模擬試験のフィードバックにもそんな説明があったね。

■料金通知設定

とまあ、これだけだと何なので予算のアラート設定を仕込んでみる。
特にドキュメントも読まずに適当にGCPのコンソールから[お支払い]-[予算とアラート]画面を開いて予算の作成を選ぶ。
そこで通知先のアカウントを選べるのでIAM設定で新しいユーザーで適当なフリーアドレスでユーザーを作成してみようと思ったのだけれど、gmailじゃないと駄目なのね。
仕方ないので今の自分のアカウントにさらにKubernetesEngine管理者とプロジェクトの支払い管理者という役割を追加。

で、また予算画面に戻り請求先アカウントを指定。
で、下の方に通知の管理なるものがあったのでそれにチェックを入れてみるけれどPub/Subに接続してトピックを作成しないと使えませんと警告が出た。

★pub/subとは
ストリーム分析パイプラインの基盤となるスケーラブルで耐久性のあるイベント取り込み・配信システム 別々に開発されたアプリケーションの間で安全かつ高可用な通信を実現します

よくわからん。
模擬試験では何かのサービスとサービスの間にこんなGCPのサービスがあった気がする。
GCPのサービスを覚えないといけないのでドキュメントを読んでいるのだけれど、アプリケーションがあって、後ろにデータベースやデータ分析用のサービスがあって場合によってはGCEのインスタンスなんかがある図がちょろちょろ出てくる。その合間にデータ分析サービスとしてpub/subがいる。
料金のアラート通知も確かにデータ分析の分類か。なるほど。
”お支払い"の機能もGCPのサービスなのでkubernetes-pub/sub-お支払いという接続なのかしらん?


少なくとも上の一連のコマンドの実行時にデフォルト設定でクラスタを作成しているので
asia-east1-aに三つのインスタンスが作成されてインスタンスグループになり、ロードバランサの設定もされて100GBのディスク三つを使用している。
正確には何と何を結んでいるんだろう。

とりあえずメッセージ通りにトピックを作成するだけでいいようだ。
プロジェクト名/topic/は固定されてて名前つけるだけ。
で、また予算画面でチェックいれて終了。
最初から100%オーバーしている状態で設定した場合でも超過メッセージが来るのかテスト。


おお、凄い。ちゃんと来た。
一年間、もしくは300ドル分は使えるのでまだまだ大丈夫だけど今日はもうクラスタ停止させて寝よう。
この前三日間消さずに放置してた分の請求内訳みたら250円くらいかかってた。
CPU使用率0%でもちゃんと費用は掛かる!

このGCPとか他のクラウドサービスのDBとか機械学習の従量課金制の仕組みって、バグとか凄いアタックで処理量が増えた場合でも普通に請求されちゃうんだよね?

大企業の場合、料金計算ってどうしてるんだろう。
予算編成とか大変だろうに。想定外になったからってサービス停止なんか出来ないよね。

2019年2月3日日曜日

【GCP】Associate Cloud Engineerの模擬試験受けてみた!

Cloud Architectの復習もしないまま、Associate Cloud Engineerの模擬試験もやってみました。

正解率は65%なのでちょっとはマシ。
やっぱりサービスの細かい部分が出題されるとまったく駄目。
ドキュメント読んで暗記するしかない。実務経験がないのでどれくらい重要なのかよくわからなくてどこまで覚えるべきなのかが判断できないのが問題。

出題の傾向としてGoogleが推奨する方法での正解を問われている事が多かったので、
こればっかりはGoogleOnAirやらブログやらで発信されている内容でも見てみますかね・・・。


No正否設問概要
GCPのIAM理解
課金と通知の理解
GCPのシェル理解
GCPのシェル理解
コストの見積もり
×データの用途に対する最適なプロダクトの選択
ストレージとリージョンの選択
スケーリングについて
×ロギングについて
10×GKEとスケーリングについて
11×異なるゾーンへのレプリケート手法
12×データベースサービスの理解
13×GCPのシェル理解
14より影響の少ないでデプロイ手法について
15GCPのネットワーク管理
16コストの見積もりについて
17GCPのIAM理解
18GCPのIAM理解
19×GCPのIAM理解
20GCPのIAM理解

【GCP】PROFESSIONAL CLOUD ARCHITECTの模擬試験受けてみた!

結果は50%でした。
GCPの各サービスを暗記するべきなのかどうかよくわからなかったので、ひとまず素通りしてしまいましたが、やはり覚えないと駄目みたいです。
実際の問題はもっと幅広くから出てくるらしいので、もっとドキュメント読む必要あり。
問題は一般用語を知らなくて設問自体が理解出来なかったのがあること。

green-blue デプロイモデル・・・?なにそれ、知らない・・・。とか

一週間勉強してみて手ごたえ無さそうだったらAssociate Cloud Engineer の模擬試験もやってみようと思います。

模擬試験結果の整理>

No正否設問概要備考
データ保存コスト
GCPのプロダクト名称と役割
独立したプロジェクト間の通信当てずっぽうだったので要注意
データ保存コスト
インスタンスグループのテンプレート
×どのプロダクトで設計すべきかGCPサービス、役割を覚えよう
×トラフィック分割機能GAEの機能を覚えよう
運用監視
×どのプロダクトで設計すべきかGCPサービス、役割を覚えよう
10×どのプロダクトで設計すべきかGCPサービス、役割を覚えよう
11×どのプロダクトで設計すべきかGCPサービス、役割を覚えよう
12×一般用語とクラウド環境の設計理解
13GCPのIAM、実行環境理解
14×GCPのデータベース系プロダクトについてGCPサービス、役割を覚えよう
15異なるプロジェクトへの仮想マシンの複製
16GCPへの移行について当てずっぽうだったので要注意
17×GCPのIAM、実行環境理解
18×GCPでのバックアップ計画
19×一般用語とクラウド環境の設計理解デプロイモデルとか
20GCPへの移行について

リージョンについては続々増やしている最中のようです。


リージョンに応じて提供されるプロダクトも違うようなので、高速なサービス提供の為には同じリージョンにしておいた方がいいのかな。


意外とGoogleはヘルプからドキュメント検索するのにも数秒待たされたりする…
頻繁な更新が必要無いから保存先の環境が悪いのかしら?
本の方が読み終わったので当面はヘルプから各サービス検索してドキュメント読んでみよう。

2019年2月2日土曜日

プログラマのためのGoogle Cloud Platform入門5章

さてとうとう、最後の5章です。

今までGCE(仮想マシン)GKE(コンテナ環境)をやってきました。
今度はGAE(GoogleAppEngine)でアプリケーション単体のサービス解説のようです。

◆5.1 サービス概要

例としてローカル環境にダウンロードしたhtmlファイルでGAEのサービスを呼び出してみる部分が5.1で紹介されています。

特に説明も無く始まってますが、前の章でプロジェクトを削除しているのでまたプロジェクトを作成してからCloudVisionAPI(画像解析サービス)を有効かしてAPIキーを入手してダウンロードしたファイルの中のひとつのjsファイルにキー情報を上書きしてhtmlファイルを開くとGCPに連携してくれるみたい。

で、htmlファイルを開いてフォームから適当にローカルの画像を読み込ませてみると画像解析をしてくれる。
写真の中の看板から文字を抽出して出力してくれたり、アダルト画像だと不適切判断してくれたりとかそんなサービス。
最近よくスマホアプリとかで旅行中に写真にメニューを取ればそれがどんな料理なのだとか、地名だとかを答えてくれるものがあるって聞きますけど、そういうのに使われるのかな。

外国語のメニューとかでも読めなくても文字に起こして翻訳までしてくれちゃったら大分助かりますね。凄いや。

◆5.2 GAE入門

GAEでは独自のコンテナ(GAEではインスタンスという)で運用されて負荷に応じてオートスケールしてくれるらしい。じゃあGKEってなんだろう・・・。
GKEではまだコンテナ作成時にOSを選択してたけど、今度はそれもない。
GKEで選択に出てきたOSのCOS(ContainerOptimizedSystem)と同じなのかな?

とりあえずOSはもうあんまり意識しないでもいいようだ。
アプリケーションにはデータを保存する先が必要ということでCloudStorageやDatastoreの理解も必要になってくるらしい。

しばらくDBの説明が続くけれども細かい事は必要になってからでいいかな・・・?

◆5.3 写真アルバムサービス

例によってうまくいかない。
試しにプロジェクトを新しく作ってもう一度いちからやり直そうとしたところ、CloudShellを立ち上げ直しても前のプロジェクトと同じファイルがあった。
ここのコンソールはプロジェクトに関係なくアカウント共有なのかしら。

ERROR: (gcloud.datastore) Invalid choice: 'create-indexes'.Maybe you meant: gcloud datastore indexes create gcloud datastore indexes cleanup gcloud datastore indexes describe gcloud datastore indexes list


こんなエラーで上手くいかない。
試しにコマンドを変えてみる
本のはこんなの。
" gcloud datastore create-indexes index.yaml"
↓変えてみた
gcloud datastore indexes create index.yamlConfigurations to update:descriptor: [index.yaml]type: [datastore indexes]target project: [gcp-ml-230504]Do you want to continue (Y/n)? y

特にエラーは起きなかった。

Datastoreになんか出来てた。
万歳。
その後もうまくデプロイ出来てたようで結構時間がかかったのちにWEB公開が可能になった模様。
で、実際に画像をアップロードしてみると無反応。
またGCPのコンソールをかちかちいじってエラーを探していると、こんなのが出ていた。

最初のプロジェクトで有効にしていたAPIが無効になっていて有効にしないと駄目らしい。
プロジェクトを切り替えた時にこれが有効になっているか確認済みだったのだけどおかしいな。


Blogにちゃんと記録を残そうと思って画像も取ってたし。
切り替えたあと間違いなく有効になっていたのだけれど、もう一度見ると有効になっていない。
どうもプロジェクトを左上の▼で切り替えた後って挙動が疑わしい。
しばらく前のプロジェクトのとかの状態が表示されている気がする。

削除したり新しく作ったり切り替えたりしてたからおかしくなっちゃったのかな。
まあいいや。とりあえずちゃんとデプロイ出来ました。


よく道路際で交通量調査とかしてるけど、カメラで画像取ってストレージに保存して判別させれば人力でかちかちやって調査なんて要らないと思うのよね。
時々田舎の道路の深夜にまで椅子に座ってやってる時があって吃驚する。
人件費どれくらい使ってるんだろう・・・。

次の5.4は参考って書いてあるのでとりあえずなぞるだけにして5章はここまで。

▼なぞった結果

機械学習で画像の認識の正答率が上がって行っているらしい
10分経っても5000回くらいしか終わってないので結構時間がかかるようだ。

プログラマのためのGoogle Cloud Platform入門4章

さて、2章も3章もうまくいっていないまま第4章に突入。

やっぱり本の内容が古くなっているのでメニューから選ぼうにもコンテナクラスタが無い。


とりあえずContainerEngineでなくKubernetesEngineだろうと思うのでそこのクラスタを選択。
その後も2019年2月現在とは大分違うUI。
やっぱりもう紙の本の時代じゃないんだなあ・・・。

それはさておき先に進んで、Cloud Shellからリージョンを指定してDataStoreを指定する部分。
CloudShellから実行せよという。

前にスマホから打ち込む時に躓いてたりしてたGCPホーム画面の右上にある>_ですな。

GCEでVMインスタンスを作った時にここのインスタンスでSSH接続して出てくるコンソールではなく、プロジェクトのシェルでいいようだ。

ということはたくさんコンテナ作ってそれが関連の無いときはプロジェクト分けた方がいいのかな。

@cloudshell:~ (gke-gobang-app-example-230411)$ kubectl get nodesNAME STATUS ROLES AGE VERSIONgke-gobang-cluster-gobang-cluster-8cc326eb-hm3r Ready <none> 16m v1.11.6-gke.2gke-gobang-cluster-gobang-cluster-8cc326eb-s544 Ready <none> 16m v1.11.6-gke.2gke-gobang-cluster-gobang-cluster-8cc326eb-w3vt Ready <none> 16m v1.11.6-gke.2

続いてDockerイメージなるものを作成していきます。
Dockerって何ぞ?状態です。
入門書だけあってそこから解説してくれているので助かります(ググれ)

OSなんかのインフラ設定とミドル周りの記述をひとまとめにして管理するミドルのようです。
そもそもこの章はGKEの利用例についての説明でGKEとはなんぞ・・・?GoogleContainerEngine(GKE)だそうです。(略称と違うやん)

Dockerというのはそのコンテナ管理ツールの事で、GKEの”K"の部分がKebernetes(クーバーネティス)。クーバーネティスというのはGoogle独自のコンテナオーケストなんとかツールだそうです。

一章から三章まで扱っていたのがGCE(GoogleComputeEngine)。
今回はGoogleContainerEngine(GKE)。

なんでこんな名前にしたんだろう、紛らわしい。Engineっている?

まあとにかく今はGoogle独自のコンテナ管理ツールのサービスでDockerを扱うのだ!

◇◆◇

その後もとりあえず順調に進むものの文章が曖昧。
”実行してください”と”このように指定します”では全然違う。
解説?指示?どっち?


@cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$ FROM debian-bash: FROM: command not found@cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$ from debianfrom: can't read /var/mail/debian

うーん、駄目みたいですね・・・。
そんなコマンド無いって!

誰かこの本出版前に校正してあげて!
「プログラマのためのGCP入門」ってわりにはネットワークとはなんぞ、フェイルオーバーってとかGCP以前の部分から何ページも説明があったり、GCPの部分で説明不足だったりする・・・。プログラマだったらそんな説明要らんでしょう(私には勉強になる部分多いですが)。

Dockerファイルの記述の説明なんか要らないでしょう。
末尾にDocker1.11.2を元に本書を記載していますとあるけど、どうせすぐに古くなるし試しにバージョン情報出力するとやっぱ古い。
やたら長々とDockerコマンドの解説があるので何かと思ったら本書を執筆した中井悦司氏と阿佐志保氏がDocker本を書いているのでそのせいのようだった。
数ページ進むと参考としてこの人達が書いたDocker本の宣伝がある。

それは別途ググるからGKEでサンプルアプリケーションを起動するまでの概要の説明と実際にやるコマンドに注力して貰えませんかね・・・どこから解説と実行例が切り替わるのか。

2章3章がうまくいかないのはたぶん私が何処か間違えているんだと思うけど、4章は酷い、監修しているとは思えない。


@cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$ API_URL=http://localhost:8080/api/vi client/client.py Welcome to Gobang (Five in a Row) game.Game ID (0:new game)? 0Traceback (most recent call last): File "client/client.py", line 71, in <module> id = new_game() File "client/client.py", line 27, in new_game return response.json()['id'] File "/usr/local/lib/python2.7/dist-packages/requests/models.py", line 897, in json return complexjson.loads(self.text, **kwargs) File "/usr/lib/python2.7/json/__init__.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 363, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 381, in raw_decode raise ValueError("No JSON object could be decoded")ValueError: No JSON object could be decoded@cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$ vi /usr/lib/python2.7/json/decoder.py @cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES3be02eb82ab4 frontend:v1.0 "/opt/gobang/bin/fro…" 20 minutes ago Up 20 minutes 0.0.0.0:8080->8080/tcp frontend0bdcc567713c backend:v1.0 "/opt/gobang/bin/bac…" 22 minutes ago Up 22 minutes 8081/tcp backend@cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$

結局プロセスとしてはちゃんと起動しているもののJSONのエラーが出た。
Webサイトで構文チェックしてくれるサイトがあるのでコピーしてみると構文エラーがある。ダメじゃん・・・。

こちらでいじっている部分ではないので、諦めて先へ。

@cloudshell:~/gke-gobang-app-example (gke-gobang-app-example-230411)$ gcloud docker -- push gcr.io/$PROJECT_ID/frontend:v1.0WARNING: `gcloud docker` will not be supported for Docker client versions above 18.03.As an alternative, use `gcloud auth configure-docker` to configure `docker` touse `gcloud` as a credential helper, then use `docker` as you would for non-GCRregistries, e.g. `docker pull gcr.io/project-id/my-image`. Add`--verbosity=error` to silence this warning: `gcloud docker--verbosity=error -- pull gcr.io/project-id/my-image`.See: https://cloud.google.com/container-registry/docs/support/deprecation-notices#gcloud-dockerThe push refers to repository [gcr.io/gke-gobang-app-example/frontend]cdbf029a16bb: Preparinge3280de533d5: Preparinga2e66f6c6f5f: Preparing-example before performing this operation.

次も駄目でした。gcloudのサブコマンドとして使用する事でレジストリへのアクセスが行われるって本にはあるけど、駄目みたいですね。

あとコンテナのイメージに重大な脆弱性がみつかりましたとかいう通知が来たし辞めた方がいいのかな・・・?
この後はGKEにアップロードできないので何も出来ないのだけれど、複数のコンテナをまとめたPODという単位でサービスを立ち上げる。で、対戦機能があるアプリケーションのAI思考側を司るバックエンドのコンテナをバージョンアップする。GKEにローリングアップデート機能があり、バックエンドのコンテナが新しくなると一個ずつ切り替わっては古い方が削除されていくのでサービスを停止せずにバージョンアップが可能なのだという感じの説明がありました。
プロジェクトを削除して今宵は終了。うーん、これは酷い(私が)
全然うまくいかないやん・・・

2019年1月31日木曜日

プログラマのためのGoogle Cloud Platform入門3章

さて、本書の3章に進みました。

いきなり挫折です。
2章が成功していないと3章が出来ません。
正常に動作する前提でスクリプトが作られていたのでログも無いし、原因不明のままです。仕方ないので動かない部分には目をつむって進みます。

とりあえず、インスタンスを停止させて、スナップショット取って、それからイメージ作って、インスタンステンプレートを作成して、インスタンスグループでイメージを元に異なるリージョンに三つずつインスタンスを作成する流れです。

とりあえずリージョンは本の通り北東アジアと東海岸のどこか。

で、本を読んでて思ったのだけれど、これおかしくないかな?
停止させてイメージ作ってるんだから作成時点では停止している状態の筈。
なのに本では稼働している事を確認してください、とある。
インスタンスを開始させるようには書いてないのに。



いつの間に起動したのかよくわからない・・・。
当然ながら2章がうまく言っていないのでLBの設定をしてもURLはnot foundで404エラー。

次の項目も独自のドメイン取得している前提なのでスルー。
名前やUI変わっていてなぞれない項目も多いし残念な感じ。

なんとなくこんな事が出来るんだっていう感覚だけのふわふわしてるところで今日は終了。


2019年1月30日水曜日

プログラマのためのGoogle Cloud Platform入門2章②

やっぱり本に載っているものとは大分更新されている。

本ではCloudSQLAPIなるものがあるらしいが、検索しても出てこない。
どれが正解かな?
とりあえずAdminAPIを選んでみよう。

その後本の通りに進めてv2の掲示板の起動をしたところで詰まった。

● dengonban.service - Message Board Application
   Loaded: loaded (/etc/systemd/system/dengonban.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Wed 2019-01-30 13:47:00 UTC; 5s ago
  Process: 9223 ExecStop=/bin/kill -TERM $MAINPID (code=exited, status=1/FAILURE)
  Process: 9220 ExecStart=/opt/dengonban/v2/app.py (code=exited, status=1/FAILURE)
 Main PID: 9220 (code=exited, status=1/FAILURE)
Jan 30 13:47:00 webserver kill[9223]:  -<signal>, -s, --signal <signal>
Jan 30 13:47:00 webserver kill[9223]:                         specify the <signal> to be sent
Jan 30 13:47:00 webserver kill[9223]:  -l, --list=[<signal>]  list all signal names, or convert one to a name
Jan 30 13:47:00 webserver kill[9223]:  -L, --table            list all signal names in a nice table
Jan 30 13:47:00 webserver kill[9223]:  -h, --help     display this help and exit
Jan 30 13:47:00 webserver kill[9223]:  -V, --version  output version information and exit
Jan 30 13:47:00 webserver kill[9223]: For more details see kill(1).
Jan 30 13:47:00 webserver systemd[1]: dengonban.service: Control process exited, code=exited status=1
Jan 30 13:47:00 webserver systemd[1]: dengonban.service: Unit entered failed state.
Jan 30 13:47:00 webserver systemd[1]: dengonban.service: Failed with result 'exit-code'.

ステータスでこんなメッセージが出てしまう。
台湾にゾーンを変えてもう一つインスタンスを作成していちからやり直しても同じ結果。
もう駄目だ・・・。二時間試行錯誤しても何処でトラブルが起きてるのかさっぱりわからない。

諦めてv3の画像付きの掲示板も試してみたけど同じようなメッセージが出て駄目だった。

何処が駄目なのか・・・。DBへの接続が駄目とか、何かメッセージ出してくれないかな・・・

プログラマのためのGoogle Cloud Platform入門2章

昨日は忙しかったので今日こそ第二章を読む。

いちおう昼休憩にスマホにGoogleConsoleをダウンロードしてVMインスタンスから掲示板を作る所までは実施済み。

ここで一番の問題はスマホでSSH接続してコマンドを打ち込む時、どうやっても打ち込めずスマホのデフォルトのキーパッドで入力した文字が表示されずに消えてしまう。
変換機能か何かが余計な事をしているような挙動に見えたので、別のアプリを入れて入力を差し替えました。
インストールしたのはせっかくだからGoogleの"Gboard"。
インストールして設定する際にクレジットカードなどの情報が外部に送信されるという警告が出てくる。
吃驚して拒否したものの、調べるとAndroidの機能で警告メッセージが表示されるだけで、別にキーパッドで入力したものが外部に送信される事は無いらしい。

紛らわしい・・・あんなメッセージ出てきたらインストール出来ないよ。

何はともあれ無事にコマンドが打ち込めるようになり、本に書いてある通りにやって掲示板を作成。


まあ、こんな単純なものです。

どうやってここに辿り着くのかが分かりにくかった。
GCPの自分のホーム画面?からプロジェクトを切り替えて左側の[GoogleComputeEngine]を選択して[VMインスタンス]から[外部IP]をクリックするとここのURLに転送される。

★余談
本に書いてあるままとりあえず進めようとしていたものの、VMインスタンス画面で警告メッセージがあり、現在の環境ではスペックが十分に使われていないのでもっと性能落とした方がお安くなりますよと推奨があった。
ヘルプページよりも日本語化が進んでいて微妙に違ったけれども、警告に従ってVMインスタンスを停止しておすすめを押下
メモリが3.5GB⇒1.7GBに減りました。


停止が完了しておすすめから推奨スペックが消えたら再び開始させる。
掲示板も元通り普通に表示されましたね。







2019年1月28日月曜日

Cloud Shellを起動してみる

とりあえず本の流れに従ってCloud Shellなるものを起動してみる。
デモ画面らしきものが表示されたけど、しばらく起動中なのかと勘違いしていた。
ウィンドウの右下に起動の文字があったのでそこをクリック・・・何も起きない。


もう一度起動を試そうにもグレーアウトしていて触れない。
しばらく悩んでいると、気がついたら勝手に別のタブが立ち上がっていた。
そっちの画面は上のようにグレーアウトされていないのでもう一度Shellを起動する。

今度はうまく言った。画面の下にコンソールが表示された。
普通のLinux環境みたいだ。
正確にはよくわからない。

とりあえず"pwd"と打ち込んでみると/エイリアス/homeにいてreadme.txtが置いてあったのでcatしてみる。

Welcome to Google Cloud Shell, a tool for managing resources hosted on Google Cloud Platform!
The machine comes pre-installed with the Google Cloud SDK and other popular developer tools.
Your 5GB home directory will persist across sessions, but the VM is ephemeral and will be reset
approximately 20 minutes after your session ends. No system-wide change will persist beyond that.
Type "gcloud help" to get help on using Cloud SDK. For more examples, visit
https://cloud.google.com/shell/docs/quickstart and https://cloud.google.com/shell/docs/examples
Type "cloudshell help" to get help on using the "cloudshell" utility.  Common functionality is
aliased to short commands in your shell, for example, you can type "dl <filename>" at Bash prompt to
download a file. Type "cloudshell aliases" to see these commands.
Type "help" to see this message any time. Type "builtin help" to see Bash interpreter help.

・・・google先生が誇る機械学習で高度に日本語化される翻訳機能に頼ろう。

Google Cloud Platformは、Google Cloud Platformでホストされているリソースを管理するためのツールです。
このマシンには、Google Cloud SDKとその他の一般的な開発者ツールがプレインストールされています。
5GBのホームディレクトリはセッションをまたいで持続しますが、VMは一時的でリセットされます
セッション終了後約20分です。それ以外にシステム全体の変更はありません。
Cloud SDKの使用方法については、「gcloud help」と入力してください。他の例については、をご覧ください。
https://cloud.google.com/shell/docs/quickstartおよびhttps://cloud.google.com/shell/docs/examples
"cloudshell"ユーティリティを使用してヘルプを取得するには、 "cloudshell help"と入力します。共通の機能は
シェル内の短いコマンドにエイリアス化されています。たとえば、Bashプロンプトで "dl <filename>"と入力すると、次のように入力できます。
ファイルをダウンロードしてください。これらのコマンドを表示するには、 "cloudshell aliases"と入力してください。
このメッセージを表示するには、「help」と入力してください。 Bashインタプリタのヘルプを見るには "builtin help"とタイプしてください。
『VMは一時的でリセットされます』
どういうことだろう。
無くなってしまうのだろうか。よくわからない。先に進もう。

と思ったらすぐ後ろのページに解説が載っていた・・・。
ホームは永続的で”リセット”というのは操作しないと勝手に終了するよってだけだった。

その後の一章はアプリケーションのデバッグツールやらなんやらの説明で終わる。
アプリの事はよくわからない・・・

"cloud launcher"なるものの説明もされているが、検索しても出てこない。
無くなってしまったのだろうか。

最後は何書いてあるのかよくわからないまま終わってしまった。
これで初日完。
一、二週間じゃ勉強終わりそうにないなあ・・・。

一章は30Pだったが2章は倍ある。
やばし!