はじめに
- 以下の様なモチベーションから、同僚に聞いた方法をまとめました
- k8s クラスタ上の Pod に対して、自作のプログラムでリクエストを投げたい
- kubectl port-forward でもできるけど、いろんな Pod に投げたいので、何個も port-forward するのはだるい
想定
- GKE 上のクラスタで一時的にプログラムを動かしたい(クラスタ上のイメージには使えるものがない)
- GCR HostName: asia.gcr.io
- GCP ProjectName: gcp-project-hoge
Docker イメージを作る
- Dockerfile
# 動かしたいプログラムのバイナリと以下のDockerfile を同じ場所に置く
FROM ubuntu:latest
COPY ./app .
- build docker image
# sample-image-name は適当
$ docker build . -t asia.gcr.io/gcp-project-hoge/sample-image-name
GCR に push する
$ docker push asia.gcr.io/gcp-project-hoge/sample-image-name:latest
k8s クラスタにデプロイ
# sample-pod は適当な pod 名
# デプロイしたい k8s の context に切り替えておくこと
# 実行後、Docker コンテナにログインした状態になり(-it)、 exit すると Pod は削除される(--rm)
$ kubectl run sample-pod --restart=Never -it --rm --image asia.gcr.io/gcp-project-hoge/sample-image-name:latest