如何在kubernetes中创建秘密文件

时间:2020-10-30 13:36:24

标签: kubernetes yaml kubernetes-secrets

我有Yaml,我曾经使用以下命令创建秘密。

kubectl create secret generic -n <NAMESPACE> gitlab-openid-connect --from-file=provider=provider.yaml

下面是Provider.yaml

name: 'openid_connect'
label: 'OpenID SSO Login'
args:
  name: 'openid_connect'
  scope: ['openid','profile','email']
  response_type: 'code'
  issuer: 'https://keycloak.example.com/auth/realms/myrealm'
  discovery: true
  client_auth_method: 'basic'
  client_options:
    identifier: 'gitlab.example.com-oidc'
    secret: '<keycloak clientID secret>'
    redirect_uri: 'https://gitlab.example.com/users/auth/openid_connect/callback'

我想将其转换为Secret yaml文件,以便我可以运行kubectl apply -f provider.yaml

我试图创建下面的文件,但是它不起作用,provider-new.yaml

apiVersion: v1
kind: Secret
type: Opaque
metadata:
  name: 'openid_connect'
  label: 'OpenID SSO Login'
data:
  scope: ['openid','profile','email']
  response_type: 'code'
  issuer: 'url'
  discovery: true
  client_auth_method: 'basic'
  client_options:
    identifier: 'identifier'
    secret: 'secret-key'
    redirect_uri: 'url'

1 个答案:

答案 0 :(得分:1)

要执行此操作,您需要使用--from-env-file而不是--from-file。并且包含变量的文件应为纯文本。

要从一个或多个文件创建机密,请使用--from-file或 --from-env-file。该文件必须为纯文本,但文件的扩展名无关紧要。

使用--from-file创建密钥时,密钥的值 是文件的全部内容。如果您的秘密价值 包含多个键值对,请改用--from-env-file。

文件provider.yaml中带有变量:

scope= ['openid','profile','email']
response_type= 'code'
issuer= 'url'
discovery= true
client_auth_method= 'basic'
identifier= 'identifier'
secret= 'secret-key'
redirect_uri= 'url'
kubectl create secret generic -n default gitlab-openid-connect --from-env-file=provider.yaml

结果:

apiVersion: v1
data:
  client_auth_method: ICdiYXNpYyc=
  discovery: IHRydWU=
  identifier: ICdpZGVudGlmaWVyJw==
  issuer: ICd1cmwn
  redirect_uri: ICd1cmwn
  response_type: ICdjb2RlJw==
  scope: IFsnb3BlbmlkJywncHJvZmlsZScsJ2VtYWlsJ10=
  secret: ICdzZWNyZXQta2V5Jw==
kind: Secret
metadata:
  creationTimestamp: null
  name: gitlab-openid-connect
  namespace: default

另一件事是,无法在秘密数据范围内建立层次结构,因此以下操作将无效:

client_options
  identifier= 'identifier'
  secret= 'secret-key'
  redirect_uri= 'url'

来源:google cloud