我想在Kubernetes Secrets中存储文件,但我还没有找到如何使用yaml
文件来完成它.
我已经能够使用cli来实现kubectl
:
kubectl create secret generic some-secret --from-file=secret1.txt=secrets/secret1.txt
Run Code Online (Sandbox Code Playgroud)
但当我尝试类似的东西yaml
:
apiVersion: v1
kind: Secret
metadata:
name: some-secret
type: Opaque
data:
secret1.txt: secrets/secret1.txt
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
[pos 73]: json: error decoding base64 binary 'assets/elasticsearch.yml': illegal base64 data at input byte 20
Run Code Online (Sandbox Code Playgroud)
我正在按照本指南http://kubernetes.io/docs/user-guide/secrets/.它解释了如何使用a yaml
而不是如何使用文件创建秘密来创建秘密yaml
.
可能吗?如果是这样,我该怎么办?
如何secret
使用cli 修改秘密中的值?
我创建了秘密kubectl
,但似乎没有办法修改秘密.例如,向其添加新的秘密值,或更改其中的秘密值.
我假设我可以去'低级',并编写yaml文件并做一个kubernetes create secret generic
但我希望有一个更简单的方法.
(我正在使用kubectl edit
)
我从不同的文件创建了多个秘密。我想将它们全部存储在公共目录中/var/secrets/
。不幸的是,我无法做到这一点,因为 kubernetes在 pod 验证步骤期间抛出'Invalid value: "/var/secret": must be unique错误。下面是我的 pod 定义示例。
apiVersion: v1
kind: Pod
metadata:
labels:
run: alpine-secret
name: alpine-secret
spec:
containers:
- command:
- sleep
- "3600"
image: alpine
name: alpine-secret
volumeMounts:
- name: xfile
mountPath: "/var/secrets/"
readOnly: true
- name: yfile
mountPath: "/var/secrets/"
readOnly: true
volumes:
- name: xfile
secret:
secretName: my-secret-one
- name: yfile
secret:
secretName: my-secret-two
Run Code Online (Sandbox Code Playgroud)
如何将来自多个机密的文件存储在同一目录中?
我创建了一个舵图,它具有secrets.yaml
:
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: appdbpassword
stringData:
password: password@1
Run Code Online (Sandbox Code Playgroud)
我的豆荚是:
apiVersion: v1
kind: Pod
metadata:
name: expense-pod-sample-1
spec:
containers:
- name: expense-container-sample-1
image: exm:1
command: [ "/bin/sh", "-c", "--" ]
args: [ "while true; do sleep 30; done;" ]
envFrom:
- secretRef:
name: appdbpassword
Run Code Online (Sandbox Code Playgroud)
每当我运行kubectl get secrets
命令时,我都会得到以下秘密:
name Type Data Age
appdbpassword Opaque 1 41m
sh.helm.release.v1.myhelm-1572515128.v1 helm.sh/release.v1 1 41m
Run Code Online (Sandbox Code Playgroud)
为什么我会得到那个额外的秘密?我在这里错过了什么吗?
我正在尝试在需要 PostgresSQL 的 Kubernetes 环境中安装 Sonarqube。我正在使用外部 Postgres 实例,并且在 Vault 中设置了凭证 kv 密钥。SonarQube helm Chart 在容器中创建一个环境变量,该变量采用 Postgres 的用户名和密码。
如何将 Vault 中的秘密注入到 Kubernetes 上运行的 sonarqube pod 的环境变量中?
创建 Kubernetes 机密并在 helm 图表中使用该机密是可行的,但我们正在管理 Vault 上的所有机密,并且需要将 Vault 机密注入到 pod 中。
谢谢
postgresql sonarqube kubernetes hashicorp-vault kubernetes-secrets
我有一个私人注册表 (gitlab),我的 docker 图像存储在其中。对于部署,会创建一个密钥,允许 GKE 访问注册表。秘密被称为deploy-secret
。密钥的登录信息在注册表中很短的时间后就会过期。
我还创建了第二个永久机密,允许访问 docker 注册表,名为permanent-secret
.
是否可以用两个秘密指定 Pod?例如:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: deploy-secret
- name: permanent-secret
Run Code Online (Sandbox Code Playgroud)
Kubernetes 在稍后尝试重新拉取镜像时,是否会识别出第一个秘密不起作用(不允许对私有注册表进行身份验证),然后成功回退到第二个秘密?
我正在设置一个包含入口控制器证书的机密,但在检查入口日志时出现以下错误
入口日志:
W0304 05:47:32.020497 7 controller.go:1153] Error getting SSL certificate "default/auth-tls": local SSL certificate default/auth-tls was not found. Using default certificate
W0304 05:47:32.020516 7 controller.go:1407] Error getting SSL certificate "default/auth-tls": local SSL certificate default/auth-tls was not found
I0304 05:47:32.114777 7 main.go:117] "successfully validated configuration, accepting" ingress="hello-kubernetes-ingress" namespace="default"
Run Code Online (Sandbox Code Playgroud)
秘密:
$ kubectl create secret tls auth-tls --cert key.pem --key out.key
$ kubectl describe secret auth-tls
Name: auth-tls
Namespace: default
Labels: <none>
Annotations: <none>
Type: kubernetes.io/tls
Data
====
tls.crt: 3231 bytes
tls.key: 1732 …
Run Code Online (Sandbox Code Playgroud) 我是K8S的新手。我有一个yaml文件,该文件生成安装在投影卷上的kubernetes机密。执行后,我发现秘密文件(与秘密一起打包)将“ root”显示为文件所有者和组所有者。我想将文件所有者和组所有者更改为同一特定用户(例如450)。
我曾尝试从初始化容器中使用“ chown”(尝试过但失败了),但出现错误,提示“只读文件系统”,并且无法修改文件和组所有者。我不想在securitycontext下使用“ fsGroup”。我观察到使用fsGroup时,“ items”下的“ mode:”选项的行为无法预测。
有什么方法可以修改通过计划卷安装的kubernetes秘密文件的默认文件和组所有者吗?
我在下面提供示例代码。假设我想在以下示例中更改“密码”文件(在“ mysecret2”下)的文件和组所有者。如何实现呢?
apiVersion: v1
kind: Pod
metadata:
name: volume-test
spec:
containers:
- name: container-test
image: busybox
volumeMounts:
- name: all-in-one
mountPath: "/projected-volume"
readOnly: true
volumes:
- name: all-in-one
projected:
sources:
- secret:
name: mysecret
items:
- key: username
path: username
- secret:
name: mysecret2
items:
- key: password
path: password
mode: 511
Run Code Online (Sandbox Code Playgroud) 我正在尝试将多行 json 字符串插入到 helm 模板中,以进行 Kubernetes 机密所需的 base64 编码。
目标:
b64enc
myfile1.json
不起作用,但myfile2.json
有效。我不想将整个 json 文件放在values.yaml
.
apiVersion: v1
kind: Secret
metadata:
name: {{ template "mychart.fullname" . }}
labels:
app: {{ template "mychart.name" . }}
chart: {{ template "mychart.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
type: Opaque
data:
myfile.json: {{ |-
{
"item1": {
"name": "{{ .Values.item1.name }}"
},
"item2": {
}
} | b64enc …
Run Code Online (Sandbox Code Playgroud) 我有一个秘密,我将其作为部署中的卷安装。
如果我稍后更新机密值,新的更新值是否也会自动反映在我批量安装机密的部署 Pod 中?
笔记:
我按照这里的答案来更新秘密
当从文件生成密钥时,如何更新 Kubernetes 上的密钥?
提前致谢。