simplified parsing & getting annotations from kubernetes svc resource

This commit is contained in:
2025-01-18 12:11:06 +01:00
parent ad64b7728b
commit 489e7df9ea
3 changed files with 30 additions and 60 deletions

View File

@@ -1,17 +1,24 @@
package converter
func DeploymentToKubernetes (filePath string) (*v1.Deployment, error) {
file, err := os.Open(filePath)
if err != nil {
return nil, err
}
defer file.Close()
import (
"errors"
v1 "k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes/scheme"
"os"
)
var cfg v1.Deployment
decoder := yaml.NewDecoder(file)
if err := decoder.Decode(&cfg); err != nil {
return nil, err
// NOTE this is really not used, just wanted to convert
// to a kubernetes resource to our packets for practice.
func ServiceToKubernetes(filePath string) (*v1.Service, error) {
decode := scheme.Codecs.UniversalDeserializer().Decode
stream, _ := os.ReadFile(filePath)
// second param (gKV) is top level (GroupVersionKind) w/ group, version & kind
obj, gKV, _ := decode(stream, nil, nil)
// handle multiple resources split by ---
if gKV.Kind == "Service" {
return obj.(*v1.Service), nil
}
return &cfg, nil
return nil, errors.New("Unable to find service resource")
}

View File

@@ -1,43 +1,15 @@
package generator
import (
"fmt"
"os"
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
"gopkg.in/yaml.v3"
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
)
func createPacket3(config *v1.Deployment) []etcd.EtcdPacket {
blocks := []etcd.EtcdPacket{}
fmt.Println("DockerToEtcd")
fmt.Println("kube")
fmt.Println(config.APIVersion)
fmt.Println(*kubeConfig)
return blocks
}
func KubernetesToEtcd(config *v1.Deployment, packetList *[]etcd.EtcdPacket) {
items := createPacket3(config)
*packetList = append(*packetList, items...)
}
func (filePath string) (*v1.Deployment, error) {
file, err := os.Open(filePath)
if err != nil {
return nil, err
func KubernetesToEtcd(config *v1.Service, packetList *[]etcd.EtcdPacket) {
for key, val := range config.ObjectMeta.Annotations {
*packetList = append(*packetList, etcd.EtcdPacket{
Key: key,
Value: val,
})
}
defer file.Close()
var cfg v1.Deployment
decoder := yaml.NewDecoder(file)
if err := decoder.Decode(&cfg); err != nil {
return nil, err
}
return &cfg, nil
}

19
main.go
View File

@@ -1,11 +1,8 @@
package main
import (
"fmt"
"log"
"os"
"strings"
"github.com/davecgh/go-spew/spew"
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
"github.com/kevinmidboe/traefik-etcd-advertiser/config"
@@ -22,7 +19,7 @@ func main() {
filename, publish := config.ParseCli()
// setup etcd client
// etcdManager, err := etcd.NewClient()
etcdManager, err := etcd.NewClient()
if err != nil {
panic(err)
}
@@ -38,20 +35,14 @@ func main() {
generator.DockerToEtcd(dockerConfig, &packets)
} else if strings.Contains(filename, "deployment") {
kubeConfig, err := generator.KubernetesToEtcd(filename)
} else if strings.Contains(filename, "kubernetes") {
// build etcd packets from kubernetes service resource
kubeConfig, err := converter.ServiceToKubernetes(filename)
if err != nil {
log.Fatalf("Error loading traefik YAML config file: %v\n", err)
}
fmt.Println("kube")
fmt.Println(*kubeConfig)
fmt.Println(*kubeConfig.Spec.Replicas)
fmt.Printf("as: %+v\n", kubeConfig.Spec.Selector.MatchLabels["app"])
spew.Dump(*kubeConfig.Sepc.Selector)
fmt.Println(kubeConfig.ObjectMeta.Name)
fmt.Println(kubeConfig.GetObjectMeta())
generator.KubernetesToEtcd(kubeConfig, &packets)
} else {
// build etcd packets from traefik config
traefikConfig, err := converter.TraefikFromYaml(filename)