@@ -179,8 +179,8 @@ def print_commands
179179 puts "k run <application> <command>" + gray ( " run a command using a one off pod" )
180180 puts "k scale <application> <deployment>:<replicas>" + gray ( " scale a deployment in an application" )
181181 puts "k secrets [<specific-secret>]" + gray ( " lists secrets including usage details" )
182- puts "k secrets:create <secret-name>" + gray ( " create a new secret" )
183- puts "k secrets:edit <secret-name>" + gray ( " edit a secret" )
182+ puts "k secrets:create <secret-name> [<namespace>] " + gray ( " create a new secret" )
183+ puts "k secrets:edit <secret-name> [<namespace>] " + gray ( " edit a secret" )
184184 puts "k secrets:get <secret-name> <key>" + gray ( " get a single secret value" )
185185 puts "k secrets:set <secret-name> <key>=<value> [<key2>=<value2> ...]" + gray ( " set new secret values" )
186186 puts "k secrets:unset <secret-name> <key> [<key2> ...]" + gray ( " unset / delete secret values" )
@@ -1714,17 +1714,20 @@ end
17141714
17151715def secrets_edit
17161716 shared_secret = ARGV . delete_at ( 0 )
1717+ namespace = ARGV . delete_at ( 0 ) || "default"
17171718 abort "Must pass name of secret, eg. k secrets:edit <shared-secret-name>" unless shared_secret
17181719 abort "Missing $EDITOR environment variable, eg: export EDITOR='code --wait --new-window'" unless ENV . key? ( "EDITOR" )
17191720
1721+ namespace_prefix = namespace == "default" ? "" : "#{ namespace } __"
1722+
17201723 in_argo_repo do
17211724 require "base64"
17221725
1723- original_secret = YAML . safe_load read_kubectl ( "get secret #{ shared_secret } -o yaml" )
1726+ original_secret = YAML . safe_load read_kubectl ( "get secret #{ shared_secret } --namespace #{ namespace } - o yaml" )
17241727 original_env = original_secret . fetch ( "data" ) . transform_values ( &Base64 . method ( :strict_decode64 ) )
17251728
17261729 # Write temporary file and launch editor
1727- tmp_file = "/#{ Dir . tmpdir } /#{ shared_secret } .yaml"
1730+ tmp_file = "/#{ Dir . tmpdir } /#{ namespace_prefix } #{ shared_secret } .yaml"
17281731 File . write tmp_file , original_env . to_yaml . delete_prefix ( "---\n " )
17291732 system "#{ ENV . fetch ( 'EDITOR' ) } #{ tmp_file } "
17301733
@@ -1740,7 +1743,7 @@ def secrets_edit
17401743 original_secret [ "data" ] = data
17411744
17421745 File . write ( tmp_file , original_secret . to_yaml )
1743- kubeseal tmp_file , "applications/shared-secrets/#{ shared_secret } .yaml"
1746+ kubeseal tmp_file , "applications/shared-secrets/#{ namespace_prefix } #{ shared_secret } .yaml"
17441747 File . delete tmp_file
17451748
17461749 changed_variables = new_env . keys . select do |name |
@@ -1749,7 +1752,7 @@ def secrets_edit
17491752 added_variables = new_env . keys - original_env . keys
17501753 deleted_variables = original_env . keys - new_env . keys
17511754
1752- commit_message = "shared-secrets: edited #{ shared_secret } \n \n "
1755+ commit_message = "shared-secrets: edited #{ shared_secret } in namespace #{ namespace } \n \n "
17531756 commit_message << "Changed: #{ changed_variables . join ( ' ' ) } \n " unless changed_variables . empty?
17541757 commit_message << "Added: #{ added_variables . join ( ' ' ) } \n " unless added_variables . empty?
17551758 commit_message << "Deleted: #{ deleted_variables . join ( ' ' ) } \n " unless deleted_variables . empty?
@@ -1888,18 +1891,23 @@ end
18881891
18891892def secrets_create
18901893 secret = ARGV . delete_at ( 0 )
1894+ namespace = ARGV . delete_at ( 0 ) || "default"
1895+
18911896 abort "Must pass name of the new secret, eg. k secrets:create <secret-name>" unless secret
18921897 abort "Missing $EDITOR environment variable, eg: export EDITOR='code --wait --new-window'" unless ENV . key? ( "EDITOR" )
18931898
18941899 require "base64"
18951900
18961901 in_argo_repo do
1897- secret_path = "applications/shared-secrets/#{ secret } .yaml"
1902+ namespace_prefix = namespace == "default" ? "" : "#{ namespace } __"
1903+ secret_path = "applications/shared-secrets/#{ namespace_prefix } #{ secret } .yaml"
1904+
18981905 if File . exist? ( secret_path )
1899- abort "Error: A secret named '#{ secret } ' already exists, run 'k secrets:edit #{ secret } ' to edit it"
1906+ abort "Error: A secret named '#{ secret } ' in namespace #{ namespace } already exists, run 'k secrets:edit #{ secret } #{ optional_namespace } ' to edit it"
19001907 end
19011908
1902- tmp_file = "/#{ Dir . tmpdir } /#{ secret } .yaml"
1909+ optional_namespace_in_cli_command = namespace == "default" ? "" : " #{ namespace } "
1910+ tmp_file = "/#{ Dir . tmpdir } /#{ namespace_prefix } #{ secret } .yaml"
19031911 File . write (
19041912 tmp_file ,
19051913 <<~YAML ,
@@ -1918,7 +1926,7 @@ def secrets_create
19181926 secret_yaml = {
19191927 "apiVersion" => "v1" ,
19201928 "kind" => "Secret" ,
1921- "metadata" => { "name" => secret } ,
1929+ "metadata" => { "name" => secret , "namespace" => namespace } ,
19221930 "type" => "opaque" ,
19231931 "data" => data ,
19241932 } . to_yaml
@@ -1928,10 +1936,10 @@ def secrets_create
19281936 File . delete tmp_file
19291937
19301938 system_or_die "git add #{ secret_path } "
1931- system_or_die %(git commit -m "shared-secrets: add #{ secret } " --quiet)
1939+ system_or_die %(git commit -m "shared-secrets: add #{ secret } in namespace #{ namespace } " --quiet)
19321940 safe_git_push
19331941
1934- puts "Successfully created the secret '#{ secret } '"
1942+ puts "Successfully created the secret '#{ secret } ' in namespace #{ namespace } "
19351943 end
19361944end
19371945
0 commit comments