mirror of
https://github.com/KevinMidboe/traefik-etcd-advertiser.git
synced 2025-10-29 18:00:19 +00:00
adds kubernetes conversion
This commit is contained in:
21
assets/deployment.yml
Normal file
21
assets/deployment.yml
Normal 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
17
converter/deployment.go
Normal 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
43
generator/kubernetes.go
Normal 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
23
main.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"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"
|
||||||
@@ -41,14 +42,25 @@ func main() {
|
|||||||
// build etcd packets from docker-compose config
|
// build etcd packets from docker-compose config
|
||||||
dockerConfig, err := generator.ParseDockerCompose(filename)
|
dockerConfig, err := generator.ParseDockerCompose(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatalf("Error loading docker YAML config file :%v\n", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// generator.PrintLabels(labels)
|
generator.DockerToEtcd(dockerConfig, &packets)
|
||||||
fmt.Println("compose")
|
|
||||||
log.Println(dockerConfig)
|
|
||||||
// generator.TraefikToEtcd(traefikConfig, &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 {
|
} else {
|
||||||
// build etcd packets from traefik config
|
// build etcd packets from traefik config
|
||||||
traefikConfig, err := converter.TraefikFromYaml(filename)
|
traefikConfig, err := converter.TraefikFromYaml(filename)
|
||||||
@@ -59,6 +71,7 @@ func main() {
|
|||||||
generator.TraefikToEtcd(traefikConfig, &packets)
|
generator.TraefikToEtcd(traefikConfig, &packets)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
etcd.RemoveDuplicatePackets(&packets)
|
||||||
for _, packet := range packets {
|
for _, packet := range packets {
|
||||||
log.Println(packet)
|
log.Println(packet)
|
||||||
// etcdManager.Put(packet.Key, packet.Value)
|
// etcdManager.Put(packet.Key, packet.Value)
|
||||||
|
|||||||
Reference in New Issue
Block a user