Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ npm install
# Serve locally
mkdocs serve

# or with live reload
mkdocs serve --livereload

# Build for production
mkdocs build
```
Expand Down
66 changes: 66 additions & 0 deletions docs/howtoguide/example-kubernetesclusters.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Example KubernetesClusters

## Small simple kubernetescluster

```yaml
apiVersion: vitistack.io/v1alpha1
kind: KubernetesCluster
metadata:
name: t-test-002-5tu8
spec:
data:
clusterUid: "a30fbc8d-596f-48d0-8541-dbc23bca28a1"
clusterId: "t-test-002-5tu8"
provider: talos
environment: dev
datacenter: test-south-az1
project: simple-project
region: south
workorder: "simple-workorder"
zone: "az1"
workspace: "simple-workspace"
topology:
version: "1.34.1"
controlplane:
replicas: 1
version: "1.34.1"
machineClass: small
provider: kubevirt
storage:
- class: "standard"
path: "/var/lib/vitistack/kubevirt"
size: "20Gi"
metadata:
annotations:
environment: development
region: west-trondelag
labels:
environment: development
region: west-trondelag
workers:
nodePools:
- name: wp
taint: []
version: "1.34.1"
replicas: 1
machineClass: large
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 5
scalingRules:
- "cpu"
metadata:
annotations:
environment: development
region: west-trondelag
labels:
environment: development
region: west-trondelag
provider: kubevirt
storage:
- class: "standard"
path: "/var/lib/vitistack/kubevirt"
size: "20Gi"

```
77 changes: 77 additions & 0 deletions docs/howtoguide/example-machines.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# Example Machines

## Debian iso

Dependent on the experimental feature CDI (https://kubevirt.io/user-guide/storage/containerized_data_importer)

```yaml
---
apiVersion: vitistack.io/v1alpha1
kind: Machine
metadata:
name: example-machine-iso-debian
annotations:
# Annotation to indicate we want to use a DataVolume for the boot source
kubevirt.io/boot-source: "datavolume"
kubevirt.io/boot-source-type: "http"
spec:
machineClass: "medium"
name: "debian-iso-vm"
provider: kubevirt

# Operating system configuration
os:
family: linux
distribution: debian
version: "13.2"
architecture: amd64
# HTTP URL to the debian ISO image
# This will be used to create a DataVolume with CDI
imageID: "https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.2.0-amd64-netinst.iso"

# Define disks - the ISO will be attached as a cdrom
disks:
- name: "root"
sizeGB: 50
boot: true
type: "virtio"
encrypted: false
```

## Talos iso

Dependent on the experimental feature CDI (https://kubevirt.io/user-guide/storage/containerized_data_importer)

```yaml
---
apiVersion: vitistack.io/v1alpha1
kind: Machine
metadata:
name: example-machine-iso-talos
annotations:
# Annotation to indicate we want to use a DataVolume for the boot source
kubevirt.io/boot-source: "datavolume"
kubevirt.io/boot-source-type: "http"
spec:
machineClass: "medium"
name: "talos-iso-vm"
provider: kubevirt

# Operating system configuration
os:
family: linux
distribution: talos
version: "1.11.5"
architecture: amd64
# HTTP URL to the Talos ISO image
# This will be used to create a DataVolume with CDI
imageID: "https://github.com/siderolabs/talos/releases/download/v1.11.5/metal-amd64.iso"

# Define disks - the ISO will be attached as a cdrom
disks:
- name: "root"
sizeGB: 50
boot: true
type: "virtio"
encrypted: false
```
197 changes: 197 additions & 0 deletions docs/howtoguide/install-keadhcp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
# Install Kea DHCP

You need a instance of Kea DHCP, please read this doc for installation and configuration: https://kea.readthedocs.io/en/stable

## Install Kea-operator

```bash
helm registry login ghcr.io
helm install vitistack-kea-operator oci://ghcr.io/vitistack/helm/kea-operator
```

Values.yaml from helm chart
```yaml
# Default values for kea-operator.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

# This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
replicaCount: 1

# This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/
image:
repository: ghcr.io/vitistack/kea-operator
# This sets the pull policy for images.
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""

# This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
imagePullSecrets: []
# This is to override the chart name.
nameOverride: ""
fullnameOverride: ""

# This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/
serviceAccount:
# Specifies whether a service account should be created
create: true
# Automatically mount a ServiceAccount's API credentials?
automount: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""

# This is for setting Kubernetes Annotations to a Pod.
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
podAnnotations: {}
# This is for setting Kubernetes Labels to a Pod.
# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
podLabels: {}

podSecurityContext:
fsGroup: 65532

securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
seccompProfile:
type: RuntimeDefault

# This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/
service:
# This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
type: ClusterIP
# This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports
port: 80

# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/
ingress:
enabled: false
className: ""
annotations:
{}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local

resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 100m
memory: 128Mi

# This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
livenessProbe:
httpGet:
path: /healthz
port: 9995
initialDelaySeconds: 15
periodSeconds: 20
readinessProbe:
httpGet:
path: /readyz
port: 9995
initialDelaySeconds: 5
periodSeconds: 10

# This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80

# Additional volumes on the output Deployment definition.
volumes: []
# - name: foo
# secret:
# secretName: mysecret
# optional: false

# Additional volumeMounts on the output Deployment definition.
volumeMounts: []
# - name: foo
# mountPath: "/etc/foo"
# readOnly: true

nodeSelector: {}

tolerations: []

affinity: {}

# KEA DHCP server configuration
kea:
# Primary KEA server URL (e.g., https://kea-dhcp.example.com:8000)
url: ""
# Secondary KEA server URL for HA failover (optional)
secondaryUrl: ""
# KEA server port (used if url doesn't include port)
port: "8000"
# Timeout in seconds for KEA API requests
timeoutSeconds: "10"
# Disable HTTP keep-alive connections
disableKeepalives: "true"
# Comma-separated list of required client classes for pools
requireClientClasses: "biosclients,ueficlients,ipxeclients"

# Basic authentication credentials
# These should be overridden in your ArgoCD app or values override
auth:
username: ""
password: ""
# Reference to an existing secret containing credentials
# If set, username/password above are ignored
existingSecret: ""
# Key in the secret for username
usernameKey: "username"
# Key in the secret for password
passwordKey: "password"

# TLS configuration
tls:
enabled: "false"
insecure: "false"
serverName: ""
# Path to CA certificate file (mounted via volumes)
caFile: ""
# Path to client certificate file (for mTLS)
certFile: ""
# Path to client key file (for mTLS)
keyFile: ""
# Reference to an existing secret containing TLS certificates
secretName: ""
secretNamespace: ""

# Logging configuration
logging:
level: "info"
jsonLogging: "true"
colorize: "false"
addCaller: "true"
disableStacktrace: "false"
unescapeMultiline: "false"

# Development mode
development: "false"
```
Loading