Skip to content

Commit

Permalink
Add a flag on controllers to configure resyncPeriod
Browse files Browse the repository at this point in the history
This should allow advanced user/cluster-admin to configure the
resyncPeriod to a value that fit their cluster instead of relying on
the default 10h one.

This is related to tektoncd#3676.

Signed-off-by: Vincent Demeester <[email protected]>
  • Loading branch information
vdemeester authored and tekton-robot committed Jun 24, 2024
1 parent 89ff137 commit c2dc17a
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 1 deletion.
3 changes: 3 additions & 0 deletions cmd/controller/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ func main() {
flag.StringVar(&opts.Images.ShellImage, "shell-image", "", "The container image containing a shell")
flag.StringVar(&opts.Images.ShellImageWin, "shell-image-win", "", "The container image containing a windows shell")
flag.StringVar(&opts.Images.WorkingDirInitImage, "workingdirinit-image", "", "The container image containing our working dir init binary.")
flag.DurationVar(&opts.ResyncPeriod, "resync-period", controller.DefaultResyncPeriod, "The period between two resync run (going through all objects)")

// This parses flags.
cfg := injection.ParseAndGetRESTConfigOrDie()
Expand Down Expand Up @@ -98,6 +99,8 @@ func main() {
}()

ctx = filteredinformerfactory.WithSelectors(ctx, v1beta1.ManagedByLabelKey)
ctx = controller.WithResyncPeriod(ctx, opts.ResyncPeriod)

sharedmain.MainWithConfig(ctx, ControllerLogKey, cfg,
taskrun.NewController(opts, clock.RealClock{}),
pipelinerun.NewController(opts, clock.RealClock{}),
Expand Down
82 changes: 82 additions & 0 deletions docs/tekton-controller-flags.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<!--
---
linkTitle: "Tekton Controllers flags"
weight: 105
---
-->

# Tekton Controllers flags

The different controllers `tektoncd/pipeline` ships comes with a set of flags
that can be changed (in the `yaml` payloads) for advanced use cases. This page
is documenting them.

## Common set of flags

The following flags are available on all "controllers", aka `controller`, `webhook`, `events` and `resolvers`.

```
-add_dir_header
If true, adds the file directory to the header of the log messages
-alsologtostderr
log to standard error as well as files (no effect when -logtostderr=true)
-cluster string
Defaults to the current cluster in kubeconfig.
-disable-ha
Whether to disable high-availability functionality for this component. This flag will be deprecated and removed when we have promoted this feature to stable, so do not pass it without filing an issue upstream!
-kube-api-burst int
Maximum burst for throttle.
-kube-api-qps float
Maximum QPS to the server from the client.
-kubeconfig string
Path to a kubeconfig. Only required if out-of-cluster.
-log_backtrace_at value
when logging hits line file:N, emit a stack trace
-log_dir string
If non-empty, write log files in this directory (no effect when -logtostderr=true)
-log_file string
If non-empty, use this log file (no effect when -logtostderr=true)
-log_file_max_size uint
Defines the maximum size a log file can grow to (no effect when -logtostderr=true). Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
-logtostderr
log to standard error instead of files (default true)
-one_output
If true, only write logs to their native severity level (vs also writing to each lower severity level; no effect when -logtostderr=true)
-server string
The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster.
-skip_headers
If true, avoid header prefixes in the log messages
-skip_log_headers
If true, avoid headers when opening log files (no effect when -logtostderr=true)
-stderrthreshold value
logs at or above this threshold go to stderr when writing to files and stderr (no effect when -logtostderr=true or -alsologtostderr=false) (default 2)
-v value
number for the log level verbosity
-vmodule value
comma-separated list of pattern=N settings for file-filtered logging
```

## `controller`

The main controller binary has additional flags to configure its behavior.

```
-entrypoint-image string
The container image containing our entrypoint binary.
-namespace string
Namespace to restrict informer to. Optional, defaults to all namespaces.
-nop-image string
The container image used to stop sidecars
-resync-period duration
The period between two resync run (going through all objects) (default 10h0m0s)
-shell-image string
The container image containing a shell
-shell-image-win string
The container image containing a windows shell
-sidecarlogresults-image string
The container image containing the binary for accessing results.
-threads-per-controller int
Threads (goroutines) to create per controller (default 2)
-workingdirinit-image string
The container image containing our working dir init binary.
```
5 changes: 4 additions & 1 deletion pkg/apis/pipeline/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@ limitations under the License.

package pipeline

import "time"

// Options holds options passed to the Tekton Pipeline controllers
// typically via command-line flags.
type Options struct {
Images Images
Images Images
ResyncPeriod time.Duration
}

0 comments on commit c2dc17a

Please sign in to comment.