adds kubernetes conversion

This commit is contained in:
2025-01-16 12:22:38 +01:00
parent b4f3ec3343
commit 78b8c2d48a
4 changed files with 99 additions and 5 deletions

21
assets/deployment.yml Normal file
View File

@@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80

17
converter/deployment.go Normal file
View File

@@ -0,0 +1,17 @@
package converter
func DeploymentToKubernetes (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
}

43
generator/kubernetes.go Normal file
View File

@@ -0,0 +1,43 @@
package generator
import (
"fmt"
"os"
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
"gopkg.in/yaml.v3"
"k8s.io/api/apps/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
}
defer file.Close()
var cfg v1.Deployment
decoder := yaml.NewDecoder(file)
if err := decoder.Decode(&cfg); err != nil {
return nil, err
}
return &cfg, nil
}

23
main.go
View File

@@ -5,6 +5,7 @@ import (
"log"
"os"
"strings"
"github.com/davecgh/go-spew/spew"
"github.com/kevinmidboe/traefik-etcd-advertiser/client/etcd"
"github.com/kevinmidboe/traefik-etcd-advertiser/config"
@@ -41,14 +42,25 @@ func main() {
// build etcd packets from docker-compose config
dockerConfig, err := generator.ParseDockerCompose(filename)
if err != nil {
log.Fatal(err)
log.Fatalf("Error loading docker YAML config file :%v\n", err)
}
// generator.PrintLabels(labels)
fmt.Println("compose")
log.Println(dockerConfig)
// generator.TraefikToEtcd(traefikConfig, &packets)
generator.DockerToEtcd(dockerConfig, &packets)
} else if strings.Contains(filename, "deployment") {
kubeConfig, err := generator.KubernetesToEtcd(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())
} else {
// build etcd packets from traefik config
traefikConfig, err := converter.TraefikFromYaml(filename)
@@ -59,6 +71,7 @@ func main() {
generator.TraefikToEtcd(traefikConfig, &packets)
}
etcd.RemoveDuplicatePackets(&packets)
for _, packet := range packets {
log.Println(packet)
// etcdManager.Put(packet.Key, packet.Value)