Member-only story
Kubernetesの秘密について解説
今回の記事ではKubernetesクラスタにおけるシークレットとは何か、また様々な方法でシークレットを作成する方法について学びます。また、ポッドの定義にシークレットを注入する方法も説明します。
このチュートリアルでは、Kubernetesクラスタにおけるシークレットとは何か、そして命令型および宣言型のメソッドを使用してシークレットを作成する方法について説明します。そして最後に、ポッドにシークレットを使用する方法について説明します。Kubernetesクラスタにおけるシークレットはオブジェクトであり、ユーザー名、パスワード、トークンなどの機密情報を保存するために使用されます。
シークレットの目的は、クレデンシャルをエンコードまたはハッシュ化することである。シークレットは様々なポッド定義ファイルで再利用することができます。そう、シークレットはある特定のネームスペースの下で配布されているのです。ですから、どのような定義ファイルでもシークレットを再利用することができます。
シークレットのユースケース:
KubernetesクラスタにMySQLポッドをデプロイする予定があるとします。MySQLは、ホストIPアドレス、データベース名、ユーザー名、パスワードなど、多くの機密情報を必要とします。Kubernetesのデプロイメント定義ファイルとして、これらの情報を使用してMySQL用のポッドを作成することができます。このシナリオでは、ユーザー名、パスワード、データベース名などのコンフィギュレーション情報は、ポッド定義と密接に結合されています。そして、それらはポッド定義ファイルにアクセスしたすべての開発者が簡単に見ることができます。
このアプローチでは、2つの問題に直面しています。
- 機密情報はポッドと密結合しており、再利用できません(つまり、毎回、個別に認証情報を入力する必要があるということです)。確かに、認証情報を更新するのも面倒な作業です。なぜかというと、定義ファイルごとに情報を変更する必要があるからです。このアプローチは一元化されたものではありません。
2. そして、機密情報はポッド定義ファイルにアクセスしたすべての開発者が見ることができます。
上記の問題は、シークレットを使うことで簡単に解決することができます。シークレットはKubernetesクラスタ内で再利用・分散することが可能です。
KubernetesクラスタでSecretsを使用しながら、2つの活動を行います。
- シークレットを作成する。
- ポッドに シークレットを注入する。