問題タブ [docker-secrets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
configuration - 不可知な構成サービスの設計
趣味で、マイクロサービス アーキテクチャを使用していくつかの Web アプリケーションを設計しています。構成管理を行うための最善の方法を決定しようとしていますが、構成に対する私のアプローチにはいくつかの大きな落とし穴があるのではないか、またはより良い方法が存在するのではないかと心配しています。
問題を組み立てるために、C++ で記述された認証サービス、Rust で記述された ID サービス、Haskell で記述された分析サービス、scala で記述されたいくつかの中間層、および JavaScript で記述されたフロントエンドがあるとします。対応する ID DB、認証 DB、分析 DB (おそらくセッションの redis キャッシュ) などもあります。これらのアプリはすべて docker swarm を使用してデプロイしています。
これらのアプリの 1 つが展開されるたびに、必ず他のすべてのアプリケーションを検出する必要があります。私は docker swarm を使用しているので、すべてのノードが必要なオーバーレイ ネットワークを共有している限り、検出は問題になりません。
ただし、各アプリケーションには依然としてアップストリーム サービスの host_addr、おそらくポート、一部の DB または封印されたサービスの資格情報などが必要です。
docker にはsecrets
、アプリがコンテナーから構成を読み取れるようにする機能があることは知っていますが、各サービスの各言語で構成パーサーを作成する必要があります。これは厄介なようです。
私がむしろしたいのはconfiguration service
、他のすべてのサービスを構成する方法に関する知識を維持する です。したがって、各アプリケーションは、実行時にアプリケーションの構成を取得するように設計された RPC 呼び出しで開始されます。何かのようなもの
AppConfig は IDL で定義されるため、クラスはすぐに使用可能になり、言語に依存しなくなります。
これは良い解決策のように思えますが、おそらく私はここでポイントを逃しています。大規模であっても、いくつかの構成サービスで数万のノードを簡単に処理できるため、スケーリングの問題は予想されません。繰り返しますが、これは単なる趣味のプロジェクトですが、「もしも」のシナリオについて考えるのが好きです :)
構成スキームはマイクロサービス アーキテクチャでどのように処理されますか? これは合理的なアプローチのように思えますか? Facebook、Google、LinkedIn、AWS などの主要なプレーヤーは何をしていますか?
kubernetes - kubernetes シークレットには、環境変数の末尾に空白があります
環境変数に入れられたシークレットを利用する GKE で実行される Kubernetes 1.9 でデプロイを作成しました。シークレットを base64 でエンコードした yaml ファイルを使用して、シークレットを GKE にアップロードしました。
コンテナに表示されているのは、環境変数がそこにあるということですが、値には末尾の空白が含まれています。環境変数 FOO の値を "bar" に設定すると、次のようになります。ここで、シークレット yaml に入れる base64 は "YmFyCg==" になります。
これは、環境変数から読み取るアプリケーションにとって、追加の空白なしで値がエンコードされることを期待しているアプリケーション (たとえば、イメージ内) にとって、終わりのない問題を引き起こしてPOSTGRES_PASSWORD
いますPOSTGRES_USER
。postgres:9.6
環境内の他の変数 (シークレットなしで展開 yaml から設定されたものを含む) には、末尾の空白が含まれません。問題があるのは秘密だけです。
docker - コンテナーでの Docker シークレットの使用
Docker CE 17.09-1 を使用しています。私は Docker Swarm を利用しており、複数のサービスを含むスタックをデプロイしています。
さまざまな資格情報に Docker シークレットを使用することにしました。実行しているサービスの 1 つで、構成ファイルにデータベースのユーザー名とパスワードを入力する必要があります。必要な資格情報ごとに 2 つのシークレットを作成し/run/secrets/
ました。コンテナーの下に読み取り専用ファイルが表示されます。これらのファイルの内容を構成ファイルに挿入するにはどうすればよいですか? 私の構成ファイルは.ini
ファイルであり、多くの値が含まれています。
ご提案いただきありがとうございます。