Skip to content

Commit 55d1e98

Browse files
committed
[usage-controller] Initial setup for component
1 parent 6972cd5 commit 55d1e98

File tree

9 files changed

+241
-0
lines changed

9 files changed

+241
-0
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
/install/installer/pkg/components/public-api-server @gitpod-io/engineering-webapp
4242
/install/installer/pkg/components/server @gitpod-io/engineering-webapp
4343
/install/installer/pkg/components/server/ide @gitpod-io/engineering-ide
44+
/install/installer/pkg/components/usage-controller @gitpod-io/engineering-webapp
4445
/install/installer/pkg/components/workspace @gitpod-io/engineering-workspace
4546
/install/installer/pkg/components/workspace/ide @gitpod-io/engineering-ide
4647
/install/installer/pkg/components/ws-daemon @gitpod-io/engineering-workspace

components/BUILD.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ packages:
5454
- components/image-builder-mk3:docker
5555
- components/local-app:docker
5656
- components/public-api-server:docker
57+
- components/usage-controller:docker
5758
- components/openvsx-proxy:docker
5859
- components/proxy:docker
5960
- components/registry-facade:docker
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
packages:
2+
- name: app
3+
type: go
4+
srcs:
5+
- "**/*.go"
6+
- "go.mod"
7+
- "go.sum"
8+
deps:
9+
- components/common-go:lib
10+
env:
11+
- CGO_ENABLED=0
12+
- GOOS=linux
13+
config:
14+
packaging: app
15+
buildCommand: ["go", "build", "-trimpath", "-ldflags", "-buildid= -w -s -X 'github.com/gitpod-io/gitpod/usage-controller/cmd.Version=commit-${__git_commit}'"]
16+
- name: docker
17+
type: docker
18+
deps:
19+
- :app
20+
argdeps:
21+
- imageRepoBase
22+
config:
23+
buildArgs:
24+
VERSION: ${version}
25+
dockerfile: leeway.Dockerfile
26+
metadata:
27+
helm-component: usage-controller
28+
image:
29+
- ${imageRepoBase}/usage-controller:${version}
30+
- ${imageRepoBase}/usage-controller:commit-${__git_commit}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License-AGPL.txt in the project root for license information.
4+
5+
package cmd
6+
7+
import (
8+
"context"
9+
"os"
10+
11+
"github.com/gitpod-io/gitpod/common-go/log"
12+
"github.com/spf13/cobra"
13+
)
14+
15+
var (
16+
// ServiceName is the name we use for tracing/logging
17+
ServiceName = "usage-controller"
18+
// Version of this service - set during build
19+
Version = ""
20+
)
21+
22+
// rootCmd represents the base command when called without any subcommands
23+
var rootCmd = &cobra.Command{
24+
Use: ServiceName,
25+
Short: "Runs usage controller",
26+
}
27+
28+
func Execute() {
29+
if err := rootCmd.ExecuteContext(context.Background()); err != nil {
30+
log.WithError(err).Error("Failed to execute command.")
31+
os.Exit(1)
32+
}
33+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License-AGPL.txt in the project root for license information.
4+
5+
package cmd
6+
7+
import (
8+
"github.com/gitpod-io/gitpod/common-go/log"
9+
"github.com/spf13/cobra"
10+
"os"
11+
"os/signal"
12+
"syscall"
13+
)
14+
15+
func init() {
16+
rootCmd.AddCommand(run())
17+
}
18+
19+
func run() *cobra.Command {
20+
var (
21+
verbose bool
22+
)
23+
24+
cmd := &cobra.Command{
25+
Use: "run",
26+
Short: "Starts the service",
27+
Version: Version,
28+
Run: func(cmd *cobra.Command, args []string) {
29+
log.Init(ServiceName, Version, true, verbose)
30+
31+
log.Info("Hello world usage-controller")
32+
33+
done := make(chan bool, 1)
34+
sigs := make(chan os.Signal, 1)
35+
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
36+
37+
go func() {
38+
<-sigs
39+
log.Info("Received termination signal")
40+
done <- true
41+
}()
42+
43+
log.Info("Awaiting signal to terminate...")
44+
<-done
45+
log.Info("Exiting.")
46+
},
47+
}
48+
49+
cmd.Flags().BoolVar(&verbose, "verbose", false, "Toggle verbose logging (debug level)")
50+
51+
return cmd
52+
}

components/usage-controller/go.mod

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
module github.com/gitpod-io/gitpod/usage-controller
2+
3+
go 1.18
4+
5+
replace github.com/gitpod-io/gitpod/common-go => ../common-go // leeway
6+
7+
replace k8s.io/api => k8s.io/api v0.23.5 // leeway indirect from components/common-go:lib
8+
9+
replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.23.5 // leeway indirect from components/common-go:lib
10+
11+
replace k8s.io/apimachinery => k8s.io/apimachinery v0.23.5 // leeway indirect from components/common-go:lib
12+
13+
replace k8s.io/apiserver => k8s.io/apiserver v0.23.5 // leeway indirect from components/common-go:lib
14+
15+
replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.23.5 // leeway indirect from components/common-go:lib
16+
17+
replace k8s.io/client-go => k8s.io/client-go v0.23.5 // leeway indirect from components/common-go:lib
18+
19+
replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.23.5 // leeway indirect from components/common-go:lib
20+
21+
replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.23.5 // leeway indirect from components/common-go:lib
22+
23+
replace k8s.io/code-generator => k8s.io/code-generator v0.23.5 // leeway indirect from components/common-go:lib
24+
25+
replace k8s.io/component-base => k8s.io/component-base v0.23.5 // leeway indirect from components/common-go:lib
26+
27+
replace k8s.io/cri-api => k8s.io/cri-api v0.23.5 // leeway indirect from components/common-go:lib
28+
29+
replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.23.5 // leeway indirect from components/common-go:lib
30+
31+
replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.23.5 // leeway indirect from components/common-go:lib
32+
33+
replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.23.5 // leeway indirect from components/common-go:lib
34+
35+
replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.23.5 // leeway indirect from components/common-go:lib
36+
37+
replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.23.5 // leeway indirect from components/common-go:lib
38+
39+
replace k8s.io/kubelet => k8s.io/kubelet v0.23.5 // leeway indirect from components/common-go:lib
40+
41+
replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.23.5 // leeway indirect from components/common-go:lib
42+
43+
replace k8s.io/metrics => k8s.io/metrics v0.23.5 // leeway indirect from components/common-go:lib
44+
45+
replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.23.5 // leeway indirect from components/common-go:lib
46+
47+
replace k8s.io/component-helpers => k8s.io/component-helpers v0.23.5 // leeway indirect from components/common-go:lib
48+
49+
replace k8s.io/controller-manager => k8s.io/controller-manager v0.23.5 // leeway indirect from components/common-go:lib
50+
51+
replace k8s.io/kubectl => k8s.io/kubectl v0.23.5 // leeway indirect from components/common-go:lib
52+
53+
replace k8s.io/mount-utils => k8s.io/mount-utils v0.23.5 // leeway indirect from components/common-go:lib
54+
55+
replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.23.5 // leeway indirect from components/common-go:lib
56+
57+
require (
58+
github.com/gitpod-io/gitpod/common-go v0.0.0-00010101000000-000000000000
59+
github.com/spf13/cobra v1.4.0
60+
)
61+
62+
require (
63+
github.com/inconshreveable/mousetrap v1.0.0 // indirect
64+
github.com/sirupsen/logrus v1.8.1 // indirect
65+
github.com/spf13/pflag v1.0.5 // indirect
66+
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 // indirect
67+
)

components/usage-controller/go.sum

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
2+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4+
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
5+
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
6+
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
7+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
8+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
9+
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
10+
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
11+
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
12+
github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q=
13+
github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g=
14+
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
15+
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
16+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
17+
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
18+
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
19+
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9 h1:XfKQ4OlFl8okEOr5UvAqFRVj8pY/4yfcXrddB8qAbU0=
20+
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
21+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
22+
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
23+
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright (c) 2020 Gitpod GmbH. All rights reserved.
2+
# Licensed under the GNU Affero General Public License (AGPL).
3+
# See License-AGPL.txt in the project root for license information.
4+
5+
FROM alpine:3.15
6+
7+
# Ensure latest packages are present, like security updates.
8+
RUN apk upgrade --no-cache \
9+
&& apk add --no-cache ca-certificates
10+
11+
RUN adduser -S -D -H -h /app -u 1000 appuser
12+
COPY components-usage-controller--app/usage-controller /app/usage-controller
13+
RUN chown -R appuser /app
14+
15+
USER appuser
16+
17+
ARG __GIT_COMMIT
18+
ARG VERSION
19+
20+
ENV GITPOD_BUILD_GIT_COMMIT=${__GIT_COMMIT}
21+
ENV GITPOD_BUILD_VERSION=${VERSION}
22+
ENTRYPOINT [ "/app/usage-controller" ]
23+
CMD [ "-v", "help" ]

components/usage-controller/main.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
2+
// Licensed under the GNU Affero General Public License (AGPL).
3+
// See License-AGPL.txt in the project root for license information.
4+
5+
package main
6+
7+
import "github.com/gitpod-io/gitpod/usage-controller/cmd"
8+
9+
func main() {
10+
cmd.Execute()
11+
}

0 commit comments

Comments
 (0)