kubernetes - 如何在 k8s 中自定义资源?
问题描述
假设我有cronjob
、<code>service ,deployment
如下所示:
# Create a directory to hold the base
mkdir base
# Create a base/deployment.yaml
cat <<EOF > base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-nginx
spec:
selector:
matchLabels:
run: my-nginx
replicas: 2
template:
metadata:
labels:
run: my-nginx
spec:
containers:
- name: my-nginx
image: nginx
EOF
# Create a base/service.yaml file
cat <<EOF > base/service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx
EOF
# Create a base/cronjob.yaml file
cat <<EOF > base/cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
EOF
# Create a base/kustomization.yaml
cat <<EOF > base/kustomization.yaml
resources:
- deployment.yaml
- service.yaml
- cronjob.yaml
EOF
通常,一切正常,但有时我的项目不需要运行 cronjob,所以我想禁用cronjob.yaml
导入。那么,有没有办法做到这一点?例如像jinja2,
- deployment.yaml
- service.yaml
{{ IF set CRONJOB }}
- cronjob.yaml
{{ ENDIF }}
我了解@AniAggarwal 发布的内容,我可以在运行之前使用过滤器,kubectl apply -f
但这对我的项目来说不是很好。欢迎任何建议。
解决方案
假设以下是您在 kustomize 命令后生成的文件。并且该服务应该像您的 cronjob 一样是有条件的。
kind: Pod
apiVersion: v1
metadata:
name: echo-app
labels:
app: demo
spec:
containers:
- name: nginx
image: nginx
#@ if/end data.values.service.enabled:
---
kind: Service
apiVersion: v1
metadata:
name: echo-service
spec:
selector:
labels:
app: name
ports:
- name: port
port: 80
您可以将您的 kustomize 命令的输出通过管道传输到 ytt 以添加或删除服务。
kustomize build | ytt --data-value service.enabled=false -f - | kubectl apply -f -
查看项目游乐场以获取另一个示例 https://carvel.dev/ytt/#playground https://github.com/vmware-tanzu/carvel-ytt/blob/develop/examples/data-values/run.sh
希望这是您正在寻找的解决方案。祝你好运!
推荐阅读
- c# - Xamarin 表单管理闹钟
- powershell - 当它认为有多行时,如何让 PowerShell 将文件作为单行读取?
- python - 将矩阵转换为特定格式的原始字节
- python - 循环遍历文件夹 python
- javascript - Javascript:十六进制到十进制的字符串
- python - ValueError:`validation_data` 应该是一个元组
- java - 为什么@JoinColumns 的顺序很重要?
- asp.net - 在生产 IIS 8.5 中配置 WCF
- c++ - 写访问冲突异常
- python - 为什么在使用 TensorFlow CLI 调试器时会收到“_curses.error: cbreak() returned ERR”?