talos/internal/pkg/ntp/consts.go
Andrey Smirnov 2ea20f598a feat: replace timed with time sync controller
This is a complete rewrite of time sync process.

Now the time sync process starts early at boot time, and it adapts to
configuration changes:

* before config is available, `pool.ntp.org` is used
* once config is available, configured time servers are used

Controller updates same time sync resource as other controllers had
dependency on, so they have a chance to wait for the time sync event.

Talos services which depend on time now wait on same resource instead of
waiting on timed health.

New features:

* time sync now sticks to the particular time server unless there's an
error from that server, and server is changed in that case, this
improves time sync accuracy

* time sync acts on config changes immediately, so it's possible to
reconfigure time sync at any time

* there's a new 'epoch' field in time sync resources which allows
time-dependent controllers to regenerate certs when there's a big enough
jump in time

Features to implement later:

* apid shouldn't depend on timed, it should be started early and it
should regenerate certs on time jump

* trustd should be updated in same way

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2021-03-29 09:29:43 -07:00

19 lines
711 B
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
package ntp
import "time"
const (
// MaxAllowablePoll is the 'recommended' interval for querying a time server.
MaxAllowablePoll = 1024 * time.Second
// MinAllowablePoll is the minimum time allowed for a client to query a time server.
MinAllowablePoll = 4 * time.Second
// AdjustTimeLimit is a maximum time drift to compensate via adjtimex().
AdjustTimeLimit = 128 * time.Millisecond
// EpochLimit is a minimum time difference to signal that change as epoch change.
EpochLimit = 15 * time.Minute
)