From e8f4d7462ad823f9371858cb339f82f66513dcc1 Mon Sep 17 00:00:00 2001 From: fj0r <82698591+fj0r@users.noreply.github.com> Date: Tue, 20 Feb 2024 20:32:46 +0800 Subject: [PATCH] ksi: kubectl set image (#760) Co-authored-by: nash --- modules/kubernetes/kubernetes.nu | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/modules/kubernetes/kubernetes.nu b/modules/kubernetes/kubernetes.nu index d4ba8347..727de45c 100644 --- a/modules/kubernetes/kubernetes.nu +++ b/modules/kubernetes/kubernetes.nu @@ -713,6 +713,39 @@ export def ksdr [ } +def "nu-complete kube kind with image" [] { + [ + deployment daemonset statefulset + pod replicationcontroller + cronjob replicaset + ] +} + +# kubectl set image +export def ksi [ + k: string@"nu-complete kube kind with image" + r: string@"nu-complete kube res" + --namespace(-n): string@"nu-complete kube ns" + act?: any +] { + let ns = $namespace | with-flag -n + let path = match $k { + _ => '.spec.template.spec.containers[*]' + } + let name = kubectl get ...$ns $k $r -o $"jsonpath={($path).name}" | split row ' ' + let image = kubectl get ...$ns $k $r -o $"jsonpath={($path).image}" | split row ' ' + let list = $name | zip $image | reduce -f {} {|it,acc| $acc | insert $it.0 $it.1 } + if ($act | describe -d).type == 'closure' { + let s = do $act $list + if ($s | describe -d).type == 'record' { + let s = $s | transpose k v | each {|x| $"($x.k)=($x.v)"} + kubectl ...$ns set image $"($k)/($r)" ...$s + } + } else { + $list + } +} + # kubectl redistribution deployment export def krd [ d: string@"nu-complete kube deploys"