Skip to content

Commit

Permalink
Merge pull request #9 from jacobweinstock/document-stack-values
Browse files Browse the repository at this point in the history
Update stack chart doc
  • Loading branch information
mergify[bot] authored Oct 19, 2022
2 parents 22b53e6 + aaff3b8 commit 4bdf007
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 3 deletions.
83 changes: 83 additions & 0 deletions tinkerbell/stack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,93 @@ The stack chart does not use an ingress object and controller. This is because m

## Installing the Chart

You'll want to customize the IP used for the load balancer in the `values.yaml` file. The following places should all be the same IP:

- `stack.loadbalancerIP`
- `boots.boots.env[3].value` (`MIRROR_BASE_URL`)
- `boots.boots.env[4].value` (`BOOTS_OSIE_PATH_OVERRIDE`)
- `boots.boots.env[5].value` (`PUBLIC_IP`)
- `boots.boots.env[6].value` (`PUBLIC_SYSLOG_FQDN`)
- `boots.boots.env[8].value` (`TINKERBELL_GRPC_AUTHORITY`)

You'll also want to customize the interface that should be used to advertize the load balancer IP.

- `kubevip.interface`

Now, deploy the chart.

```bash
helm dependency build stack/
trusted_proxies=$(kubectl get nodes -o jsonpath='{.items[*].spec.podCIDR}' | tr ' ' ',')
helm install stack-release stack/ --create-namespace --namespace tink-system --wait --set "boots.boots.trustedProxies=${trusted_proxies}" --set "hegel.hegel.trustedProxies=${trusted_proxies}"
```

These commands install the Tinkerbell Stack chart in the `tink-system` namespace with the release name of `stack-release`.

## Uninstalling the Chart

To uninstall/delete the `stack-release` deployment:

```bash
helm uninstall stack-release --namespace tink-system
```

## Parameters

### Stack Service Parameters

| Name | Description | Value |
| ---- | ----------- | ----- |
| `stack.enabled` | Enable the deployment of the Tinkerbell stack chart | `true` |
| `stack.name` | Name for the stack chart | `tink-stack` |
| `stack.service.type` | Type of service to use for the Tinkerbell stack services. One of the [standard](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) Kubernetes service types. | `LoadBalancer` |
| `stack.selector` | Selector(s) to use for the mapping stack deployment with the service | `app: tink-stack` |
| `stack.loadBalancerIP` | Load balancer IP address to use for the Tinkerbell stack services | `192.168.2.111` |
| `stack.lbClass` | loadBalancerClass to use for in stack service | `kube-vip.io/kube-vip-class` |
| `stack.image` | Image to use for the proxying to Tinkerbell services and serving artifacts | `nginx:1.23.1` |
| `stack.hook.enabled` | Enable the deployment of the Hook artifacts | `true` |
| `stack.hook.name` | Name for the Hook artifacts server | `hook-files` |
| `stack.hook.port` | Port to use for the Hook artifacts server | `8080` |
| `stack.hook.image` | Image to use for downloading the Hook artifacts | `alpine` |
| `stack.hook.downloads` | List of Hook artifacts to download | `[]` |
| `stack.hook.downloads[0].url` | URL of the Hook bundle to download | `""` |
| `stack.hook.downloads[0].sha512sum.kernel` | sha512sum, 2 spaces, and name of the Hook kernel in the bundle | `"7c..20 vmlinuz-x86_64"` |
| `stack.hook.downloads[0].sha512sum.initramfs` | sha512sum, 2 spaces, and name of the Hook initramfs in the bundle | `""` |

### Load Balancer Parameters (kube-vip)

| Name | Description | Value |
| ---- | ----------- | ----- |
| `kubevip.enabled` | Enable the deployment of the kube-vip load balancer | `true` |
| `kubevip.name` | Name for the kube-vip load balancer service | `kube-vip` |
| `kubevip.image` | Image to use for the kube-vip load balancer | `ghcr.io/kube-vip/kube-vip:v0.5.0` |
| `kubevip.imagePullPolicy` | Image pull policy to use for kube-vip | `IfNotPresent` |
| `kubevip.roleName` | Role name to use for the kube-vip load service | `kube-vip-role` |
| `kubevip.roleBindingName` | Role binding name to use for the kube-vip load service | `kube-vip-rolebinding` |
| `kubevip.interface` | Interface to use for advertizing the load balancer IP | `eth0` |

### Tinkerbell Services Parameters

All dependent services(Boots, Hegel, Rufio, Tink) can have their values overridden here. The following format is used to accomplish this.

```yaml
<service name>:
<service name>:
<key to override>: <value>
<array key to override>:
- <key>: <value>
```
Example:
```yaml
hegel:
hegel:
image: quay.io/tinkerbell/hegel:latest
```
### Boots Parameters
| Name | Description | Value |
| ---- | ----------- | ----- |
| `boots.boots.hostNetwork` | Whether to deploy Boots using `hostNetwork` on the pod spec. When `true` Boots will be able to receive DHCP broadcast messages. If `false`, Boots will be behind the load balancer VIP and will need to receive DHCP requests via unicast. | `true` |
2 changes: 1 addition & 1 deletion tinkerbell/stack/templates/service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ spec:
type: {{ .Values.stack.service.type }}
{{- if eq .Values.stack.service.type "LoadBalancer" }}
loadBalancerClass: {{ .Values.stack.lbClass }}
loadBalancerIP: {{ .Values.stack.ip }}
loadBalancerIP: {{ .Values.stack.loadBalancerIP }}
{{- end }}
externalTrafficPolicy: Local
ports:
Expand Down
3 changes: 1 addition & 2 deletions tinkerbell/stack/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ stack:
type: LoadBalancer
selector:
app: tink-stack
lbtype: external
ip: 192.168.2.111
loadbalancerIP: 192.168.2.111
lbClass: kube-vip.io/kube-vip-class
image: nginx:1.23.1
hook:
Expand Down

0 comments on commit 4bdf007

Please sign in to comment.