gcsfuseでVMインスタンスにGCSをマウントしてみる
背景
- 個人プロジェクトでk8sを使ってみたくてGKEでデプロイしたい
- Dockerでローカル構築はできた
- https://github.com/originbenntou/E-Lunch
- ローカルでは docker-compose でソースコードをマウントしている
- けどk8sはイメージからコンテナを起動するからソースコードをマウントできない!ymlに書けない!
- docker-composeから良い感じにk8s.ymlを生成するKomposeってのがあるけど、よくわからず挫折した
- 聞くところによるとソースコードはGCSにアップロードしておいて、コンテナ内でそのボリュームを参照するやり方があるそう
gcs fuse
gcsfuseって?
gcsをインスタンスにマウントするやつ
実際に触ってみる
# マウントしたディレクトリをアップロードして $ gsutil cp -r ~/mywork/E-Lunch/ gs://e-lunch-bucket/ # vmインスタンスにsshしてgcsfuseをインストール $ export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` $ echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install gcsfuse $ groupadd fuse $ sudo usermod -a -G fuse $USER # ディレクトリをつくって $ mkdir -p /mnt/disks/gcs # なんかよくわらんけどgcloudの設定が見れることを確認して $ gcloud config list # マウント ## --implicit-dirs がミソ $ /usr/bin/gcsfuse --implicit-dirs -o allow_other --foreground --gid 0 --uid 0 -file-mode=666 -dir-mode=777 e-lunch-bucket /mnt/disks/gcs
この辺は以下を参考にした
https://www.mark-system.com/?p=985 https://qiita.com/wasnot/items/f1791492f7078f5e5d52
このあとやりたいこと
- k8sでデプロイ
- gcsfuseと組み合わせてみる