我试图使用以下方法在OpenShift v3.3.0上创建一个秘密:
oc create secret generic my-secret --from-file=application-cloud.properties=src/main/resources/application-cloud.properties -n my-project
因为我之前创建了相同的秘密,所以收到此错误消息:
Error from server: secrets "my-secret" already exists
我查看了oc
,oc create
和oc create secret
选项,但在创建时无法找到覆盖密码的选项。
然后我尝试用oc delete
删除现有的秘密。下面列出的所有命令都返回No resources found
或语法错误。
oc delete secrets -l my-secret -n my-project
oc delete secret -l my-secret -n my-project
oc delete secrets -l my-secret
oc delete secret -l my-secret
oc delete pods,secrets -l my-project
oc delete pods,secrets -l my-secret
oc delete secret generic -l my-secret
您是否知道如何使用OpenShift控制台或命令行删除秘密或覆盖秘密?
答案 0 :(得分:15)
"我的秘密"是秘密的名称,所以你应该删除它:
oc delete secret my-secret
如果您没有使用创建密钥的项目,请添加-n选项
答案 1 :(得分:0)
我希望这一次您可能已经准备好答案,只是分享一下是否可以帮助他人。
今天,这里是我正在使用的 CLI版本和Openshift版本的详细信息:
$ oc version
oc v3.6.173.0.5
kubernetes v1.6.1+5115d708d7
features: Basic-Auth
Server <SERVER-URL>
openshift v3.11.0+ec8630f-265
kubernetes v1.11.0+d4cacc0
让我们对使用文件生成的键值对的简单秘密进行了解,如果通过文件生成了,将会了解优势。
$ echo -n "password" | base64
cGFzc3dvcmQ=
将使用此值创建秘密:
$ cat clientSecret.yaml
apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
clienttoken: cGFzc3dvcmQ=
$ oc apply -f clientSecret.yaml
secret "test-secret" created
让我们更改密码并将其更新到YAML文件中。
$ echo -n "change-password" | base64
Y2hhbmdlLXBhc3N3b3Jk
$ cat clientSecret.yaml
apiVersion: v1
kind: Secret
metadata:
name: test-secret
data:
clienttoken: Y2hhbmdlLXBhc3N3b3Jk
根据oc create
命令的定义,如果发现抛出错误,它将创建资源。因此,该命令不适合更新资源的配置,对于我们而言,这是个秘密。
$ oc create --help
Create a resource by filename or stdin
为使生活更轻松,Openshift提供了 oc apply
命令,用于在资源发生更改时将配置应用于资源。 此命令还用于创建资源,这在自动部署过程中有很大帮助。
$ oc apply --help
Apply a configuration to a resource by filename or stdin.
$ oc apply -f clientSecret.yaml
secret "test-secret" configured
在您检查UI中的机密时,控制台上会出现一个新的/更新的密码。
因此,如果您已经注意到,首次申请会导致created
-secret "test-secret" created
,随后的apply
结果会导致configured
-secret "test-secret" configured