新消息:在TwitterMastodon獲取專案更新

安裝 cert-manager csi-driver-spiffe

安裝步驟

1. 安裝 cert-manager

csi-driver-spiffe 需要已安裝 cert-manager,但 cert-manager 的預設安裝將無法運作

⚠️ 至關重要的是,必須在 cert-manager 中停用預設的批准者 ⚠️

如果未停用預設的批准者,csi-driver-spiffe 的批准者將會與 cert-manager 競爭,並且策略執行將會變得無用。

策略執行對於安全使用 csi-driver-spiffe 絕對至關重要。請參閱安全性考量章節以取得更多詳細資訊。

以下範例示範如何重新配置已安裝的 cert-manager (v1.15.0+) 以在沒有自動批准者的情況下執行

# ⚠️ This Helm option is only available in cert-manager v1.15.0 and later.
existing_cert_manager_version=$(helm get metadata -n cert-manager cert-manager | grep '^VERSION' | awk '{ print $2 }')
helm upgrade cert-manager jetstack/cert-manager \
--reuse-values \
--namespace cert-manager \
--version $existing_cert_manager_version \
--set disableAutoApproval=true

2. 設定簽發者/叢集簽發者

如果您使用執行階段組態,則可以延後此步驟,但在 Pod 成功使用 csi-driver-spiffe 取得 SVID 之前,必須設定有效的簽發者。

安裝或設定某種類型的簽發者,該簽發者將用於簽署您信任網域中的 CertificateRequest 資源。

如果您希望使用命名空間範圍的簽發者,則必須在 Pod 將掛載磁碟區的每個命名空間中建立該簽發者。

您必須使用與使用自訂 URI SAN 簽署憑證相容的簽發者類型。ACME 簽發者通常無法運作,而 SelfSigned 簽發者也不適用。

範例示範叢集簽發者可以在 csi-driver-spiffe 儲存庫中找到。

⚠️ 此信任網域的根 CA 是由 cert-manager 產生,且私密金鑰儲存在叢集中

根據您的威脅模型,這可能不適用於生產部署。

我們也將使用 cmctl 來批准 CertificateRequest,因為預設的批准者已在上方停用。

kubectl apply -f https://raw.githubusercontent.com/cert-manager/csi-driver-spiffe/ed646ccf28b1ecdf63f628bf16f1d350a9b850c1/deploy/example/clusterissuer.yaml
# We must also approve the CertificateRequest since we
# disabled the default approver
cmctl approve -n cert-manager \
$(kubectl get cr -n cert-manager -ojsonpath='{.items[0].metadata.name}')

3. 安裝 csi-driver-spiffe

使用我們設定的簽發者將 csi-driver-spiffe 安裝到叢集中。我們也必須設定簽發者的資源類型和我們設定的簽發者名稱,以便批准者具有批准參考 CertificateRequests 的權限

安裝方式會根據您是否要使用建議的執行階段組態而略有不同。

使用執行階段組態

首先,在安裝命名空間中建立 ConfigMap,其中包含您想要使用的簽發者詳細資訊。

在 Pod 嘗試掛載 csi-driver-spiffe 之前,簽發者不必存在。

ConfigMap 的名稱會在安裝時傳遞至 csi-driver-spiffe。

kubectl create configmap -n cert-manager spiffe-issuer \
--from-literal=issuer-name=csi-driver-spiffe-ca \
--from-literal=issuer-kind=ClusterIssuer \
--from-literal=issuer-group=cert-manager.io
helm upgrade -i -n cert-manager cert-manager-csi-driver-spiffe jetstack/cert-manager-csi-driver-spiffe --wait \
--set "app.logLevel=1" \
--set "app.trustDomain=my.trust.domain" \
--set "app.issuer.name=" \
--set "app.issuer.kind=" \
--set "app.issuer.group=" \
--set "app.runtimeIssuanceConfigMap=spiffe-issuer"

在上述範例中,預設簽發者值 (即 app.issuer.nameapp.issuer.kindapp.issuer.group) 會明確設定為空白,這表示只會使用執行階段組態。

如果執行階段組態 ConfigMap 無效或已刪除,您可以設定預設的簽發者值,以便回復至該簽發者。

不使用執行階段組態

請注意,issuer.nameissuer.kindissuer.group 將需要變更以符合您實際使用的簽發者!

helm repo add jetstack https://charts.jetstack.io --force-update
helm upgrade cert-manager-csi-driver-spiffe jetstack/cert-manager-csi-driver-spiffe \
--install \
--namespace cert-manager \
--wait \
--set "app.logLevel=1" \
--set "app.trustDomain=my.trust.domain" \
--set "app.issuer.name=csi-driver-spiffe-ca" \
--set "app.issuer.kind=ClusterIssuer" \
--set "app.issuer.group=cert-manager.io"

使用方式

📖 請閱讀csi-driver-spiffe 文件