ワンライナー
kubernetes
kubectl

kubectlでPod内のNginxにワンライナーデプロイ

More than 1 year has passed since last update.

Pod内のNginxにサクッとリソースをコピーしたいなと思って調べていたところ、

Kubernetesでは"kubectl cp"を使うとのこと。まあDockerと同じですね。

ということで、ワンライナーで書いてみた。


やりたいこと

手元で書いたコードをKubernetes上ですぐに動作確認したい

    ↓ 要するに

ビルドしたリソースをNginxのルートディレクトリ(/usr/share/nginx/html)配下にコピーしたい

.

├── dist // ここの配下を持っていきたい
│ ├── index.html
│ ├── bundle.js
│ └── css
│ └── style.css
├── src
│ ├── index.html
│ ├── scripts
│ │ ├── index.js
│ │ └── hello.js
│ └── styles
│ └── style.css
├── package.json
└── webpack.config.js


やったこと

必要な情報をエクスポートしておく

export POD_NAME=nginx-xxxxxxxxxxxx # コピー先のPOD名

export ROOT_DIRECTORY=/usr/share/nginx/html # コピー先のディレクトリ (今回はNginxのルートディレクトリを指定)

圧縮して、コピーして展開して、不要ファイルを削除

--のつけ忘れに注意。これがないとうまく動かない。

$ tar -zcvf dist.gz -C dist . && \

kubectl cp dist.gz ${POD_NAME}:${ROOT_DIRECTORY}/ && \
kubectl exec ${POD_NAME} -- tar -zxvf ${ROOT_DIRECTORY}/dist.gz -C ${ROOT_DIRECTORY}/ && \
kubectl exec ${POD_NAME} -- rm -f ${ROOT_DIRECTORY}/dist.gz

簡単だね。


Nginxコンテナ内

$ pwd

/usr/share/nginx/html

$ find .
.
./index.html
./bundle.js
./css
./css/style.css



あとがき

今は、フロントエンドを書くことが多いので、動作確認は基本的にこれで事足りてます。

もっと楽だよって方法があれば教えてくださいヽ(´ー`)ノ


参考情報