6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cloud Foundryのコンテナに入る、ファイルをコピーする

Last updated at Posted at 2015-07-15

Cloud FoundryにデプロイしたアプリはWardenと呼ばれるコンテナで動いています。
通常はこのコンテナ内に入ることができませんが、ツールやプラグインを使うことでコンテナに入ったり、ファイルを取得したりができるようになります。

cf-ssh

Cloud Foundryにデプロイしたアプリのコンテナに入ります。
コンテナの中に入ってしまえば、通常のLinuxと変わらないのでデバッグやファイル操作などを行うことができます。

前提

  • Linux or Mac
  • cf CLIが導入されている
  • $HOME/.ssh/にSSH認証鍵がある

コマンドのインストール

以下からcf-sshのバイナリをダウンロードします。

Releases · cloudfoundry-community/cf-ssh
https://github.com/cloudfoundry-community/cf-ssh/releases

ダウンロードしたファイルをcf-sshにリネームして実行権限を付加します。
そして、このファイルをPATHの通っている場所に配置します。

mv cf-ssh_linux_amd64 cf-ssh
chmod +x cf-ssh
mv cf-ssh /usr/bin

使い方

cf-sshコマンドを使うには、manifest.ymlを用意しておく必要があります。

cd APPNAME
cf-ssh APPNAME -f manifest.yml

コマンドを実行するとAPPNAME-sshという名前のアプリがデプロイされます。
この状態ではルートがバインドされていないため、アプリの動作を確認するためには主導で別途ルートを設定する必要があります。

注意事項

コンテナから一度ログアウトするとそのコンテナには入れなくなるようです。
再度コンテナに入るにはアプリをデプロイし直す必要があります。

トラブルシューティング

Permission denied (Publickey)

認証鍵がない場合にこのエラーが発生します。
ssh-keygenコマンドを使って鍵ファイルを作成しておきます。
私の環境では、$HOME/.ssh/に認証鍵をおいておけば認識されました。

cf-download plugin

Cloud Foundryで稼働しているアプリケーションのファイルをローカルにコピーします。
cf CLIのプラグインとして動作します。

前提

  • cf CLI(バージョン6.10以上)が導入されている

プラグインのインストール

以下のにコマンドを実行するとcf downloadコマンドが使用可能になります。

cf add-plugin-repo CF-Community http://plugins.cloudfoundry.org/
cf install-plugin cf-download -r CF-Community

使い方

アプリのディレクトリ構造が以下の通りだったとします。

app
 ├ src/
 ├ log/
 │  ├ access.log
 │  └ error.log
 └ lib/

このアプリに対して、以下のコマンドを実行するとカレントディレクトリに対象ディレクトリとその親ディレクトがコピーされます。

cf download APPNAME log

今回の場合は、以下の構造でダウンロードされます。

APPNAME-download
 └ log/
   ├ access.log
   └ error.log

注意事項

ダウンロードするパスを指定しないとすべてのファイルがダウンロードされます。
例えばJavaの場合、.javaディレクトリに含まれるファイルも含まれているため、パスを指定して必要なファイルのみをダウンロードしないと時間がかかります。

まとめ

Cloud Foundryにアプリをプッシュしたけどうまく動かず、cf logsしてもエラーログが確認できないといった場合のデバッグ用途にはcf-sshは便利かと思います。
cf downloadはコマンドをバッチで定期的に実行するなどして、ログを外部に保存する簡易な仕組みを構築するのに向いているのではないかと思います。

参考情報

cf-sshでCloud Foundryのコンテナ内に潜り込む - Cloud Penguins
http://jaco.udcp.info/cf-ssh/

cloudfoundry-community/cf-ssh
https://github.com/cloudfoundry-community/cf-ssh

ibmjstart/cf-download
https://github.com/ibmjstart/cf-download

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?