Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Cluster configuration

is the root object of a cluster configuration document.

Rendered from schema/cluster-v1alpha1-schema.json.

PropertyTypeRequiredDefaultDescription
apiVersionstringnoidentifies the API group and version of this configuration document. One of colonel-byte.dev/v1alpha1, zarf.dev/v1alpha1.
kindstringyesidentifies the document type. The value must be Cluster, or ZarfCluster on a document written before the move to colonel-byte.dev. One of Cluster, ZarfCluster.
metadataMetadatayesholds identifying information for the cluster.
specSpecyesholds the configuration and hosts for the cluster.

AgeEncryption

records the age recipients a document’s credentials were encrypted to.

PropertyTypeRequiredDefaultDescription
lastModifiedstringnois when cargoship last rewrote the credentials in this document, in RFC 3339.
recipientsarray of stringnolists the age public keys cargoship encrypted to, in the order they were given. An SSH key keeps its authorized_keys comment, since that is the part that says whose key it is.

Config

holds cluster-wide configuration.

PropertyTypeRequiredDefaultDescription
loadbalancerstringyesis the hostname clients use to reach the cluster control plane.
profilesmap[string]Profilesnomaps a profile name to host and engine overrides that a host can select.
registriesarray of Registriesnolists the container registries the cluster uses.
valuesobjectnooverrides the values the distro package was built with. It is the same
nested structure the package ships, addressed by the same dotted paths, and it
must still satisfy the package’s values schema. Keys the package does not
define are kept, so a cluster can carry values a later package version reads.

Encryption

records how the credentials in a document were encrypted.

PropertyTypeRequiredDefaultDescription
ageAgeEncryptionnorecords the age recipients this document’s credentials were encrypted to. Nothing verifies this list and nothing can: an age header carries no recipient identifier, so editing it changes what the file claims and not a byte of what it holds.

Files

defines a file to write to a host.

PropertyTypeRequiredDefaultDescription
datastringnoholds inline content for the file, as an alternative to Source.
dststringnois the path on the host where cargoship writes the file.
dstDirstringnois the directory on the host where cargoship writes the file.
groupstringnoidentifies the file group on the host.
namestringyesidentifies the file in the cluster configuration.
permstringnosets the file mode cargoship applies on the host.
srcstringnois the local path or URL cargoship reads the file from.
userstringnoidentifies the file owner on the host.

FirewallConfig

is the backend-neutral firewall configuration for a node.

PropertyTypeRequiredDefaultDescription
rulesarray of FirewallRulenolists the firewall rules cargoship applies to the node.

FirewallPolicyConfig

configures a firewalld policy that opens ports from one zone to another.

PropertyTypeRequiredDefaultDescription
egressFirewallZoneyesis the zone the policy allows traffic to.
ingressFirewallZoneyesis the zone the policy allows traffic from.
portsarray of FirewallPortnolists the ports this policy allows.
targetstringyesis the action taken on traffic that matches the policy. One of CONTINUE, ACCEPT, REJECT, DROP.

FirewallPort

defines a port allowed through the firewalld policy.

PropertyTypeRequiredDefaultDescription
portstring or integeryesis the port number, or port range, cargoship opens.
protocolstringyesis the type of allowed traffic. One of tcp, udp, sctp, dccp.

FirewallRule

is a single backend-neutral firewall rule.

PropertyTypeRequiredDefaultDescription
actionstringyesis what cargoship does with traffic that matches the rule. One of allow, deny, reject.
destinationstringnois the address or CIDR the traffic goes to.
directionstringnoinselects which traffic the rule matches. It defaults to in. One of in, out, forward.
egressstringnonames where forward traffic leaves. It is a zone on firewalld hosts and an
interface on ufw hosts. It applies to forward rules only.
ingressstringnonames where forward traffic enters. It is a zone on firewalld hosts and an
interface on ufw hosts. It applies to forward rules only.
namestringnoidentifies the rule. Cargoship uses it to name the artifacts it writes on the
node, so it must be unique within a host. Cargoship generates one when it is empty.
portstring or integernois the port number, or inclusive port range, the rule matches.
protocolstringnois the type of traffic the rule matches. One of tcp, udp, sctp, dccp.
sourcestringnois the address or CIDR the traffic comes from.

FirewallZone

is the name of either the ingress or egress zone for a policy.

PropertyTypeRequiredDefaultDescription
namestringyesidentifies the firewalld zone.

Host

is a remote connection to a node

PropertyTypeRequiredDefaultDescription
engineHostEnginenoholds the node label and taint overrides for this node.
environmentmap[string]stringnomaps environment variables cargoship sets on the host.
filesarray of Filesnolists files cargoship uploads to the host.
hostHostConfignoholds the host-level configuration overrides for this node.
hostnamestringnooverrides the discovered name of the node.
localhostbooleanno
openSSHOpenSSHConfigno
privateAddressstringnooverrides the discovered private address of the node.
privateInterfacestringnooverrides the discovered private interface of the node.
profilestringnoselects a profile by name from the cluster config’s Profiles map.
rolestringyessets the node role when cargoship adds this host to the cluster. It must be controller or worker. One of controller, worker.
sshSSHConfigno
winRMWinRMConfigno

HostConfig

defines the configuration for a specific host, including firewall policies and the ports cargoship opens on the node.

PropertyTypeRequiredDefaultDescription
firewallFirewallConfignoholds the backend-neutral firewall rules cargoship renders onto whichever
firewall the node runs, firewalld, ufw, or nftables.
policymap[string]FirewallPolicyConfignomaps a policy name to a firewalld policy that allows traffic from one interface to another.
It is firewalld-only; prefer forward rules under firewall.rules for new configuration.
portsarray of HostPortnolists the ports and protocols cargoship opens on the node.

