Kubectl создает многострочный секрет - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь сохранить учетную запись службы в секрете - я делал это раньше, год a go, и это работает, но теперь - как бы я ни подхожу к этому, приложение не видит это правильно и говорит там is Input byte array has incorrect ending byte - При создании обычного секрета я знаю, что вы должны сделать это с новой строкой, поэтому

echo -n "secret" | base64

и поместите это значение в секрет и примените, но мой многострочный файл

cat secret.json
{
  "type": "service_account",
  "project_id": "smth-smth",
  "private_key_id": "blabla"
...
}

Независимо от того, как я подхожу - кладу ли вручную, как в первом примере, или делаю это с помощью

cat secret.json | base64

# or 

base64 < secret.json

секрет создается, но приложение выдает

Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Input byte array has incorrect ending byte at 3104

Когда Я сравниваю новый секрет с последним из сервисных аккаунтов, разница в том, как выглядит результат

Рабочий выглядит примерно так - когда я пытаюсь расшифровать base64

echo -n "<long string of base64 encrypred sa> | base64 -D
    { "type": "service_account", "project_id": "blabla"... }

так что он находится в одной строке, и новый SA, который я пытаюсь расшифровать, выводится в формате, как в файле - поэтому каждая часть json в новой строке - я пытался вручную поместить все это в одну строку, но безуспешно

Кто-нибудь знает? как правильно поместить многострочный файл в секрет (base64)?

1 Ответ

2 голосов
/ 04 августа 2020

Самый простой способ создать секрет из файла - использовать kubectl create secret generic.

Поместите файл secret.json в папку config, а затем запустите:

kubectl create secret generic my-secret --from-file=config

Вы получите секрет my-secret с одним ключом secret.json, содержащим ваш файл (который затем можно подключить к тому пода).

...