Quickstart¶
If you have not installed Ankaios, please follow the instructions here. The following examples assumes that the installation script has been used with default options.
Ankaios needs a startup configuration that contains all the workloads and their configuration which should be started when Ankaios starts up.
Let's modify the default config which is stored in /etc/ankaios/state.yaml
:
workloads:
nginx:
runtime: podman
agent: agent_A
restart: true
updateStrategy: AT_MOST_ONCE
accessRights:
allow: []
deny: []
tags:
- key: owner
value: Ankaios team
runtimeConfig: |
image: docker.io/nginx:latest
commandOptions: ["-p", "8081:80"]
Then we can start the Ankaios server:
The Ankaios server will read the config but detect that no agent with the name
agent_A
is available that could start the workload, see logs with:
Now let's start an agent:
This Ankaios agent will run the workload that has been assigned to it. We can use the Ankaios CLI to check the current state:
which creates:
requestId: ank-cli
startupState:
workloads: {}
configs: {}
cronJobs: {}
currentState:
workloads:
nginx:
agent: agent_A
name: nginx
tags:
- key: owner
value: Ankaios team
dependencies: {}
updateStrategy: AT_MOST_ONCE
restart: true
accessRights:
allow: []
deny: []
runtime: podman
runtimeConfig: |
image: docker.io/nginx:latest
commandOptions: ["-p", "8081:80"]
configs: {}
cronJobs: {}
workloadStates:
- workloadName: nginx
agentName: agent_A
executionState: ExecRunning
or
which results in:
Ankaios also supports adding and removing workloads dynamically. To add another workload call:
ank run workload \
helloworld \
--runtime podman \
--agent agent_A \
--config 'image: docker.io/busybox:1.36
commandOptions: [ "-e", "MESSAGE=Hello World"]
commandArgs: [ "sh", "-c", "echo $MESSAGE"]'
We can check the state again with ank get state
and see, that the workload
helloworld
has been added to currentState.workloads
and the execution
state is available in workloadStates
.
As the workload had a one time job its state is ExecSucceeded
and we can
delete it from the state again with:
For next steps see the reference documentation for the
startup configuration including the
podman-kube
runtime and also working with the
complete state data structure.