использование yq для кодирования секретных значений k8s в base64

Правильным ответом будет использование xclip -iвместоclip:`

bind-key C-y run "tmux capture-pane -pS-|xclip -i"

bind-key C-y command-prompt -p "How many lines?" 'run "tmux capture-pane -pS-%%%|xclip -i"'

Но по-прежнему не работает, потому что tmuxсильно глючит. После первого использования tmuxперестает работать и игнорирует меня, когда я нажимаю Ctrl+B, Ctrl+Y.

Вы только надеетесь, что попытаетесь использовать https://github.com/tmux-plugins/tmux-yank, но даже это не сработает, если вы используете SSH-соединение. Поэтому вы ничего не можете сделать с этим другим, если не используете эту функцию и делаете все вручную с помощью:

  1. Чтобы сохранить последние 3000 строк истории Ctrl+Be Shift+:и введите :capture-pane -S -3000, чтобы скопировать их в буфер tmux.
  2. Наконец, нажмите Ctrl+B, Shift+:и введите save-buffer ~/filename.txt, чтобы сохранить историю консоли в файл. Вы должны указать абсолютный путь, потому что tmuxне учитывает ваш текущий напрямую и сохранит его где угодно.
  3. Теперь вам нужно скопировать содержимое файла с удаленного компьютера на локальный компьютер. Просто подключитесь к удаленному компьютеру с помощью Filezillaили WinSCP, если вы работаете в Windows.

0
30.09.2020, 19:57
2 ответа

Выражение jq, которое вы хотите применить к данным:

.env |= map_values(@base64) | { data:.env }

Это обновляет все значения структуры верхнего -уровня env, чтобы они были закодированы в base64 -. Затем он «переименовывает» клавишу envв data.

С помощью конкретной утилиты yq, которую вы, кажется, используете в вопросе, это делается путем преобразования YAML в JSON, применения jqк сгенерированному JSON, а затем преобразования его обратно в YAML:

$ yq -j r file.yml | jq '.env |= map_values(@base64) | { data:.env }' | yq -P r -
data:
  PASSWORD: cGFzcw==
  USERNAME: dXNlcg==

С помощью утилиты yqиз https://kislyuk.github.io/yq/(, т.е. не той, что используется в вопросе ), это делается аккуратнее с помощью

$ yq -y '.env |= map_values(@base64) | { data:.env }' file.yml
data:
  USERNAME: dXNlcg==
  PASSWORD: cGFzcw==

Добавление дополнительных статических данных может быть выполнено после выполнения описанной выше обработки.

0
18.03.2021, 23:01

Обратите внимание, что вместо установки значения в кодировке base64 -в ваших секретах .data['key']вы можете передать декодированное значение в .stringData['key'].

Если я создам секрет с:

stringData:
  USERNAME: user
  PASSWORD: pass

Результирующий объект (, который вы получите, используя kubectl get secret -o yaml), на самом деле будет включать:

data:
  USERNAME: dXNlcg==
  PASSWORD: cGFzcw==
0
18.03.2021, 23:01

Теги

Похожие вопросы