mirror of
https://github.com/KevinMidboe/traefik-etcd-advertiser.git
synced 2025-10-29 09:50:20 +00:00
simplified parsing & getting annotations from kubernetes svc resource
This commit is contained in:
@@ -1,17 +1,24 @@
|
|||||||
package converter
|
package converter
|
||||||
|
|
||||||
func DeploymentToKubernetes (filePath string) (*v1.Deployment, error) {
|
import (
|
||||||
file, err := os.Open(filePath)
|
"errors"
|
||||||
if err != nil {
|
v1 "k8s.io/api/core/v1"
|
||||||
return nil, err
|
"k8s.io/client-go/kubernetes/scheme"
|
||||||
}
|
"os"
|
||||||
defer file.Close()
|
)
|
||||||
|
|
||||||
var cfg v1.Deployment
|
// NOTE this is really not used, just wanted to convert
|
||||||
decoder := yaml.NewDecoder(file)
|
// to a kubernetes resource to our packets for practice.
|
||||||
if err := decoder.Decode(&cfg); err != nil {
|
func ServiceToKubernetes(filePath string) (*v1.Service, error) {
|
||||||
return nil, err
|
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")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,43 +1,15 @@
|
|||||||
package generator
|
package generator
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
|
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
|
||||||
"gopkg.in/yaml.v3"
|
"k8s.io/api/core/v1"
|
||||||
"k8s.io/api/apps/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func createPacket3(config *v1.Deployment) []etcd.EtcdPacket {
|
func KubernetesToEtcd(config *v1.Service, packetList *[]etcd.EtcdPacket) {
|
||||||
blocks := []etcd.EtcdPacket{}
|
for key, val := range config.ObjectMeta.Annotations {
|
||||||
|
*packetList = append(*packetList, etcd.EtcdPacket{
|
||||||
fmt.Println("DockerToEtcd")
|
Key: key,
|
||||||
fmt.Println("kube")
|
Value: val,
|
||||||
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
|
|
||||||
}
|
}
|
||||||
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
19
main.go
@@ -1,11 +1,8 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
"github.com/davecgh/go-spew/spew"
|
|
||||||
|
|
||||||
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
|
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
|
||||||
"github.com/kevinmidboe/traefik-etcd-advertiser/config"
|
"github.com/kevinmidboe/traefik-etcd-advertiser/config"
|
||||||
@@ -22,7 +19,7 @@ func main() {
|
|||||||
filename, publish := config.ParseCli()
|
filename, publish := config.ParseCli()
|
||||||
|
|
||||||
// setup etcd client
|
// setup etcd client
|
||||||
// etcdManager, err := etcd.NewClient()
|
etcdManager, err := etcd.NewClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@@ -38,20 +35,14 @@ func main() {
|
|||||||
|
|
||||||
generator.DockerToEtcd(dockerConfig, &packets)
|
generator.DockerToEtcd(dockerConfig, &packets)
|
||||||
|
|
||||||
} else if strings.Contains(filename, "deployment") {
|
} else if strings.Contains(filename, "kubernetes") {
|
||||||
kubeConfig, err := generator.KubernetesToEtcd(filename)
|
// build etcd packets from kubernetes service resource
|
||||||
|
kubeConfig, err := converter.ServiceToKubernetes(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Error loading traefik YAML config file: %v\n", err)
|
log.Fatalf("Error loading traefik YAML config file: %v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("kube")
|
generator.KubernetesToEtcd(kubeConfig, &packets)
|
||||||
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())
|
|
||||||
} else {
|
} else {
|
||||||
// build etcd packets from traefik config
|
// build etcd packets from traefik config
|
||||||
traefikConfig, err := converter.TraefikFromYaml(filename)
|
traefikConfig, err := converter.TraefikFromYaml(filename)
|
||||||
|
|||||||
Reference in New Issue
Block a user