Я создал секрет, используя
kubectl create secret generic production-tls \
--from-file=./tls.key \
--from-file=./tls.crt
Если я хочу обновить значения - как я могу это сделать?
kubernetes
kubectl
Крис Стричински
источник
источник
--save-config
вkubectl create secret
для того , чтобы избежать предупреждения CLI.kubectl create secret tls my-domain-tls --namespace=default --key=./tls.key --cert=./tls.crt --dry-run -o yaml | kubectl apply -f -
tls : сертификаты были в виде обычного текста.Вы можете удалить и сразу воссоздать секрет:
Я помещаю эти команды в скрипт, при первом вызове вы получаете предупреждение о (еще не существующем) секрете, но это работает.
источник
apply
гораздо больше смысла, спасибо!--namespace=kube-system
Кроме того , вы также можете использовать
jq
«S=
или|=
оператора обновления секреты на лету.Хотя это может быть не так элегантно или просто, как
kubectl create secret generic --dry-run
подход, технически этот подход действительно обновляет значения, а не удаляет / воссоздает их. Вам также понадобятся командыjq
иbase64
(илиopenssl enc -base64
),tr
это общедоступная утилита Linux для обрезки завершающих символов новой строки.Подробнее об операторе обновления см. Здесь .
jq
|=
источник
Поскольку я не смог ответить на ответ Деви выше, который мне нравится, потому что он сохранит право собственности, когда удаление и воссоздание может привести к потере любой дополнительной информации в записи. Я добавляю это для новичков, которые могут не сразу понять, почему их переменные не интерполируются.
Это привело меня к попытке использовать метод kubectl «patch», который, похоже, тоже работает.
Спасибо Деви за ответ, который наилучшим образом удовлетворил мои потребности.
источник
Для более конкретных случаев вам может потребоваться указать пространство имен, в котором сертификат необходимо обновить, и удалить старый.
источник
Чтобы расширить эти ответы, я обнаружил, что добавление '--ignore-not-found' к удалению помогло с нашим CICD, поскольку это не привело бы к ошибке, если бы секрет не существовал, он просто продолжил бы и создал его:
источник
Я использовал этот, и он отлично работал:
docker-server = https://index.docker.io/v1/ (для DockerHub)
Для получения дополнительной информации: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/#create-a-secret-by-providing-credentials-on-the-command-line.
источник