GNU/Linux >> Linux の 問題 >  >> Linux

Kubernetesでパスワード、OAuthトークン、SSHキーなどのシークレットを作成して保存する

Kubernetesでは、Kubernetesシークレットを使用して、パスワード、OAuthトークン、sshキーなどの機密情報を保存および管理できます。 Kubernetesでは、シークレットをKubernetesオブジェクトとして定義できます。ポッドやDockerイメージよりもKubernetesシークレットにクレデンシャルを保存する方が安全です。

Kubernetesでシークレットを生成する方法は複数あります:

  1. テキストファイルからの作成
  2. ymlファイルからの作成

シークレットが利用可能になると、次の方法で使用できます。

  1. 環境変数
  2. ボリューム
  3. imagePullSecretsフィールドの使用

Kubernetes Secretsの詳細については、ここをクリックしてください。

この記事では、.ymlファイルを使用してシークレットを作成し、ポッド内で環境変数としてアクセスします。

前提条件

  1. 少なくとも1つのワーカーノードを持つKubernetesクラスタ。
    Kubernetesクラスタの作成方法を学びたい場合は、ここをクリックしてください。このガイドは、AWS Ubuntu18l04EC2インスタンスで1つのマスターと2つのノードを持つKubernetesクラスターを作成するのに役立ちます。

何をするか

  1. 秘密を作成する

シークレットを作成

Kubernetesで新しいシークレットを作成するには、まずbase64エンコード方式を使用して以下に示すように暗号化します。

ここ、

username =rahul and password=howtoforge123。

echo -n "rahul" | base64

echo -n "howtoforge123" | base64

上のスクリーンショットでは、クレデンシャルが暗号化されていることがわかります。

次のようにシークレット定義ファイルを作成します。このファイルは、上記の手順で生成された資格情報のbase64値を保持します。

vim my-secret.yml

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: cmFodWw=
  password: aG93dG9mb3JnZTEyMw==

では、これらの秘密とアクセスが可能なポッドを作成しましょう。

次のようにポッド定義を含む新しいファイルを作成します。

vim my-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: secrets-in-pod
spec:
  containers:
    - name: my-container
      image: redis
      env:
        - name: SECRET_USERNAME
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: username
        - name: SECRET_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: password
  restartPolicy: Never

次のコマンドを使用してシークレットを作成しましょう。

kubectl create -f my-secret.yml

kubectl get secret | grep mysecret

次に、次のポッド定義を使用してポッドを作成し、以前に作成したシークレットにアクセスします。

kubectl create -f my-pod.yml

kubectlgetポッド| grep secrets-in-pod

次のコマンドを使用してポッドにログインします。

kubectl get pods | grep secrets-in-pod

kubectl exec -it secrets-in-pod / bin / bash

ポッドにログインすると、次のコマンドを使用して環境変数としてシークレットにアクセスできます。

エコー$SECRET_USERNAME

エコー$SECRET_PASSWORD

上のスクリーンショットでは、シークレットが環境変数として利用可能であることがわかります。

シークレットオブジェクトの詳細を表示するには、次のコマンドを実行します。

kubectl get secret | grep mysecret

kubectl get secret mysecret -o yaml

これらのシークレットは、次のコマンドを使用してコマンドラインからデコードすることもできます。

kubectl get secrets / mysecret --template={{。data.username}}| base64 -d

kubectl get secrets / mysecret --template={{。data.password}}| base64 -d

上のスクリーンショットでは、クレデンシャルがシークレットから抽出され、base64を使用してコマンドラインで復号化されていることがわかります。

結論

この記事では、.ymlファイルからKubernetesにシークレットを作成して保存する手順を説明しました。ポッド内のこれらのシークレットに環境変数としてアクセスしようとしました。また、コマンドラインでシークレットを復号化するコマンドも確認しました。


Linux
  1. SSHキーを設定する方法

  2. 共有キー .ssh/authorized_keys と sudo を連携させるには?

  3. ssh キー ssh-agent bash および ssh-add

  1. SSH –sshキーの生成と操作

  2. LinuxでPPKファイルをOpenSSHキーに変換し、SSHを使用してログインする方法は?

  3. SSHとホームディレクトリのアクセス許可?

  1. Kubernetesシークレット–シークレットを作成、使用、アクセスする方法

  2. Ssh –OpensshキーとPuttyキーの違いは?

  3. ジャンブルパスワード–Linuxで一意のIDとパスワードを作成する