HostEngine

defines configuration options for node-level metadata, specifically Kubernetes node labels and taints applied to a cluster host.

PropertyTypeRequiredDefaultDescription
labelsmap[string]stringnomaps Kubernetes node label keys to their values.
taintsarray of stringnolists the Kubernetes node taints cargoship applies to the node.

HostPort

is a port cargoship opens on the public side of the firewall.

PropertyTypeRequiredDefaultDescription
portstring or integeryesis the port number, or port range, cargoship opens.
protocolstringyesis the type of allowed traffic. One of tcp, udp.

Hosts

is an ordered list of hosts that cargoship manages together.

Metadata

holds identifying information for a cluster.

PropertyTypeRequiredDefaultDescription
encryptionEncryptionnorecords how the credentials in this document were encrypted. Cargoship writes it and never reads it back as key material, because an age header names no recipient: this records what was done, not a fact anything can check against the ciphertext beside it.
namestringyessets the cluster name. If you allow cargoship to update the kubeconfig, cargoship uses this name there.

OpenSSHConfig

PropertyTypeRequiredDefaultDescription
addressstringyesAddress of the remote host
configPathstringnoPath to SSH config file
disableMultiplexingbooleannofalseDisable SSH connection multiplexing
keyPathstringnoPath to SSH private key
optionsOptionArgumentsnoAdditional SSH options as ssh_config key-value pairs
portintegernoOptional SSH port
userstringnoOptional SSH user

OptionArguments

Profiles

holds the host and engine overrides for one profile.

PropertyTypeRequiredDefaultDescription
concurrencystring or integernolimits how many hosts using this profile cargoship processes at once, e.g.
draining, upgrading, initializing, or uninstalling. It accepts a fixed count (“1”) or a
percentage of the hosts sharing this profile (“25%”). Empty falls back to the phase’s
default concurrency.
engineHostEnginenoholds the node label and taint overrides applied to a host that selects this profile.
hostHostConfignoholds the configuration overrides applied to a host that selects this profile.

Registries

holds the credentials and pull proxy for one container registry.

PropertyTypeRequiredDefaultDescription
authRegistryAuthnoholds the credentials for the registry.
namestringyesidentifies the registry. With a proxy it is the registry pulls are redirected away
from; without one it is the registry the credentials authenticate to.
proxyRegistryProxynoholds the pull redirect settings for the registry. Omit it to configure credentials
or TLS for the registry without redirecting pulls away from it.
tlsRegistryTLSnoconfigures TLS verification and certificates for the registry endpoint.

RegistryAuth

holds the credentials for a container registry.

PropertyTypeRequiredDefaultDescription
passstringnois the login secret for the remote registry. Sensitive. Treat this value as a secret: it is a credential rather than a path to one.
tokenstringnoauthenticates to the remote registry instead of a username and password. Sensitive. Treat this value as a secret: it is a credential rather than a path to one.
userstringnois the login name for the remote registry. Sensitive. Treat this value as a secret: it is a credential rather than a path to one.

RegistryProxy

redirects pulls for a registry to a different URL.

PropertyTypeRequiredDefaultDescription
rewritemap[string]stringnomaps a regex pattern to a replacement, transforming the image name (not the tag)
before it is pulled from this mirror. See https://docs.rke2.io/install/private_registry#rewrites
urlstringyesis the registry address the engine pulls from instead of the original registry.

RegistryTLS

holds the TLS connection settings for a container registry.

PropertyTypeRequiredDefaultDescription
castringnois the PEM-encoded CA certificate used to verify the registry certificate. Cargoship
writes it to a file on each host and points the engine at that path, so the certificate
travels with the cluster configuration instead of having to be distributed separately.
Use CAFile instead when the certificate is already on the hosts. It may also be given as
an Ansible Vault-encrypted string, which cargoship decrypts at apply time.
caFilestringnois the path on the host to the CA bundle used to verify the registry certificate.
certFilestringnois the path on the host to the client certificate used to authenticate to the registry.
insecureSkipVerifybooleannodisables TLS certificate verification.
keyFilestringnois the path on the host to the client private key used to authenticate to the registry.

SSHConfig

PropertyTypeRequiredDefaultDescription
addressstringyesAddress of the remote host (IP or hostname)
bastionSSHConfignoOptional bastion host
ignoreSshConfigbooleannoDo not read ~/.ssh/config or the system ssh_config for this host
keyPathstringnoPath to SSH private key
optionsOptionArgumentsnoAdditional SSH options as ssh_config key-value pairs
portintegerno22.0SSH port (default 22)
userstringnorootUser to log in as

Spec

holds the configuration and hosts for a cluster.

PropertyTypeRequiredDefaultDescription
configConfigyesholds the cluster-wide configuration.
hostsHostsyeslists the hosts that make up the cluster.

WinRMConfig

PropertyTypeRequiredDefaultDescription
addressstringyesAddress of the remote host
bastionSSHConfignoOptional SSH bastion
caCertPathstringnoPath to CA certificate
certPathstringnoPath to client certificate
insecurebooleannofalseAccept invalid TLS certificates
keyPathstringnoPath to client key
passwordstringnoPassword for WinRM authentication
portintegernoWinRM port (default 5985; 5986 when useHTTPS is true)
tlsServerNamestringnoTLS server name override
useHttpsbooleannofalseUse HTTPS for WinRM
useNtlmbooleannofalseUse NTLM authentication
userstringnoAdministratorUser to authenticate as