[英]Byte array as kubernetes secret?
我想知道是否可以將字節數組作為 kubernetes 的秘密。 我創建了一個字節數組和一個 base64 編碼的字符串,如下所示
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[32];
random.nextBytes(bytes);
for (int i = 0; i < bytes.length; i++) {
System.out.print(bytes[i] + ",");
}
String token = Base64.getEncoder().withoutPadding().encodeToString(bytes);
然后我在 kubernetes secret 中使用了結果字符串。 秘密被成功創建。 現在,我希望在 kubernetes 中運行的 Spring Boot 應用程序讀取和解碼該值。 但是,我得到一個 IllegalArgumentException(非法 base64 字符)在本地運行應用程序從屬性文件讀取相同的標記時,它可以被解碼。
所以我再次提出問題:是否可以使用字節數組作為 kubernetes 的秘密?
您無需手動對其進行編碼。 只需向secret提供純文本,它將由k8s進行base64編碼。 否則它被編碼兩次。
kind: Secret
apiVersion: v1
stringData: # allows to add plain text (will be encoded by k8s and kept in Base64 encoded format under data)
foo: plain text
data:
無論使用--from-file
還是--from-literal
(如@fg78nc 所隱瞞的),在使用kubectl create secret generic
時都需要普通值。
從二進制值手動創建 Secret時需要 base64 編碼的值。
如果 secret 的值是一個二進制值,我建議將 secret 作為一個卷掛載並從文件中讀取它作為一個字節數組 - 它將在文件中進行 base64 解碼。
當從秘密創建的環境變量中獲取值時,秘密會自動進行 base64 解碼,從作為卷安裝的文件中獲取值,但不是通過kubectl get secret
或直接使用 Kubernetes API ( GET /api/v1/namespaces/{namespace}/secrets/{name}
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.