Próbuję wdrożyć moją aplikację na Kubernetes działającej w Google Container Engine .
Aplikację można znaleźć pod adresem : https://github.com/Industrial/docker-znc .
Plik Dockerfile jest wbudowany w obraz w Google Container Registry .
Wdrożyłem aplikację w Kubernetes za pomocą przycisku +. Nie mam do tego YAML.
Mam wstawiony Tajemnicę w Kubernetes dla pliku PEM wymaganych przez aplikację.
- Jak mogę uzyskać YAML dla wdrażania , obsługa i Pod stworzony przez Kubernetes poprzez wypełnienie formularza?
- Jak wprowadzić Sekret do mojej kapsuły do użytku?
--export
jest przestarzały; zobacz tutaj . Możesz używaćget -o yaml
bez--export
, chociaż zawiera to informacje o aktualnym stanie obiektu, a także deklaratywną konfigurację potrzebną do (re) konfiguracji obiektu.spec.clusterIP
i jestmetadata.resourceVersion
w użyciu.kubectl get deployment,service,pod yourapp -o yaml --export
Odpowiadając na @Sinaesthetic pytanie:
kubectl get deploy --all-namespaces -o yaml --export
Problem z tą metodą polega na tym, że eksport nie obejmuje przestrzeni nazw. Więc jeśli chcesz wyeksportować wiele zasobów w tym samym czasie, polecam zrobić to dla każdej przestrzeni nazw:
kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml
Niestety kubernetes nadal nie obsługuje prawdziwego polecenia pobierz wszystko , więc musisz ręcznie wpisać typy zasobów, które chcesz wyeksportować. Możesz uzyskać listę typów zasobów za pomocą
kubectl api-resources
źródło
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yaml
Ten sam problem jest omawiany na stronie problemów kubernetes GitHub, a użytkownik „alahijani” utworzył skrypt bash, który eksportuje wszystkie pliki yaml i zapisuje je w pojedynczych plikach i folderach.
Ponieważ to pytanie zajmuje dobre miejsce w Google i ponieważ uznałem to rozwiązanie za bardzo dobre, przedstawiam je tutaj.
Skrypt Bash eksportujący yaml do podfolderów:
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
Inny użytkownik "acondrat" stworzył skrypt, który nie używa katalogów, co ułatwia utworzenie
kubectl apply -f
później.Skrypt Bash eksportujący yaml do bieżącego folderu:
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
Ostatni skrypt nie obejmuje konta usługi.
źródło
Składnia pobierania yaml z Kubernetes
kubectl get [resource type] -n [namespace] [resource Name] -o yaml > [New file name]
Utwórz plik yaml z uruchomionego poda:
kubectl get po -n nginx nginx-deployment-755cfc7dcf-5s7j8 -o yaml > podDetail.yaml
Utwórz plik yaml zestawu replik z uruchomionego poda:
kubectl get rs -n nginx -o yaml > latestReplicaSet.yaml
Utwórz plik yaml wdrożenia z uruchomionego poda:
kubectl get deploy -n nginx -o yaml > latestDeployement.yaml
źródło
drugie pytanie dotyczące sekretu pochodzi z dokumentacji k8s. Zobacz https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets, aby uzyskać więcej informacji.
Użyłem tego i działa dobrze.
źródło
źródło
Użyj tego polecenia, aby uzyskać format yaml swojej usługi
kubectl get service servicename -n <namespace> -o yaml
Możesz również umieścić go w jakimś pliku
kubectl get service servicename -n <namespace> -o yaml > service.yaml
źródło
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Za pomocą powyższego polecenia każdy zasób zdefiniowany w Kubernetes można wyeksportować w
YAML
formacie.źródło
Jeśli chcesz wyświetlić i edytować plik, użyj:
kubectl edit service servicename
źródło
Możesz pobrać pliki yaml zasobów za pomocą tego polecenia
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Aby dostać sekret do swojej kapsuły,
użyj czegoś takiego
env - valueFrom secretKeyRef: name: secret_name key: key_name
lub
envFrom - secretRef: name: secret_name
źródło
Wiem, że jest zbyt stara, aby odpowiedzieć, ale miejmy nadzieję, że ktoś uzna to za pomocne.
Możemy spróbować poniższego polecenia, aby pobrać rodzaj eksportu ze wszystkich przestrzeni nazw -
kubectl get <kind> --all-namespaces --export -o yaml
źródło
To tylko niewielka różnica w stosunku do odpowiedzi @Janos Lenart!
kubectl get deploy deploymentname -o yaml > outputFile.yaml
zrobiźródło