Kubernetes Operator

1Passwordマニュアル|Kubernetesオペレーターで1Password Connectを活用し、Kubernetes Secretsの管理と統合を効率化する方法をご紹介します。

1Password Connect Kubernetes OperatorはKubernetes Secretsを統合します1Password を 1 つ以上の Connect サーバーと連携して使うと、次のことが可能になります。

  • 1Password アイテムから Kubernetes シークレットをCreateし、Kubernetes デプロイメントにロードします。

  • 1Password アイテムが更新されると、自動的にデプロイメントを再起動します。

https://youtu.be/kxbfCsJARHM

Kubernetes Operator を使う前に、必要条件の手順を完了していることを確認してください。必要条件は、Kubernetes Operator をデプロイする方法に応じて若干異なります。

Helmでデプロイ

1Password Connect と Operator Helm チャートを使用して Kubernetes Operator をデプロイする前に、次の操Createを行う必要があります。

手動でデプロイする

Kubernetes デプロイメント仕様ファイルを使用して Kubernetes Operator をデプロイする前に、次の操Createを行う必要があります。

Limitations

Kubernetes Operator は Connect サーバーのみをサポートします。サービス アカウントを使用している場合は、代わりにKubernetes Injectorの使用を検討してください。

さらに、Kubernetes Operator では、シークレットを細かく選択したり、複数の認証情報を同時に使用したりすることはできません。機能の完全な比較については、Kubernetes 統合を参照してください。

Deployment

Kubernetes Operator をデプロイするには、次の 2 つの方法があります。

  • ①1Password Connect と Operator Helm チャートを使う。

  • ②Kubernetes デプロイメント仕様ファイルを手動で使用します。

注意

Kubernetes Operator をデプロイするには、Helm を使うことをお勧めします。手動でデプロイすると、はるかに複雑で面倒なプロセスになります。

Helmでデプロイ

次の手順では、1Password Connect と Operator Helm チャートを使用して Kubernetes Operator をデプロイする方法について説明します。

1Password Connect と Operator Helm チャートを使用して、Connect と一緒に、または Connect なしで Kubernetes をデプロイできます。

Step 1. Add the 1Password Helm chart repository

次のコマンドは1Password Helmチャートリポジトリを追加しますHelm のローカル インスタンスに追加します。これにより、1Password の GitHub リポジトリから全てのチャートをダウンロードしてインストールできます。

$ helm repo add 1password https://1password.github.io/connect-helm-charts/

Step 2. Install the Kubernetes Operator using Helm

1Password Connect と Operator Helm チャートを使用して、Connect ありまたは Connect なしで Kubernetes Operator をデプロイできます。

ほとんどの場合、Kubernetes Operator を Connect と一緒にデプロイすると、Connect と Operator 間のセットアップと通信が簡素化されるため、合理的です。ただし、既に本番環境で Connect をデプロイしている場合は、Kubernetes Operator のみをデプロイする方が合理的です。

With Connect

Connect を使用して Kubernetes Operator をインストールするには、次のコマンドを使用します。1password-credentials.jsonファイルを使用して、1Password Connect サーバーで Kubernetes Operator をデプロイします。

$ helm install connect 1password/connect --set-file connect.credentials=1password-credentials.json --set operator.create=true --set operator.token.value=OP_CONNECT_TOKEN

Connect トークンをまだ持っていない場合は、代わりに次のコマンドを使用します。SERVERとVAULT を正しい値に置き換えてください。

$ helm install connect 1password/connect --set-file connect.credentials=1password-credentials.json --set operator.create=true --set operator.token.value=$(op connect token create --server SERVER --vault VAULT)

Without Connect

Connect を使用せずに Kubernetes Operator をインストールするには、operator.createを に設定しtrue、connect.createを に設定しますfalse。

$ helm install connect 1password/connect --set operator.create=true --set operator.token.value=<token> --set connect.create=false

Connect トークンをまだ持っていない場合は、代わりに次のコマンドを使用します。SERVERとVAULT を正しい値に置き換えてください。

$ helm install connect 1password/connect --set operator.create=true --set operator.token.value=$(op connect token create --server SERVER --vault VAULT) --set connect.create=false

Usage examples

始めるにあたっては、次の使用例を参考にしてください。

Create a Kubernetes Secret from a 1Password item

