Skip to content

Commit

Permalink
Refactor container deployer (run-int-tests) (#862)
Browse files Browse the repository at this point in the history
* refactor pod reconciler (run-int-tests)

* refactor pod reconciler (run-int-tests)

* refactor pod reconciler (run-int-tests)

* refactor pod reconciler (run-int-tests)
  • Loading branch information
achimweigel authored Oct 26, 2023
1 parent 57d1cca commit 7e9d831
Show file tree
Hide file tree
Showing 21 changed files with 243 additions and 478 deletions.
2 changes: 1 addition & 1 deletion apis/.schemes/container-v1alpha1-Configuration.json
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@
"default": false
},
"requeueTimeSeconds": {
"description": "RequeueTime specifies the duration after which the object, which is not yet ready to be garbage collected, is requeued. Defaults to 60.",
"description": "RequeueTime specifies the duration after which the object, which is not yet ready to be garbage collected, is requeued. Defaults to 3600.",
"type": "integer",
"format": "int32",
"default": 0
Expand Down
2 changes: 1 addition & 1 deletion apis/deployer/container/types_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ type GarbageCollection struct {
// Defaults to 5.
Worker int `json:"worker"`
// RequeueTime specifies the duration after which the object, which is not yet ready to be garbage collected, is requeued.
// Defaults to 60.
// Defaults to 3600.
RequeueTimeSeconds int `json:"requeueTimeSeconds"`
}

Expand Down
2 changes: 1 addition & 1 deletion apis/deployer/container/v1alpha1/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,6 @@ func SetDefaults_GarbageCollection(obj *GarbageCollection) {
obj.Worker = 5
}
if obj.RequeueTimeSeconds <= 0 {
obj.RequeueTimeSeconds = 60
obj.RequeueTimeSeconds = 60 * 60
}
}
2 changes: 1 addition & 1 deletion apis/deployer/container/v1alpha1/types_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ type GarbageCollection struct {
// Defaults to 5.
Worker int `json:"worker"`
// RequeueTime specifies the duration after which the object, which is not yet ready to be garbage collected, is requeued.
// Defaults to 60.
// Defaults to 3600.
RequeueTimeSeconds int `json:"requeueTimeSeconds"`
}

