Skip to content
This repository was archived by the owner on Feb 28, 2024. It is now read-only.

Commit 308be60

Browse files
committed
Using kubeclientset and go-envconfig
1 parent 473e42f commit 308be60

File tree

5 files changed

+34
-45
lines changed

5 files changed

+34
-45
lines changed

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ go 1.20
44

55
require (
66
github.com/go-logr/logr v1.2.4
7-
github.com/mariadb-operator/agent v0.0.1
7+
github.com/mariadb-operator/agent v0.0.2-0.20230705212819-67aac2bf05b9
88
github.com/mariadb-operator/mariadb-operator v0.0.16-0.20230702105210-e7121043bc33
9+
github.com/sethvargo/go-envconfig v0.9.0
910
k8s.io/apimachinery v0.24.2
1011
k8s.io/client-go v0.24.2
1112
)

go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,8 @@ github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN
318318
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
319319
github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
320320
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
321-
github.com/mariadb-operator/agent v0.0.1 h1:YxME2EAueNJVirGWnQ7qFmUWpEWdZ4OFNzDdRmx8nXQ=
322-
github.com/mariadb-operator/agent v0.0.1/go.mod h1:TGDSu8zPTK1lAnLwhOF78NdO3Sc6McC5DFFGLqKEq2w=
321+
github.com/mariadb-operator/agent v0.0.2-0.20230705212819-67aac2bf05b9 h1:NOnvXXDUSPNhe9OJfqn8kkTORplQIHxiqgShVwQ/3jk=
322+
github.com/mariadb-operator/agent v0.0.2-0.20230705212819-67aac2bf05b9/go.mod h1:UrpYUTpGuh8s1M5dpWLwRu8BSIMjswCBsXCQJaYuNlk=
323323
github.com/mariadb-operator/mariadb-operator v0.0.16-0.20230702105210-e7121043bc33 h1:vsYIJc31saaSP/OiJln3NnhnEHtQWODdJej033f7x3c=
324324
github.com/mariadb-operator/mariadb-operator v0.0.16-0.20230702105210-e7121043bc33/go.mod h1:83Yz2Jj63rO/Kq34JIVFYhpEJCNSsySiOesjDuQBDWI=
325325
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
@@ -416,6 +416,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
416416
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
417417
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
418418
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
419+
github.com/sethvargo/go-envconfig v0.9.0 h1:Q6FQ6hVEeTECULvkJZakq3dZMeBQ3JUpcKMfPQbKMDE=
420+
github.com/sethvargo/go-envconfig v0.9.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0=
419421
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
420422
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
421423
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=

main.go

Lines changed: 8 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"context"
55
"encoding/json"
6-
"errors"
76
"flag"
87
"fmt"
98
"log"
@@ -14,16 +13,16 @@ import (
1413

1514
"github.com/go-logr/logr"
1615
"github.com/mariadb-operator/agent/pkg/filemanager"
16+
"github.com/mariadb-operator/agent/pkg/kubeclientset"
1717
"github.com/mariadb-operator/agent/pkg/logger"
1818
"github.com/mariadb-operator/init/pkg/config"
19+
"github.com/mariadb-operator/init/pkg/environment"
1920
mariadbv1alpha1 "github.com/mariadb-operator/mariadb-operator/api/v1alpha1"
2021
mariadbpod "github.com/mariadb-operator/mariadb-operator/pkg/pod"
2122
"github.com/mariadb-operator/mariadb-operator/pkg/statefulset"
2223
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2324
"k8s.io/apimachinery/pkg/util/wait"
2425
"k8s.io/client-go/kubernetes"
25-
"k8s.io/client-go/rest"
26-
"k8s.io/client-go/tools/clientcmd"
2726
)
2827

