.. SPDX-License-Identifier: GPL-3.0-or-later .. _gettingstarted-startup: ***************************** Upgrading to 6.0.0 from 5.x.x ***************************** Version 6 of Knot Resolver brings one significant change - it introduces *Knot Resolver Manager* - a new way for interacting with Knot Resolver. The Manager brings several new features: * **new declarative configuration** * HTTP API to change configuration on the fly without downtime * it hides complexities of running multiple instances of ``kresd`` Now, you might be worried about the future of ``kresd``. No worries, you can use ``kresd`` directly the same way you did before, nothing changes there right now. However, in the long run, we might make breaking changes in the way ``kresd`` is configured and using it directly is from now on considered advanced. With the release of version 6, there is a new way to configure and control your running ``kresd`` instances so that you don't have to configure multiple systemd services. The new Knot Resolver Manager handles it for you. In the table below, you can find comparison of how things were done before and how they can be done now. Command rosetta =============== In the table below, you can compare the way Knot Resolver was used before and how it can be used now. ========================================== =========================================================================================== ================================================================== Task How to do it now How it was done before ========================================== =========================================================================================== ================================================================== start resolver ``systemctl start knot-resolver`` ``systemctl start kresd@1`` stop resolver ``systemctl stop knot-resolver`` ``systemctl stop kresd@1`` start resolver with 4 worker processes set ``/workers`` to 4 in the config file manually start 4 services by ``systemctl start kresd@{1,2,3,4}`` rolling restart after updating config ``systemctl reload knot-resolver`` (or use API or ``kresctl``) manually restart individual ``kresd@`` services one by one open logs of all instances ``journalctl -u knot-resolver`` ``journalctl -u system-kresd.slice`` open log of a single kresd instances ``journalctl -u knot-resolver _PID=xxx`` ``journalctl -u kresd@1`` updating config programatically use HTTP API or ``kresctl`` command write a custom tool to generate new config and restart ``kresd``'s handling errors during config changes HTTP API just reports error, resolver keeps running with previous config custom tools for every user validate new config ``kresctl validate path/to/new/config.yaml`` (not fully bullet proof), then try to run it run ``kresd`` with the config and see if it fails look at the Lua config ``kresctl convert path/to/new/config.yaml`` ``cat /path/to/config.conf`` gather metrics point Prometheus etc. at the single HTTP API collect metrics manually from all individual processes ========================================== =========================================================================================== ==================================================================