アプリケーションは通常、専用のシークレット ストアを使用して、キーやトークン、データベース、サービス、外部システムでの認証に使用されるシークレットなどの機密情報を保存します。通常、これには 開発者がアプリケーションのプライベート データを簡単に使用できるようにするために、Dapr には専用の Secret ビルディング ブロック API があり、開発者はこれを使用して Secret ストレージからプライベート データを取得できます。 Dapr の Secret ストレージ ビルディング ブロックを使用するには、通常、次の手順に従います。
デフォルトでは、Dapr は、Helm または dapr init -k を介して Kubernetes モードでデプロイされると、組み込みの Kubernetes Secret ストアを有効にします。別のシークレット ストアを使用する場合は、disable-builtin-k8s-secret-store 設定を使用して Dapr Kubernetes シークレット ストアを無効にすることができます。 アプリケーション コードは、Secret ビルディング ブロック API を呼び出して、コード内で使用できる Dapr 対応の Secret ストアからプライベート データを取得できます。たとえば、次の図は、構成されたクラウド シークレット ストア内の vault という名前のシークレット ストアから mysecret という名前のシークレット データを要求するアプリケーションを示しています。 ダプルシークレット アプリケーションは、シークレット API を使用して、Kubernetes シークレット ストアからプライベート データにアクセスできます。次の例では、アプリケーションは Kubernetes Secret ストアから同じ mysecret を取得します。 K8s の Dapr シークレット ローカル環境でのシークレットの使用ここでも、説明のためにクイックスタート リポジトリを使用します。 gitクローン [-b <dapr_version_tag>] https://github.com/dapr/quickstarts.git 次に、secretstore ディレクトリの下のノード フォルダーを見つけます。 $ cdチュートリアル/シークレットストア/ノード app.js は、いくつかのルートとハンドラーを公開するシンプルな Express アプリケーションです。まず、ファイル内の次の内容を確認します。 定数 daprPort = process.env.DAPR_HTTP_PORT || 3500 ; secretStoreName は環境変数 SECRET_STORE から読み取られ、Kubernetes デプロイメントの場合は値 kubernetes が挿入されます。ローカル開発の場合、環境変数を localsecretstore の値に設定する必要があります。 次に、getsecret ハンドラー コードを見てみましょう。 app.get( "/getsecret" , (_req, res) = > { このコードは、シークレット ストアから mysecret という名前のデータを取得し、そのデータの Base64 エンコード バージョンを表示します。 secrets.json ファイルに mysecret という名前の Secret データを追加します。 { また、Secret に対応する Component コンポーネントを追加する必要があります。たとえば、ローカル自己拡張管理モードでは、次のように構成ファイルを作成します。 APIバージョン: dapr.io/v1alpha1 上記のコンポーネントは、シークレット ファイル パスが secrets.json ファイルであるローカル シークレット リポジトリを定義します。
次に、上記のシークレット ストア名を環境変数として設定する必要があります。 エクスポートSECRET_STORE = "localsecretstore" 次に、Node アプリケーションの依存関係をインストールします。 npmインストール 次に、Dapr を使用して、ローカル シークレット ストア コンポーネントを含む Node アプリケーションを実行します。 $ dapr実行--app -id nodeapp --components -path ./components --app -port 3000 --dapr -http -port 3500 ノードapp.js 起動後、dapr list を使用してアプリケーション リストを表示できます。 $ daprリスト 起動が完了すると、アプリケーションの getsecret インターフェースに直接アクセスできるようになります。 $ curl -k http://localhost:3000/getsecret 通常の出力結果は YWJjZA== で、これは上記の abcd を base64 エンコードした後の値です。 次に、アプリケーション ログを確認すると、次のような内容が表示されます。 = = APP = = URL を取得しています: http://localhost:3500/v1.0/secrets/localsecretstore/mysecret?metadata .namespace = default テストが完了したら、dapr stop コマンドを使用してアプリケーションを停止できます。 dapr を停止--app -id nodeapp Kubernetes 環境でのシークレットの使用次に、Dapr が Kubernetes モードで Secrets ストアをどのように使用するかを見てみましょう。もちろん、まず Kubernetes クラスターに Dapr コントロール プレーンをインストールする必要があります。 Dapr は、AWS Secret Manager、Azure Key Vault、GCP Secret Manager、Kubernetes など、さまざまなシークレット ストアを使用してシークレット データを解析できます。ここでは、Kubernetes Secret オブジェクトを直接使用してデモンストレーションを行うことができます。 まず、シークレット データを ./mysecret ファイルに追加します。たとえば、パスワードが abcd の場合、./mysecret ファイルの内容は abcd になります。 次に、./mysecret ファイルに基づいて Kubernetes Secret オブジェクトを作成します。 $ kubectlシークレットジェネリック mysecret を作成します--from -file ./mysecret 作成された Secret オブジェクトの名前 mysecret をメモします。これは後ほど使用されます。 作成が完了したら、オブジェクト内のデータが期待どおりかどうかを確認できます。 $ kubectlシークレット mysecret -o yaml を取得します 次に、Node.js アプリケーションを Kubernetes クラスターにデプロイします。対応するリソース マニフェスト ファイルは次のとおりです。 種類: サービス ここで重要な点は、環境変数 SECRET_STORE を構成し、その値を kubernetes に設定して、アプリケーションが Kubernetes を介して Secret データを取得する必要があることを認識できるようにすることです。アプリケーションをデプロイするだけです: $ kubectl apply -fデプロイ/node.yaml デプロイが完了すると、EXTERNAL-IP 192.168.0.50 を介してアプリケーションにアクセスできるようになります。 カール-k http://192.168.0.50/getsecret 通常、上記のリクエストの出力は YWJjZAo= です。 Node アプリケーション ログを表示することもできます。 $ kubectlログ--selector = app = node -c node 上記のログから、Node アプリケーションがシークレット ストアからシークレット データを取得するために dapr に要求を行っていることがわかります。 mysecret は上記で作成した Secret オブジェクトの名前であることに注意してください。 もちろん、HashiCorp Vault などの別のシークレット ストアを使用している場合は、次のリソース リストに示すように、secretstores.hashicorp.vault タイプの対応するコンポーネントを作成する必要があります。 APIバージョン: dapr.io/v1alpha1 Dapr でサポートされているその他のシークレット ストアの構成プロパティについては、関連情報の公式ドキュメント https://docs.dapr.io/reference/components-reference/supported-secret-stores/ を参照してください。 |
>>: Kubernetes リソースを管理する際に注意すべき 5 つのポイント!
百度の重みの進化実は、重みで公式に認められている検索エンジンはGoogleとSogouだけです。Ba...
序文近年、HTML5 技術の普及、モバイル デバイスの急速な成長、トラフィック料金の継続的な低下によ...
この疫病は人々の生産や生活の仕方を変えました。共同作業、リモートワーク、オンライン教育などのシナリオ...
7月31日の朝、Alipayが誤って当選SMSを送信し、当初は5元の宝くじが当たるというSMSが、全...
ウェブサイトの構築に関しては、ウェブマスターの 99% は私と同じように生計を立てるためにそれを行っ...
Hostus の OVZ は少し値下がりしました。全体的にハードドライブが大きく値上がりしたので、コ...
近年、ますます大規模なデータセットを処理するために SaaS (サービスとしてのソフトウェア) モデ...
過去数年間、多くの企業が大量のデータ、アプリケーション、開発作業をクラウド プラットフォームに移行し...
Hizakura BV は、主に IPv4、V6 の売買およびリース サービスを提供しており、オラン...
クラウドネイティブがビジネスにもたらす意味製造業から運輸業、小売業まで、ほぼすべての業界の企業がクラ...
Cloudcone は誰もが知っているブランドです。同社はブラック フライデー プロモーションを実施...
導入Docker は、開発者がソフトウェアをパッケージ化し、コンテナの形式で実行できるように、オペレ...
皆さんは百度スパイダーをよくご存知だと思いますし、ウェブマスターの皆さんもスパイダーの訪問を歓迎して...
動画業界は、止めることのできない勝者総取りの業界となっている(下の図からわかるように、コンテンツとト...
オープンプラットフォームは中国の電子商取引企業の中核戦略になりつつある。プラットフォーム上では、売り...