Commit graph

334 commits

Author SHA1 Message Date
pennae 50f9b3107a
Merge pull request #185474 from pennae/option-docs-md
nixos/*: more options md conversion
2022-08-12 23:23:26 +02:00
illustris a92ca6263a nixos/hadoop.hbase: change mkOption to mkEnableOption 2022-08-07 21:21:45 +02:00
illustris d1af9d1517 nixos/hadoop: allow overriding conf files generated by site options with extraconfdirs 2022-08-07 21:21:45 +02:00
illustris 1285a586c5 nixos/hadoop: fix incorrect merging of yarnSiteInternal 2022-08-07 21:21:45 +02:00
illustris ac403b83fb nixos/hadoop: add HBase submodule 2022-08-07 21:21:45 +02:00
pennae 087472b1e5 nixos/*: automatically convert option docs 2022-08-06 20:39:12 +02:00
pennae 2e751c0772 treewide: automatically md-convert option descriptions
the conversion procedure is simple:

 - find all things that look like options, ie calls to either `mkOption`
   or `lib.mkOption` that take an attrset. remember the attrset as the
   option
 - for all options, find a `description` attribute who's value is not a
   call to `mdDoc` or `lib.mdDoc`
 - textually convert the entire value of the attribute to MD with a few
   simple regexes (the set from mdize-module.sh)
 - if the change produced a change in the manual output, discard
 - if the change kept the manual unchanged, add some text to the
   description to make sure we've actually found an option. if the
   manual changes this time, keep the converted description

this procedure converts 80% of nixos options to markdown. around 2000
options remain to be inspected, but most of those fail the "does not
change the manual output check": currently the MD conversion process
does not faithfully convert docbook tags like <code> and <package>, so
any option using such tags will not be converted at all.
2022-07-30 15:16:34 +02:00
Euan Kemp f158ac45ef nixos/k3s: use default cgroup-driver again
Setting `cgroup-driver=systemd` was originally necessary to match with
docker, else the kubelet would not start (#111835)

However, since then, docker support has been dropped from k3s (#177790).
As such, this option is much less necessary.

More importantly, it now seems to be actively causing issues. Due to an
upstream k3s bug, it's resulting in the kubelet and containerd having
different cgroup drivers, which seems to result in some difficult to
debug failure modes.

See
https://github.com/NixOS/nixpkgs/issues/181790#issuecomment-1188840862
for a description of this problem.

Removing this flag entirely seems reasonable to me, and it results in
k3s working again on my machine.
2022-07-19 02:52:12 -07:00
zowoq e2659eea36 nixos/kubernetes: use copyToRoot instead of deprecated contents 2022-07-15 10:23:06 +10:00
superherointj a6a0c44760 k3s: remove docker support 2022-06-15 16:40:29 -03:00
Artturi b734f40478
Merge pull request #154004 from illustris/hadoop 2022-03-16 14:05:56 +02:00
Ryan Mulligan 0ab73f9a3f
Merge pull request #162535 from astro/pacemaker
pacemaker: init
2022-03-15 16:06:56 -07:00
illustris e1017adb32 nixos/hadoop: add module options for commonly used service configs 2022-03-11 14:26:57 +05:30
illustris bef71d7c53 nixos/hadoop: use CGroups to enforce container limits by default 2022-03-11 14:18:44 +05:30
illustris 716b0dfaaf nixos/hadoop: add gateway role 2022-03-11 14:18:44 +05:30
illustris d39056d165 nixos/hadoop: fix tests for hadoop 2 and 3.2 2022-03-11 14:18:44 +05:30
illustris 8aeb60f034 nixos/hadoop: use FairScheduler by default 2022-03-11 14:18:44 +05:30
illustris c82d48913f nixos/hadoop: add HADOOP_CONF_DIR to env 2022-03-11 14:18:44 +05:30
illustris 0f97c9ae82 nixos/hadoop: disable openFirewall by default 2022-03-11 14:18:44 +05:30
illustris f6cf1ced33 nixos/hadoop: refactor HDFS configs 2022-03-11 14:18:34 +05:30
Astro a60ab35dd6 nixos: init corosync, pacemaker modules 2022-03-08 20:28:56 +01:00
illustris dd5f004b06 nixos/hadoop: refactor HDFS options 2022-03-09 00:06:17 +05:30
illustris 6efa931c51 nixos/hadoop: fix mkenableoption text 2022-03-09 00:06:17 +05:30
Euan Kemp e6d1c597f1 nixos/k3s: use the systemd driver for docker + unified cgroups
This is necessary for it to work at all. The single-node-docker test
will fail without this change.

Also add a release note for it.
2022-03-05 11:30:53 -08:00
ngerstle 8aaa0699db k3s: enable enableUnifiedCgroupHierarchy 2022-03-05 00:18:17 -08:00
zowoq ec2028eb3c nixos/kubernetes: use kubectl from kubernetes
- also clarify kubectl wrapper naming
2022-02-25 19:22:30 +10:00
Sarah Brofeldt 152dd4c81d nixos/kubernetes: Update deprecated scheduler opts
--port and --address have both been deprecated and are nonfunctional
starting with kubernetes 1.23. Use --secure-port and --bind-address
instead. This means that users can no longer rely on the insecure port
for anything, so update the release notes accordingly.
2022-02-15 08:31:49 +01:00
Thomas Dy 97864e984d nixos/kubernetes: actually set containerd to use systemd cgroups
The correct configuration is listed in the kubernetes documentation
https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd

The correct option can also be seen in `containerd config default`
2022-01-08 17:29:32 +10:00
pennae 2d356a1969 nixos/kubernetes: move all k8s docs out of the sandbox
otherwise the manual won't build.

ideally they'll move back into the sandbox at some point, but we're
obviously not qualified to put them there.
2022-01-08 17:13:27 +10:00
pennae 635376d3af Revert "nixos/kubernetes: make lib option internal and readonly"
This reverts commit 7e28421e17.
2022-01-08 17:13:27 +10:00
Robert Hensing 70d27303da
Merge pull request #149532 from pennae/split-docs-build
nixos/*: split docs build
2022-01-04 22:33:23 +01:00
zowoq 45dbb95515 nixos/kubernetes: remove dashboard 2021-12-30 18:51:03 +10:00
pennae 7e28421e17 nixos/kubernetes: make lib option internal and readonly
this set almost certainly shouldn't be touched by users, nor listed in
the manual. make it internal and use it only through the option path to
make clear that this should not be modified.
2021-12-29 20:12:02 +01:00
pennae abef4b10b6 nixos/kubernetes: add missing defaultText to expression default 2021-12-29 19:57:55 +01:00
Graham Christensen 06edb74413
Merge pull request #148785 from pennae/more-option-doc-staticizing
treewide: more defaultText for options
2021-12-17 11:14:08 -05:00
pennae 2d564521c0 treewide: add literalDocBook text to options with complex defaults
some options have default that are best described in prose, such as
defaults that depend on the system stateVersion, defaults that are
derivations specific to the surrounding context, or those where the
expression is much longer and harder to understand than a simple text
snippet.
2021-12-09 01:38:24 +01:00
pennae ed673a69db treewide: add defaultText for options with simple cfg.* expression defaults
adds defaultText for options with defaults that use only literals, full config.*
paths, and the cfg shortcut binding.
2021-12-09 01:14:16 +01:00
pennae fb0e5be843 treewide: add defaultText for options with simple interpolation defaults
adds defaultText for all options that use `cfg.*` values in their
defaults, but only for interpolations with no extra processing (other
than toString where necessary)
2021-12-09 01:13:48 +01:00
pennae f6d0b014fe nixos/kubernetes: add defaultText for addons options using top.*
the kubernetes modules cross-reference their config using an additional shortcut
binding `top = config.services.kubernetes`, expand those to defaultText like
`cfg` previously.
2021-12-09 01:13:12 +01:00
pennae e24a8775a8 treewide: set defaultText for options using simple path defaults
adds defaultText for all options that set their default to a path expression
using the ubiquitous `cfg` shortcut bindings.
2021-12-09 01:12:13 +01:00
pennae 2512455639 nixos/*: add trivial defaultText for options with simple defaults 2021-12-02 22:35:04 +01:00
Sandro 95382df163
Merge pull request #138125 from juselius/unified-cgroup-fix 2021-11-13 21:21:28 +01:00
illustris 57225575df nixos/hadoop: fix errors in HTTPFS 2021-11-04 11:26:32 +05:30
illustris 8331b56701 nixos/hadoop: correct openFirewall options 2021-11-04 11:18:11 +05:30
illustris c8df915e0e nixos/hadoop: add links for config files 2021-11-04 11:07:32 +05:30
illustris 42e14ff69f nixos/hadoop: replace enable = mkoption bools with mkEnableOption 2021-11-03 22:44:25 +05:30
illustris c3d147f507 nixos/hadoop: replace "enabled" options with "enable" options
The module has been using "enabled" in place of enable since init ( 0c10b2baa6 )
2021-11-03 22:44:25 +05:30
illustris 9ca4363191 nixos/hadoop: add HTTPFS 2021-11-03 22:44:25 +05:30
illustris 39c007ce9c nixos/hadoop: Add HA capabilities
- Add HDFS journalnode and ZKFC services
- Test failover of HDFS and YARN master services in full hadoop test
- Check if a minimal HDFS cluster works in the minimal HDFS test
2021-11-03 22:44:24 +05:30
illustris 91bb2b7016 nixos/hadoop: fix yarn, add more service configuration options 2021-10-25 16:30:19 +09:00
Naïm Favier 2ddc335e6f
nixos/doc: clean up defaults and examples 2021-10-04 12:47:20 +02:00
rnhmjoj 6de529c64a
nixos/kubernetes: fix containerd settings
mkDefault must be applied to each setting individually, otherwise a
single change to `containerd.settings` replaces the whole attribute set.
2021-09-23 00:21:40 +02:00
rnhmjoj 5abd562a18
nixos/kubernetes: fix deprecation warning
The option `containerd.configFile` has been replaced by an equivalent
`settings` attribute set.
2021-09-22 16:11:49 +02:00
illustris 71d15cf816 nixos/spark: init module 2021-09-17 22:34:47 +05:30
Jonas Juselius e922fad914 kubelet: Disable cgroupsv2 for kubelet hosts 2021-09-16 13:05:01 +02:00
zowoq 07109dd495 nixos/kubernetes: add cni-plugin-flannel to kubelet.cni.packages
the flannel plugin was removed from `cni-plugins` in ee8ed2cd8d
2021-09-12 12:47:45 +10:00
Alexandru Scvortov 8afd31c625 kubernetes: fix flaky test and run tests as group 2021-08-16 14:59:58 +01:00
Alexandru Scvortov 6c38bb6d5d kubernetes: fix breakage introduced by upgrade to 1.22 2021-08-13 17:55:03 +01:00
Alexandru Scvortov ed62c1c663 kubernetes: make corefile configurable 2021-07-28 20:15:57 +01:00
Alexandru Scvortov b9acd426df kubernetes: add passthru tests
Also defensively quote a path and reformat a comment to trigger the
right review.
2021-07-28 11:27:22 +01:00
zimbatm efbd199ffb
nixos/k3s: add configPath option
This is useful when the whole k3s config is generated on boot. The
server address or token might be dynamically injected using user-data.
2021-07-19 13:40:58 +02:00
Jörg Thalheim f2b81f91be
Merge pull request #125205 from Mic92/token-file
k3s: token file
2021-07-15 13:37:04 +01:00
Alexandru Scvortov ab1567e812 kubernetes: fix conntrack-tools package name, missing dir, and tests 2021-06-28 20:33:17 +01:00
Jörg Thalheim 6fdb73a3b4
Merge pull request #118801 from Mic92/k3s
nixos/k3s: improve zfs/docker support
2021-06-05 07:54:54 +02:00
Jörg Thalheim 03582eb6e3
nixos/k3s: add zfs to path 2021-06-05 07:52:53 +02:00
Jörg Thalheim 7c310e8d28
nixos/k3s: add to environment.systemPackages for adminstration 2021-06-05 07:52:48 +02:00
Jörg Thalheim 11a38f62f0
k3s: add tokenFile option
To avoid having secrets in the nix store.
2021-06-01 13:35:04 +02:00
Jörg Thalheim 852739337b
nixos/k3s: add to environment.systemPackages for adminstration 2021-06-01 13:35:03 +02:00
David Arnold 13750b25a5 kubernetes: fix generated kubeconfig
The absence of current-context in the right place resulted in obscure
bugs. The reason this has not been detected before can only be that
it was unused.
2021-05-26 23:39:48 -07:00
Gabriel Gonzalez 8e9d803bac
Fix description for services.kubernetes.addonManager.enable (#71448)
`mkEnableOption` already prefixes the description with
"Whether to enable"
2021-05-19 13:49:27 -07:00
Johan Thomsen 2142f88526 nixos/containerd: sanitize StateDirectory and RuntimeDirectory 2021-05-17 06:17:18 +10:00
Silvan Mosberger 1245d855b8
Merge pull request #119426 from onixie/master
nixos/kubernetes: allow merging multiple definitions of extraOpts
2021-05-03 14:32:00 +02:00
Jörg Thalheim 2a48ef1426
Merge pull request #103228 from ThinkChaos/fix_k3s_start
nixos/k3s: Update service to match upstream
2021-04-14 09:01:33 +01:00
Yc.Shen d43f88e3df nixos/kubernetes: allow merging multiple definitions of extraOpts 2021-04-13 21:54:53 +09:00
ThinkChaos 0b7c8b92f4
nixos/k3s: Change dependency to network.service
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
2021-04-13 13:37:41 +02:00
ajs124 c6d4dae35d treewide: fix eval without aliases after 9378fdf87e 2021-04-08 13:33:09 +02:00
jali-clarke cc582f1f59 nixos/kubernetes: import all platforms for seeded images
This fixes a class of errors seen on aarch64 during coredns import where content was seen to be missing ("digest xxx not found") or "failed to get reader from content store" depending on which coredns version was being imported.
2021-03-15 09:03:40 -04:00
Johan Thomsen 7b5c38e973 nixos/kubernetes: docker -> containerd
also, nixos/containerd: module init
2021-03-07 12:51:14 +10:00
Yurii Matsiuk 7da62867be nixos/kubernetes: adapt module and test cases to fit kubernetes v1.20.X as well as coredns v1.7.X 2021-03-07 12:50:39 +10:00
Sandro 7c5064e14a
Merge pull request #111153 from helsinki-systems/hadoop
nixos/hadoop: add types
2021-02-02 14:14:41 +01:00
Jörg Thalheim 63178ae561
nixos/kubernetes: add zfs to path 2021-02-01 17:59:18 +01:00
Fritz Otlinghaus 3c7c9a43dc
nixos/k3s: add extraFlags type 2021-01-31 11:21:54 +01:00
Scriptkiddi 0cbbc2dfcd
nixos/hadoop: add types 2021-01-29 13:01:42 +01:00
volth bc0d605cf1 treewide: fix double quoted strings in meta.description
Signed-off-by: Ben Siraphob <bensiraphob@gmail.com>
2021-01-24 19:56:59 +07:00
Frederik Rietdijk b2a3891e12 Merge master into staging-next 2020-11-27 15:09:19 +01:00
Graham Christensen bc49a0815a
utillinux: rename to util-linux 2020-11-24 12:42:06 -05:00
ThinkChaos 4db9d279c4 nixos/k3s: Use optional for more idiomatic code 2020-11-23 20:30:35 +01:00
Florian Klink 5d45f269aa nixos/k3s: disable unifiedCgroupHierarchy
This gets automatically disabled by docker if the docker backend is
used, but the bundled containerd also doesn't seem to support cgroupsv2,
so disable it explicitly here, too.
2020-11-19 16:56:46 +01:00
ThinkChaos acb845dd11 nixos/k3s: Add dependency on firewall.service 2020-11-09 22:17:39 +01:00
ThinkChaos 7514f00733 nixos/k3s: Update service to match upstream
Fixes race between k3s and network.
2020-11-09 19:50:36 +01:00
Sascha Grunert 35f7a3347c
kubernetes: fix certificate generation
Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2020-09-10 13:07:32 +02:00
John Axel Eriksson 41a95b1b7d
The systemd unit for k3s should differ between agents and servers 2020-04-23 07:55:23 +02:00
Euan Kemp bc138f407f
nixos/k3s: add initial k3s service
* nixos/k3s: simplify config expression

* nixos/k3s: add config assertions and trim unneeded bits

* nixos/k3s: add a test that k3s works; minor module improvements

This is a single-node test. Eventually we should also have a multi-node
test to verify the agent bit works, but that one's more involved.

* nixos/k3s: add option description

* nixos/k3s: add defaults for token/serveraddr

Now that the assertion enforces their presence, we dont' need to use the typesystem for it.

* nixos/k3s: remove unneeded sudo in test

* nixos/k3s: add to test list
2020-04-17 16:39:54 +02:00
Michael Reilly 84cf00f980
treewide: Per RFC45, remove all unquoted URLs 2020-04-10 17:54:53 +01:00
Silvan Mosberger 1d0fc9729d
nixos/treewide: Fix incorrectly rendered examples
Many options define their example to be a Nix value without using
literalExample. This sometimes gets rendered incorrectly in the manual,
causing confusion like in https://github.com/NixOS/nixpkgs/issues/25516

This fixes it by using literalExample for such options. The list of
option to fix was determined with this expression:

  let
    nixos = import ./nixos { configuration = {}; };
    lib = import ./lib;
    valid = d: {
      # escapeNixIdentifier from https://github.com/NixOS/nixpkgs/pull/82461
      set = lib.all (n: lib.strings.escapeNixIdentifier n == n) (lib.attrNames d) && lib.all (v: valid v) (lib.attrValues d);
      list = lib.all (v: valid v) d;
    }.${builtins.typeOf d} or true;

    optionList = lib.optionAttrSetToDocList nixos.options;

  in map (opt: {
    file = lib.elemAt opt.declarations 0;
    loc = lib.options.showOption opt.loc;
  }) (lib.filter (opt: if opt ? example then ! valid opt.example else false) optionList)

which when evaluated will output all options that use a Nix identifier
that would need escaping as an attribute name.
2020-04-02 07:49:25 +02:00
Antonio Nuno Monteiro e2c11ad3c0 nixos/kubernetes: allow configuring cfssl API server SANs 2020-01-18 23:39:21 -08:00
rnhmjoj 1d61efb7f1 treewide: use attrs instead of list for types.loaOf options 2020-01-06 10:39:18 -05:00
Silvan Mosberger 4ee3e8b21d
nixos/treewide: Move rename.nix imports to their respective modules
A centralized list for these renames is not good because:
- It breaks disabledModules for modules that have a rename defined
- Adding/removing renames for a module means having to find them in the
central file
- Merge conflicts due to multiple people editing the central file
2019-12-10 02:51:19 +01:00
Sascha Grunert 7f358a5f3b
nixos/kubernetes: Module and test compatibility with kubernetes 1.16
Signed-off-by: Sascha Grunert <sgrunert@suse.com>
2019-11-15 05:58:35 +01:00
volth 7b8fb5c06c treewide: remove redundant quotes 2019-09-08 23:38:31 +00:00
Jan Tojnar cdf426488b
Merge branch 'master' into staging-next
Fixed trivial conflicts caused by removing rec.
2019-09-06 03:20:09 +02:00
Johan Thomsen d891283aa4 nixos/kubernetes: make module compatible with v1.15.x 2019-09-04 17:38:41 +02:00
Johan Thomsen 00975b5628 Revert "Merge pull request #56789 from mayflower/upstream-k8s-refactor"
This reverts commit 7dc6e77bc2, reversing
changes made to bce47ea9d5.

Motivation for the revert in #67563
2019-09-04 17:37:02 +02:00
volth 08f68313a4 treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
volth 35d68ef143 treewide: remove redundant quotes 2019-08-26 21:40:19 +00:00
volth f3282c8d1e treewide: remove unused variables (#63177)
* treewide: remove unused variables

* making ofborg happy
2019-06-16 19:59:05 +00:00
Robin Gloster a1dcac5104
Merge pull request #57523 from mayflower/kube-apiserver-preferred-address-types
nixos/kubernetes: Add preferredAddressTypes option to apiserver
2019-05-18 09:57:12 +00:00
Robin Gloster 6cf583cf2f
Merge pull request #60406 from JohnAZoidberg/remove-isnull
treewide: Remove usage of isNull
2019-05-18 09:36:24 +00:00
Alberto Berti f965fb26a9 nixos/kubernetes: upgrade CoreDNS 1.3.1 -> 1.5.0 2019-05-06 13:10:32 +02:00
Johan Thomsen 29bf511ef9 nixos/kubernetes: fix control-plane-online prestart dependency
The kubeconfig provided to the kubernetes-control-plane-online.service
is invalid. However, the apiserver /healthz endpoint can be accessed without auth so it's
simpler to just use curl for that.
2019-04-29 17:42:16 +02:00
Daniel Schaefer 786f02f7a4 treewide: Remove usage of isNull
isNull "is deprecated; just write e == null instead" says the Nix manual
2019-04-29 14:05:50 +02:00
Aaron Andersen 4a11ce7f26
cleanup redundant text in modules utilizing mkEnableOption
Closes #59911
2019-04-20 14:44:02 +02:00
Robin Gloster b278cd86e1
Merge branch 'master' into kube-apiserver-preferred-address-types 2019-04-17 16:40:06 +00:00
Robin Gloster 44afc81af1
Merge pull request #57693 from mayflower/kube-apiserver-proxy-client-certs
nixos/kubernetes: Add proxy client certs to apiserver
2019-04-17 16:38:51 +00:00
Robin Gloster 7dc6e77bc2
Merge pull request #56789 from mayflower/upstream-k8s-refactor
nixos/kubernetes: stabilize cluster deployment/startup across machines
2019-04-17 16:37:58 +00:00
Markus 2e29412e9c nixos/kubernetes: Add proxy client certs to apiserver 2019-03-15 13:21:43 +00:00
Markus 87d1a82627 nixos/kubernetes: Add preferredAddressTypes option to apiserver 2019-03-12 15:01:14 +00:00
Christian Albrecht e3a80ebc40
Cleanup pki: remove mkWaitCurl 2019-03-11 12:22:59 +01:00
Christian Albrecht 45e683fbd6
Cleanup pki: control-plane-online 2019-03-11 12:22:59 +01:00
Christian Albrecht 50c5f489ef
Cleanup pki: scheduler 2019-03-11 12:22:53 +01:00
Christian Albrecht 46653f84c9
Cleanup pki: proxy 2019-03-11 12:22:49 +01:00
Christian Albrecht 73657b7fcf
Cleanup pki: kubelet 2019-03-11 12:22:44 +01:00
Christian Albrecht ea6985ffc1
Cleanup pki: flannel 2019-03-11 12:22:40 +01:00
Christian Albrecht ce83dc2c52
Cleanup pki: controller-manager 2019-03-11 12:22:36 +01:00
Christian Albrecht 8ab50cb239
Cleanup pki: apiserver and etcd 2019-03-11 12:22:31 +01:00
Christian Albrecht ee9dd4386a
Cleanup pki: addon-manager 2019-03-11 12:16:58 +01:00
Jonas Juselius 279716c330 nixos/kubernetes: add dns addonmanger reconcile mode option (#55834)
Allow coredns ConfigMap and Depolyment to be editable by the user. An use
case is augmenting the default, generated dns records with local services.
2019-03-09 12:57:41 +02:00
Christian Albrecht 154356d820
nixos/kubernetes: Fix kube-control-plane-online must not be present
outside kubernetes module.
2019-03-08 09:36:59 +01:00
Johan Thomsen 80c4fd4f85 nixos/kubernetes: minor module fixes
- mkDefault etcd instance name
- make sure ca-cert in mkKubeConfig can be overriden
- fix controller-manager "tls-private-key-file" flag name
2019-03-08 09:18:51 +01:00
Christian Albrecht ff382c18c8
nixos/kubernetes: Address review: Move remaining paths to pki 2019-03-06 17:56:28 +01:00
Christian Albrecht e148cb040b
nixos/kubernetes: Address review: rename node-online target 2019-03-06 17:17:20 +01:00
Christian Albrecht 5684034693
nixos/kubernetes: Address review: Remove restart from certmgr bootstrap service 2019-03-06 16:55:13 +01:00
Christian Albrecht 7323b77435
nixos/kubernetes: Address review: Separate preStart from certificates 2019-03-06 16:55:08 +01:00
Christian Albrecht 52fe1d2e7a
nixos/kubernetes: Address review: Move controller manager paths into pki 2019-03-06 16:55:04 +01:00
Christian Albrecht 6e9037fed0
nixos/kubernetes: Address review: Move bootstrapping addons into own service 2019-03-06 16:54:50 +01:00
Christian Albrecht ff91d5818c
nixos/kubernetes: Address review: Rename targets and move proxy to node-online.target 2019-03-06 16:54:22 +01:00
Christian Albrecht 74962bf767
nixos/kubernetes: No need to restart services besides certmgr
within the node join script, since certmgr is taking care of
restarting services.
2019-03-03 19:43:15 +01:00
Christian Albrecht 7df88bd802
nixos/kubernetes: Put dashboard service account into bootstrapAddons
to prevent errors in log about missing permissions when
addon manager starts the dashboard.
2019-03-03 19:43:15 +01:00
Christian Albrecht fd28c0a82a
nixos/kubernetes: Seed docker images before kubelet service start
to speed up startup time because it can be parallelized.
2019-03-03 19:43:14 +01:00
Christian Albrecht cf8389c904
nixos/kubernetes: Add longer timeouts for waiting services 2019-03-03 19:43:14 +01:00
Christian Albrecht 51aeaaffc2
nixos/kubernetes: flannel needs iptables in service path 2019-03-03 19:43:13 +01:00
Christian Albrecht 62f03750e4
nixos/kubernetes: Stabilize services startup across machines
by adding targets and curl wait loops to services to ensure services
are not started before their depended services are reachable.

Extra targets cfssl-online.target and kube-apiserver-online.target
syncronize starts across machines and node-online.target ensures
docker is restarted and ready to deploy containers on after flannel
has discussed the network cidr with apiserver.

Since flannel needs to be started before addon-manager to configure
the docker interface, it has to have its own rbac bootstrap service.

The curl wait loops within the other services exists to ensure that when
starting the service it is able to do its work immediately without
clobbering the log about failing conditions.

By ensuring kubernetes.target is only reached after starting the
cluster it can be used in the tests as a wait condition.

In kube-certmgr-bootstrap mkdir is needed for it to not fail to start.

The following is the relevant part of systemctl list-dependencies

default.target
● ├─certmgr.service
● ├─cfssl.service
● ├─docker.service
● ├─etcd.service
● ├─flannel.service
● ├─kubernetes.target
● │ ├─kube-addon-manager.service
● │ ├─kube-proxy.service
● │ ├─kube-apiserver-online.target
● │ │ ├─flannel-rbac-bootstrap.service
● │ │ ├─kube-apiserver-online.service
● │ │ ├─kube-apiserver.service
● │ │ ├─kube-controller-manager.service
● │ │ └─kube-scheduler.service
● │ └─node-online.target
● │   ├─node-online.service
● │   ├─flannel.target
● │   │ ├─flannel.service
● │   │ └─mk-docker-opts.service
● │   └─kubelet.target
● │     └─kubelet.service
● ├─network-online.target
● │ └─cfssl-online.target
● │   ├─certmgr.service
● │   ├─cfssl-online.service
● │   └─kube-certmgr-bootstrap.service
2019-03-03 19:39:02 +01:00
Christian Albrecht f9e2f76a59
nixos/kubernetes: Add systemd path units
to protect services from crashing and clobbering the logs when
certificates are not in place yet and make sure services are activated
when certificates are ready.

To prevent errors similar to "kube-controller-manager.path: Failed to
enter waiting state: Too many open files"
fs.inotify.max_user_instances has to be increased.
2019-03-03 19:34:57 +01:00
Adam Finn Tulinius 291c809888 nixos/kubernetes: add missing systemd restart options 2019-02-21 14:57:57 +01:00
Jaka Hudoklin 97a27fd2d2
nixos/kubernetes: fix flannel and kubelet startup 2019-02-21 00:26:11 +01:00
Franz Pletz 3a02205496
nixos/kubernetes: bootstrap docker without networking
Before flannel is ready there is a brief time where docker will be
running with a default docker0 bridge. If kubernetes happens to spawn
containers before flannel is ready, docker can't be restarted when
flannel is ready because some containers are still running on the
docker0 bridge with potentially different network addresses.

Environment variables in `EnvironmentFile` override those defined via
`Environment` in the systemd service config.

Co-authored-by: Christian Albrecht <christian.albrecht@mayflower.de>
2019-02-20 21:08:58 +01:00
Johan Thomsen 7028fac35b
nixos/kubernetes: use system.path to handle dependency on flannel subnet.env
The current postStart step on flannel causes flannel.service to
sometimes hang, even when it's commanded to stop.
2019-02-20 21:08:56 +01:00
Johan Thomsen 466beb0214
nixos/kubernetes: let flannel use kubernetes as storage backend
+ isolate etcd on the master node by letting it listen only on loopback
+ enabling kubelet on master and taint master with NoSchedule

The reason for the latter is that flannel requires all nodes to be "registered"
in the cluster in order to setup the cluster network. This means that the
kubelet is needed even at nodes on which we don't plan to schedule anything.
2019-02-20 21:08:56 +01:00
Johan Thomsen 1f49c2160a
nixos/kubernetes: CoreDNS privileges has to be assigned by addon manager bootstrap
- because the kube-addon-manager drops most of its privileges after
startup.
2019-02-20 21:08:55 +01:00
Johan Thomsen 6334796370
nixos/kubernetes: use the certmgr-selfsigned variant 2019-02-20 21:08:54 +01:00