Skip to content

Commit f45e18e

Browse files
committed
Merge remote-tracking branch 'origin/master' into add_script_to_export_kalm_resources
2 parents f1c10fe + 224396e commit f45e18e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+644
-413
lines changed

.circleci/config.yml

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
version: 2.1
22
orbs:
3-
hello-orb: kalmhq-ns1/hello-orb@dev:0.0.1
3+
hello-orb: kalmhq-ns1/hello-orb@dev:0.0.1
44
deploy-orb: kalmhq-ns1/deploy-orb@dev:0.0.2
55
jobs:
66
test-dashboard:
@@ -148,6 +148,15 @@ jobs:
148148
KALM_APP: kalm-system
149149
KALM_COMPONENT: kalm
150150
KALM_COMPONENT_IMG_TAG: latest
151+
deploy-auth-proxy:
152+
executor: deploy-orb/default
153+
steps:
154+
- deploy-orb/deploy:
155+
KALM_API_ADDRESS: https://dashboard.kapp.live
156+
KALM_DEPLOY_KEY: $DEPLOY_KEY
157+
KALM_APP: kalm-system
158+
KALM_COMPONENT: auth-proxy
159+
KALM_COMPONENT_IMG_TAG: latest
151160
deploy-controller:
152161
environment:
153162
IMAGE_NAME: quay.io/kalmhq/kalm-controller:latest
@@ -192,27 +201,35 @@ workflows:
192201
- build-dashboard-image:
193202
filters:
194203
branches:
195-
only:
196-
- master
197-
- orb
204+
only:
205+
- master
206+
- orb
198207
- push-dashboard-image:
199208
context: kalm-ci
200209
requires:
201210
- test-dashboard
202211
- build-dashboard-image
203212
filters:
204213
branches:
205-
only:
206-
- master
207-
- orb
214+
only:
215+
- master
216+
- orb
208217
- deploy-dashboard:
209218
context: deploy-demo-cluster
210219
requires:
211220
- push-dashboard-image
212221
filters:
213222
branches:
214-
only:
215-
- master
223+
only:
224+
- master
225+
- deploy-auth-proxy:
226+
context: deploy-demo-cluster
227+
requires:
228+
- push-dashboard-image
229+
filters:
230+
branches:
231+
only:
232+
- master
216233
controller:
217234
jobs:
218235
- test-controller

api/cmd/auth-proxy/main.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,6 @@ func removeExtAuthPathPrefix(path string) string {
9696
path = path[len(ENVOY_EXT_AUTH_PATH_PREFIX)+1:]
9797
}
9898

99-
if path == "" {
100-
path = "/"
101-
}
102-
10399
return path
104100
}
105101

@@ -111,6 +107,10 @@ func getOriginalURL(c echo.Context) string {
111107
requestURI = removeExtAuthPathPrefix(c.Request().RequestURI)
112108
}
113109

110+
if requestURI == "" {
111+
requestURI = "/"
112+
}
113+
114114
ur := fmt.Sprintf("%s://%s%s", c.Scheme(), c.Request().Host, requestURI)
115115
log.Debug("original url ", ur)
116116
return ur
@@ -295,8 +295,11 @@ func handleSetIDToken(c echo.Context, idToken *oidc.IDToken, rawIDToken string)
295295

296296
requestURI := c.Request().Header.Get("X-Envoy-Original-Path")
297297

298+
log.Debugf("[Set ID Token] X-Envoy-Original-Path: %s", requestURI)
299+
298300
if requestURI == "" {
299301
requestURI = removeExtAuthPathPrefix(c.Request().RequestURI)
302+
log.Debugf("[Set ID Token] RawRequestURI: %s, removeExtAuthPathPrefix: %s", c.Request().RequestURI, requestURI)
300303
}
301304

302305
uri, err := url.Parse(requestURI)
@@ -309,6 +312,10 @@ func handleSetIDToken(c echo.Context, idToken *oidc.IDToken, rawIDToken string)
309312
params.Del(ID_TOKEN_QUERY_NAME)
310313
uri.RawQuery = params.Encode()
311314

315+
if uri.Path == "" {
316+
uri.Path = "/"
317+
}
318+
312319
return c.Redirect(302, uri.String())
313320
}
314321

@@ -445,6 +452,19 @@ func handleOIDCCallback(c echo.Context) error {
445452
return c.Redirect(302, uri.String())
446453
}
447454

