Skip to content

Commit ff85ea5

Browse files
author
Tim Bruijnzeels
authored
Release 0.9 (#523)
1 parent c88a4bf commit ff85ea5

File tree

6 files changed

+43
-3836
lines changed

6 files changed

+43
-3836
lines changed

Cargo.lock

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
# Note: some of these values are also used when building Debian packages below.
33
name = "krill"
4-
version = "0.9.0-rc3"
4+
version = "0.9.0"
55
edition = "2018"
66
authors = [ "The NLnet Labs RPKI team <[email protected]>" ]
77
description = "Resource Public Key Infrastructure (RPKI) daemon"

Changelog.md

+38-197
Original file line numberDiff line numberDiff line change
@@ -1,215 +1,56 @@
11
# Change Log
22

3-
## 0.9.0 RC 3
43

5-
This release candidate reverses the proposed split in binaries for Krill CA and Publication Server
6-
functions. Separate binaries were introduced in an effort to make things less confusing to end-users,
7-
meaning we would not show functions that most users do not need. However, it seems that the benefits
8-
to users who use Krill for CA functions only were marginal, at the expense of complicating operations
9-
for Publication Server users significantly.
4+
## 0.9.0 'One for All'
105

11-
Updated documentation for this version is available here:
12-
https://krill.docs.nlnetlabs.nl/en/v0.9.0rc3/
6+
This is the first major release of Krill in a while.
137

14-
In addition to this a number of smaller issues were resolved as well:
15-
- Optimistic rebuild in case of surplus events found (#530)
16-
- Reschedule failures *after* the time to check again has passed, not before! (#524)
17-
- The UI translations have now been updated (#381)
8+
While basic ROA management is unchanged, there were many changes under the hood:
189

19-
Unfortunately we could not find any volunteers to help us with the French translations of new strings
20-
in the UI. The UI will fall back to English for these items. If you are a native French speaker and
21-
would like to help out, please let us know.
10+
- Multi-user support in the User Interface (local users or OpenID Connect)
11+
- Reduce disk space usage and growth over time
12+
- API and naming consistency (in preparation for 1.0 in future)
13+
- Publication Server improvements (to whom it may concern)
14+
- Many small improvements and minor bug fixes
2215

16+
For a full list of issues that were included in this release see:
17+
https://github.com/NLnetLabs/krill/projects/4
2318

24-
## 0.9.0 RC 2
19+
Updated documentation is available here:
20+
https://krill.docs.nlnetlabs.nl/en/stable/index.html
2521

26-
This release candidate fixes a number of issues introduced in 0.9.0-rc1:
22+
With multi-user support you can now give people in your organization individual access rights to
23+
your CA - and they no longer need to share a password. If you have an OpenID Connect provider then
24+
you can integrate Krill with it. Read more here:
25+
https://krill.docs.nlnetlabs.nl/en/stable/multi-user.html
2726

28-
- Log migration progress and speed up process (#503)
29-
- Rename auto-renewal commands in history (#501)
30-
- Re-issue objects properly during a key rollover (#509)
31-
- Withdraw objects when removing a parent (#508)
27+
Krill versions before 0.9.0 keep a lot of data around that is not strictly needed. This can clog up
28+
your system *and* it makes the Krill history difficult to parse. History can seen using `krillc history`.
29+
We will include support for inspecting history in the UI soon.
3230

33-
Furthermore we made the following improvements:
31+
There were some API and CLI changes introduced in this release. Over time things had become a bit
32+
inconsistent and we felt we needed to fix that before we can consider going for the Krill 1.0 release.
33+
If you are using automation then these changes may break your current integrations. Please have a
34+
look at the following page to see if and how this affects you:
35+
https://krill.docs.nlnetlabs.nl/en/stable/upgrade.html
3436

35-
- Report *which* file/dir was involved in case of I/O errors (#495)
36-
- Change HTTP access log to 'debug'. Use KRILL_HTTP_LOG_INFO=1 if you want 'info' (#513)
37-
- Refine logging command / change logging (#518)
38-
- Improve certificate request logic and logging (#514)
37+
Note that your Krill data store will be upgraded automatically if you upgrade to this release. This
38+
upgrade can take some time, up to around 30 minutes dependent on the amount of history which accumulated
39+
over time and the speed of your system. During the migration you will not be able to update your ROAs,
40+
but your existing ROAs will remain available to RPKI validators. I.e. there is no downtime expected
41+
with regards to RPKI validation.
3942

40-
Regarding certificate request logic and logging. Krill CAs will now report *which* new resources
41-
were received from, or removed by a parent. As part of this change we also fixed a harmless,
42-
but annoying, bug in certificate request logic. Krill would wrongfully report that a parent had
43-
reduced the eligible 'not after' time, when in fact it had extended it, and then request the
44-
new certificate regardless. Krill will now report correctly, and will only request a new certificate
45-
if the new 'not after' time is more than 10% further into the future compared to the current certificate.
46-
This is safe and will reduce noise levels where parent CAs use a simple strategy which returns a
47-
new 'not after' time for every request.
43+
We have tested this on various (big) Krill instances running CAs as well as Publication Servers. Still,
44+
we recommend that you make a backup of your data store before upgrading. In case the upgrade should
45+
unexpectedly fail for you, please restore your old data, run the previous binary, and contact us so
46+
that we can make a fix. Alternatively, copy your data except for the `keys` directory to a test system
47+
and then use the new Krill binary there with the following env variable set so you can test the data
48+
migration:
4849

49-
The UI also received some fixes:
50-
- Show the repository status properly (introduced in 0.9.0-rc1)
51-
- Update the link to documentation
52-
- Show the alert banner for new versions only for 'production' version
50+
KRILL_UPGRADE_ONLY=1
5351

54-
## 0.9.0 RC 1
55-
56-
This release introduces a number of breaking API changes as well as new functionality. We invite users
57-
to test this release and contact us in case of any issues, comments or questions.
58-
59-
A quick overview of the main points:
60-
61-
- API
62-
63-
If you are currently using the CLI and/or API for automation please check the updated documentation here:
64-
https://krill.readthedocs.io/en/latest/cli.html
65-
66-
- Data Migration
67-
68-
This new release includes an automated migration and clean up of existing data. We have tested this
69-
migration of course, but still we would very much like to encourage existing users to help us test
70-
this further on real data.
71-
72-
In order to test the upgrade you can do the following:
73-
- install Krill 0.9.0-rc2 on a test machine
74-
- copy over your existing data directory, but exclude the `keys` directory
75-
- set the ENV variable KRILL_UPGRADE_ONLY
76-
- start krill v0.9.0-rc1 using your copied data directory
77-
78-
A minimal Krill config file to achieve this would be:
79-
```
80-
data_dir = "/path/to/your/copied/data"
81-
admin_token = "secret"
82-
```
83-
84-
If all goes well you should see the message:
85-
```
86-
Krill upgrade successful
87-
```
88-
89-
Note, by excluding the `keys` directory you make sure that this new Krill instance cannot do anything
90-
with your current private keys. E.g. it cannot publish anything or request certificates from your
91-
parent CA.
92-
93-
If there are any issues please let us know so that we can resolve these issues before we finalize the
94-
Krill v0.9.0 release. If you would like us to test your data instead then please contact us. We will
95-
then ask you to give us a tar ball of your data directory - again excluding the `keys` directory.
96-
97-
- Publication Server
98-
99-
The Krill Publication Server now uses its own binaries for the server and CLI. If you are using Krill
100-
to host your own Publication Server, then please have a good look at the section below called
101-
"Separate binary for Publication Server". Most importantly, be aware that the new binaries `krillpubd`
102-
and `krillpubc` are not included in the debian packages or Docker images for the moment. We have
103-
two open issue to resolve this before the 0.9.0 release (#361 and #490 respectively). For the moment
104-
you will need to use `cargo` to install these binaries as described here:
105-
106-
https://krill.readthedocs.io/en/latest/install-and-run.html
107-
108-
109-
Please read below for more details!
110-
111-
112-
### Breaking Changes
113-
114-
This is release includes breaking changes in the Krill API. In addition to this we have also added
115-
dedicated binaries for running your own Publication Server (`krillpubd`) and its own CLI (`krillpubc`).
116-
You will also find that a number of commands of `krillc` have been changed or moved around. While
117-
we take no pleasure in introducing such breaking changes to users we felt that they were necessary
118-
for the future maintainability and useability of Krill. Furthermore, with these changes we believe
119-
that we will be on track for a 1.0.0 release in the near future.
120-
121-
If you were using the CLI or API for automation please have a look at the updated documentation here:
122-
https://krill.readthedocs.io/en/latest/cli.html
123-
124-
125-
126-
### Login with Named Users
127-
128-
The Krill User Interface now has support for named users. Until version 0.8.2 Krill had
129-
one admin token that was used by the CLI, API and UI. Now you can configure multiple users
130-
using a local configuration file, or an OpenID Connect provider and have different access
131-
restrictions for every user. The CLI still relies on a single admin token.
132-
133-
You can read more about this new feature here:
134-
https://krill.readthedocs.io/en/latest/multi-user.html
135-
136-
137-
### Data Usage and History
138-
139-
Krill uses an event sourced architecture, meaning that its current state is the direct result of
140-
all past events that occurred. Rather than just persisting the current state itself, it can
141-
be rebuilt based on those events. We believe that this is an important feature, because it
142-
ensures by definition that the history, or audit log, of past events explains the current state
143-
of Krill CAs. So, this is very attractive from a security and accountability perspective.
144-
145-
Krill history until version 0.8.2 has been growing excessively because every RPKI CA has to
146-
republish new Manifests and CRLs regularly as a protection against potential replay attacks.
147-
Over time this results in a lot of changes, and a lot of history.
148-
149-
However, the changes resulting from the republication of Manifests and CRLs are not really
150-
interesting in the long term because they do not reflect any semantic changes resulting from
151-
user actions, or interactions between CAs and their parent or child CAs.
152-
153-
Therefore we decided to change the Krill architecture to a hybrid event-sourcing model. All
154-
changes, except republication, are still tracked as commands and events in the Krill history.
155-
So there is a complete overview of all semantically important changes maintained.
156-
157-
As a result of this the amount disk space used by Krill is reduced significantly. When you
158-
upgrade to Krill 0.9.0 your existing history will be migrated and cleaned up automatically.
159-
160-
161-
### Master Token is now Admin Token
162-
163-
See issue #433. Up until now Krill was using an array of inconsistent and inappropriate
164-
names to refer to the token that can be used for authentication and authorization. We have
165-
now renamed all these references to "ADMIN TOKEN".
166-
167-
This means that the `auth_token` in the `krill.conf` file was renamed to `admin_token`,
168-
The env variable alternative for the Krill daemon was renamed from `KRILL_AUTH_TOKEN`
169-
to `KRILL_ADMIN_TOKEN`.
170-
171-
In this release Krill will still support the old names, but we may remove this support
172-
in a future release.
173-
174-
### Separate binary for Publication Server
175-
176-
Krill now has a dedicated binary for running an RPKI Publication Server, and a dedicated CLI
177-
for managing it: `krillpubd` and `krillpubc`.
178-
179-
We believe that having dedicated binaries for this purpose will make Krill easier to manage
180-
for the vast majority of operators who do not need to run their own Publication Server. And
181-
for operators who do need to run their own Publication Server, this will make it easier to
182-
manage different access control settings for their Krill Publication and CA Servers, and it
183-
will make it easier to migrate or phase out Publication Servers in future.
184-
185-
#### Migration for existing users
186-
187-
If you are using Krill to operate a CA only, and you use third party service for your RPKI
188-
repository, then this change does not affect you.
189-
190-
- Dedicated Mode
191-
192-
If you are running a dedicated Krill instance to operate your own publication server, you should
193-
start it using the newly provided binary 'krillpubd' instead of 'krill'. You can use the same
194-
configuration file and data directory that you were using until now.
195-
196-
- Mixed Mode
197-
198-
If you are running Krill in a "mixed mode" where you operate both one or more CAs **and** you have
199-
an embedded repository server then no action is required at this time. You can continue to use the
200-
`krill` binary and your current configuration file and data directory.
201-
202-
You will be required to run a separate `krill` binary for your CA(s) and `krillpubd` for your
203-
Publication Server in a future release, when we have implemented this [open issue](https://github.com/NLnetLabs/krill/issues/480)
204-
to allow existing CAs to migrate to using a new repository by doing a specialized key roll.
205-
206-
### Other fixes
207-
208-
ROAs will now be recreated if your CA lost a prefix, and gets it back later. This will help in
209-
the rather unlikely case that a parent CA temporarily removed one of your resources in error. (#96)
210-
211-
Let the Publication Server write the notification.xml file to a new file, and then rename it.
212-
This prevents that Relying Parties can retrieve a half-written file. (#352)
52+
Finally, note that you need to run at least Krill 0.6.0 in order to upgrade. If you run an older version
53+
you will need to upgrade to version 0.8.2 first.
21354

21455
## 0.8.2 'Can't touch this'
21556

0 commit comments

Comments
 (0)