Kubernetes Operatorをデプロイすると、Kubernetes SecretsをCreateできます。YAML ファイルをCreateし、kubectlそれを使用して Kubernetes クラスターにデプロイすることで、1Password アイテムからデータを抽出します。

YAML ファイルは、Kubernetes Operator にOnePasswordItem(1Password アイテム) から Kubernetes Secret をCreateするように指示し、アイテム名とアイテムのパスを指定します。

①次のテンプレートを使用して、1Password アイテムのYAML ファイル (1password-item.yaml ) をCreateします。 SECRET_NAME、、VAULTをITEM1Password アイテムの正しい値に置き換えます。

  • SECRET_NAME を、 Kubernetes シークレットのCreateに使う名前に置き換えます。

  • VAULT をVault の名前または ID に置き換えます。

  • ITEM を1Password アイテムの ID またはタイトルに置き換えます。

1password-item.yaml

apiVersion: onepassword.com/v1

kind: OnePasswordItem

metadata:

name: SECRET_NAME

spec:

itemPath: "vaults/VAULT/items/ITEM"

②1password-item.yamlファイルをデプロイするためにkubectlを使用します。

$ kubectl apply -f 1password-item.yaml

$ kubectl get secret 1password-item.yaml

注意

Createした 1Password アイテムを削除すると、Kubernetes Operator は対応する Kubernetes Secret を自動的に削除します。

Deploy with a single Kubernetes Secret

デプロイメント仕様ファイルに特定のメタデータを追加して適用することで、Kubernetes デプロイメント用の単一の Kubernetes シークレットをCreateすることもできます。

①デプロイメント仕様ファイルに次の注釈を追加します。

deployment-specification.yaml

VAULT、ITEM、SECRET_NAME を 1Password アイテムの正しい値に置き換えます。

  • VAULT をVault の名前または ID に置き換えます。

  • ITEM を1Password アイテムの ID またはタイトルに置き換えます。

  • SECRET_NAME を、 Kubernetes シークレットのCreateに使う名前に置き換えます。

②YAML ファイルを適用します。これにより、で指定された 1Password 項目の内容を含む、SECRET_NAMEoperator.1password.io/item-pathという名前の Kubernetes Secret がCreateされます。

$ kubectl apply -f deployment-specification.yaml

Ignore updates for a Kubernetes Secret

Kubernetes Operator は、Kubernetes Secrets を対応する 1Password 項目と自動的に同期します。

Kubernetes Secret にリンクされた 1Password アイテムが POLLING_INTERVAL 内に変更されると、関連付けられた Kubernetes Secret が自動的に更新されます。

1PasswordにSaveされている項目に注釈 Operator.1password.io:ignore-secret を追加することで、特定の Kubernetes Secret が更新されないようにできます。このアノテーションが配置されている間は、関連する 1Password アイテムが更新されても Kubernetes Secret は更新されません。

Enable automatic redeployment

Kubernetes Operator は自動再デプロイメントをサポートしており、Kubernetes Secret にリンクされた 1Password アイテムが更新されたことを検出すると、Kubernetes デプロイメントを自動的に再起動します。有効にすると、Kubernetes Operator は、Connect サーバーが更新をポーリングするたびに、次の基準を満たす Kubernetes デプロイメントを再起動します。

  • そのスコープは自動的に再起動するように構成されています。

  • 更新された 1Password アイテムにリンクされた Kubernetes Secret を使用しています。

さまざまなスコープに対して自動再デプロイメントを構成できます。

スコープ内 (名前空間ごとなど) で自動デプロイメントを構成する場合、スコープに対して別の構成を明示的に指定しない限り、構成は全てのダウンストリーム スコープに適用されます。

Per Kubernetes Operator

Kubernetes Operator ごとに自動再デプロイメントを構成できます。これには、Kubernetes Operator インスタンスによって監視される名前空間内の全ての Kubernetes デプロイメントが含まれます。

Kubernetes Operator の自動再デプロイ設定は、AUTO_RESTART 環境変数によって制御されます。デフォルトでは false に設定されています。自動再デプロイメントを有効にするには、これを true に設定します。

Per namespace

名前空間ごとに自動再デプロイメントを構成できます。これには、名前空間内の全ての Kubernetes デプロイメントが含まれます。

・名前空間内の全ての Kubernetes デプロイメントに対して自動再デプロイメントを有効にするには、operator.1password.io/auto-restart アノテーションを true に設定します。

・名前空間内の全ての Kubernetes デプロイメントの自動再デプロイメントをオフにするには、operator.1password.io/auto-restart アノテーションを false に設定します。

