Skip to content

Commit a1a237a

Browse files
authored
[Refactor] Configurable throttle info (#937)
1 parent 73f8fad commit a1a237a

File tree

169 files changed

+6079
-2393
lines changed

Some content is hidden

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

169 files changed

+6079
-2393
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
- (Feature) Allow to configure action timeouts
1212
- (Feature) (AT) Add ArangoTask API
1313
- (Bugfix) Fix NPE in State fetcher
14+
- (Refactor) Configurable throttle inspector
1415

1516
## [1.2.8](https://github.com/arangodb/kube-arangodb/tree/1.2.8) (2022-02-24)
1617
- Do not check License V2 on Community images

cmd/admin.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import (
4646
"github.com/arangodb/kube-arangodb/pkg/util/constants"
4747
"github.com/arangodb/kube-arangodb/pkg/util/errors"
4848
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
49-
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/secret"
49+
secretv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/secret/v1"
5050
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
5151
)
5252

@@ -291,7 +291,7 @@ func createClient(endpoints []string, certCA *x509.CertPool, auth connection.Aut
291291
}
292292

293293
// getJWTTokenFromSecrets returns token from the secret.
294-
func getJWTTokenFromSecrets(ctx context.Context, secrets secret.ReadInterface, name string) (connection.Authentication, error) {
294+
func getJWTTokenFromSecrets(ctx context.Context, secrets secretv1.ReadInterface, name string) (connection.Authentication, error) {
295295
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
296296
defer cancel()
297297

@@ -309,7 +309,7 @@ func getJWTTokenFromSecrets(ctx context.Context, secrets secret.ReadInterface, n
309309
}
310310

311311
// getCACertificate returns CA certificate from the secret.
312-
func getCACertificate(ctx context.Context, secrets secret.ReadInterface, name string) (*x509.CertPool, error) {
312+
func getCACertificate(ctx context.Context, secrets secretv1.ReadInterface, name string) (*x509.CertPool, error) {
313313
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
314314
defer cancel()
315315

cmd/main.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func init() {
165165
f.BoolVar(&operatorOptions.enableStorage, "operator.storage", false, "Enable to run the ArangoLocalStorage operator")
166166
f.BoolVar(&operatorOptions.enableBackup, "operator.backup", false, "Enable to run the ArangoBackup operator")
167167
f.BoolVar(&operatorOptions.enableApps, "operator.apps", false, "Enable to run the ArangoApps operator")
168-
f.BoolVar(&operatorOptions.enableK2KClusterSync, "operator.k2k-cluster-sync", false, "Enable to run the ArangoClusterSynchronizations operator")
168+
f.BoolVar(&operatorOptions.enableK2KClusterSync, "operator.k2k-cluster-sync", false, "Enable to run the ListSimple operator")
169169
f.BoolVar(&operatorOptions.versionOnly, "operator.version", false, "Enable only version endpoint in Operator")
170170
f.StringVar(&operatorOptions.alpineImage, "operator.alpine-image", UBIImageEnv.GetOrDefault(defaultAlpineImage), "Docker image used for alpine containers")
171171
f.MarkDeprecated("operator.alpine-image", "Value is not used anymore")
@@ -226,10 +226,12 @@ func executeMain(cmd *cobra.Command, args []string) {
226226

227227
// Prepare log service
228228
var err error
229-
logService, err = logging.NewService(defaultLogLevel, logLevels)
230-
if err != nil {
229+
if err := logging.InitGlobalLogger(defaultLogLevel, logLevels); err != nil {
231230
cliLog.Fatal().Err(err).Msg("Failed to initialize log service")
232231
}
232+
233+
logService = logging.GlobalLogger()
234+
233235
logService.ConfigureRootLogger(func(log zerolog.Logger) zerolog.Logger {
234236
podNameParts := strings.Split(name, "-")
235237
operatorID := podNameParts[len(podNameParts)-1]

cmd/storage.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,13 @@ func init() {
6262

6363
// Run the provisioner
6464
func cmdStorageProvisionerRun(cmd *cobra.Command, args []string) {
65-
//goflag.CommandLine.Parse([]string{"-logtostderr"})
6665
var err error
67-
logService, err = logging.NewService(defaultLogLevel, logLevels)
68-
if err != nil {
66+
if err := logging.InitGlobalLogger(defaultLogLevel, logLevels); err != nil {
6967
cliLog.Fatal().Err(err).Msg("Failed to initialize log service")
7068
}
7169

70+
logService = logging.GlobalLogger()
71+
7272
// Log version
7373

7474
cliLog.Info().Msgf("Starting arangodb local storage provisioner (%s), version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ require (
2828
github.com/arangodb/go-driver v1.2.1
2929
github.com/arangodb/go-driver/v2 v2.0.0-20211021031401-d92dcd5a4c83
3030
github.com/arangodb/go-upgrade-rules v0.0.0-20180809110947-031b4774ff21
31+
github.com/arangodb/rebalancer v0.1.1
3132
github.com/cenkalti/backoff v2.2.1+incompatible
3233
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9
3334
github.com/ghodss/yaml v1.0.0

pkg/apis/deployment/definitions.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ const (
3333
ArangoClusterSynchronizationResourceKind = "ArangoClusterSynchronization"
3434
ArangoClusterSynchronizationResourcePlural = "arangoclustersynchronizations"
3535

36+
ArangoTaskCRDName = ArangoTaskResourcePlural + "." + ArangoDeploymentGroupName
37+
ArangoTaskResourceKind = "ArangoTask"
38+
ArangoTaskResourcePlural = "arangotasks"
39+
3640
ArangoDeploymentGroupName = "database.arangodb.com"
3741
)
3842

pkg/deployment/access_package.go

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ const (
4949
func (d *Deployment) createAccessPackages(ctx context.Context) error {
5050
log := d.deps.Log
5151
spec := d.apiObject.Spec
52-
secrets := d.deps.Client.Kubernetes().CoreV1().Secrets(d.GetNamespace())
5352

5453
if !spec.Sync.IsEnabled() {
5554
// We're only relevant when sync is enabled
@@ -66,21 +65,15 @@ func (d *Deployment) createAccessPackages(ctx context.Context) error {
6665
}
6766

6867
// Remove all access packages that we did build, but are no longer needed
69-
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
70-
defer cancel()
71-
secretList, err := secrets.List(ctxChild, metav1.ListOptions{})
72-
if err != nil {
73-
log.Debug().Err(err).Msg("Failed to list secrets")
74-
return errors.WithStack(err)
75-
}
76-
for _, secret := range secretList.Items {
77-
if d.isOwnerOf(&secret) {
68+
secretList := d.currentState.Secret().V1().ListSimple()
69+
for _, secret := range secretList {
70+
if d.isOwnerOf(secret) {
7871
if _, found := secret.Data[constants.SecretAccessPackageYaml]; found {
7972
// Secret is an access package
8073
if _, wanted := apNameMap[secret.GetName()]; !wanted {
8174
// We found an obsolete access package secret. Remove it.
82-
err = globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error {
83-
return secrets.Delete(ctxChild, secret.GetName(), metav1.DeleteOptions{
75+
err := globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error {
76+
return d.SecretsModInterface().Delete(ctxChild, secret.GetName(), metav1.DeleteOptions{
8477
Preconditions: &metav1.Preconditions{UID: &secret.UID},
8578
})
8679
})
@@ -105,14 +98,9 @@ func (d *Deployment) createAccessPackages(ctx context.Context) error {
10598
// it is does not already exist.
10699
func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName string) error {
107100
log := d.deps.Log
108-
ns := d.GetNamespace()
109-
secrets := d.deps.Client.Kubernetes().CoreV1().Secrets(ns)
110101
spec := d.apiObject.Spec
111102

112-
err := globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error {
113-
_, err := secrets.Get(ctxChild, apSecretName, metav1.GetOptions{})
114-
return err
115-
})
103+
_, err := d.currentState.Secret().V1().Read().Get(ctx, apSecretName, metav1.GetOptions{})
116104
if err == nil {
117105
// Secret already exists
118106
return nil
@@ -123,17 +111,15 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin
123111

124112
// Fetch client authentication CA
125113
clientAuthSecretName := spec.Sync.Authentication.GetClientCASecretName()
126-
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
127-
defer cancel()
128-
clientAuthCert, clientAuthKey, _, err := k8sutil.GetCASecret(ctxChild, secrets, clientAuthSecretName, nil)
114+
clientAuthCert, clientAuthKey, _, err := k8sutil.GetCASecret(ctx, d.currentState.Secret().V1().Read(), clientAuthSecretName, nil)
129115
if err != nil {
130116
log.Debug().Err(err).Msg("Failed to get client-auth CA secret")
131117
return errors.WithStack(err)
132118
}
133119

134120
// Fetch TLS CA public key
135121
tlsCASecretName := spec.Sync.TLS.GetCASecretName()
136-
tlsCACert, err := k8sutil.GetCACertficateSecret(ctx, secrets, tlsCASecretName)
122+
tlsCACert, err := k8sutil.GetCACertficateSecret(ctx, d.currentState.Secret().V1().Read(), tlsCASecretName)
137123
if err != nil {
138124
log.Debug().Err(err).Msg("Failed to get TLS CA secret")
139125
return errors.WithStack(err)
@@ -220,7 +206,7 @@ func (d *Deployment) ensureAccessPackage(ctx context.Context, apSecretName strin
220206
// Attach secret to owner
221207
secret.SetOwnerReferences(append(secret.GetOwnerReferences(), d.apiObject.AsOwner()))
222208
err = globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(ctx, func(ctxChild context.Context) error {
223-
_, err := secrets.Create(ctxChild, secret, metav1.CreateOptions{})
209+
_, err := d.SecretsModInterface().Create(ctxChild, secret, metav1.CreateOptions{})
224210
return err
225211
})
226212
if err != nil {

pkg/deployment/cleanup.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@ import (
2828
core "k8s.io/api/core/v1"
2929
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
3030

31-
"github.com/arangodb/kube-arangodb/pkg/deployment/resources/inspector"
3231
"github.com/arangodb/kube-arangodb/pkg/util"
3332
"github.com/arangodb/kube-arangodb/pkg/util/constants"
3433
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
3534
inspectorInterface "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector"
35+
pvcv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/persistentvolumeclaim/v1"
36+
podv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/pod/v1"
3637
)
3738

3839
// removePodFinalizers removes all finalizers from all pods owned by us.
@@ -41,7 +42,7 @@ func (d *Deployment) removePodFinalizers(ctx context.Context, cachedStatus inspe
4142

4243
found := false
4344

44-
if err := cachedStatus.IteratePods(func(pod *core.Pod) error {
45+
if err := cachedStatus.Pod().V1().Iterate(func(pod *core.Pod) error {
4546
log.Info().Str("pod", pod.GetName()).Msgf("Removing Pod Finalizer")
4647
if count, err := k8sutil.RemovePodFinalizers(ctx, cachedStatus, log, d.PodsModInterface(), pod, constants.ManagedFinalizers(), true); err != nil {
4748
log.Warn().Err(err).Msg("Failed to remove pod finalizers")
@@ -62,7 +63,7 @@ func (d *Deployment) removePodFinalizers(ctx context.Context, cachedStatus inspe
6263
}
6364
}
6465
return nil
65-
}, inspector.FilterPodsByLabels(k8sutil.LabelsForDeployment(d.GetName(), ""))); err != nil {
66+
}, podv1.FilterPodsByLabels(k8sutil.LabelsForDeployment(d.GetName(), ""))); err != nil {
6667
return false, err
6768
}
6869

@@ -75,7 +76,7 @@ func (d *Deployment) removePVCFinalizers(ctx context.Context, cachedStatus inspe
7576

7677
found := false
7778

78-
if err := cachedStatus.IteratePersistentVolumeClaims(func(pvc *core.PersistentVolumeClaim) error {
79+
if err := cachedStatus.PersistentVolumeClaim().V1().Iterate(func(pvc *core.PersistentVolumeClaim) error {
7980
log.Info().Str("pvc", pvc.GetName()).Msgf("Removing PVC Finalizer")
8081
if count, err := k8sutil.RemovePVCFinalizers(ctx, cachedStatus, log, d.PersistentVolumeClaimsModInterface(), pvc, constants.ManagedFinalizers(), true); err != nil {
8182
log.Warn().Err(err).Msg("Failed to remove PVC finalizers")
@@ -84,7 +85,7 @@ func (d *Deployment) removePVCFinalizers(ctx context.Context, cachedStatus inspe
8485
found = true
8586
}
8687
return nil
87-
}, inspector.FilterPersistentVolumeClaimsByLabels(k8sutil.LabelsForDeployment(d.GetName(), ""))); err != nil {
88+
}, pvcv1.FilterPersistentVolumeClaimsByLabels(k8sutil.LabelsForDeployment(d.GetName(), ""))); err != nil {
8889
return false, err
8990
}
9091

0 commit comments

Comments
 (0)