Kubernetes 操作员使用 yaml 模板创建 Deployment
Kubernetes operator create Deployment using yaml template
我正在尝试按照此 link 创建我自己的 kubernetes 运算符。在 Reconcile 函数中,我需要创建多个 Deployment,每个 Deployment 的某些属性(例如名称)会有所不同,而且配置非常庞大。不是通过使用 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
}
我正在尝试按照此 link 创建我自己的 kubernetes 运算符。在 Reconcile 函数中,我需要创建多个 Deployment,每个 Deployment 的某些属性(例如名称)会有所不同,而且配置非常庞大。不是通过使用 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
}