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