2928
var (
@@ -36,11 +35,6 @@ var (
3635
mariadbNamespace string
3736
)
3837

39-
type environment struct {
40-
podName string
41-
mariadbRootPassword string
42-
}
43-
4438
func main() {
4539
flag.StringVar(&logLevel, "log-level", "info", "Log level to use, one of: debug, info, warn, error, dpanic, panic, fatal.")
4640
flag.StringVar(&logTimeEncoder, "log-time-encoder", "epoch", "Log time encoder to use, one of: "+
@@ -71,18 +65,13 @@ func main() {
7165
}
7266
logger.Info("Statring init")
7367

74-
env, err := env()
68+
env, err := environment.GetEnvironment(ctx)
7569
if err != nil {
76-
logger.Error(err, "Missing environment variables")
70+
logger.Error(err, "Error getting environment variables")
7771
os.Exit(1)
7872
}
7973

80-
restConfig, err := restConfig()
81-
if err != nil {
82-
logger.Error(err, "Error getting Kubernetes config")
83-
os.Exit(1)
84-
}
85-
clientset, err := kubernetes.NewForConfig(restConfig)
74+
clientset, err := kubeclientset.NewKubeclientSet()
8675
if err != nil {
8776
logger.Error(err, "Error creating Kubernetes clientset")
8877
os.Exit(1)
@@ -98,7 +87,7 @@ func main() {
9887
logger.Error(err, "Error creating file manager")
9988
os.Exit(1)
10089
}
101-
configBytes, err := config.NewConfigFile(mdb).Marshal(env.podName, env.mariadbRootPassword)
90+
configBytes, err := config.NewConfigFile(mdb).Marshal(env.PodName, env.MariadbRootPassword)
10291
if err != nil {
10392
logger.Error(err, "Error getting Galera config")
10493
os.Exit(1)
@@ -119,9 +108,9 @@ func main() {
119108
os.Exit(0)
120109
}
121110

122-
idx, err := statefulset.PodIndex(env.podName)
111+
idx, err := statefulset.PodIndex(env.PodName)
123112
if err != nil {
124-
logger.Error(err, "error getting index from Pod", "pod", env.podName)
113+
logger.Error(err, "error getting index from Pod", "pod", env.PodName)
125114
os.Exit(1)
126115
}
127116
if *idx == 0 {
@@ -147,28 +136,6 @@ func main() {
147136
logger.Info("Init done")
148137
}
149138

150-
func env() (*environment, error) {
151-
podName := os.Getenv("POD_NAME")
152-
if podName == "" {
153-
return nil, errors.New("environment variable 'POD_NAME' is required")
154-
}
155-
mariadbRootPassword := os.Getenv("MARIADB_ROOT_PASSWORD")
156-
if mariadbRootPassword == "" {
157-
return nil, errors.New("environment variable 'MARIADB_ROOT_PASSWORD' is required")
158-
}
159-
return &environment{
160-
podName: podName,
161-
mariadbRootPassword: mariadbRootPassword,
162-
}, nil
163-
}
164-
165-
func restConfig() (*rest.Config, error) {
166-
if kubeconfig := os.Getenv("KUBECONFIG"); kubeconfig != "" {
167-
return clientcmd.BuildConfigFromFlags("", kubeconfig)
168-
}
169-
return rest.InClusterConfig()
170-
}
171-
172139
func mariadb(ctx context.Context, name, namespace string, clientset *kubernetes.Clientset) (*mariadbv1alpha1.MariaDB, error) {
173140
path := fmt.Sprintf("/apis/mariadb.mmontes.io/v1alpha1/namespaces/%s/mariadbs/%s", namespace, name)
174141
bytes, err := clientset.RESTClient().Get().AbsPath(path).DoRaw(ctx)

make/dev.mk

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ dir: ## Create config and state directories for local development.
2828

2929
export KUBECONFIG ?= $(HOME)/.kube/config
3030
export POD_NAME ?= mariadb-galera-0
31-
export POD_NAMESPACE ?= default
3231
export MARIADB_ROOT_PASSWORD ?= mariadb
3332
RUN_FLAGS ?= --log-dev --log-level=debug --log-time-encoder=iso8601 --mariadb-name=mariadb-galera --mariadb-namespace=default --config-dir=mariadb/config --state-dir=mariadb/state
3433
.PHONY: run

pkg/environment/environment.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package environment
2+
3+
import (
4+
"context"
5+
6+
"github.com/sethvargo/go-envconfig"
7+
)
8+
9+
type Environment struct {
10+
PodName string `env:"POD_NAME,required"`
11+
MariadbRootPassword string `env:"MARIADB_ROOT_PASSWORD,required"`
12+
}
13+
14+
func GetEnvironment(ctx context.Context) (*Environment, error) {
15+
var env Environment
16+
if err := envconfig.Process(ctx, &env); err != nil {
17+
return nil, err
18+
}
19+
return &env, nil
20+
}

0 commit comments

Comments
 (0)