PetSets for named services/agents

Registered by Kevin Fox on 2016-07-27

OpenStack has several rpc based services/agents that register themselves in databases (such as heat-engine, nova-conductor). In most cases, they don't really need to be run on any specific host, only that there's a service/agent with that name running somewhere.

PetSets (http://kubernetes.io/docs/user-guide/petset/) where built specifically for this case. They let containers have a consistent name, and optionally a persistent volume for state. They still allow the pod to run anywhere like a RC and scale up/down.

We should be able to do something like the following:
apiVersion: v1
kind: Service
metadata:
  name: heat-engine
  labels:
    app: heat-engine
spec:
  ports: []
  clusterIP: None
  selector:
    app: heat-engine
---
apiVersion: apps/v1alpha1
kind: PetSet
metadata:
  name: heat-engine
spec:
  serviceName: "heat-engine"
  replicas: 3
  template:
    metadata:
      labels:
        app: heat-engine
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      containers:
      - name: heat-engine
        image: ...heat-engine....
      ...

Blueprint information

Status:
Complete
Approver:
Ryan Hallisey
Priority:
High
Drafter:
Kevin Fox
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for master
Implementation:
Implemented
Milestone target:
milestone icon 0.3.0
Started by
Kevin Fox on 2016-10-05
Completed by
Kevin Fox on 2016-10-05

Related branches

Sprints

Whiteboard

Can we make a list of services that will use pet sets? --rhallisey

kfox1111- I don't have a exhaustive list, but for this blueprint, its basically anything that has a
nova service-list
neutron agent-list
heat serivce-list
etc..

(?)

Work Items

Work items:
mariadb: DONE

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.