GoogleCloudPlatform
kubernetes
GKE

Kubernetes Engine を触ってみてつまったところの備忘


はじめに

Kubernetes を触ってみるために公式チュートリアルをやっていて詰まったところの備忘として。


1. CORS ポリシーの設定


問題

アプリケーションをデプロイしたあと、Chromeのデベロッパーコンソールに以下のようなエラーが出ている。

Access to Font at 'https://storage.googleapis.com/(Bucket Name)/static/admin/fonts/Roboto-Light-webfont.woff' from origin 'http://(Host Name)' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://(Host Name)' is therefore not allowed access.


原因

「CORSポリシーによってオリジン http://(Host Name) からのアクセスがブロックされた」とある。


対処

Cloud Storage のバケットにアプリケーションのURLからの参照を許可する設定が必要。


Cloud Storage バケットにアプリケーションのURLからのアクセスを許可するCORSポリシーを設定する

$ gsutil cors set cors-json-file.json gs://(Bucket Name)


cords-json-file.json

[

{
"origin": ["http://(Host Name)"],
"responseHeader": ["Content-Type"],
"method": ["GET", "HEAD", "DELETE"],
"maxAgeSeconds": 3600
}
]


確認

$ gsutil cors get gs://(Bucket Name)

[{"maxAgeSeconds": 3600, "method": ["GET", "HEAD", "DELETE"], "origin": ["http://(Host Name)"], "responseHeader": ["Content-Type"]}]


備考

実際の運用では CloudStorage のドメインをアプリケーションと同じドメインにして配信するとおもう。同じドメインからのアクセスならばこのような設定はいらないと思われる。


2. 新しいバージョンのアプリケーションをデプロイする方法

アプリケーションのコードを変更したときに運用中のアプリケーションに変更を適用する。


新しいバージョンのコンテナのビルド

$ docker build -t gcr.io/(project id)/polls:v2 .


新しいバージョンのイメージのプッシュ

gcloud docker -- push gcr.io/(project id)/polls:v2


ローリングデプロイ

$ kubectl set image deployment/polls polls-app=gcr.io/(project id)/polls:v2

deployment "polls" image updated


デプロイ中の状態の確認

$ kubectl get pods

NAME READY STATUS RESTARTS AGE
polls-647c7fddf6-lbqll 2/2 Running 0 15s
polls-647c7fddf6-nbqdw 2/2 Running 0 18s
polls-647c7fddf6-qt662 2/2 Running 0 19s
polls-6f65cbf4c4-6s8ln 2/2 Terminating 0 47m
polls-6f65cbf4c4-9lk62 2/2 Terminating 0 47m
polls-6f65cbf4c4-f658m 2/2 Terminating 0 47m

古いアプリケーションを停止していることがわかる。


参考