github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/docs/orbiter/sequencediagram.org.txt (about) 1 title Kubernetes Reconciliation 2 participant orbiter 3 participant cloud provider 4 participant kubernetes 5 participant node-agent(s) 6 7 orbiter->cloud provider: Ensure infrastructure 8 orbiter<--cloud provider: Pools and IPs 9 orbiter->cloud provider:Ensure desired number of machines per pool\n(add machines or kubectl drain + remove machines) 10 activate orbiter 11 orbiter->node-agent(s):Pass initial metadata to new machines\nand run node-agent(s) on them 12 activate node-agent(s) 13 node-agent(s)->node-agent(s):Ensure software\nand restart node 14 node-agent(s)->cloud provider: Mark self as initialized 15 deactivate node-agent(s) 16 activate node-agent(s) 17 orbiter->cloud provider: Wait until all node-agents are initialized 18 deactivate orbiter 19 orbiter->cloud provider:Ensure kubernetes nodes number is equal\nto cloud provider machines number\n(kubeadm init/join) 20 node-agent(s)->kubernetes:Safe metadata as soon as \nKubernetes API is available 21 deactivate node-agent(s) 22 note right of orbiter:Kubernetes scale is ensured, from\nnow on software versions are ensured... 23 loop #2f2e7b #white alpha.[software].caos.ch/desired-version is current-version 24 node-agent(s)->kubernetes:Read metadata 25 kubernetes-->node-agent(s):Node metadata 26 end 27 loop #2f2e7b #white i < nodes 28 orbiter->kubernetes:Read metadata 29 kubernetes-->orbiter:Node metadata 30 opt #2f2e7b #white desired version != current version or desired version != actually needed version 31 orbiter->kubernetes:Save metadata\nalpha.node.caos.ch/changes-allowed true 32 loop #2f2e7b #white alpha.node.caos.ch/changes-allowed is true 33 orbiter->kubernetes:Read metadata 34 kubernetes-->orbiter:Node metadata 35 alt #2f2e7b #white alpha.[software].caos.ch/desired-version is not the actually needed version; continue in loop after execution 36 orbiter->kubernetes:kubectl drain + kubectl cordon 37 orbiter->kubernetes:Save metadata\nalpha.[software].caos.ch/desired-version [actually needed version]\nalpha.[software].caos.ch/desired-version [actually needed version]\nalpha.[software].caos.ch/desired-version [actually needed version] 38 activate node-agent(s) 39 node-agent(s)->kubernetes: Save metadata\nalpha.node.caos.ch/ready false 40 node-agent(s)->node-agent(s):Ensure software 41 else alpha.node.caos.ch/ready is true and alpha.node.caos.ch/changes-allowed is true and alpha.[software].caos.ch/desired-version is alpha.[software].caos.ch/current-version 42 orbiter->kubernetes:kubectl uncordon 43 orbiter->kubernetes:Save metadata alpha.node.caos.ch/changes-allowed false 44 else continue in loop 45 end 46 node-agent(s)->node-agent(s):Possibly restart\nnode 47 node-agent(s)->kubernetes: Save metadata\nalpha.node.caos.ch/ready true 48 deactivate node-agent(s) 49 end 50 end 51 end