Expand Down
2 changes: 1 addition & 1 deletion apis/openapi/openapi_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 11 additions & 4 deletions cmd/container-deployer/container-deployer-controller/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,19 @@ func NewContainerDeployerControllerCommand(ctx context.Context) *cobra.Command {

func (o *options) run(ctx context.Context) error {
o.DeployerOptions.Log.Info("Starting Container Deployer", lc.KeyVersion, version.Get().GitVersion)
if err := containerctlr.AddControllerToManager(o.DeployerOptions.Log,

gc, err := containerctlr.AddControllerToManager(o.DeployerOptions.Log,
o.DeployerOptions.HostMgr,
o.DeployerOptions.LsMgr,
o.Config,
"container"); err != nil {
return fmt.Errorf("unable to setup helm controller")
"container")
if err != nil {
return fmt.Errorf("unable to setup container controller")
}

if gc == nil {
return o.DeployerOptions.StartManagers(ctx)
} else {
return o.DeployerOptions.StartManagers(ctx, gc)
}
return o.DeployerOptions.StartManagers(ctx)
}
22 changes: 11 additions & 11 deletions docs/api-reference/core.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ e.g. &ldquo;<a href="https://json-schema.org/draft/2019-09/schema&quot;">https:/
<code>localTypes</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.JSONSchemaDefinition">
map[string]..JSONSchemaDefinition
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.JSONSchemaDefinition
</a>
</em>
</td>
Expand Down Expand Up @@ -365,7 +365,7 @@ Note that the type information is used to determine the secret key and the type
<code>configurations</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -1069,7 +1069,7 @@ InstallationImports
<code>importDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -1100,7 +1100,7 @@ InstallationExports
<code>exportDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -1223,7 +1223,7 @@ InstallationImports
<code>importDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -1254,7 +1254,7 @@ InstallationExports
<code>exportDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -2876,8 +2876,8 @@ Error
<td>
<code>lastErrors</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.*..Error">
[]*..Error
<a href="#landscaper.gardener.cloud/v1alpha1.*github.com/gardener/landscaper/apis/core/v1alpha1.Error">
[]*github.com/gardener/landscaper/apis/core/v1alpha1.Error
</a>
</em>
</td>
Expand Down Expand Up @@ -3273,7 +3273,7 @@ InstallationImports
<code>importDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -4459,7 +4459,7 @@ InstallationImports
<code>importDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down Expand Up @@ -4490,7 +4490,7 @@ InstallationExports
<code>exportDataMappings</code></br>
<em>
<a href="#landscaper.gardener.cloud/v1alpha1.AnyJSON">
map[string]..AnyJSON
map[string]github.com/gardener/landscaper/apis/core/v1alpha1.AnyJSON
</a>
</em>
</td>
Expand Down
44 changes: 12 additions & 32 deletions pkg/deployer/container/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,9 @@ package container
import (
"fmt"

"github.com/go-logr/logr"
corev1 "k8s.io/api/core/v1"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/manager"
"sigs.k8s.io/controller-runtime/pkg/reconcile"

containerv1alpha1 "github.com/gardener/landscaper/apis/deployer/container/v1alpha1"
"github.com/gardener/landscaper/controller-utils/pkg/logging"
Expand All @@ -25,7 +20,7 @@ import (

// AddControllerToManager adds all necessary deployer controllers to a controller manager.
func AddControllerToManager(logger logging.Logger, hostMgr, lsMgr manager.Manager, config containerv1alpha1.Configuration,
callerName string) error {
callerName string) (*GarbageCollector, error) {
log := logger.WithName("container")

lockingEnabled := config.HPAConfiguration != nil && config.HPAConfiguration.MaxReplicas > 1
Expand All @@ -38,7 +33,7 @@ func AddControllerToManager(logger logging.Logger, hostMgr, lsMgr manager.Manage
Scheme: hostMgr.GetScheme(),
})
if err != nil {
return fmt.Errorf("unable to create direct client for the host cluster: %w", err)
return nil, fmt.Errorf("unable to create direct client for the host cluster: %w", err)
}
containerDeployer, err := NewDeployer(
log,
Expand All @@ -47,21 +42,9 @@ func AddControllerToManager(logger logging.Logger, hostMgr, lsMgr manager.Manage
directHostClient,
config)
if err != nil {
return err
return nil, err
}

podRec := NewPodReconciler(
log.WithName("podReconciler"),
lsMgr.GetClient(),
hostMgr.GetClient(),
lsMgr.GetEventRecorderFor("Landscaper"),
config,
containerDeployer,
Type,
lockingEnabled,
callerName+"pod",
config.TargetSelector)

options := controller.Options{
MaxConcurrentReconciles: config.Controller.Workers,
}
Expand All @@ -79,25 +62,22 @@ func AddControllerToManager(logger logging.Logger, hostMgr, lsMgr manager.Manage
Options: options,
}, config.Controller.Workers, lockingEnabled, callerName)
if err != nil {
return err
}

if err := ctrl.NewControllerManagedBy(hostMgr).
For(&corev1.Pod{}, builder.WithPredicates(newNamespaceAndAnnotationPredicate()), builder.OnlyMetadata).
WithLogConstructor(func(r *reconcile.Request) logr.Logger { return log.Logr() }).
Complete(podRec); err != nil {
return err
return nil, err
}

if config.GarbageCollection.Disable {
log.Info("GarbageCollector disabled")
return nil
return nil, nil
}
return NewGarbageCollector(log.WithName("garbageCollector"),

keepPods := config.DebugOptions != nil && config.DebugOptions.KeepPod
gc := NewGarbageCollector(log.WithName("garbageCollector"),
lsMgr.GetClient(),
hostMgr.GetClient(),
config.Identity,
config.Namespace,
config.GarbageCollection).
Add(hostMgr, config.DebugOptions != nil && config.DebugOptions.KeepPod)
config.GarbageCollection,
keepPods)

return gc, nil
}
5 changes: 3 additions & 2 deletions pkg/deployer/container/container_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,9 @@ var _ = Describe("Template", func() {
})
Expect(err).ToNot(HaveOccurred())

Expect(containerctlr.AddControllerToManager(logging.Discard(), mgr, mgr,
containerv1alpha1.Configuration{}, "template-"+utils.GetNextCounter())).To(Succeed())
_, err = containerctlr.AddControllerToManager(logging.Discard(), mgr, mgr,
containerv1alpha1.Configuration{}, "template-"+utils.GetNextCounter())
Expect(err).To(BeNil())

state, err = testenv.InitState(ctx)
Expect(err).ToNot(HaveOccurred())
Expand Down
Loading

0 comments on commit 7e9d831

Please sign in to comment.