[和訳] Docker EEのためのチェックリスト: 本番環境準備編 #docker
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は エンタープライズ企業向けDocker運用チェックリスト にて紹介した THE ENTERPRISE IT CHECKLIST FOR DOCKER OPERATIONS の和訳です。
- バージョン:17.06
- ソース: https://github.com/nicolaka/checklist
docker run -t nicolaka/checklist:17.06
☑ インフラストラクチャ
- クラスタのサイジングおよびゾーニング
- サポートと互換性 (OS, Docker Engine, UCP, DTR)
- 十分なリソース (マネージャノードとワーカーノード)
- マネージャノード: メモリ 16GB, 4 vCPU, 1Gbps 以上, ディスク 32GB 以上
- ワーカーノード(最小): メモリ 4GB, 2 vCPU, 100Mbps以上, ディスク 8GB
- リソース:
☑ オーケストレーション管理
- UCPマネージャの冗長化・高可用化
- クォーラム維持のために奇数(3、5、7)でデプロイすること
- データセンターまたはアベイラビリティゾーン (1-1-1, 2-2-1… など) に分散
- オーケストレーション設定を十分にチューニング
- TCPロードバランサを上流に設置
- マネージャノードにアプリケーションワークロードを振り分けてはいけない
- 参加・離脱プロセスの自動化
- リソースのラベル付け (ネットワーク、ボリューム、コンテナ、サービス、秘密情報、ノード)
- リソース:
☑ イメージの配布
- 冗長(3、5、7)なDTRレプリカ
- 複製でき、安全であるイメージのバックエンドストレージ (NFS、S3、 Azure Storageなど)
- ガベージコレクションの有効化
- セキュリティスキャンの有効化
- リソース:
☑ セキュリティ
- Docker EEのRBACモデルの活用 (Subjects、Grants、Roles、Collection、 Resource)
- チームおよび組織へのAD/LDAPグループマッピング
- Docker Content Trustの署名と強制
- Docker Securityベンチの定期的な実施
- ダイレクトアクセスの制限 (SSH/RDP)
- 内蔵のDocker Secrets機能の活用 (暗号化、制御)
- オーケストレーション参加鍵のローテーション
- イントラ・クラスタ mTLS (ノードの同定、通信の管理)のための内蔵またはユーザ独自のCAを利用
- UCP および DTRの有効な SSL/TLS 証明書
- リソース:
☑ ネットワーク
- アプリケーションに、正しいネットワーキングドライバを割り当てる
- 適切な公開モードを選択する(Ingressかホストモードか)
- 適切なロードバランシングモードを選択する(クライアント側ならDNSラウンドロビン、サーバ側ならVIP)
- ネットワークレイテンシは100ms未満とする
- L3セグメントをまたぐアプリにはオーバーレイ (1つのアプリに対して1つのオーバーレイネットワーク)
- 内蔵の暗号化オーバーレイ機能の活用 (アプリ間通信の暗号化)
- アプリケーションのサブネットサイズを慎重に選ぶ
- Dockerでオーバーレイネットワークを利用するために、サブネットが重複しないよう設計する
- リソース:
☑ ストレージ
- 本番環境用に設定されたDocker Engineストレージバックエンド
- 複製でき安全なDTRストレージバックエンド
- アプリケーションデータを複製するためには、Docker社が認定し、テスト済みのアプリケーションデータストレージプラグインを利用する
☑ ロギングとモニタリング
- Docker Engine用の中央集権的ロギングおよびアプリケーションコンテナログ
- 積極的なトラブルシューティングのためのローカルロギング
- ホストレベルおよびコンテナレベルのリソースモニタリング
- DTRイメージのバックエンドストレージのモニタリング
- Docker Engineのストレージのモニタリング
- 内蔵のアプリケーションヘルスチェック機能の利用
- リソース:
☑ インテグレーション
- UCPとDTRは十分に統合できている (SSO、DCTなど)
- CI/CD ツール (Jenkins、Bamboo、CircleCIなど)
- 開発ツール (devマシン、IDEsなど)
- 自動構築ツール (Puppet、Chef、Ansible、Salt)
- リソースプロビジョニングシステム (Terraformなど)
- 管理システムの変更
- 内部/外部DNSまたは、そのほかのサービスディスカバリおよび登録システム
- マネジメントプレーンおよび各アプリケーションのためのロードバランシング (L4/L7)
- インシデントおよびチケット管理システム (ServiceNowなど)
☑ ディザスタリカバリ
- 定期 (rec. weekly) バックアップ (UCPやDTRおよびSwarm)
- 十分にテスト、自動化、文書化する
- プラットフォームの復元
- アップグレードおよびダウングレード
- アプリケーションのリカバリ手順
- リソース:
☑ テスト
- マルチプラットフォームイメージのプルおよびDTRへのプッシュ
- ユーザが各リソースへの適切なアクセス権限を有していることの確認
- アプリケーションリソース制限が期待どおりに機能することの確認
- CLIおよびUIからのエンド・トゥ・エンドでスタックのデプロイメント
- ローリングアップグレードを使用して新しい設定、イメージおよびネットワークのアプリケーションアップグレード