Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] [KIECLOUD-273] Operator sdk v0.9.0 #216

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1,483 changes: 0 additions & 1,483 deletions Gopkg.lock

This file was deleted.

99 changes: 0 additions & 99 deletions Gopkg.toml

This file was deleted.

14 changes: 9 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@ endif
.PHONY: all
all: build

.PHONY: dep
dep:
./hack/go-dep.sh
.PHONY: mod
mod:
./hack/go-mod.sh

.PHONY: format
format:
./hack/go-fmt.sh

.PHONY: go-generate
go-generate: dep
go-generate: mod
$(Q)go generate ./...

.PHONY: sdk-generate
sdk-generate: dep
sdk-generate: mod
operator-sdk generate k8s

.PHONY: vet
Expand Down Expand Up @@ -64,6 +64,10 @@ rhel-scratch:
rhel-release:
./hack/go-build.sh rhel release

.PHONY: mod-tidy
mod-tidy:
./hack/go-mod-tidy.sh

.PHONY: clean
clean:
rm -rf build/_output \
Expand Down
7 changes: 3 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@

## Requirements

- go v1.11+
- dep v0.5.x
- operator-sdk v0.7.0
- go v1.12.7+
- operator-sdk v0.9.0

## Build

Expand Down Expand Up @@ -63,7 +62,7 @@ oc delete kieapp rhpam-trial
Change log level at runtime w/ the `DEBUG` environment variable. e.g. -

```bash
make dep
make mod
make clean
DEBUG="true" operator-sdk up local --namespace=<namespace>
```
Expand Down
49 changes: 45 additions & 4 deletions cmd/manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,34 @@ import (

// Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
_ "k8s.io/client-go/plugin/pkg/client/auth"
"k8s.io/client-go/rest"

"github.com/kiegroup/kie-cloud-operator/pkg/apis"
"github.com/kiegroup/kie-cloud-operator/pkg/controller"
"github.com/kiegroup/kie-cloud-operator/pkg/controller/kieapp/constants"
"github.com/kiegroup/kie-cloud-operator/pkg/controller/kieapp/logs"
"github.com/kiegroup/kie-cloud-operator/version"

"github.com/operator-framework/operator-sdk/pkg/k8sutil"
kubemetrics "github.com/operator-framework/operator-sdk/pkg/kube-metrics"
"github.com/operator-framework/operator-sdk/pkg/leader"
"github.com/operator-framework/operator-sdk/pkg/log/zap"
"github.com/operator-framework/operator-sdk/pkg/metrics"
"github.com/operator-framework/operator-sdk/pkg/restmapper"
sdkVersion "github.com/operator-framework/operator-sdk/version"
"github.com/spf13/pflag"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"sigs.k8s.io/controller-runtime/pkg/client/config"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/runtime/signals"
)

// Change below variables to serve metrics on different host or port.
var (
metricsHost = "0.0.0.0"
metricsPort int32 = 8383
metricsHost = "0.0.0.0"
metricsPort int32 = 8383
operatorMetricsPort int32 = 8686
)
var log = logs.GetLogger("cmd")

Expand Down Expand Up @@ -81,6 +88,7 @@ func main() {
mgr, err := manager.New(cfg, manager.Options{
Namespace: namespace,
SyncPeriod: &syncPeriod,
MapperProvider: restmapper.NewDynamicRESTMapper,
MetricsBindAddress: fmt.Sprintf("%s:%d", metricsHost, metricsPort),
})
if err != nil {
Expand Down Expand Up @@ -115,8 +123,17 @@ func main() {
os.Exit(1)
}

// Create Service object to expose the metrics port.
_, err = metrics.ExposeMetricsPort(ctx, metricsPort)
if err = serveCRMetrics(cfg); err != nil {
log.Info("Could not generate and serve custom resource metrics", "error", err.Error())
}

// Add to the below struct any other metrics ports you want to expose.
servicePorts := []v1.ServicePort{
{Port: metricsPort, Name: metrics.OperatorPortName, Protocol: v1.ProtocolTCP, TargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: metricsPort}},
{Port: operatorMetricsPort, Name: metrics.CRPortName, Protocol: v1.ProtocolTCP, TargetPort: intstr.IntOrString{Type: intstr.Int, IntVal: operatorMetricsPort}},
}
// Create Service object to expose the metrics port(s).
_, err = metrics.CreateMetricsService(ctx, cfg, servicePorts)
if err != nil {
log.Info("Error exposing metrics. ", err)
}
Expand All @@ -137,3 +154,27 @@ func main() {
os.Exit(1)
}
}

