【GCP】GKEを作成してみた

# 参照URL
https://cloud.google.com/kubernetes-engine/docs?hl=ja

みぎ側の利用方法を読みながら進めて
最小料金になる構成で作成。

# エラー
https://www.topgate.co.jp/gcp07-how-to-start-docker-image-gke
ここにならって以下のコマンドを打ってみたが、正常にGKEのインスタンスが表示されなかった。
gcloud compute instances list
↓
なので、
gcloud init 
でPJをくりかえてから再度コマンドを打ったところ、表示された。

NAME                                               ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
gke-my-first-cluster-1-default-pool-491cdabf-4f3v  us-central1-c  g1-small                   
gke-my-first-cluster-1-default-pool-491cdabf-qhsl  us-central1-c  g1-small                   
gke-my-first-cluster-1-default-pool-491cdabf-zz86  us-central1-c  g1-small            

# kubectl を使う

まず、インストールする
gcloud components install kubectl
↓
https://www.topgate.co.jp/gcp07-how-to-start-docker-image-gke
ここでgkeを動かしていく
コマンドインストール以降をやる

export PROJECT_ID="プロジェクトID"
「export」は、環境変数やシェル変数を設定するコマンドです。
export 変数名=値 （シェル変数を定義して同時にエクスポートする）
https://www.atmarkit.co.jp/ait/articles/1801/12/news015.html


gcloud config set compute/zone asia-northeast1-a
https://cloud.google.com/sdk/gcloud/reference/config/set?hl=ja
↑
ここではデフォルトのゾーンとリージョンを指定している
https://blog.amedama.jp/entry/gcp-cli-default-zone-region

アップデートしなさいという指示がでたので、以下コマンドを入力
gcloud components update
https://www.na3.jp/entry/20160217/p1


kubectl が作成したクラスターにアクセスできるよう、認証情報を取得します。
gcloud auth コマンドを入力すると、 OAuth の認証画面がブラウザに表示されるので、アクセスを許可します。

クラスタを確認
gcloud container clusters list

gcloud auth application-default login
これを打つとブラウザがひらくので、対象のアカウントをクリック
アクセスを許可するとコマンドが完了する。

gcloud container clusters get-credentials my-first-cluster-1
↓
ERROR: (gcloud.container.clusters.get-credentials) ResponseError: 

以下がポイント
Could not find [my-first-cluster-1] in [asia-northeast1-a].
Did you mean [my-first-cluster-1] in [us-central1-c]?

gcloud config set compute/zone us-central1-c
これをうってからやってみたら、いけた。

 gcloud auth application-default login
User Account を使って Server Application が使うためのアクセストークンを取得する
https://medium.com/google-cloud-jp/gcp-%E3%81%A8-oauth2-91476f2b3d7f


kubectl run wordpress --image=tutum/wordpress --port=80
これを打って成功
https://cstoku.dev/posts/2018/k8sdojo-23/
runはDeploymentやJobの実行を行うコマンドだ。
createとかなり近い感覚を感じるが、こちらは作成したDeploymentにアタッチすることができる


kubectl expose deployment wordpress --type=LoadBalancer
これを打って成功。外部からアクセス可能になる。

kubectl describe services wordpres
これを打ってコンテナの状況を確認するようだが、
Events:
  Type    Reason                Age    From                Message
  ----    ------                ----   ----                -------
  Normal  EnsuringLoadBalancer  4m19s  service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   3m31s  service-controller  Ensured load balancer

Ensuredと表示されている。
本来ならcreateが表示されればいいみたいだが、これで正しいのかがわからない。

GCPのネットワークサービスをみたら、GKEに割り当てられているロードバランサはあった。
最初くるくるしてたが、くるくるしなくなったので、LoadBalancer Ingress: にあるIPにアクセスしたら、
wordpressも表示された。

↓
このままだと勝手に使われかねないので、以下で削除してコンテナの情報も表示されなくなった。
kubectl delete services wordpress


# 見たい資料
このへんの資料を読み込みたい
https://qiita.com/toshihirooya/items/bbae6168462f3d8b809c
https://cloud.google.com/blog/ja/products/containers-kubernetes/run-windows-server-containers-on-gke

動画もみる
https://cloud.google.com/blog/ja/products/containers-kubernetes/your-guide-kubernetes-best-practices
https://www.coursera.org/specializations/gcp-architecture-jp
https://www.qwiklabs.com/?locale=ja
https://codelabs.developers.google.com/next17-tok/
https://codelabs.developers.google.com/

# 今後
使わなかった機能については引き続き確認する必要がある
試験の内容は以下
https://cloud.google.com/certification/guides/cloud-engineer	
kubectlコマンドはGCPに限ったものではなく、kubernetesを操作するときに使えるものみたい。