问题描述
我正在尝试按照此 link 创建自己的 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
代替上面的,可以使用一些方便的 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
}