[WIP] first implementation stubs
This commit is contained in:
61
internal/k8s.go
Normal file
61
internal/k8s.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package internal
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"html/template"
|
||||
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"k8s.io/client-go/rest"
|
||||
)
|
||||
|
||||
func RecreateDnsCrd() error {
|
||||
k8s_config, err := rest.InClusterConfig()
|
||||
if err != nil {
|
||||
return errors.New(fmt.Sprintf("Could not create in cluster k8s config: %v", err))
|
||||
}
|
||||
_, err = kubernetes.NewForConfig(k8s_config)
|
||||
if err != nil {
|
||||
return errors.New(fmt.Sprintf("Could not create k8s client: %v", err))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var CRD_TEMPLATE = `
|
||||
apiVersion: externaldns.k8s.io/v1alpha1
|
||||
kind: DNSEndpoint
|
||||
metadata:
|
||||
name: {{ .Name }}
|
||||
annotations:
|
||||
external.dns/provider: cf
|
||||
spec:
|
||||
endpoints:
|
||||
- dnsName: mail
|
||||
recordTTL: 180
|
||||
recordType: A
|
||||
targets:
|
||||
- {{ .IP }}
|
||||
`
|
||||
|
||||
type CrdConfig struct {
|
||||
Name string
|
||||
IP string
|
||||
}
|
||||
|
||||
func generateCrd(name string, ip string) (string, error) {
|
||||
config := CrdConfig{
|
||||
Name: name,
|
||||
IP: ip,
|
||||
}
|
||||
tmpl, err := template.New("crd").Parse(CRD_TEMPLATE)
|
||||
if err != nil {
|
||||
return "", errors.New(fmt.Sprintf("Errors in crd template: %s", err.Error()))
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = tmpl.Execute(&buf, &config)
|
||||
if err != nil {
|
||||
return "", errors.New(fmt.Sprintf("Could not render crd template: %s", err.Error()))
|
||||
}
|
||||
return buf.String(), nil
|
||||
}
|
Reference in New Issue
Block a user