コンテナーを本番環境に適用する – 簡単なチェックリスト

Rancher Labs | Moving Containers to Production – A Short Checklist | Rancher Labs
http://rancher.com/moving-containers-to-production-a-short-checklist/
からの翻訳です。

on Jan 10, 2017

checklist-01-300x200もし私と同じように皆さんもコンテナソリューションの発展を見守りつつ、「コンテナでこんな事できるな」という興味をお持ちでしたら、試しにコンテナを使ってみるだけでは無く、実際にコンテナの使用を始めてみませんか?なぜ待つ必要がありますか?
新年を迎え、「新たな行動を起こすにはもってこい!」な時期だと思っています。

試験的にコンテナを使って新しい事を試してみるのも素晴らしい事で、多くの事を学べると思います。しかし、新しいテクノロジーをハックしたりプロダクション環境への適用操作の過程で、不要なコードが導入されてしまう事もあります。新しいアプリケーションを世に出そうとして興奮している時や、神経質になっている時には、次のようなチェックリストがあると「何をしない方が良いのか」を確認する助けになると思います。それでは、Dockerアプリケーションをプライムに使う為のチェックリストをご紹介します。

アイテム1:ソースコードを確認しましょう

数年前、大きなチームと共にソフトウェアに関するプロジェクトを動かしていた時の話です。毎週火曜日の午後2時に、私達のビルドが必ず失敗することがありました。最後にコードを確認した担当者に責任があると思った私は、彼にコードの見直しを頼みました。すると、コードを確認する前に、不都合が無くなるという事がよく起きました。しかし、また翌週の同じ時間に不都合が発生するのです。原因を特定するのに時間がかかりましたが、ベンダーからリリースされる最新のSnapshotリリースに依存している事が分かりました。毎週火曜日の午後2時頃に、新しいバグを含むライブラリーがリリースされていたのです。

最新のライブラリーやbase imageを使用するのは、実験的には楽しいかもしれませんが、プロダクション環境にいきなり適用するのはリスキーかもしれません。Dockerコンフィグレーションファイルをスキャンし、二つの事を確認して下さい。

その1:ソースイメージが安定したバージョンのイメージに紐付けられていることを確認してください。Dockerコンフィグレーションファイルの最新版ではテストに失敗するはずです。

その2:Dockerhubをイメージリポジトリとして使用している場合は、可能な限りオフィシャルイメージを使用してください。そうする理由は、「オフィシャルイメージのリポジトリは、クリアーなドキュメントを持ち、ベストプラクティスを引き立て、最も一般的なユースケースに対応するようにデザインされている」からです。(Official Repositories on Docker Hub)

アイテム2:秘密情報を漏洩させない

「ロード・オブ・ザ・リング」の魔法使い、ガンダルフはあなたに聞きます。
『秘密を守れるのか?安全なのか?』
アプリケーションには、秘密情報が必要です。ほとんどのアプリケーションは、データベース認証情報、APIトークン、SSHキーおよび他の必要な情報を組み合わせたものが必要になります。これらの情報は、一般ユーザーには見えてはいけないものです。秘密情報の保存は、コンテナ技術の最大の弱点のひとつです。よく利用されているが推奨されない解決策は次の通りです:

秘密情報をイメージに書き込む。レジストリーにアクセス権を持つ人は秘密情報にアクセスする可能性があり、アップデートする場合に手間なプロセスになる可能性があります。

ボリュームマウントの使用。残念ながら、この行為はすべての秘密情報を同じ場所に保ち、プレーンテキストで保存する事になります。

環境変数の使用。この行為は、イメージを使って簡単にアクセスでき、Docker inspectでも簡単に表示できます。

暗号化による解決策。秘密情報は、暗号化された状態で保存され、解読キーと共にホストに保存されます。パスワードやその他重要なデータは、プレーンテキストでは保存されませんが、比較的見つけやすいので、解読キーも特定される恐れがあります。

現在、一番推奨できるソリューションは、HashiCorpのVaultや、SquareのKeywhizなどの秘密情報ストアを使う事です。これらは、APIベースで実装されているのでとても信頼性が高いです。

一度使い始めれば、秘密情報ストアでアプリケーションにセキュリティー保護された情報にアクセスする為に使える仮想ファイルシステムが提供されます。各秘密情報ストアには、アプリケーションにセットアップし、テスト、およびデプロイする方法のドキュメンテーションが含まれています。

アイテム3:周辺のセキュリティを堅牢にする

コンテナベースのソリューションを導入する際の魅力的な理由のひとつが、ホスト上のリソースを共有できる事です。しかし、ホストマシンのリソースへのアクセスが簡単になると、それぞれひとつのコンテナのプロセスを他のコンテナと切り離して考える事が出来なくなります。そして、そのシステム上で必要な最小限の制限でコンテナアプリケーションが開始できるユーザー権限になっているか、という配慮も必要になります。

さらに、コンテナーを起動する為のセキュアなプラットフォームが確立されている事が重要なります。外部の攻撃から守られている環境でなければいけません。

「周辺のセキュリティを堅牢にする」という事は、コンテナ自身のとはあまり関係がなく、デプロイされている環境についての話しになってしまいましたが、それでも、やはり重要な事なのでお話させて頂きました。

アイテム4:目を離さず、確認を怠らない

コンテナーアプリケーションを本番環境に適用するにチェックリスト最後の項目は、監視方法を決める事です。機密情報の管理と同様に、監視はコンテナベースのアプリケーションに関連し、日々活発に進化している分野です。

新しいアプリケーションの試験時は、重い負荷状況やマルチユーザーの環境上では動かさないと思います。私達が提供するソリューションを、ユーザーの皆さんは、更に新しく、イノベーティブに活用する方法を試して下さいます。これは、喜ばしい事ながら、常に進化を求められる試練でもあります。

こちらの記事“Comparing monitoring options for Docker Deployments”では、様々なモニタリングオプションを比較した情報を提供しています。最新のオンラインミートアップでも取り上げています。Docker の監視ソリューションの大地は、まだ開発中なのです。

充分に下調べをしてから、コンテナ化!いざ前進!

コンテナー革命は、近年のソフトウェア開発のなかでも最もエキサイティングで物議を醸す開発手法の一つであることは間違いありません。Dockerは、先進的なギークに愛されているツールです。率直に言って、そのグループの一員になりたくはありませんか?
あなたのプロジェクトを試験的な段階から本番環境に移す時には、かならず下調べをしてから進めてみてください。テクノロジーは日々進化しています。従来のものより、沢山のメリットがあります。しかし、正しい目的の為に正しいツールが使えているのか、きちんと確かめる事を忘れないようにしましょう。

Mike Mackrory is a Global citizen who has settled down in the Pacific Northwest – for now.  By day he works as a Senior Engineer on a Quality Engineering team and by night he writes, consults on several web based projects and runs a marginally successful eBay sticker business.  When he’s not tapping on the keys, he can be found hiking, fishing and exploring both the urban and the rural landscape with his kids.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です