Skip to content

Commit

Permalink
Add vmware-k8s-1.21 variant
Browse files Browse the repository at this point in the history
Adds vmware-k8s-1.21 variant, relinks symlinks in models
  • Loading branch information
etungsten committed Jun 21, 2021
1 parent 37f59ad commit 068e023
Show file tree
Hide file tree
Showing 23 changed files with 96 additions and 8 deletions.
3 changes: 3 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 23,9 @@ jobs:
- variant: vmware-k8s-1.20
arch: x86_64
supported: true
- variant: vmware-k8s-1.21
arch: x86_64
supported: true
fail-fast: false
steps:
- uses: actions/checkout@v2
Expand Down
4 changes: 2 additions & 2 deletions QUICKSTART-VMWARE.md
Original file line number Diff line number Diff line change
@@ -1,6 1,6 @@
# Using Bottlerocket as a Kubernetes worker node with VMware

> The [VMware variant](variants/README.md#vmware-k8s-120-vmware-kubernetes-120-node) is currently in preview phase and we're looking for [feedback](https://github.com/bottlerocket-os/bottlerocket#contact-us).
> The [VMware variants](variants/README.md#vmware-k8s-121-vmware-kubernetes-121-node) are currently in preview phase and we're looking for [feedback](https://github.com/bottlerocket-os/bottlerocket#contact-us).
> Please try it out and let us know what you think!
This quickstart will walk through joining a Bottlerocket VM guest to an existing Kubernetes cluster running in VMware.
Expand Down Expand Up @@ -47,7 47,7 @@ sha512sum -c <<<"90393204232a1ad6b0a45528b1f7df1a3e37493b1e05b1c149f081849a292c8
Next, set your desired version and variant, and download the OVA:
```
VERSION="v1.1.0"
VARIANT="vmware-k8s-1.20"
VARIANT="vmware-k8s-1.21"
OVA="bottlerocket-${VARIANT}-x86_64-${VERSION}.ova"
tuftool download . --target-name "${OVA}" \
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 60,10 @@ We also have a variant designed to work with ECS, currently in preview:

- `aws-ecs-1`

Another variant we have in preview is designed to be a Kubernetes worker node in VMware:
Other variants we have in preview are designed to be Kubernetes worker nodes in VMware:

- `vmware-k8s-1.20`
- `vmware-k8s-1.21`

The `aws-k8s-1.16` variant is deprecated and will no longer be supported in Bottlerocket releases after June, 2021.
The `aws-k8s-1.15` variant is no longer supported.
Expand Down Expand Up @@ -365,7 366,7 @@ Static pods can be particularly useful when running in standalone mode.

For Kubernetes variants in AWS and VMware, the following are set for you automatically, but you can override them if you know what you're doing!
In AWS, [pluto](sources/api/) sets these based on runtime instance information.
In VMware, Bottlerocket uses [netdog](sources/api/) (for `node-ip`) or relies on [default values](sources/models/src/vmware-k8s-1.20/defaults.d/).
In VMware, Bottlerocket uses [netdog](sources/api/) (for `node-ip`) or relies on [default values](sources/models/src/vmware-k8s-1.21/defaults.d/).
* `settings.kubernetes.node-ip`: The IPv4 address of this node.
* `settings.kubernetes.pod-infra-container-image`: The URI of the "pause" container.
* `settings.kubernetes.kube-reserved`: Resources reserved for node components.
Expand Down
1 change: 1 addition & 0 deletions sources/logdog/conf/logdog.vmware-k8s-1.21.conf
9 changes: 7 additions & 2 deletions sources/models/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 69,13 @@ The `#[model]` attribute on Settings and its sub-structs reduces duplication and

### vmware-k8s-1.20: VMware Kubernetes 1.20

* [Model](src/vmware-k8s-1.20/mod.rs)
* [Default settings](src/vmware-k8s-1.20/defaults.d/)
* [Model](src/vmware-k8s-1.21/mod.rs)
* [Default settings](src/vmware-k8s-1.21/defaults.d/)

### vmware-k8s-1.21: VMware Kubernetes 1.21

* [Model](src/vmware-k8s-1.21/mod.rs)
* [Default settings](src/vmware-k8s-1.21/defaults.d/)

## This directory

Expand Down
9 changes: 7 additions & 2 deletions sources/models/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 66,13 @@ The `#[model]` attribute on Settings and its sub-structs reduces duplication and
## vmware-k8s-1.20: VMware Kubernetes 1.20
* [Model](src/vmware-k8s-1.20/mod.rs)
* [Default settings](src/vmware-k8s-1.20/defaults.d/)
* [Model](src/vmware-k8s-1.21/mod.rs)
* [Default settings](src/vmware-k8s-1.21/defaults.d/)
## vmware-k8s-1.21: VMware Kubernetes 1.21
* [Model](src/vmware-k8s-1.21/mod.rs)
* [Default settings](src/vmware-k8s-1.21/defaults.d/)
# This directory
Expand Down
1 change: 1 addition & 0 deletions sources/models/src/vmware-k8s-1.20
File renamed without changes.
12 changes: 12 additions & 0 deletions variants/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions variants/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 10,7 @@ members = [
"aws-k8s-1.21",
"vmware-dev",
"vmware-k8s-1.20",
"vmware-k8s-1.21",
]

[profile.dev]
Expand Down
9 changes: 9 additions & 0 deletions variants/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 86,15 @@ If user data exists at both places, settings read from guestinfo will override i

This variant is compatible with Kubernetes 1.20, 1.21, and 1.22 clusters.

### vmware-k8s-1.21: VMware Kubernetes 1.21 node

The [vmware-k8s-1.21](vmware-k8s-1.21/Cargo.toml) variant includes the packages needed to run a Kubernetes worker node as a VMware guest.
It supports self-hosted clusters.
User data will be read from a mounted CD-ROM (from a file named "user-data" or from an OVF file), and from VMware's guestinfo interface.
If user data exists at both places, settings read from guestinfo will override identical settings from CD-ROM.

This variant is compatible with Kubernetes 1.21, 1.22, and 1.23 clusters.

### Deprecated variants

#### aws-k8s-1.15: Kubernetes 1.15 node
Expand Down
39 changes: 39 additions & 0 deletions variants/vmware-k8s-1.21/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 1,39 @@
[package]
# This is the vmware-k8s-1.21 variant. "." is not allowed in crate names, but
# we don't use this crate name anywhere.
name = "vmware-k8s-1_21"
version = "0.1.0"
edition = "2018"
publish = false
build = "build.rs"
# Don't rebuild crate just because of changes to README.
exclude = ["README.md"]

[package.metadata.build-variant]
image-format = "vmdk"
supported-arches = ["x86_64"]
kernel-parameters = [
"console=ttyS0",
"console=tty1",
# Only reserve if there are at least 2GB
"crashkernel=2G-:256M"
]
included-packages = [
"cni",
"cni-plugins",
"kernel-5.10",
"kubelet-1.21",
"open-vm-tools",
"release",
]

[lib]
path = "lib.rs"

[build-dependencies]
cni = { path = "../../packages/cni" }
cni-plugins = { path = "../../packages/cni-plugins" }
kernel-5_10 = { path = "../../packages/kernel-5.10" }
kubernetes-1_21 = { path = "../../packages/kubernetes-1.21" }
open-vm-tools = { path = "../../packages/open-vm-tools" }
release = { path = "../../packages/release" }
9 changes: 9 additions & 0 deletions variants/vmware-k8s-1.21/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 1,9 @@
use std::process::{exit, Command};

fn main() -> Result<(), std::io::Error> {
let ret = Command::new("buildsys").arg("build-variant").status()?;
if !ret.success() {
exit(1);
}
Ok(())
}
1 change: 1 addition & 0 deletions variants/vmware-k8s-1.21/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 1 @@
// not used
1 change: 1 addition & 0 deletions variants/vmware-k8s-1.21/template.ovf

0 comments on commit 068e023

Please sign in to comment.