Instead of telling the computer what to do,
you tell it what you want
Kubernetes API Server ^ | Watches | Metacontroller | | POSTs v Your Controller
+---------+ +-----------+ +-----------------+ +-------------------+ +-----------+ | kubectl | | APIServer | | Metacontroller | | UpDownController | | UpDown.io | +---------+ +-----------+ +-----------------+ +-------------------+ +-----------+ | | | | | | kubectl apply -f updowncheck.yaml | | | | |--------------------------------------------->| | | | | | | | | | kubectl apply -f updowncontroller.yaml | | | | |--------------------------------------------->| | | | | | | | | | | Begin polling for updownchecks | | | | |<---------------------------------------------| | | | | | | | | kubectl apply -f udc-google.com.yaml | | | | |--------------------------------------------->| | | | | | | | | | | gets udc-google.com | | | | |<---------------------------------------------| | | | | | | | | | | curl updowncontroller.local/sync | | | | |------------------------------------------->| | | | | | | | | | | create check | | | | |------------------->| | | | | | | | | | 200 OK | | | | |<-------------------| | | | | | | | | 200 OK, with status JSON | | | | |<-------------------------------------------| | | | | | | | | Updates status body on CRD instance | | | | |<---------------------------------------------| | | | | | | |