Skip to content
Snippets Groups Projects
Commit b35ee254 authored by Manuel Kieweg's avatar Manuel Kieweg
Browse files

bind service and config to deployment

parent 6fdc95e6
Branches
No related tags found
1 merge request!159Resolve "Integration Tests Fail"
Pipeline #73970 passed
...@@ -10,7 +10,6 @@ import ( ...@@ -10,7 +10,6 @@ import (
"github.com/spf13/viper" "github.com/spf13/viper"
appv1 "k8s.io/api/apps/v1" appv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
netv1 "k8s.io/api/networking/v1"
"k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
...@@ -24,6 +23,10 @@ const GRPC = 55055 ...@@ -24,6 +23,10 @@ const GRPC = 55055
// HTTP defines the http port used by the deployment // HTTP defines the http port used by the deployment
const HTTP = 8080 const HTTP = 8080
var service *corev1.Service
var deployment *appv1.Deployment
var config *corev1.ConfigMap
func main() { func main() {
log.SetFormatter(&log.JSONFormatter{}) log.SetFormatter(&log.JSONFormatter{})
kubeconfig, err := clientcmd.BuildConfigFromFlags("https://api.ocp.fbi.h-da.de:6443", "") kubeconfig, err := clientcmd.BuildConfigFromFlags("https://api.ocp.fbi.h-da.de:6443", "")
...@@ -93,18 +96,17 @@ func getenv(clientset *kubernetes.Clientset, tag string) error { ...@@ -93,18 +96,17 @@ func getenv(clientset *kubernetes.Clientset, tag string) error {
// nolint // nolint
func create(clientset *kubernetes.Clientset, tag string) error { func create(clientset *kubernetes.Clientset, tag string) error {
env := "gosdn-" + tag env := "gosdn-" + tag
service := createService(env) deployment = createDeployment(env, tag)
config := createConfigMap(env)
deployment := createDeployment(env, tag)
opts := metav1.CreateOptions{} opts := metav1.CreateOptions{}
ctx := context.Background() ctx := context.Background()
_, err := clientset.CoreV1().Services("cocsn").Create(ctx, service, opts)
_, err := clientset.AppsV1().Deployments("cocsn").Create(ctx, deployment, opts)
if err != nil { if err != nil {
switch err.(type) { switch err.(type) {
case *errors.StatusError: case *errors.StatusError:
if err.(*errors.StatusError).ErrStatus.Code == 409 { if err.(*errors.StatusError).ErrStatus.Code == 409 {
if err := update(clientset, service, env); err != nil { if err := update(clientset, deployment, env); err != nil {
return err log.Error(err)
} }
} else { } else {
log.Error(err) log.Error(err)
...@@ -113,9 +115,14 @@ func create(clientset *kubernetes.Clientset, tag string) error { ...@@ -113,9 +115,14 @@ func create(clientset *kubernetes.Clientset, tag string) error {
log.Error(err) log.Error(err)
} }
} else { } 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) _, err = clientset.CoreV1().ConfigMaps("cocsn").Create(ctx, config, opts)
if err != nil { if err != nil {
switch err.(type) { switch err.(type) {
...@@ -133,13 +140,15 @@ func create(clientset *kubernetes.Clientset, tag string) error { ...@@ -133,13 +140,15 @@ func create(clientset *kubernetes.Clientset, tag string) error {
} else { } else {
log.Printf("configMap %v created", config.Name) 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 { if err != nil {
switch err.(type) { switch err.(type) {
case *errors.StatusError: case *errors.StatusError:
if err.(*errors.StatusError).ErrStatus.Code == 409 { if err.(*errors.StatusError).ErrStatus.Code == 409 {
if err := update(clientset, deployment, env); err != nil { if err := update(clientset, service, env); err != nil {
log.Error(err) return err
} }
} else { } else {
log.Error(err) log.Error(err)
...@@ -148,7 +157,7 @@ func create(clientset *kubernetes.Clientset, tag string) error { ...@@ -148,7 +157,7 @@ func create(clientset *kubernetes.Clientset, tag string) error {
log.Error(err) log.Error(err)
} }
} else { } else {
log.Printf("deployment %v created", deployment.Name) log.Printf("service %v created", service.Name)
} }
return nil return nil
} }
...@@ -170,18 +179,6 @@ func update(clientset *kubernetes.Clientset, resource metav1.Common, env string) ...@@ -170,18 +179,6 @@ func update(clientset *kubernetes.Clientset, resource metav1.Common, env string)
return err return err
} }
log.Printf("service %v updated", service.Name) 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: case *corev1.ConfigMap:
config := resource config := resource
c, err := clientset.CoreV1().ConfigMaps("cocsn").Get(ctx, env+"-config", getOpts) c, err := clientset.CoreV1().ConfigMaps("cocsn").Get(ctx, env+"-config", getOpts)
...@@ -234,12 +231,6 @@ func remove(clientset *kubernetes.Clientset, tag string) error { ...@@ -234,12 +231,6 @@ func remove(clientset *kubernetes.Clientset, tag string) error {
} else { } else {
log.Printf("deployment %v deleted", env) 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 return err
} }
...@@ -256,6 +247,14 @@ func createService(environment string) *corev1.Service { ...@@ -256,6 +247,14 @@ func createService(environment string) *corev1.Service {
Annotations: map[string]string{ Annotations: map[string]string{
"metallb.universe.tf/address-pool": "hdanet", "metallb.universe.tf/address-pool": "hdanet",
}, },
OwnerReferences: []metav1.OwnerReference{
{
APIVersion: "v1",
Kind: "Deployment",
Name: environment,
UID: deployment.GetUID(),
},
},
}, },
Spec: corev1.ServiceSpec{ Spec: corev1.ServiceSpec{
Ports: []corev1.ServicePort{ Ports: []corev1.ServicePort{
...@@ -373,6 +372,14 @@ func createConfigMap(env string) *corev1.ConfigMap { ...@@ -373,6 +372,14 @@ func createConfigMap(env string) *corev1.ConfigMap {
}, },
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: env + "-config", Name: env + "-config",
OwnerReferences: []metav1.OwnerReference{
{
APIVersion: "v1",
Kind: "Deployment",
Name: env,
UID: deployment.GetUID(),
},
},
}, },
Data: map[string]string{"gosdn.toml": "#empty"}, Data: map[string]string{"gosdn.toml": "#empty"},
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment