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

consistent environment settings. #201

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ mqtt_password_file=${PWD}/secrets/mqtt.password
mqtt_config_file=${PWD}/secrets/mqtt.config

# Log verbosity level
klog_v:=10
klog_v:=4

# Location of the JSON web key set used to verify tokens:
jwks_url:=https://sso.redhat.com/auth/realms/redhat-external/protocol/openid-connect/certs
Expand Down Expand Up @@ -126,11 +126,11 @@ GOLANGCI_LINT_BIN:=$(shell go env GOPATH)/bin/golangci-lint
### Envrionment-sourced variables with defaults
# Can be overriden by setting environment var before running
# Example:
# OCM_ENV=testing make run
# export OCM_ENV=testing; make run
# MAESTRO_ENV=testing make run
# export MAESTRO_ENV=testing; make run
# Set the environment to development by default
ifndef OCM_ENV
OCM_ENV:=development
ifndef MAESTRO_ENV
MAESTRO_ENV:=development
endif

ifndef TEST_SUMMARY_FORMAT
Expand Down Expand Up @@ -202,7 +202,7 @@ install: check-gopath
# Examples:
# make test TESTFLAGS="-run TestSomething"
test:
OCM_ENV=testing gotestsum --jsonfile-timing-events=$(unit_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -v $(TESTFLAGS) \
MAESTRO_ENV=testing gotestsum --jsonfile-timing-events=$(unit_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -v $(TESTFLAGS) \
./pkg/... \
./cmd/...
.PHONY: test
Expand All @@ -218,7 +218,7 @@ test:
# make test-integration TESTFLAGS="-run TestAccountsGet" runs TestAccountsGet
# make test-integration TESTFLAGS="-short" skips long-run tests
test-integration:
OCM_ENV=testing gotestsum --jsonfile-timing-events=$(integration_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -ldflags -s -v -timeout 1h $(TESTFLAGS) \
MAESTRO_ENV=testing gotestsum --jsonfile-timing-events=$(integration_test_json_output) --format $(TEST_SUMMARY_FORMAT) -- -p 1 -ldflags -s -v -timeout 1h $(TESTFLAGS) \
./test/integration
.PHONY: test-integration

Expand Down Expand Up @@ -268,7 +268,7 @@ cmds:
--filename="templates/$*-template.yml" \
--local="true" \
--ignore-unknown-parameters="true" \
--param="ENVIRONMENT=$(OCM_ENV)" \
--param="ENVIRONMENT=$(MAESTRO_ENV)" \
--param="KLOG_V=$(klog_v)" \
--param="SERVER_REPLICAS=$(SERVER_REPLICAS)" \
--param="DATABASE_HOST=$(db_host)" \
Expand Down
2 changes: 1 addition & 1 deletion cmd/maestro/environments/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ const (
DevelopmentEnv string = "development"
ProductionEnv string = "production"

EnvironmentStringKey string = "OCM_ENV"
EnvironmentStringKey string = "MAESTRO_ENV"
EnvironmentDefault string = DevelopmentEnv
)

Expand Down
23 changes: 21 additions & 2 deletions cmd/maestro/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/go-logr/zapr"
"github.com/openshift-online/maestro/cmd/maestro/agent"
"github.com/openshift-online/maestro/cmd/maestro/environments"
"github.com/openshift-online/maestro/cmd/maestro/migrate"
"github.com/openshift-online/maestro/cmd/maestro/servecmd"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -36,11 +37,29 @@ func main() {
klog.Fatalf("can't parse log level: %v", err)
}

// Initialize zap logger
zc := zap.NewDevelopmentConfig()
// Initialize zap logger based on environment
var zc zap.Config
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for zap, it can support dynamically update the log level. that can help us on the troubleshooting. Can we do it instead of update the level in environment variable only? maybe define a configmap for the log level.

env := environments.GetEnvironmentStrFromEnv()
switch env {
case environments.DevelopmentEnv:
zc = zap.NewDevelopmentConfig()
case environments.ProductionEnv:
zc = zap.NewProductionConfig()
default:
zc = zap.NewDevelopmentConfig()
}

// zap log level is the inverse of klog log level, for more details refer to:
// https://github.com/go-logr/zapr?tab=readme-ov-file#increasing-verbosity
// zap level mapping to klog level:
// fatal: -5, panic: -4, dpanic: -3, error: -2, warn: -1, info: 0, debug: 1
// the higher the log level, the more verbose the logs:
// if the log level is 0, it will log everything except debug logs;
// if the log level is 1, it will log everything including debug logs;
// if the log level is 2 or higher, it will log everything including klog verbose logs.
zc.Level = zap.NewAtomicLevelAt(zapcore.Level(0 - logLevel))
// Disable stacktrace for production environment
zc.DisableStacktrace = true
zapLog, err := zc.Build()
if err != nil {
klog.Fatalf("can't initialize zap logger: %v", err)
Expand Down
13 changes: 13 additions & 0 deletions templates/agent-template-aro-hcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ labels:
template: maestro-agent
parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which maestro environment to use for this deployment
value: production

- name: AGENT_NAMESPACE
description: namespace of maestro agent

Expand All @@ -33,6 +38,11 @@ parameters:
displayName: Image tag
value: latest

- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "3"

objects:
- apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
Expand Down Expand Up @@ -271,7 +281,10 @@ objects:
- --workload-source-driver=mqtt
- --workload-source-config=/secrets/mqtt/config.yaml
- --cloudevents-client-id=$(CONSUMER_NAME)-work-agent
- -v=${KLOG_V}
env:
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: CONSUMER_NAME
valueFrom:
secretKeyRef:
Expand Down
14 changes: 14 additions & 0 deletions templates/agent-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ labels:
template: maestro-agent
parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which maestro environment to use for this deployment
value: production

- name: AGENT_NAMESPACE
description: namespace of maestro agent

Expand All @@ -33,6 +38,11 @@ parameters:
displayName: Image tag
value: latest

- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "3"

- name: MESSAGE_DRIVER_TYPE
displayName: Message Driver Type
description: Message driver type, mqtt or grpc.
Expand Down Expand Up @@ -290,13 +300,17 @@ objects:
- name: maestro-agent
image: ${IMAGE_REGISTRY}/${IMAGE_REPOSITORY}:${IMAGE_TAG}
imagePullPolicy: IfNotPresent
env:
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
command:
- /usr/local/bin/maestro
- agent
- --consumer-name=${CONSUMER_NAME}
- --workload-source-driver=${MESSAGE_DRIVER_TYPE}
- --workload-source-config=/secrets/${MESSAGE_DRIVER_TYPE}/config.yaml
- --cloudevents-client-id=${CONSUMER_NAME}-work-agent
- -v=${KLOG_V}
volumeMounts:
- name: ${MESSAGE_DRIVER_TYPE}
mountPath: /secrets/${MESSAGE_DRIVER_TYPE}
Expand Down
6 changes: 3 additions & 3 deletions templates/service-template-aro-hcp.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which Account Manager environment to use for this deployment
description: Which maestro environment to use for this deployment
value: production

- name: IMAGE_REGISTRY
Expand All @@ -38,7 +38,7 @@ parameters:
- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "10"
value: "3"

- name: MEMORY_REQUEST
description: Memory request for the API pods.
Expand Down Expand Up @@ -230,7 +230,7 @@ objects:
mountPath: /secrets/mqtt-creds
readOnly: true
env:
- name: "AMS_ENV"
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: POD_NAME
valueFrom:
Expand Down
6 changes: 3 additions & 3 deletions templates/service-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ parameters:

- name: ENVIRONMENT
displayName: Environment
description: Which Account Manager environment to use for this deployment
description: Which maestro environment to use for this deployment
value: production

- name: IMAGE_REGISTRY
Expand Down Expand Up @@ -47,7 +47,7 @@ parameters:
- name: KLOG_V
displayName: KLOG V Level
description: Log verbosity level
value: "10"
value: "3"

- name: MEMORY_REQUEST
description: Memory request for the API pods.
Expand Down Expand Up @@ -314,7 +314,7 @@ objects:
- name: authentication
mountPath: /configs/authentication
env:
- name: "AMS_ENV"
- name: "MAESTRO_ENV"
value: "${ENVIRONMENT}"
- name: POD_NAME
valueFrom:
Expand Down
Loading