Help us understand the problem. What is going on with this article?

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

あとがき

今は、フロントエンドを書くことが多いので、動作確認は基本的にこれで事足りてます。
もっと楽だよって方法があれば教えてくださいヽ(´ー`)ノ

参考情報

ytanto
札幌のエンジニアです。 主にフロントエンドをやってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away