簡體   English   中英

如何從外部秘密創建多密鑰 Kube.netes 秘密?

[英]How to create a multy-key Kubernetes secret from an external secret?

我有一個外部秘密存儲 - 帶有秘密密碼的 Azure Key Vault。

我需要創建一個包含多個字段的 Kube.netes 秘密:密碼 - 僅來自 Azure Key Vault,用戶名硬編碼,url 硬編碼,帶有硬編碼注釋和標簽。

像這樣:

apiVersion: v1
kind: Secret
metadata:
  name: my-external-secret
  labels:
    mylable: external
  annotations:
    myannotation: external
type: Opaque
stringData:
  name: credentials
  url: https://example.com
  username: user
  password: <from-Azure-Key-Vault>

如果重要的話,我使用 Azure Kube.netes 服務。

azure Key Vault 與 AKS 集成創建並控制機密,因此您將無法修改它。

我建議將非 KV 秘密移動到它們自己的秘密,然后在您的部署中安裝這兩個秘密。

這可以通過安裝在 Kube.nets 集群中的external-secrets軟件輕松實現。 external-secrets支持許多不同的秘密存儲,包括 Azure Key Vault。 external-secrets有一個模板引擎,可以生成一個包含多個字段、標簽和注釋的秘密。

示例:使用托管標識將外部機密連接到 Key Vault

apiVersion: external-secrets.io/v1beta1
kind: SecretStore
metadata:
  name: external-secrets-kv
  namespace: myspace
spec:
  provider:
    azurekv:
      authType: ManagedIdentity
      identityId: "<ManagedIdentityID>"
      vaultUrl: "https://<keyvault-name>.vault.azure.net"

現在讓我們創建一個帶有注釋和標簽以及多個字段的模板:

apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
  name: template-my-external-secret
  namespace: myspace
spec:
  refreshInterval: 1h
  secretStoreRef:
    kind: SecretStore
    name: external-secrets-kv
  target:
    name: my-external-secret
    template:
      type: Opaque
      engineVersion: v2
      metadata:
        labels:
          mylable: external
        annotations:
          myannotation: external
      data:
        name: credentials
        url: https://example.com
        password: '{{ .password }}'
        username: '{{ .username }}'
  data:
  - secretKey: password
    remoteRef:
      key: azure-kv-password
  - secretKey: username
    remoteRef:
      key: azure-kv-username

然后external-secrets將創建一個真正的秘密,其用戶名和密碼字段的值來自 Azure Key Vault。

apiVersion: v1
kind: Secret
metadata:
  name: my-external-secret
  namespace: myspace
  labels:
    mylable: external
  annotations:
    myannotation: external
type: Opaque
stringData:
  name: credentials
  url: https://example.com
  username: <from-Azure-Key-Vault>
  password: <from-Azure-Key-Vault>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM