go - Kubernetes 操作员使用 yaml 模板创建 Deployment
问题描述
我正在尝试通过以下链接创建自己的 kubernetes 运算符。在 Reconcile 函数中,我需要创建多个部署,每个部署的某些属性(例如名称)都会有所不同,并且配置很大。不是通过使用 appsv1.Deployment 创建部署并在其中创建每个属性(如下面的代码),有没有一种方法可以让我提供一个 yaml 模板文件并读取该文件以获取 appsv1.Deployment 对象?
dep := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: customName,
Namespace: m.Namespace,
},
Spec: appsv1.DeploymentSpec{
Strategy: appsv1.DeploymentStrategy{
Type: "RollingUpdate",
},
... and so on
除了上面,可以使用一些方便的实用程序功能来实现类似下面的内容吗?
dep := utils.parseYaml(deploymentYamlFile)
解决方案
是的,您可以将您的Deployment
放在一个 yaml 文件中并在代码中读取它。
鉴于此文件结构:
example.go
manifests/deployment.yaml
你会有这样的东西example.go
:
import (
"io/ioutil"
appsv1 "k8s.io/api/apps/v1"
"sigs.k8s.io/yaml"
)
func example() {
var bs []byte
{
bs, err = ioutil.ReadFile("manifests/deployment.yaml")
if err != nil {
// handle err
}
}
var deployment appsv1.Deployment
err = yaml.Unmarshal(bs, &deployment)
if err != nil {
// handle err
}
// now you have your deployment load into `deployment` var
}
推荐阅读
- javascript - Firestore 在同一个 UID 下添加多个数据
- python - 如何将集合中的条目更改为整数
- r - 有没有办法从一个向量传递 lm 的公式并在另一个向量中获取一组 R2(不使用循环)?
- r - 当纸!=特殊时,如何在grDevices :: pdf中使用bg覆盖整个页面?
- c - 我已多次调用此函数以正确排序记录结构中的元素
- python - 如何在 Python 列表中查找匹配元素的索引?
- python - 对熊猫使用重新采样和聚合时丢失字符串列
- kubernetes - Kubernetes Master Worker 节点 Kubeadm 加入问题
- xcode - 当我运行我的代码并可视化我的用户界面时,为什么我的单元格太小了?
- kubernetes - 从另一个 pod 获取一个 pod 的 IP 地址