From b35ee254c6fd47ca26c6fa1b1d14701d777c1f94 Mon Sep 17 00:00:00 2001 From: Manuel Kieweg <manuel.kieweg@h-da.de> Date: Tue, 8 Jun 2021 15:27:27 +0200 Subject: [PATCH] bind service and config to deployment --- build/cd/deploy.go | 67 +++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/build/cd/deploy.go b/build/cd/deploy.go index 06a8a8097..45b3b0998 100644 --- a/build/cd/deploy.go +++ b/build/cd/deploy.go @@ -10,7 +10,6 @@ import ( "github.com/spf13/viper" appv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" - netv1 "k8s.io/api/networking/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" @@ -24,6 +23,10 @@ const GRPC = 55055 // HTTP defines the http port used by the deployment const HTTP = 8080 +var service *corev1.Service +var deployment *appv1.Deployment +var config *corev1.ConfigMap + func main() { log.SetFormatter(&log.JSONFormatter{}) kubeconfig, err := clientcmd.BuildConfigFromFlags("https://api.ocp.fbi.h-da.de:6443", "") @@ -93,18 +96,17 @@ func getenv(clientset *kubernetes.Clientset, tag string) error { // nolint func create(clientset *kubernetes.Clientset, tag string) error { env := "gosdn-" + tag - service := createService(env) - config := createConfigMap(env) - deployment := createDeployment(env, tag) + deployment = createDeployment(env, tag) opts := metav1.CreateOptions{} ctx := context.Background() - _, err := clientset.CoreV1().Services("cocsn").Create(ctx, service, opts) + + _, err := clientset.AppsV1().Deployments("cocsn").Create(ctx, deployment, opts) if err != nil { switch err.(type) { case *errors.StatusError: if err.(*errors.StatusError).ErrStatus.Code == 409 { - if err := update(clientset, service, env); err != nil { - return err + if err := update(clientset, deployment, env); err != nil { + log.Error(err) } } else { log.Error(err) @@ -113,9 +115,14 @@ func create(clientset *kubernetes.Clientset, tag string) error { log.Error(err) } } else { - log.Printf("service %v created", service.Name) + log.Printf("deployment %v created", deployment.Name) + } + deployment, err = clientset.AppsV1().Deployments("cocsn").Get(ctx, env, metav1.GetOptions{}) + if err != nil { + log.Error(err) } + config = createConfigMap(env) _, err = clientset.CoreV1().ConfigMaps("cocsn").Create(ctx, config, opts) if err != nil { switch err.(type) { @@ -133,13 +140,15 @@ func create(clientset *kubernetes.Clientset, tag string) error { } else { log.Printf("configMap %v created", config.Name) } - _, err = clientset.AppsV1().Deployments("cocsn").Create(ctx, deployment, opts) + + service = createService(env) + _, err = clientset.CoreV1().Services("cocsn").Create(ctx, service, opts) if err != nil { switch err.(type) { case *errors.StatusError: if err.(*errors.StatusError).ErrStatus.Code == 409 { - if err := update(clientset, deployment, env); err != nil { - log.Error(err) + if err := update(clientset, service, env); err != nil { + return err } } else { log.Error(err) @@ -148,7 +157,7 @@ func create(clientset *kubernetes.Clientset, tag string) error { log.Error(err) } } else { - log.Printf("deployment %v created", deployment.Name) + log.Printf("service %v created", service.Name) } return nil } @@ -170,18 +179,6 @@ func update(clientset *kubernetes.Clientset, resource metav1.Common, env string) return err } log.Printf("service %v updated", service.Name) - case *netv1.Ingress: - ingress := resource - i, err := clientset.NetworkingV1().Ingresses("cocsn").Get(ctx, env, getOpts) - if err != nil { - return err - } - i.DeepCopyInto(ingress) - _, err = clientset.NetworkingV1().Ingresses("cocsn").Update(ctx, ingress, opts) - if err != nil { - return err - } - log.Printf("ingress %v updated", ingress.Name) case *corev1.ConfigMap: config := resource c, err := clientset.CoreV1().ConfigMaps("cocsn").Get(ctx, env+"-config", getOpts) @@ -234,12 +231,6 @@ func remove(clientset *kubernetes.Clientset, tag string) error { } else { log.Printf("deployment %v deleted", env) } - err = clientset.NetworkingV1beta1().Ingresses("cocsn").Delete(ctx, env, opts) - if err != nil { - log.Error(err) - } else { - log.Printf("ingress %v deleted", env) - } return err } @@ -256,6 +247,14 @@ func createService(environment string) *corev1.Service { Annotations: map[string]string{ "metallb.universe.tf/address-pool": "hdanet", }, + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "v1", + Kind: "Deployment", + Name: environment, + UID: deployment.GetUID(), + }, + }, }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -373,6 +372,14 @@ func createConfigMap(env string) *corev1.ConfigMap { }, ObjectMeta: metav1.ObjectMeta{ Name: env + "-config", + OwnerReferences: []metav1.OwnerReference{ + { + APIVersion: "v1", + Kind: "Deployment", + Name: env, + UID: deployment.GetUID(), + }, + }, }, Data: map[string]string{"gosdn.toml": "#empty"}, } -- GitLab