我正在构建一个 helm 图表,但 value.yaml 文件出现问题。由于 yaml 本身不支持变量,我尝试了锚点,但尽管这样的方法有效:
foo: &anchor A
bar: *anchor
Run Code Online (Sandbox Code Playgroud)
带输出
foo: A
bar: A
Run Code Online (Sandbox Code Playgroud)
我需要将锚附加到某个字符串上,例如
foo: &anchor A
baz: &anotherAnchor B
bar: www.*anchor.*anotherAnchor.com
Run Code Online (Sandbox Code Playgroud)
带输出
foo: A
baz: B
bar: www.A.B.com
Run Code Online (Sandbox Code Playgroud)
有可能这样做吗?
使用带有 Ansible 后端的 TestInfra 进行测试。除了在运行测试时使用 Ansible 本身,一切都很好
测试文件
import pytest
def test_zabbix_agent_package(host):
package = host.package("zabbix-agent")
assert package.is_installed
package_version = host.ansible("debug", "msg={{ zabbix_agent_version }}")["msg"]
(...)
Run Code Online (Sandbox Code Playgroud)
其中 zabbix_agent_version 是来自 group_vars 的 Ansible 变量。可以通过运行这个剧本来获得
- hosts: all
become: true
tasks:
- name: debug
debug: msg={{ zabbix_agent_version }}
Run Code Online (Sandbox Code Playgroud)
命令执行测试
pytest --connection=ansible --ansible-inventory=inventory --hosts=$hosts -v test.py
Run Code Online (Sandbox Code Playgroud)
ansible.cfg
[defaults]
timeout = 10
host_key_checking = False
library=library/
retry_files_enabled = False
roles_path=roles/
pipelining=true
ConnectTimeout=60
remote_user=deploy
private_key_file=/opt/jenkins/.ssh/deploy
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
self = <ansible>, module_name = 'debug', module_args = 'msg={{ zabbix_agent_version }}', …Run Code Online (Sandbox Code Playgroud) 尝试使用此模板为我的掌舵图生成部署
{{- range .Values.services }}
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: myapp-{{ . }}
spec:
replicas: {{ .replicaCount }}
template:
metadata:
labels:
app: myapp-{{ . }}
chart: myapp-{{ $.Values.cluster }}-{{ $.Values.environment }}
spec:
containers:
- name: myapp-{{ . }}
image: {{ $.Values.containerRegistry }}/myapp-{{ . }}:latest
ports:
- containerPort: {{ .targetPort }}
env:
{{- with .environmentVariables }}
{{ indent 10 }}
{{- end }}
imagePullSecrets:
- name: myregistry
{{- end }}
Run Code Online (Sandbox Code Playgroud)
我的2项服务。在values.yaml中,我得到了
environment: dev
cluster: sandbox
ingress:
enabled: true
containerRegistry: myapp.io …Run Code Online (Sandbox Code Playgroud) 是否有使用ansible(不是任何其他脚本)格式化ansible输出的选项?例如
name: Show version
sudo: true
hosts: web_front_end
tasks:
- name: Create yum cache
shell: yum makecache
- name: Check the version of Portal
shell: rpm -qa | grep portal
register: portal
- debug: msg={{portal.stdout}}
tags:
- portal
- wfe
Run Code Online (Sandbox Code Playgroud)
我想只得到
TASK: [debug msg={{portal.stdout}}]
Run Code Online (Sandbox Code Playgroud)
部分.或者甚至有办法只获得shell命令输出?
在 Kubernetes 中存储持久文件的最佳方式是什么?我有一个证书 (.pfx),我想将其路径传递给应用程序。从它的外观来看,它不能存储在秘密中。正在考虑一个卷,但问题是我如何将文件上传到它?以及选择哪种类型的音量?或者还有其他有效的方法吗?