Это должно работать:
kubectl create secret generic production-tls \
--from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml |
kubectl apply -f -
Можно удалить и сразу воссоздать секрет:
kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
я поместил эти команды в сценарий, на первом вызове Вы получаете предупреждение о (еще) существующем секрете, но это работает.
С другой стороны, можно также использовать 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
оператор |=
.