originbenntou’s blog

技術的なアウトプットを日々まとめる

gcsfuseでVMインスタンスにGCSをマウントしてみる

背景

  • 個人プロジェクトでk8sを使ってみたくてGKEでデプロイしたい
  • ローカルでは 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と組み合わせてみる