Kubernetes操作员使用yaml模板创建部署



我正在尝试通过以下链接创建我自己的kubernetes运算符。在Reconcile功能中,我需要创建多个Deployments,每个Deployments的某些属性(例如名称(会有所不同,并且配置非常庞大。与使用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

可以用一些方便的util函数来代替上面的内容吗?

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
}

最新更新