J'ai une application Nodejs qui doit lire Secret dans RT
Ceci est le secret P>
const fs = require('fs'); fs.readFile('/etc/secret-volume', function read(err, data) { if (err) { throw err; } const content = data; });
3 Réponses :
Je définis habituellement les secrets comme des variables d'environnement de K8s de cette façon: , puis dans votre code, utilisez simplement Vous pouvez voir plus de détails sur la façon de faire cela ici:
https://medium.com/fun/using-kubernetes- Secrets-AS-Environnement-Variables-5A3F7581EF P> P> processus.env.my_secret_variable code> pour y accéder. . P>
Merci, je comprends cependant que je veux éviter cela car j'ai de nombreux champs et je veux l'éviter et utiliser le volume, pouvez-vous adopter votre réponse à l'utilisation du volume?
Vous pouvez lire comme ci-dessous. Token1 CODE> est la clé du secret
secert1 code>
Merci, que si j'ai plus qu'un jeton, comme Token1- Token20 code> Comment dois-je vous gérer si chaque carte de jeton dans un fichier?
Avez-vous une suggestion à faire dans ce cas, à l'aide du fs.read code> 20 fois (pour lire 20 fichiers) Je pense que c'est une mauvaise idée, que pensez-vous?
Chaque Pour lire beaucoup de jetons, vous pouvez pêcher le répertoire avec Les données code> dans un secret deviendront un fichier dans le code> montepath code> du volume basé sur secret.
READDIR CODE>
et ReadFile code>
P> const fsp = require('fs').promises
const path = require('path')
async function readTokens(token_path) {
const tokens = {}
const files = await fsp.readdir(token_path)
for (const file of files) {
const buf = await fsp.readFile(path.join(token_path, file), 'utf8')
tokens[file] = buf.toString()
}
return tokens
}
readTokens('/etc/secret-volume').then(console.log).catch(console.err)
Merci, cette approche est meilleure que sur env code>? Avec
SecretKeyRef Code> et mettez 20 propriétés à l'intérieur? Ce que vous suggérez, quelle serait la meilleure approche?
ne pouvait pas vraiment dire non plus c'est mieux. Les variables env sont probablement plus faciles à accéder au nœud. Le déploiement est assez similaire de chaque sens ¯ \ _ (ツ) _ / ¯
Merci, j'essaie le code mais cela ne fonctionne pas, obtenu Errror (noeud: 1) Non grodéePromiserSeakeSwarning: Erreur: Eisdir: Opération illégale sur un répertoire, Lire (noeud: 1) Non grégnépromisereakewarning: Rejet de promesse non confondre. Cette erreur est originée soit en jetant à l'intérieur d'une fonction Async sans bloc de capture, soit en rejetant une promesse qui n'a pas été traitée avec .Catch (). Pour résilier le processus de nœud sur le rejet de la promesse non gérée, utilisez le drapeau CLI CODE> - NONANDLED-REJECTIONS = strict` (voir NODEJS.ORG/API/CLI.HTMLFLI_UNHAN `Toute idée?
une idée ? indice ?
Essaie-t-il de lireFile sur un répertoire? peut-être test si l'entrée est un fichier d'abord
Chaque propriété code> code> sera un fichier:
/ etc / secret-volume / jeton1 code>
@Matt - ça marche, s'il vous plaît écrivez-le comme réponse
@Matt - BTW, au cas où je tiers de Token1 - Token20, comment devrais-je les lire tout comme chaque propriété sera un fichier?