Kubernetes里的secret最基本的用法
Secret解决了密码、token、密钥等敏感数据的配置问题,使用Secret可以避免把这些敏感数据以明文的形式暴露到镜像或者Pod Spec中。
Secret可以以Volume或者环境变量的方式使用。
使用如下命令行创建一个secret:
kubectl create secret generic admin-access --from-file=./username.txt --from-file=./password.txt
输入文件username.txt和password.txt需要手动创建,里面分别维护用于测试的用户名和密码。
创建成功后,发现secret的类型为Opaque:
实际上,Kubernetes的secret有三种类型:
1. Service Account:用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的 /run/secrets/kubernetes.io/serviceaccount 目录中;
2. Opaque:base64编码格式的Secret,用来存储密码、密钥等;
3. kubernetes.io/dockerconfigjson :用来存储私有docker registry的认证信息。
而我们刚刚创建的secret的类型为Opaque,因此在kubectl get secrets的返回结果里,能看到password和username的值均为base64编码:
要在pod里消费这个secret也很容易,看一个例子:
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
restartPolicy: Never
volumes:
- name: credentials
secret:
secretName: admin-access
defaultMode: 0440
containers:
- name: secret-container
image: alpine:3.8
command: [ "/bin/sh", "-c", "cat /etc/foo/username.txt /etc/foo/password.txt" ]
volumeMounts:
- name: credentials
mountPath: "/etc/foo"
readOnly: true
创建pod,自动执行,通过log命令查看pod的日志:
发现/bin/sh命令被执行了,pod mount的目录/etc/foo下的username.txt和password.txt通过cat命令显示了输出:
今天我的一位同事在微信群里发了一张图片,勾起了我的好奇心:不同编程语言支持的函数递归调用的最大嵌套层数是?
Java 1.8
private static void recur(int i){
System.out.println("Stack level: " + i);
recur(++i);
}
测试结果:8644
Javascript in Chrome
Chrome版本:
Version 70.0.3538.102 (Official Build) (64-bit)
function a(i){
console.log("stack level: " + i)
a(i+1);
}
a(0);
测试结果:11412
JavaScript in nodejs
nodejs version: v8.11.3
测试结果:11213
Golang
版本:
测试结果:3947556
ABAP
data: lv_temp type int4.
form recur using iv type int4.
sy-index = iv.
lv_temp = iv + 1.
perform recur using lv_temp .
endform.
START-OF-SELECTION.
perform recur using 0.
实际上是out-of-memory错误。
测试结果:12258206
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
- 点赞
- 收藏
- 关注作者
评论(0)