Ich versuche, meine App auf Kubernetes bereitzustellen, die in Google Container Engine ausgeführt werden .
Die App finden Sie unter: https://github.com/Industrial/docker-znc .
Die Docker-Datei ist in ein Bild in der Google Container-Registrierung integriert .
Ich habe die App in Kubernetes über die Schaltfläche + bereitgestellt . Ich habe keine YAML dafür.
Ich habe in Kubernetes ein Geheimnis für die von der App benötigte PEM-Datei eingefügt .
- Wie erhalte ich die YAML für die von Kubernetes erstellte Bereitstellung , den Dienst und den Pod , indem ich das Formular ausfülle?
- Wie bringe ich das Geheimnis zur Verwendung in meinen Pod ?
--export
ist veraltet; siehe hier . Sie könnenget -o yaml
ohne verwenden--export
, obwohl dies Informationen zum aktuellen Objektstatus sowie die deklarative Konfiguration enthält, die zum (Neu-) Konfigurieren des Objekts erforderlich ist.spec.clusterIP
undmetadata.resourceVersion
in Betrieb ist.kubectl get deployment,service,pod yourapp -o yaml --export
Beantwortung der @Sinaesthetic-Frage:
kubectl get deploy --all-namespaces -o yaml --export
Das Problem bei dieser Methode ist, dass der Export den Namespace nicht enthält. Wenn Sie also viele Ressourcen gleichzeitig exportieren möchten, empfehle ich, dies pro Namespace zu tun:
kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml
Leider unterstützt kubernetes immer noch keinen echten get all- Befehl, sodass Sie die Art der Ressourcen, die Sie exportieren möchten, manuell auflisten müssen. Sie können eine Liste der Ressourcentypen mit abrufen
kubectl api-resources
quelle
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yaml
Das gleiche Problem wird auf der Seite mit den GitHub-Problemen von kubernetes behandelt, und der Benutzer "alahijani" hat ein Bash-Skript erstellt, das alle yaml exportiert und in einzelne Dateien und Ordner schreibt.
Da diese Frage bei Google gut ankommt und ich diese Lösung sehr gut fand, vertrete ich sie hier.
Bash-Skript, das Yaml in Unterordner exportiert:
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
Ein anderer Benutzer "acondrat" hat ein Skript erstellt, das keine Verzeichnisse verwendet, was das Erstellen eines
kubectl apply -f
späteren Skripts erleichtert .Bash-Skript, das yaml in den aktuellen Ordner exportiert:
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
Das letzte Skript enthält kein Dienstkonto.
quelle
Syntax zum Herunterladen von Yamls aus Kubernetes
kubectl get [Ressourcentyp] -n [Namespace] [Ressourcenname] -o yaml> [Neuer Dateiname]
Erstellen Sie eine Yaml-Datei aus dem laufenden Pod:
Erstellen Sie eine Replikat-Yaml-Datei aus dem laufenden Pod:
Erstellen Sie eine Bereitstellungs-Yaml-Datei aus dem laufenden Pod:
quelle
Die zweite Frage zum Geheimnis stammt aus der k8s-Dokumentation. Weitere Informationen finden Sie unter https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets .
Ich habe dies verwendet und es funktioniert gut.
quelle
quelle
Verwenden Sie diesen Befehl, um das Yaml-Format Ihres Dienstes abzurufen
kubectl get service servicename -n <namespace> -o yaml
Sie können es auch in eine Datei einfügen
kubectl get service servicename -n <namespace> -o yaml > service.yaml
quelle
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Mit dem obigen Befehl kann jede in Kubernetes definierte Ressource im
YAML
Format exportiert werden.quelle
Wenn Sie die Datei anzeigen und bearbeiten müssen, verwenden Sie:
kubectl edit service servicename
quelle
Mit diesem Befehl können Sie die Yaml-Dateien der Ressourcen abrufen
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Um das Geheimnis in Ihre Kapsel zu bekommen,
benutze so etwas
env - valueFrom secretKeyRef: name: secret_name key: key_name
oder
envFrom - secretRef: name: secret_name
quelle
Ich weiß, dass es zu alt ist, um zu antworten, aber hoffentlich findet es jemand hilfreich.
Wir können den folgenden Befehl versuchen, um einen Art Export aus allen Namespaces abzurufen -
kubectl get <kind> --all-namespaces --export -o yaml
quelle