> For the complete documentation index, see [llms.txt](https://manual.dxable.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.dxable.com/1password/kubernetes-operator.md).

# Kubernetes Operator

1Password Connect Kubernetes Operatorは[Kubernetes Secretsを統合します](https://kubernetes.io/docs/concepts/configuration/secret/)1Password を 1 つ以上の Connect サーバーと連携して使うと、次のことが可能になります。

* 1Password アイテムから Kubernetes シークレットをCreateし、Kubernetes デプロイメントにロードします。
* 1Password アイテムが更新されると、自動的にデプロイメントを再起動します。

<https://youtu.be/kxbfCsJARHM>

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

**Helmでデプロイ**

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

* 1Passwordに[サインアップします](https://start.1password.com/sign-up/plan)。
* [1Password CLI](https://developer.1password.com/docs/cli/get-started/)をインストールします。
* Kubernetesのデプロイメントを用意します。minikube[を使うこともできます](https://minikube.sigs.k8s.io/docs/start/)ローカルでテストします。
* [Helmを](https://helm.sh/)インストールする。
* [Connect サーバー](https://developer.1password.com/docs/connect/get-started/#manual-step-2-deploy-1password-connect-server)として Secrets Automation ワークフローをCreateします。Connect サーバーの1password-credentials.jsonファイルが必要です。

**手動でデプロイする**

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

* 1Passwordに[サインアップします](https://start.1password.com/sign-up/plan)。
* [1Password CLI](https://developer.1password.com/docs/cli/get-started/)をインストールします。
* Kubernetesのデプロイメントを用意します。minikube[を使うこともできます](https://minikube.sigs.k8s.io/docs/start/)ローカルでテストします。
* [Connect サーバー](https://developer.1password.com/docs/connect/get-started/#manual-step-2-deploy-1password-connect-server)として Secrets Automation ワークフローをCreateします。Connect サーバーの1password-credentials.jsonファイルが必要です。

### **Limitations** <a href="#gppbki2lhsp3" id="gppbki2lhsp3"></a>

Kubernetes Operator は Connect サーバーのみをサポートします。サービス アカウントを使用している場合は、代わりに[Kubernetes Injector](https://developer.1password.com/docs/k8s/k8s-injector/)の使用を検討してください。

さらに、Kubernetes Operator では、シークレットを細かく選択したり、複数の認証情報を同時に使用したりすることはできません。機能の完全な比較については、[Kubernetes 統合を](https://developer.1password.com/docs/k8s/k8s-integrations/)参照してください。

### **Deployment** <a href="#sbrbfz9bi3rx" id="sbrbfz9bi3rx"></a>

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

* ①1Password Connect と Operator Helm チャートを使う。
* ②Kubernetes デプロイメント仕様ファイルを手動で使用します。

注意

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

**Helmでデプロイ**

[次の手順では、1Password Connect と Operator Helm チャートを](https://developer.1password.com/docs/k8s/k8s-helm/)使用して Kubernetes Operator をデプロイする方法について説明します。

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

#### **Step 1. Add the 1Password Helm chart repository** <a href="#dkkc82xsa22y" id="dkkc82xsa22y"></a>

次のコマンドは[1Password Helmチャートリポジトリを追加します](https://github.com/1Password/connect-helm-charts)Helm のローカル インスタンスに追加します。これにより、1Password の GitHub リポジトリから全てのチャートをダウンロードしてインストールできます。

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

#### **Step 2. Install the Kubernetes Operator using Helm** <a href="#id-2fwcgvs1tie5" id="id-2fwcgvs1tie5"></a>

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** <a href="#gr73wvydjrfg" id="gr73wvydjrfg"></a>

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

* [1Password アイテムから Kubernetes シークレットをCreateする](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#kubernetes-secret-from-item)
  * [単一のKubernetes Secretでデプロイ](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#deploy-single)
* [Kubernetes Secret の更新を無視する](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#ignore-updates)
* [自動再展開を有効にする](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#enable-auto-redeployment)
  * [Kubernetes オペレータごと](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-kubernetes-operator)
  * [名前空間ごと](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-namespace)
  * [Kubernetes デプロイメントごと](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-kubernetes-deploument)
  * [1つのパスワード項目あたり](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-onepassworditem)

#### **Create a Kubernetes Secret from a 1Password item** <a href="#sp5yigblgww" id="sp5yigblgww"></a>

Kubernetes Operatorをデプロイすると、[Kubernetes SecretsをCreateできます。](https://kubernetes.io/docs/concepts/configuration/secret/)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

![](/files/FyhecsN5bcc6LoGt47Bm)

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** <a href="#vcmsuvyvrykm" id="vcmsuvyvrykm"></a>

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** <a href="#i65jvth3fkwh" id="i65jvth3fkwh"></a>

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

* そのスコープは自動的に再起動するように構成されています。
* 更新された 1Password アイテムにリンクされた Kubernetes Secret を使用しています。

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

* [Kubernetes オペレータごと](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-kubernetes-operator)
* [名前空間ごと](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-namespace)
* [Kubernetes デプロイメントごと](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-kubernetes-deploument)
* [1つのパスワード項目あたり](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#per-onepassworditem)

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

**Per Kubernetes Operator**[**​**](https://developer.1password.com/docs/k8s/k8s-operator/#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** <a href="#p41cd3965fbz" id="p41cd3965fbz"></a>

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

[Operatorパターン](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)と[コントローラー](https://kubernetes.io/docs/concepts/architecture/controller/)の詳細については、Kubernetes のドキュメントを参照してください。

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

* [デプロイメントの削除](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#deployment-deletion)
* [ファイルをSaveするフィールド](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#fields-storing-files)
* [空白文字](https://developer.1password.com/docs/k8s/k8s-operator/?deployment-type=helm#whitespace-characters)

#### **Deployment deletion** <a href="#id-9eidpu4vp3p3" id="id-9eidpu4vp3p3"></a>

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

* ①デプロイメントには、注釈operator.1password.io/item-pathとoperator.1password.io/item-name注釈が含まれます。
* ②他のデプロイメントではシークレットを使用していません。

#### **Fields storing files** <a href="#syz5ajjdk9tw" id="syz5ajjdk9tw"></a>

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

#### **Whitespace characters** <a href="#xj75y9b6z4lf" id="xj75y9b6z4lf"></a>

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

* 最初の英数字文字の前の無効な文字を削除します。
* 最後の英数字の後の無効な文字を削除します。
* 単語間の空白文字をダッシュ​​ ( -) に置き換えます。
* 文字を小文字に変換します。

### **Configuration** <a href="#fijbz74zvs7x" id="fijbz74zvs7x"></a>

次のセクションでは、Kubernetes Operator ( 1password/onepassword-operator) コンテナ構成オプションとそのデフォルト値について説明します。Kubernetes[デプロイメント仕様ファイルの例](https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/#define-container-environment-variables-using-secret-data)これらの構成値をコンテキスト内で表示します。

#### **Environment variables** <a href="#arx0x4x9vnzc" id="arx0x4x9vnzc"></a>

![](/files/AcPKNaY51hYNCWMQaRsU)

#### **Command arguments** <a href="#id-9efrtojbdp78" id="id-9efrtojbdp78"></a>

| **Argument**    | **Description**                                                       | **Default value** |
| --------------- | --------------------------------------------------------------------- | ----------------- |
| --zap-log-level | Kubernetes Operator のログの詳細レベルを指定します。使用可能なオプションは、debug, info, errorです。 | debug             |
