2016-07-01 6 views
1

これはサーバー障害の問題かもしれませんが、私はAPIやその他の方法でプログラムを実行しようとしているので、別の方法で言われるまではStackOverflowの問題だと仮定します。APIを使用してECSにディレクトリをマウントしていますか?

私が取り組んでいるアプリケーションでDeisをECSに置き換えようとしています。アプリケーション自体は現在、Deis上の新しいアプリケーション(Webアプリケーションを実行しているドッカーコンテナ)を起動することができます。デプロイメントキーを使用してプライベートgitリポジトリからソースコードをチェックアウトし、次にDeisエンドポイントにコードをプッシュします。ドッキング用コンテナを回転させるなど)。

デイはかなりフレークだったので、私はそれを置き換えることを検討しています。 Buildstep Container私は、dockerを使用してコマンドラインで自分のプライベートリポジトリからherokuのようなコードのデプロイメントを正常に実行しました。二つのことを除いて、ほとんどが細かいです

docker run -d -v ~/.ssh:/root/.ssh -p 3000:3000 -e PORT=3000 -e GIT_REPO=private-repo-url.git tutum/buildstep /start web 

:行うには

はので、私は、実行コマンドの一部としてコンテナに私のSSHキーディレクトリをマップする必要がありました。最初は、タスク作成APIを呼び出すときにこれを行う最善の方法がわからないということです。私の理解から、ECSのタスクをボリュームとマウントポイントに登録することは可能ですが、そのボリュームは、タスクを実行しているECSクラスタホスト上のボリュームである必要があります(これについての確認を使用することができます)。タスク登録時に知られています。私が見つけることができる唯一の例は、ローカルファイルパスを使用しました。

だから、最初の質問:どのように私は、コンテナが起動時に添付できる「キー」ディレクトリをマップ確実に容器の中に私の展開の鍵を注入、または

本の他の部分が少ないですいずれかを実行懸念事項ですが、理想的には、git repo pullが完了すると、キーはすべてのコンテナに残りません。私は最初の質問を行う方法についてのビットを依存し、これを行うためのクリーンな方法だと思いますが、私のキーは、彼らが展開した後、容器に残っていないので、クリーンアップが完了し、私があるんどのように2番目の質問は、ある

+0

今日、同じ配備環境で同じ問題を解決しています。ボリュームを使用して.sshキーを共有していますが、すぐに使用できるドッカーはクリーンアップを行いません。 – Shibashis

+0

私は今日それを解決していない、私は私が移動している完全に異なるアーキテクチャを持っています。 – Paul

答えて

1

デプロイメントキーをコンテナに挿入するか、コンテナが起動時にアタッチできる「キー」ディレクトリを確実にマップするにはどうすればいいですか?

私はUser-Dataでそれを行います。インスタンスがクラスタに加わるためには、ECSのユーザーデータが必要です。このキーをどこか(s3、何でも)利用可能にし、起動時にそれをプルダウンします。これが/ opt/fooに入るとします。クラスタ内のすべてのホストがそれを持っていて、それを使用しているので、あなたのタスク定義は問題なくホストから/ opt/fooをマップできます。展開はこれは別の問題である

完了した後、彼らは、容器に残っていないので、

はどのようにクリーンアップ私のキー操作を行います。コンテナがまったく停止/開始した場合は、そのキーを再び使用可能にする必要がありますか?もしそうなら、それらのタスクはいつでも別のインスタンスで起動するかもしれないので、それらをクリーンアップすることはできません。あなたが一度だけそれを必要とするならば、あなたのドッカーコンテナのためのスタートアップCMDは、展開が完了したらそれをクリーンアップするコマンドを実行することができます。しかし、これは壊れやすいように聞こえる。 git + sshを使用する代わりに、読み取り専用のアカウントを使用し、ユーザー/パスワードを提供してみませんか?あなたはこれをenv vars経由で提供することができ、これの半分を行う必要はありません。

+0

有効な考えですが、あなたの質問に対する答えはまだわかりません。私は現在、ドッキング用のコンテナにプッシュされているものは、必ずしもすべてが同じユーザーからのものではないため、デプロイキーを使用しています。 – Paul

1

本当にディレクトリをマウントする必要がありますか?あなたの地域で利用可能な場合、EFSは、ECS実装用の汎用ファイルストアを持つための良い解決策になります。

チェックアウト:リファレンス実装の

https://aws.amazon.com/blogs/compute/using-amazon-efs-to-persist-data-from-amazon-ecs-containers/

、それはあなたが何をしようとしては過剰ですが。

+0

ありがとう、これは私が質問を掲示した後に調べ始めたものです。更新しないと申し訳ありませんが、私は最終的な解決策を見つけ出すと再びそうします。 – Paul

関連する問題