Я пытаюсь развернуть свое приложение в Kubernetes, работающем в Google Container Engine .
Приложение можно найти по адресу: https://github.com/Industrial/docker-znc .
Dockerfile встроен в изображение на Google Container реестра .
Я развернул приложение в Kubernetes с помощью кнопки +. У меня нет YAML для этого.
Я вставил секрет в Kubernetes для файла PEM, необходимого для приложения.
- Как получить YAML для Deployment , Service и Pod, созданных Kubernetes, заполнив форму?
- Как мне поместить секрет в свой модуль для использования?
--export
не рекомендуется; см. здесь . Вы можете использоватьget -o yaml
без него--export
, хотя это включает информацию о текущем состоянии объекта, а также декларативную конфигурацию, необходимую для (повторной) настройки объекта.spec.clusterIP
иmetadata.resourceVersion
в обслуживании.kubectl get deployment,service,pod yourapp -o yaml --export
Отвечая на вопрос @Sinaesthetic:
kubectl get deploy --all-namespaces -o yaml --export
Проблема с этим методом заключается в том, что экспорт не включает пространство имен. Поэтому, если вы хотите экспортировать много ресурсов одновременно, я рекомендую делать это для каждого пространства имен:
kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml
К сожалению, kubernetes по- прежнему не поддерживает настоящую команду get all , поэтому вам нужно вручную указать тип ресурсов, которые вы хотите экспортировать. Вы можете получить список типов ресурсов с помощью
kubectl api-resources
источник
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yaml
Та же проблема обсуждается на странице проблем GitHub kubernetes. и пользователь «alahijani» создал сценарий bash, который экспортирует весь yaml и записывает их в отдельные файлы и папки.
Поскольку этот вопрос хорошо оценивается в Google и поскольку я нашел это решение очень хорошим, я представляю его здесь.
Bash-скрипт, экспортирующий yaml в подпапки:
for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob) do mkdir -p $(dirname $n) kubectl get -o=yaml --export $n > $n.yaml done
Другой пользователь acondrat сделал сценарий, который не использует каталоги, что позволяет легко сделать его
kubectl apply -f
позже.Bash-скрипт, экспортирующий yaml в текущую папку:
for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token') do kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml done
Последний сценарий не включает учетную запись службы.
источник
Синтаксис для загрузки yaml'ов из kubernetes
kubectl get [тип ресурса] -n [пространство имен] [имя ресурса] -o yaml> [новое имя файла]
Создайте файл yaml из запущенного модуля:
Создайте yaml-файл репликации из запущенного модуля:
Создайте yaml-файл развертывания из запущенного модуля:
источник
для второго вопроса относительно секрета это из документации k8s. см. https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets для получения дополнительной информации.
Я использовал это, и он отлично работает.
источник
источник
Используйте эту команду, чтобы получить формат yaml вашего сервиса
kubectl get service servicename -n <namespace> -o yaml
Вы также можете поместить его в какой-нибудь файл
kubectl get service servicename -n <namespace> -o yaml > service.yaml
источник
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
С помощью приведенной выше команды любой ресурс, определенный в Kubernetes, можно экспортировать в
YAML
формате.источник
Если вам нужно просмотреть и отредактировать файл, используйте:
kubectl edit service servicename
источник
Вы можете получить yaml-файлы ресурсов с помощью этой команды
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Чтобы сохранить секрет в своей капсуле,
используйте что-то вроде этого
env - valueFrom secretKeyRef: name: secret_name key: key_name
или
envFrom - secretRef: name: secret_name
источник
Я знаю, что это слишком старо, чтобы отвечать, но, надеюсь, кому-то это поможет.
Мы можем попробовать команду ниже, чтобы получить вид экспорта из всего пространства имен -
kubectl get <kind> --all-namespaces --export -o yaml
источник