各名前空間は、operator.1password.io/auto-restart アノテーション値を設定しない場合、自動再デプロイメントに Kubernetes Operator 設定を使用します。

次のコード ブロックは、名前空間内の全ての Kubernetes デプロイメントに対して自動再デプロイメントが有効になっている名前空間構成の例を示しています。

deployment-specification.yaml

apiVersion: v1

kind: Namespace

metadata:

name: "example-namespace"

annotations:

operator.1password.io/auto-restart: "true"

Per Kubernetes deployment

個別の Kubernetes デプロイメントごとに自動再デプロイメントを構成できます。

・特定の Kubernetes デプロイメントの自動再デプロイメントを有効にするには、operator.1password.io/auto-restart アノテーションを true に設定します。

・特定の Kubernetes デプロイメントの自動再デプロイメントをオフにするには、operator.1password.io/auto-restart アノテーションを false に設定します。

Operator.1password.io/auto-restart アノテーション値を設定しない場合、各 Kubernetes デプロイメントでは自動再デプロイメントに名前空間設定が使用されます。

次のコード ブロックは、自動再デプロイメントが有効になっているデプロイメント構成の例を示しています。

deployment-specification.yaml

apiVersion: v1

kind: Deployment

metadata:

name: "example-deployment"

annotations:

operator.1password.io/auto-restart: "true"

Per OnePasswordItem

特定の 1Password アイテム (OnePasswordItem) カスタム リソースの自動再デプロイを構成できます。

・特定の 1Password アイテムのカスタム リソースの自動再デプロイメントを有効にするには、operator.1password.io/auto-restart アノテーション値を true に設定します。

・特定の 1Password アイテムのカスタム リソースの自動再デプロイメントをオフにするには、operator.1password.io/auto-restart アノテーションの値を false に設定します。

各 1Password アイテム (OnePasswordItem) は、operator.1password.io/auto-restart アノテーション値を設定しない場合、自動再デプロイメントに Kubernetes デプロイメント設定を使用します。

次のコード ブロックは、自動再展開が有効になっている 1Password アイテム構成の例を示しています。

deployment-specification.yaml

apiVersion: onepassword.com/v1

kind: OnePasswordItem

metadata:

name: example

annotations:

operator.1password.io/auto-restart: "true"

Behavior

1Password Kubernetes Connect Operator は、Kubernetes Operator パターンに従います。これは、望ましいクラスター状態に達するまでリソースを同期する調整機能を提供するコントローラーを使用します。

Operatorパターンコントローラーの詳細については、Kubernetes のドキュメントを参照してください。

このセクションの情報は、特定のシナリオにおける Kubernetes Operator の動作の一部を文書化しています。

Deployment deletion

Createしたデプロイメントを削除すると、次の条件がすべて満たされている場合、Kubernetes Secret デプロイメントも削除されます。

  • ①デプロイメントには、注釈operator.1password.io/item-pathとoperator.1password.io/item-name注釈が含まれます。

  • ②他のデプロイメントではシークレットを使用していません。

Fields storing files

1Password 項目フィールドにファイルが格納されている場合、対応する Kubernetes Secret はファイルの内容を値として使用します。1 つの 1Password 項目にファイルを格納するフィールドと別の種類のデータを格納するフィールドがある場合、Kubernetes Operator はファイル以外のフィールドを優先し、ファイルを含むフィールドを無視します。

Whitespace characters

タイトルとフィールド名に空白文字 (または DNS サブドメイン名に無効なその他の文字) が含まれている場合、Kubernetes オペレーターは Kubernetes Secret をCreateするときに、タイトル (またはフィールド) を次のように変更します。

  • 最初の英数字文字の前の無効な文字を削除します。

  • 最後の英数字の後の無効な文字を削除します。

  • 単語間の空白文字をダッシュ​​ ( -) に置き換えます。

  • 文字を小文字に変換します。

Configuration

次のセクションでは、Kubernetes Operator ( 1password/onepassword-operator) コンテナ構成オプションとそのデフォルト値について説明します。Kubernetesデプロイメント仕様ファイルの例これらの構成値をコンテキスト内で表示します。

Environment variables

Command arguments

Argument

Description

Default value

--zap-log-level

Kubernetes Operator のログの詳細レベルを指定します。使用可能なオプションは、debug, info, errorです。

debug

Last updated