455+
func handleLog(c echo.Context) error {
456+
level := c.QueryParam("level")
457+
458+
switch level {
459+
case "debug":
460+
log.SetLevel(log.DebugLevel)
461+
default:
462+
log.SetLevel(log.InfoLevel)
463+
}
464+
465+
return c.NoContent(200)
466+
}
467+
448468
func main() {
449469
e := server.NewEchoInstance()
450470

@@ -456,6 +476,8 @@ func main() {
456476
e.GET("/"+ENVOY_EXT_AUTH_PATH_PREFIX+"/*", handleExtAuthz)
457477
e.GET("/"+ENVOY_EXT_AUTH_PATH_PREFIX, handleExtAuthz)
458478

479+
e.POST("/log", handleLog)
480+
459481
e.Logger.Fatal(e.StartH2CServer("0.0.0.0:3002", &http2.Server{
460482
MaxConcurrentStreams: 250,
461483
MaxReadFrameSize: 1048576,

api/handler/auth.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (h *ApiHandler) handleLoginStatus(c echo.Context) error {
6262
},
6363
}
6464

65-
builder := resources.NewBuilder(k8sClient, clientConfig, h.logger)
65+
builder := resources.NewBuilder(clientConfig, h.logger)
6666

6767
// If the user can create clusterrolebinding, the user is an admin.
6868
err = builder.Create(review)

api/handler/handler.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
99
"k8s.io/apimachinery/pkg/fields"
1010
"k8s.io/apimachinery/pkg/labels"
11-
"k8s.io/client-go/kubernetes"
1211
)
1312

1413
var (
@@ -120,23 +119,14 @@ func (h *ApiHandler) Install(e *echo.Echo) {
120119

121120
// use user token and permission
122121
func (h *ApiHandler) Builder(c echo.Context) *resources.Builder {
123-
k8sClient := getK8sClient(c)
124122
k8sClientConfig := getK8sClientConfig(c)
125-
return resources.NewBuilder(k8sClient, k8sClientConfig, h.logger)
123+
return resources.NewBuilder(k8sClientConfig, h.logger)
126124
}
127125

128126
// use server account name permission
129127
func (h *ApiHandler) KalmBuilder() *resources.Builder {
130128
cfg := h.clientManager.ClusterConfig
131-
132-
k8sClient, err := kubernetes.NewForConfig(cfg)
133-
134-
if err != nil {
135-
h.logger.Error("Can't get k8s Client")
136-
return nil
137-
}
138-
139-
return resources.NewBuilder(k8sClient, cfg, h.logger)
129+
return resources.NewBuilder(cfg, h.logger)
140130
}
141131

142132
func NewApiHandler(clientManager *client.ClientManager) *ApiHandler {

api/handler/https_cert_issuer.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ import (
99
)
1010

1111
func (h *ApiHandler) handleGetHttpsCertIssuer(c echo.Context) error {
12-
k8sClient := getK8sClient(c)
1312
k8sClientConfig := getK8sClientConfig(c)
14-
builder := resources.NewBuilder(k8sClient, k8sClientConfig, h.logger)
13+
builder := resources.NewBuilder(k8sClientConfig, h.logger)
1514

1615
httpsCertIssuers, err := builder.GetHttpsCertIssuerList()
1716
if err != nil {
@@ -40,9 +39,8 @@ func (h *ApiHandler) handleCreateHttpsCertIssuer(c echo.Context) (err error) {
4039

4140
if httpsCertIssuer.ACMECloudFlare != nil {
4241
// reconcile secret for this issuer
43-
k8sClient := getK8sClient(c)
4442
k8sClientConfig := getK8sClientConfig(c)
45-
builder := resources.NewBuilder(k8sClient, k8sClientConfig, h.logger)
43+
builder := resources.NewBuilder(k8sClientConfig, h.logger)
4644

4745
acmeSecretName := resources.GenerateSecretNameForACME(httpsCertIssuer)
4846
err := builder.ReconcileSecretForIssuer(
@@ -69,7 +67,6 @@ func (h *ApiHandler) handleCreateHttpsCertIssuer(c echo.Context) (err error) {
6967
return c.JSON(201, httpsCertIssuer)
7068
}
7169

72-
7370
func (h *ApiHandler) handleUpdateHttpsCertIssuer(c echo.Context) error {
7471
httpsCertIssuer, err := getHttpsCertIssuerFromContext(c)
7572
if err != nil {

api/handler/k8s.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@ package handler
22

33
import (
44
"github.com/labstack/echo/v4"
5+
coreV1 "k8s.io/api/core/v1"
56
)
67

78
func (h *ApiHandler) handleGetPVs(c echo.Context) error {
8-
k8sClient := getK8sClient(c)
9-
list, err := k8sClient.CoreV1().PersistentVolumes().List(c.Request().Context(), ListAll)
9+
var pvList coreV1.PersistentVolumeList
10+
err := h.Builder(c).List(&pvList)
1011
if err != nil {
1112
return err
1213
}
13-
return c.JSON(200, list)
14+
return c.JSON(200, pvList)
1415
}
1516

1617
func (h *ApiHandler) handleGetNodes(c echo.Context) error {
17-
k8sClient := getK8sClient(c)
18-
list, err := k8sClient.CoreV1().Nodes().List(c.Request().Context(), ListAll)
18+
var list coreV1.NodeList
19+
err := h.Builder(c).List(&list)
1920
if err != nil {
2021
return err
2122
}

api/handler/middleware.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
package handler
22

33
import (
4-
"github.com/kalmhq/kalm/controller/api/v1alpha1"
54
"github.com/labstack/echo/v4"
6-
"k8s.io/apimachinery/pkg/runtime/serializer"
75
"k8s.io/client-go/kubernetes"
8-
"k8s.io/client-go/kubernetes/scheme"
96
"k8s.io/client-go/rest"
107
)
118

@@ -39,16 +36,6 @@ func getK8sClient(c echo.Context) *kubernetes.Clientset {
3936
return c.Get(KUBERNETES_CLIENT_CLIENT_KEY).(*kubernetes.Clientset)
4037
}
4138

42-
func getKalmV1Alpha1Client(c echo.Context) (*rest.RESTClient, error) {
43-
// copy a cfg
44-
cfg := getK8sClientConfig(c)
45-
cfg.ContentConfig.GroupVersion = &v1alpha1.GroupVersion
46-
cfg.APIPath = "/apis"
47-
cfg.NegotiatedSerializer = serializer.NewCodecFactory(scheme.Scheme)
48-
cfg.UserAgent = rest.DefaultKubernetesUserAgent()
49-
return rest.UnversionedRESTClientFor(cfg)
50-
}
51-
5239
func getK8sClientConfig(c echo.Context) *rest.Config {
5340
return c.Get(KUBERNETES_CLIENT_CONFIG_KEY).(*rest.Config)
5441
}

api/handler/pods.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@ package handler
22

33
import (
44
"github.com/labstack/echo/v4"
5+
coreV1 "k8s.io/api/core/v1"
56
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
67
"net/http"
78
)
89

910
func (h *ApiHandler) handleDeletePod(c echo.Context) error {
10-
namespace := c.Param("namespace")
11-
name := c.Param("name")
12-
k8sClient := getK8sClient(c)
13-
14-
err := k8sClient.CoreV1().Pods(namespace).Delete(c.Request().Context(), name, metaV1.DeleteOptions{})
11+
err := h.Builder(c).Delete(&coreV1.Pod{ObjectMeta: metaV1.ObjectMeta{
12+
Namespace: c.Param("namespace"),
13+
Name: c.Param("name"),
14+
}})
1515

1616
if err != nil {
1717
return err

api/handler/webhook.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"github.com/kalmhq/kalm/controller/api/v1alpha1"
88
"github.com/kalmhq/kalm/controller/controllers"
99
"github.com/labstack/echo/v4"
10-
"k8s.io/client-go/kubernetes"
1110
"k8s.io/client-go/kubernetes/scheme"
1211
"k8s.io/client-go/tools/clientcmd/api"
1312
"net/http"
@@ -51,13 +50,7 @@ func (h *ApiHandler) handleDeployWebhookCall(c echo.Context) error {
5150
return err
5251
}
5352

54-
deployKeyClient, err := kubernetes.NewForConfig(deployKeyConfig)
55-
56-
if err != nil {
57-
return err
58-
}
59-
60-
builder := resources.NewBuilder(deployKeyClient, deployKeyConfig, h.logger)
53+
builder := resources.NewBuilder(deployKeyConfig, h.logger)
6154

6255
if builder == nil {
6356
return fmt.Errorf("invalid deploy key")

api/main.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ package main
22

33
import (
44
"context"
5+
"golang.org/x/net/http2"
56
"log"
67
"os"
78
"sort"
9+
"time"
810

911
_ "github.com/joho/godotenv/autoload"
1012
"github.com/kalmhq/kalm/api/client"
@@ -113,5 +115,10 @@ func run(runningConfig *config.Config) {
113115
// watcher.StartWatching(clientManager)
114116

115117
go resources.StartMetricScraper(context.Background(), clientManager)
116-
e.Logger.Fatal(e.Start(runningConfig.GetServerAddress()))
118+
119+
e.Logger.Fatal(e.StartH2CServer(runningConfig.GetServerAddress(), &http2.Server{
120+
MaxConcurrentStreams: 250,
121+
MaxReadFrameSize: 1048576,
122+
IdleTimeout: 60 * time.Second,
123+
}))
117124
}

0 commit comments

Comments
 (0)