// serveCRMetrics gets the Operator/CustomResource GVKs and generates metrics based on those types.
// It serves those metrics on "http://metricsHost:operatorMetricsPort".
func serveCRMetrics(cfg *rest.Config) error {
// Below function returns filtered operator/CustomResource specific GVKs.
// For more control override the below GVK list with your own custom logic.
filteredGVK, err := k8sutil.GetGVKsFromAddToScheme(apis.AddToScheme)
if err != nil {
return err
}
// Get the namespace the operator is currently deployed in.
operatorNs, err := k8sutil.GetOperatorNamespace()
if err != nil {
return err
}
// To generate metrics in other namespaces, add the values below.
ns := []string{operatorNs}
// Generate and serve custom resource specific metrics.
err = kubemetrics.GenerateAndServeCRMetrics(cfg, ns, filteredGVK, metricsHost, operatorMetricsPort)
if err != nil {
return err
}
return nil
}
49 changes: 49 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
module github.com/kiegroup/kie-cloud-operator

go 1.12

require (
github.com/NYTimes/gziphandler v1.0.1 // indirect
github.com/RHsyseng/console-cr-form v0.0.0-20190614162449-0d455ea16817
github.com/RHsyseng/operator-utils v0.0.0-20190703170907-ea948e9684cd
github.com/ghodss/yaml v1.0.0
github.com/go-logr/logr v0.1.0
github.com/go-openapi/spec v0.19.0
github.com/gobuffalo/packr/v2 v2.5.2
github.com/google/go-cmp v0.2.0
github.com/imdario/mergo v0.3.7
github.com/openshift/api v3.9.0+incompatible
github.com/openshift/client-go v3.9.0+incompatible
github.com/operator-framework/operator-lifecycle-manager v0.0.0-20190128024246-5eb7ae5bdb7a
github.com/operator-framework/operator-sdk v0.9.1-0.20190712203509-e1d904fa80a4
github.com/pavel-v-chernykh/keystore-go v2.1.0+incompatible
github.com/pkg/errors v0.8.1
github.com/prometheus/common v0.2.0
github.com/spf13/pflag v1.0.3
github.com/stretchr/testify v1.3.0
go.uber.org/zap v1.9.1
k8s.io/api v0.0.0-20190612125737-db0771252981
k8s.io/apiextensions-apiserver v0.0.0-20190228180357-d002e88f6236
k8s.io/apimachinery v0.0.0-20190612125636-6a5db36e93ad
k8s.io/client-go v11.0.0+incompatible
k8s.io/kube-openapi v0.0.0-20190603182131-db7b694dc208 // indirect
sigs.k8s.io/controller-runtime v0.1.12
sigs.k8s.io/controller-tools v0.1.10
)

// Pinned to kubernetes-1.13.4
replace (
k8s.io/api => k8s.io/api v0.0.0-20190222213804-5cb15d344471
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.0.0-20190228180357-d002e88f6236
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190221213512-86fb29eff628
k8s.io/client-go => k8s.io/client-go v0.0.0-20190228174230-b40b2a5939e4
)

replace (
github.com/coreos/prometheus-operator => github.com/coreos/prometheus-operator v0.29.0
k8s.io/kube-state-metrics => k8s.io/kube-state-metrics v1.6.0
sigs.k8s.io/controller-runtime => sigs.k8s.io/controller-runtime v0.1.12
sigs.k8s.io/controller-tools => sigs.k8s.io/controller-tools v0.1.11-0.20190411181648-9d55346c2bde
)

replace github.com/operator-framework/operator-sdk => github.com/operator-framework/operator-sdk v0.9.0
Loading