62
задан 31 October 2018 в 22:52

3 ответа

Это должно работать:

kubectl create secret generic production-tls \
    --from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml | 
  kubectl apply -f -
162
ответ дан 31 October 2019 в 13:09

Можно удалить и сразу воссоздать секрет:

kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt

я поместил эти команды в сценарий, на первом вызове Вы получаете предупреждение о (еще) существующем секрете, но это работает.

43
ответ дан 31 October 2019 в 13:09

С другой стороны, можно также использовать jq = или |= оператор для обновления секретов на лету.

TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
        | jq '.data["tls.key"] |= "$TLS_KEY"' \
        | jq '.data["tls.crt"] |= "$TLS_CRT"' \
        | kubectl apply -f -

, Хотя это не могло бы быть так же изящно или просто как эти kubectl create secret generic --dry-run подход, технически, этот подход действительно обновляет значения вместо того, чтобы удалить/воссоздать их. Вам также будет нужно jq и base64 (или openssl enc -base64), доступные команды, tr обычно доступная утилита Linux для обрезки запаздывания новых строк.

См. здесь для получения дополнительной информации приблизительно jq оператор |=.

обновления
6
ответ дан 31 October 2019 в 13:09

Другие вопросы по тегам:

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