You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.7 KiB
73 lines
1.7 KiB
package controllers
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
corev1 "k8s.io/api/core/v1"
|
|
"text/template"
|
|
|
|
networkv1 "k8s.io/api/networking/v1"
|
|
"k8s.io/apimachinery/pkg/util/yaml"
|
|
|
|
appsv1 "k8s.io/api/apps/v1"
|
|
myAppsv1 "mashibing.com/pkg/mashibing-deployment/api/v1"
|
|
)
|
|
|
|
func parseTemplate(md *myAppsv1.MsbDeployment, templateName string) ([]byte, error) {
|
|
tmpl, err := template.ParseFiles(fmt.Sprintf("controllers/templates/%s", templateName))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
b := &bytes.Buffer{}
|
|
if err := tmpl.Execute(b, md); err != nil {
|
|
return nil, err
|
|
}
|
|
return b.Bytes(), nil
|
|
}
|
|
|
|
func NewDeployment(md *myAppsv1.MsbDeployment) (*appsv1.Deployment, error) {
|
|
content, err := parseTemplate(md, "deployment.yaml")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
deploy := new(appsv1.Deployment)
|
|
if err := yaml.Unmarshal(content, deploy); err != nil {
|
|
return nil, err
|
|
}
|
|
return deploy, nil
|
|
}
|
|
|
|
func NewIngress(md *myAppsv1.MsbDeployment) (*networkv1.Ingress, error) {
|
|
content, err := parseTemplate(md, "ingress.yaml")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ig := new(networkv1.Ingress)
|
|
if err := yaml.Unmarshal(content, ig); err != nil {
|
|
return nil, err
|
|
}
|
|
return ig, nil
|
|
}
|
|
func NewService(md *myAppsv1.MsbDeployment) (*corev1.Service, error) {
|
|
content, err := parseTemplate(md, "service.yaml")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
svc := new(corev1.Service)
|
|
if err := yaml.Unmarshal(content, svc); err != nil {
|
|
return nil, err
|
|
}
|
|
return svc, nil
|
|
}
|
|
func NewServiceNP(md *myAppsv1.MsbDeployment) (*corev1.Service, error) {
|
|
content, err := parseTemplate(md, "service-np.yaml")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
svc := new(corev1.Service)
|
|
if err := yaml.Unmarshal(content, svc); err != nil {
|
|
return nil, err
|
|
}
|
|
return svc, nil
|
|
}
|