Skip to content

Commit

Permalink
Update operator, handle context, graceful shutdown (#127)
Browse files Browse the repository at this point in the history
* Update operator

* Update operator, handle context, shutdown server

* update dockerfile

* update dependencies
  • Loading branch information
Richard87 authored May 31, 2024
1 parent 319a592 commit 894b30f
Show file tree
Hide file tree
Showing 10 changed files with 149 additions and 111 deletions.
12 changes: 6 additions & 6 deletions .github/workflows/build-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,24 @@ jobs:
target_configs: ${{ steps.get-target-configs.outputs.target_configs }}
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Get target configs
id: get-target-configs
run: |
configs=$(ls $GITHUB_WORKSPACE/.github/workflows/config/${GITHUB_REF_NAME} | jq -Rsc '. / "\n" - [""]')
echo "target_configs=${configs}" >> $GITHUB_OUTPUT
build-deploy-image:
name: Build & push
runs-on: ubuntu-20.04
needs:
- get-target-configs
strategy:
fail-fast: false
matrix:
matrix:
config: ${{ fromJson(needs.get-target-configs.outputs.target_configs) }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Persist environment from ${{ matrix.config }} across steps
run: |
env_vars_from_cfg=`env -i GITHUB_WORKSPACE=$GITHUB_WORKSPACE /bin/bash -c "set -a && source $GITHUB_WORKSPACE/.github/workflows/config/${GITHUB_REF_NAME}/${{ matrix.config }} && printenv"`
Expand All @@ -42,7 +42,7 @@ jobs:
client-id: ${{ env.AZURE_CLIENT_ID }}
tenant-id: ${{ env.AZURE_TENANT_ID }}
subscription-id: ${{ env.AZURE_SUBSCRIPTION_ID }}

- name: Build image
run: |
$GITHUB_WORKSPACE/.github/workflows/scripts/build-push.sh
$GITHUB_WORKSPACE/.github/workflows/scripts/build-push.sh
2 changes: 1 addition & 1 deletion .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
if: always()
id: breaking
continue-on-error: true
run: swagger diff --break <(git show master:swaggerui/html/swagger.json) swagger.json > /tmp/swagger_breaking_changes.txt
run: swagger diff --break <(git show main:swaggerui/html/swagger.json) swaggerui/html/swagger.json > /tmp/swagger_breaking_changes.txt
- name: Add comment
if: failure() && steps.breaking.outcome == 'failure'
uses: mshick/add-pr-comment@v2
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM golang:1.21-alpine3.19 as builder
FROM golang:1.22-alpine3.19 as builder
ENV GO111MODULE=on

RUN addgroup -S -g 1000 job-scheduler
Expand Down
9 changes: 6 additions & 3 deletions api/test/test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
radixLabels "github.com/equinor/radix-operator/pkg/apis/utils/labels"
"github.com/equinor/radix-operator/pkg/client/clientset/versioned"
radixclientfake "github.com/equinor/radix-operator/pkg/client/clientset/versioned/fake"
kedafake "github.com/kedacore/keda/v2/pkg/generated/clientset/versioned/fake"
prometheusclient "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned"
prometheusfake "github.com/prometheus-operator/prometheus-operator/pkg/client/versioned/fake"
corev1 "k8s.io/api/core/v1"
Expand Down Expand Up @@ -199,20 +200,22 @@ func SetupTest(appName, appEnvironment, appComponent, appDeployment string, hist
_ = os.Setenv(defaults.OperatorEnvLimitDefaultMemoryEnvironmentVariable, "500M")
kubeclient := fake.NewSimpleClientset()
radixclient := radixclientfake.NewSimpleClientset()
kedaclient := kedafake.NewSimpleClientset()
prometheusClient := prometheusfake.NewSimpleClientset()
kubeUtil, _ := kube.New(kubeclient, radixclient, secretstoragefake.NewSimpleClientset())
secretStoreClient := secretstoragefake.NewSimpleClientset()
kubeUtil, _ := kube.New(kubeclient, radixclient, kedaclient, secretStoreClient)
return radixclient, kubeclient, prometheusClient, kubeUtil
}

func (params *TestParams) ApplyRd(kubeUtil *kube.Kube) *v1.RadixDeployment {
envVarsConfigMap, envVarsMetadataConfigMap, _ := kubeUtil.GetOrCreateEnvVarsConfigMapAndMetadataMap(params.Namespace, params.AppName, params.JobComponentName)
envVarsConfigMap, envVarsMetadataConfigMap, _ := kubeUtil.GetOrCreateEnvVarsConfigMapAndMetadataMap(context.Background(), params.Namespace, params.AppName, params.JobComponentName)
envVarsConfigMap.Data = params.EnvVarsConfigMapData
metadataMap := make(map[string]kube.EnvVarMetadata)
for name, value := range params.EnvVarsMetadataConfigMapData {
metadataMap[name] = kube.EnvVarMetadata{RadixConfigValue: value}
}
_ = kube.SetEnvVarsMetadataMapToConfigMap(envVarsMetadataConfigMap, metadataMap)
_ = kubeUtil.UpdateConfigMap(params.Namespace, envVarsConfigMap, envVarsMetadataConfigMap)
_ = kubeUtil.UpdateConfigMap(context.Background(), params.Namespace, envVarsConfigMap, envVarsMetadataConfigMap)

rd := utils.ARadixDeployment().
WithDeploymentName(params.DeploymentName).
Expand Down
5 changes: 2 additions & 3 deletions api/v1/jobs/job_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,15 @@ func applyRadixDeploymentEnvVarsConfigMaps(kubeUtil *kube.Kube, rd *v1.RadixDepl
}

func ensurePopulatedEnvVarsConfigMaps(kubeUtil *kube.Kube, rd *v1.RadixDeployment, deployComponent v1.RadixCommonDeployComponent) *corev1.ConfigMap {
initialEnvVarsConfigMap, _, _ := kubeUtil.GetOrCreateEnvVarsConfigMapAndMetadataMap(rd.GetNamespace(),
rd.Spec.AppName, deployComponent.GetName())
initialEnvVarsConfigMap, _, _ := kubeUtil.GetOrCreateEnvVarsConfigMapAndMetadataMap(context.Background(), rd.GetNamespace(), rd.Spec.AppName, deployComponent.GetName())
desiredConfigMap := initialEnvVarsConfigMap.DeepCopy()
for envVarName, envVarValue := range deployComponent.GetEnvironmentVariables() {
if strings.HasPrefix(envVarName, "RADIX_") {
continue
}
desiredConfigMap.Data[envVarName] = envVarValue
}
err := kubeUtil.ApplyConfigMap(rd.GetNamespace(), initialEnvVarsConfigMap, desiredConfigMap)
err := kubeUtil.ApplyConfigMap(context.Background(), rd.GetNamespace(), initialEnvVarsConfigMap, desiredConfigMap)
if err != nil {
panic(err)
}
Expand Down
4 changes: 2 additions & 2 deletions api/v2/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -785,7 +785,7 @@ func (h *handler) GarbageCollectPayloadSecrets(ctx context.Context) error {
logger := log.Ctx(ctx)
logger.Debug().Msgf("Garbage collecting payload secrets")
payloadSecretRefNames, _ := h.getJobComponentPayloadSecretRefNames(ctx)
payloadSecrets, err := h.kubeUtil.ListSecretsWithSelector(h.env.RadixDeploymentNamespace, radixLabels.GetRadixBatchDescendantsSelector(h.env.RadixComponentName).String())
payloadSecrets, err := h.kubeUtil.ListSecretsWithSelector(ctx, h.env.RadixDeploymentNamespace, radixLabels.GetRadixBatchDescendantsSelector(h.env.RadixComponentName).String())
if err != nil {
return apiErrors.NewFromError(err)
}
Expand All @@ -797,7 +797,7 @@ func (h *handler) GarbageCollectPayloadSecrets(ctx context.Context) error {
logger.Debug().Msgf("skipping deletion of an orphaned payload secret %s, created within 24 hours", payloadSecret.GetName())
continue
}
err := h.DeleteSecret(payloadSecret)
err := h.DeleteSecret(ctx, payloadSecret)
if err != nil {
logger.Error().Err(err).Msgf("failed deleting of an orphaned payload secret %s", payloadSecret.GetName())
}
Expand Down
10 changes: 6 additions & 4 deletions api/v2/secrets.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
package apiv2

import (
"context"

apiErrors "github.com/equinor/radix-job-scheduler/api/errors"
"github.com/equinor/radix-operator/pkg/apis/utils/labels"
corev1 "k8s.io/api/core/v1"
kubeLabels "k8s.io/apimachinery/pkg/labels"
)

// GetSecretsForRadixBatch Get secrets for the RadixBatch
func (h *handler) GetSecretsForRadixBatch(batchName string) ([]*corev1.Secret, error) {
selector, err := h.kubeUtil.ListSecretsWithSelector(h.env.RadixDeploymentNamespace, getLabelSelectorForRadixBatchSecret(batchName))
func (h *handler) GetSecretsForRadixBatch(ctx context.Context, batchName string) ([]*corev1.Secret, error) {
selector, err := h.kubeUtil.ListSecretsWithSelector(ctx, h.env.RadixDeploymentNamespace, getLabelSelectorForRadixBatchSecret(batchName))
if err != nil {
return nil, apiErrors.NewFromError(err)
}
return selector, nil
}

// DeleteSecret Delete the service
func (h *handler) DeleteSecret(secret *corev1.Secret) error {
err := h.kubeUtil.DeleteSecret(secret.Namespace, secret.Name)
func (h *handler) DeleteSecret(ctx context.Context, secret *corev1.Secret) error {
err := h.kubeUtil.DeleteSecret(ctx, secret.Namespace, secret.Name)
if err != nil {
return apiErrors.NewFromError(err)
}
Expand Down
51 changes: 29 additions & 22 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
module github.com/equinor/radix-job-scheduler

go 1.21
go 1.22.0

toolchain go1.21.0
toolchain go1.22.1

require (
dario.cat/mergo v1.0.0
github.com/equinor/radix-common v1.9.2
github.com/equinor/radix-operator v1.50.7
github.com/equinor/radix-operator v1.55.2
github.com/gin-gonic/gin v1.9.1
github.com/go-swagger/go-swagger v0.31.0
github.com/golang/mock v1.6.0
github.com/kedacore/keda/v2 v2.13.1
github.com/prometheus-operator/prometheus-operator/pkg/client v0.70.0
github.com/rs/zerolog v1.32.0
github.com/spf13/pflag v1.0.5
github.com/stretchr/testify v1.9.0
k8s.io/api v0.29.0
k8s.io/apimachinery v0.29.0
k8s.io/client-go v0.29.0
k8s.io/api v0.30.1
k8s.io/apimachinery v0.30.1
k8s.io/client-go v0.30.1
sigs.k8s.io/secrets-store-csi-driver v1.4.0
)

Expand All @@ -28,20 +29,24 @@ require (
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
github.com/gabriel-vasile/mimetype v1.4.2 // indirect
github.com/emicklei/go-restful/v3 v3.11.2 // indirect
github.com/evanphx/json-patch v5.8.1+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
github.com/expr-lang/expr v1.15.8 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.21.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.14.0 // indirect
github.com/go-playground/validator/v10 v10.17.0 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
Expand All @@ -53,39 +58,41 @@ require (
github.com/leodido/go-urn v1.2.4 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.70.0 // indirect
github.com/prometheus/client_golang v1.18.0 // indirect
github.com/prometheus/client_model v0.5.0 // indirect
github.com/prometheus/common v0.45.0 // indirect
github.com/prometheus/client_golang v1.19.0 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.53.0 // indirect
github.com/prometheus/procfs v0.12.0 // indirect
github.com/rs/xid v1.5.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
golang.org/x/arch v0.3.0 // indirect
golang.org/x/crypto v0.23.0 // indirect
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/oauth2 v0.20.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/term v0.20.0 // indirect
golang.org/x/text v0.15.0 // indirect
golang.org/x/time v0.5.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apiextensions-apiserver v0.29.0 // indirect
k8s.io/klog/v2 v2.110.1 // indirect
k8s.io/kube-openapi v0.0.0-20240103051144-eec4567ac022 // indirect
k8s.io/utils v0.0.0-20240102154912-e7106e64919e // indirect
sigs.k8s.io/controller-runtime v0.16.3 // indirect
k8s.io/apiextensions-apiserver v0.30.1 // indirect
k8s.io/klog/v2 v2.120.1 // indirect
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
k8s.io/utils v0.0.0-20240310230437-4693a0247e57 // indirect
knative.dev/pkg v0.0.0-20240116073220-b488e7be5902 // indirect
sigs.k8s.io/controller-runtime v0.18.2 // indirect
sigs.k8s.io/gateway-api v1.0.0 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
Expand Down
Loading

0 comments on commit 894b30f

Please sign in to comment.