Service
In Hyper, a Service is an abstraction which defines a logical set of containers in a single (private) network and a policy by which to access them. The set of containers targeted by a Service is determined by labels.
As an example, consider an image-processing backend which is running with 3 replicas. Those replicas are fungible - frontends do not care which backend they use. While the actual containers that compose the backend set may change, the frontend clients should not need to be aware of that or keep track of the list of backends themselves. The Service abstraction enables this decoupling.
Every service will receive an internal IP address which can only be accessed within the network where the service resides. For public access, a floating IP address needs to be attached by attach-fip command.
Currently, service supports four different protocols:
tcptcp traffic ---> service ---tcp---> containershttphttp traffic ---> service ---http---> containershttpshttps traffic ---> service ---https---> containershttpsTermhttps traffic ---> service ---http---> containers
Examples
Create a HTTP service:
$ hyper service create --service-port=80 --label=app=nginx --name=http --replicas=3 nginx
httpCreate a HTTPS termination service:
First gets a https certificate from certificate:
$ certbot certonly --standalone -d yourdomain.com
$ cat fullchain.pem privkey.pem > https-service.pemThen create a service with protocol httpsTerm:
$ hyper service create --service-port=443 --container-port=80 --label=app=nginx --name=https --replicas=3 --ssl-cert=https-service.pem --protocol=httpsTerm nginx
httpsList service:
$ hyper service ls
Name FIP Containers Status Message
http e71092036d68, 92b070136371 active Scaling completeAttach an allocated floating IP to a service:
$ hyper service attach-fip --fip=6.6.6.6 http
httpScale the service to more replicas:
$ hyper service scale http=8
httpRolling update the service to new image:
$ hyper service rolling-update --image httpd http
httpLast updated