我有许多秘密要传递到k8部署中,这变得非常冗长,下面是从秘密中传递redis秘密的一个示例redis-secrets。
- name: REDIS_HOST
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_HOST
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PASSWORD
- name: REDIS_PORT
valueFrom:
secretKeyRef:
name: redis-secrets
key: REDIS_PORT
Run Code Online (Sandbox Code Playgroud)
是否可以将所有机密传递redis-secrets到部署中,而这些机密的密钥是env变量密钥?
我有以下 yaml:
volumeMounts:
- name: app-secret
mountPath: /app
readOnly: true
volumes:
- name: app-secret
secret:
secretName: app-secret
items:
- key: app-secret.json
path: appsettings.secret.json
Run Code Online (Sandbox Code Playgroud)
我希望秘密已安装,/app/appsettings.secret.json但事实并非如此。我不知道它安装在哪里,容器崩溃了,我没有机会kubectl exec进入容器检查安装机密的位置。我的猜测是它会清除/app. 任何建议和见解表示赞赏。
我想在 configMap(或秘密)中设置一个布尔变量:
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: mlo-stage
data:
webpack_dev_server: false
Run Code Online (Sandbox Code Playgroud)
但是当我应用它时,我收到以下错误:
The request is invalid: patch: Invalid value: "map[data:map[webpack_dev_server:false] metadata:map[annotations:map[kubectl.kubernetes.io/last-applied-configuration:{ blah blah blah}]]]": unrecognized type: string
Run Code Online (Sandbox Code Playgroud)
我试图将值更改为 Off/No/False,但都存在同样的问题。
好像data map中key的值只能是字符串,我试过把值改成“false”,yaml文件没问题,但是后来变量变成了字符串而不是boolean。
如果我想传递一个布尔值作为值应该怎么做?
kubernetes kubernetes-deployment kubernetes-secrets configmap
当我创建秘密并Rancher选择它应该在所有命名空间中可见时,它会创建一个不带namespace标签且带有 的秘密namespaceId: null。
没有的话如何创造这样的秘密Rancher?当我使用 时kubectl,它总是将其绑定到命令上下文中的命名空间。
我正在努力使用 application.yml 读取机密。
当我做:
quarkus:
application:
name: pi-quarkus-fund-persistence-service
kubernetes-config:
enabled: true
fail-on-missing-config: false
config-maps: pi-quarkus-fund-persistence-service-configmap
secrets: pi-quarkus-fund-persistence-service-secrets
enabled: true
Run Code Online (Sandbox Code Playgroud)
构建失败并显示:
Failed to build quarkus application: mapping values are not allowed here
in 'reader', line 16, column 20:
enabled: true
^
Run Code Online (Sandbox Code Playgroud)
什么时候:
quarkus:
application:
name: pi-quarkus-fund-persistence-service
kubernetes-config:
enabled: true
secrets.enabled: true
fail-on-missing-config: false
config-maps: pi-quarkus-fund-persistence-service-configmap
secrets: pi-quarkus-fund-persistence-service-secrets
Run Code Online (Sandbox Code Playgroud)
构建失败并显示:
Unrecognized configuration key "quarkus.kubernetes-config."secrets.enabled"" was provided; it will be ignored; verify that the dependency extension for this configuration is set or you did …Run Code Online (Sandbox Code Playgroud) 我有 yaml,我用它来使用下面的命令创建一个秘密。
kubectl create secret generic -n <NAMESPACE> gitlab-openid-connect --from-file=provider=provider.yaml
Run Code Online (Sandbox Code Playgroud)
下边是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'
Run Code Online (Sandbox Code Playgroud)
我想将其转换为 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' …Run Code Online (Sandbox Code Playgroud) 下面的命令给出了一个错误:error: flag key is required
kubectl create secret tls k8-secret2 \
-n ingress-tls-test1 \
--cert ingress-tls-test1.pfx
Run Code Online (Sandbox Code Playgroud)
我可以使用 .crt 和 .key 文件创建秘密:
kubectl create secret tls aks-ingress-tls \
--namespace ingress-basic \
--key aks-ingress-tls.key \
--cert aks-ingress-tls.crt
Run Code Online (Sandbox Code Playgroud) 我在启动 Pod 时收到此错误
Failed to pull image "docker-username/docker-private-repository:latest": rpc error: code = Unknown desc = Error response from daemon: pull access denied for docker-username/docker-private-repository, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Run Code Online (Sandbox Code Playgroud)
我的设置如下:
使用命令行创建秘密服务
kubectl create secret docker-registry docker-keys --docker-username=docker-username --docker-password=password --docker-email=docker-email@gmail.com --docker-server=https://index.docker.io/v1
Run Code Online (Sandbox Code Playgroud)
它会在机密内生成以下数据
kubectl get secret docker-keys -o json | jq '.data | map_values(@base64d)'
{
".dockerconfigjson": "{\"auths\":{\"https://index.docker.io/v1\":{\"username\":\"docker-username\",\"password\":\"password\",\"email\":\"docker-email@gmail.com\",\"auth\":\"base64encodedtoken\"}}}"
}
Run Code Online (Sandbox Code Playgroud)
然后在部署中我使用docker-keys秘密
apiVersion: apps/v1
kind: Deployment
metadata:
name: docker-private-repository
labels:
app: …Run Code Online (Sandbox Code Playgroud) 我有一个 configMap 文件:
apiVersion: v1
kind: ConfigMap
metadata:
labels:
owner: testdb
name: testdb-configmap
data:
host: postgres
port: "5432"
Run Code Online (Sandbox Code Playgroud)
和一个秘密文件:
aapiVersion: v1
kind: Secret
type: Opaque
metadata:
labels:
owner: testdb
name: testdb-secret
namespace: test
data:
user: dGVzdA==
pwd: dGVzdA==
Run Code Online (Sandbox Code Playgroud)
我想构建一个环境变量,CONNECTION_STRING如下所示:
env:
- name: CONNECTION_STRING
value: "Host=<host-from-configmap>;Username=<user-from-secret>;Password=<password-from-secret>;Port=<port-from-configmap>;Pooling=False;"
Run Code Online (Sandbox Code Playgroud)
我想知道这是否可能,如果可以,那么如何?我也考虑过使用.tpl(命名模板),但找不到方法。
笔记
由于我无权访问图像,因此CONNECTION_STRING我必须以这种方式构建它。这些配置映射和秘密文件也将保持这样。
kubernetes ×10
configmap ×2
app-secret ×1
client ×1
kubectl ×1
minikube ×1
mount-point ×1
quarkus ×1
rancher ×1
runtime ×1
yaml ×1