我目前正在阅读 helm 的文档,点 (.) 至少有 3 种不同的用途,是否有任何具体定义?它与 bash 使用(实际文件夹/文件)有什么共同之处吗?
文档中的一些案例
这会打印之前调用的范围内的访问文件吗?
{{- $files := .Files }}
{{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
{{ . }}: |-
{{ $files.Get . }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
这告诉“mychart.app”使用当前文件夹中的文件(类似 bash 的行为)
{{ include "mychart.app" . | indent 4 }}
Run Code Online (Sandbox Code Playgroud)
而这个,我想它从整个文件夹中获取值???我想这是不正确的,因为它不起作用(当时是另一名员工制作的,我必须修复它)
{{- define "read.select-annot" -}}
{{- range $key, $value := . }}
{{ $key }}: {{ $value }}
{{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
正如标题所示,我正在尝试将秘密作为卷安装到部署中。
我发现我可以用这种方式做到这一点,kind: Pod
但无法复制它 kind: Deployment
apiVersion: apps/v1
kind: Deployment
volumeMounts:
- name: certs-vol
mountPath: "/certs"
readOnly: true
volumes:
- name: certs-vol
secret:
secretName: certs-secret
Run Code Online (Sandbox Code Playgroud)
错误显示如下ValidationError(Deployment.spec.template.spec.volumes[1]): unknown field "secretName" in io.k8s.api.core.v1.Volume, ValidationError(Deployment.spec.template.spec.volumes[2]
有没有办法专门在部署时做到这一点?
我真的不知道这里的错误是什么,是一个带有 _helpers.tpl 的简单 helm 部署,它没有意义,可能是一个愚蠢的错误,代码:
部署.yaml
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
{{ include "metadata.name" . }}-deploy
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
vars: {{- include "envs.var" .Values.secret.data }}
Run Code Online (Sandbox Code Playgroud)
_helpers.tpl
{{- define "envs.var"}}
{{- range $key := . }}
- name: {{ $key | upper | quote}}
valueFrom: …
Run Code Online (Sandbox Code Playgroud) 我刚开始学习 kubernetes,在每个教程中作者通常使用“kubectl .... deploymenst”来控制新创建的部署。现在,使用这些命令(例如kubectl get deploymets
)我总是得到响应No resources found in default namespace.
,我必须使用“pods”而不是“deployments”来使事情工作(工作正常)。
现在我的问题是,是什么导致了这种情况,使用部署或 pod 有什么区别?? 我已经在第一个 minikube 中设置了 docker 驱动程序,这与这个有关吗?