Skip to content

Service

Bases: DuploResourceV2

Duplocloud Service Resource

This resource is used to manage services in Duplocloud. Using the duploctl command line tool, you can manage services with actions:

Basic CLI Use
duploctl service <action>

Commands

apply

Apply a service.

Parameters:

--file, -f, --cli-input
A file to read the input from
FileType('r') action: YamlAction
--wait, -w
Wait for the operation to complete

bulk_update_image

Bulk Update Images

Bulk update the image of multiple services.

Basic CLI Use
duploctl service bulk_update_image -S <service-name-1> <image-name-1> -S <service-name-2> <image-name-2>

Returns:

Name Type Description
message dict

A message about success.

Parameters:

--serviceimage, -S <service> <image> repeatable
takes two arguments, a service name and an image:tag
str nargs: 2

create

Create a service.

Create a service in Duplocloud.

Basic CLI Use

duploctl service create --file service.yaml
Contents of the service.yaml file
Name: duploctl
DockerImage: nginx:latest
Replicas: 1
Cloud: 0
IsLBSyncedDeployment: true
AgentPlatform: 7
ReplicasMatchingAsgName: null
HPASpecs:
  maxReplicas: 3
  metrics:
  - resource:
      name: cpu
      target:
        averageUtilization: 80
        type: Utilization
    type: Resource
  minReplicas: 2
IsDaemonset: false
OtherDockerHostConfig: ''
OtherDockerConfig: '{"Env":null}'
NetworkId: default

Create and Wait

Use the global --wait flag to wait for the service to be created and all replicas in a ready status.

duploctl service create --file service.yaml --wait

Returns:

Name Type Description
message dict

Success message.

Parameters:

--file, -f, --cli-input
A file to read the input from
FileType('r') action: YamlAction

delete

Delete a service.

Delete a service in Duplocloud.

Basic CLI Use
duploctl service delete <service-name>

Returns:

Name Type Description
message dict

Success message.

Parameters:

name positional
The resource name
str

expose

Expose a service.

Exposes a service through a load balancer. Attaches a Duplocloud service lb configuration to the service.

Basic CLI Use
duploctl service expose <service-name> --lb-type applicationlb --container-port 80 --external-port 80                               --visibility public --mode docker-mode --health-check-url / --protocol http

Returns:

Type Description
dict

A success message indicating the exposure status.

Raises:

Type Description
DuploError

If the service could not be exposed.

Parameters:

name positional
The resource name
str
--container-port, --container-port
Container port
str
--external-port, --external-port
The external port
str
--lb-type, --lb-type
The type of load balancer. Valid options are [applicationlb, k8clusterip, k8nodeport, networklb, targetgrouponly].
str
applicationlb k8clusterip k8nodeport networklb targetgrouponly
--protocol, --protocol
The protocol
str
http https tcp udp tls
--visibility, --visibility
The visibility of load balancer. Valid options are "public" or "private". Default is public.
str default: public
public private
--mode, --mode
The mode of load balancer. Valid options are "docker-mode" or "native-app". Default is docker-mode.
str default: docker-mode
docker-mode native-app
--health-check-url, --health-check-url
The health check URL
str

find

Find a service by name.

First we try for the endpoint that gives one by name. Otherwise we default to finding it in the list.

Usage
duploctl service find <service-name>

Returns:

Name Type Description
service dict

The full object for a service.

Parameters:

name positional
The resource name
str

list

Retrieve a List of Service

cli usage
duploctl service list

Returns:

Name Type Description
list list

A list of Service.

logs

Service Logs

Get the logs for a service. This will be an aggregate of all logs from the pods. The pod names will be prefixed on each line.

Get the logs for a service.

Basic CLI Use
duploctl service logs <service-name>
Watch Logs

This command supports the global --wait. Waits and watches for new logs. As new logs come they are printed to the console. Use ctrl+c to stop watching.

duploctl service logs myapp --wait --loglevel INFO

Returns:

Name Type Description
logs dict

A big list of logs.

Parameters:

name positional
The resource name
str

pods

Get Pods

Get a list of all of the pods owned by this service.

Basic CLI Use
duploctl service pods <service-name>

Returns:

Name Type Description
message dict

A list of pods for the service.

Raises:

Type Description
DuploError

If the service could not be found.

Parameters:

name positional
The resource name
str

restart

Restart a service.

Restart a service. Cause kubernetes to do a full rollover of it's replicaset. This does honor the deployment strategy settings.

Basic CLI Use
duploctl service restart <service-name>
Wait for Restart

This command supports the global --wait. Waits for the desired count of pods to become ready.

duploctl service restart myapp --wait --loglevel INFO

Returns:

Name Type Description
message dict

A success message if the service was restarted successfully.

Raises:

Type Description
DuploError

If the service could not be restarted.

Parameters:

name positional
The resource name
str

rollback

Rollback Service

Roll back a service to a specific revision (if provided) or the last known good state.

Usage
duploctl service rollback <service-name>
duploctl service rollback <service-name> --to-revision 2

Returns:

Name Type Description
message dict

A success message indicating the rollback status.

Raises:

Type Description
DuploError

If the service could not be rollback.

Parameters:

name positional
The resource name
str
--revision, --to-revision
The revision to rollback to
int

start

Start a service.

Start a service.

Basic CLI Use
duploctl service start <service-name>
duploctl service start --all
duploctl service start --targets service1 service2 service3
Wait for Start

This command supports the global --wait. Waits for the desired count of pods to become ready.

duploctl service start myapp --wait --loglevel INFO

Returns:

Type Description
dict

A summary containing services that were started successfully and those that encountered errors.

Raises:

Type Description
DuploError

If the service could not be started.

Parameters:

name positional
The resource name
str
--all, --all
Boolean flag to select all. Defaults to False.
--targets, --targets
The list of targets
str nargs: +

stop

Stop a service.

Stop a service.

Basic CLI Use
duploctl service stop <service-name>
duploctl service stop --all
duploctl service stop --targets service1 service2 service3
Wait for Stop

This command supports the global --wait. Waits for all pods to disappear.

duploctl service stop myapp --wait --loglevel INFO

Returns:

Type Description
dict

A summary containing services that were stopped successfully and those that encountered errors.

Raises:

Type Description
DuploError

If the service could not be stopped.

Parameters:

name positional
The resource name
str
--all, --all
Boolean flag to select all. Defaults to False.
--targets, --targets
The list of targets
str nargs: +

update

Update a service.

Update the state of a service.

Basic CLI Use

Update the replicas to 3 for a service.

duploctl service update <service-name> --replace Replicas 3

Parameters:

name positional
The resource name
str
--file, -f, --cli-input
A file to read the input from
FileType('r') action: YamlAction
--patches, --add, --remove, --copy, --replace, --test, --move
The json patch to apply
str action: JsonPatchAction

update_env

Update environment variables

Updates the environment variables of a service. If service has no environment variables set, use -strat replace to set new values. You may pass any number of --setvar flags to set multiple environment variables.

Basic CLI Use
duploctl service update_env <service-name> --strategy <replace,merge> --setvar <key> <value>

Example: Update all environment variables All variables for the service would be replaced by the variables in the command. This is a full state refresh.

duploctl service update_env myapp --strategy replace --setvar FOO bar --setvar MESSAGE "Hello?"

Add a new variable
duploctl service update_env myapp --strategy merge --setvar NEW_VAR "New Value"

Parameters:

name positional
The resource name
str
--setvar, -V <key> <value> repeatable
a key and value to set as an environment variable
str nargs: 2
--strategy, -strat
The merge strategy to use. Valid options are "merge" or "replace". Default is merge.
str default: merge
merge replace
--deletevar, -D repeatable
a key to delete from the environment variables
str

update_image

Update the image of a service.

Basic CLI Use
duploctl service update_image <service-name> <service-image>
duploctl service update_image <service-name> --container-image <side-car-container> <container-image>
duploctl service update_image <service-name> --init-container-image <init-container> <init-container-image>
Update Image and Wait

Waits till the desired count of pods all reach the running state with the new image.

duploctl service update_image myapp myimage:latest --wait --loglevel INFO

Returns:

Name Type Description
message dict

Success message

Parameters:

name positional
The resource name
str
image positional
The image to use
str
--container-image, --container-image <key> <value> repeatable
a key and value to set as a side-car container name and image
str nargs: 2
--init-container-image, --init-container-image <key> <value> repeatable
a key and value to set as an init container name and image
str nargs: 2

update_otherdockerconfig

Update Other Docker Config of a service.

Add a new secret reference to OtherDockerConfig:
duploctl service update_otherdockerconfig <service-name> --add EnvFrom/- '{"secretRef":{"name":"add-secret"}}'
Replace existing OtherDockerConfig:
duploctl service update_otherdockerconfig <service-name> --replace /EnvFrom/0/secretRef/name 'updated-secret'

Returns:

Name Type Description
message dict

Success message.

Parameters:

name positional
The resource name
str
--patches, --add, --remove, --copy, --replace, --test, --move
The json patch to apply
str action: JsonPatchAction

update_pod_label

Update pod labels

Updates the labels on the pod of a service. If service has no pod labels set, use -strat replace to set new values.

Basic CLI Use
duploctl service update_pod_label <service-name> --setvar env-key1 env-val1 --setvar env-key2 env-val2 --setvar env-key3 env-val3 --strategy merge --host $DUPLO_HOST --tenant $DUPLO_TENANT --token $DUPLO_TOKEN
duploctl service update_pod_label <service-name> --setvar env-key1 env-val1 --setvar env-key2 env-val2 --strategy replace --host $DUPLO_HOST --tenant $DUPLO_TENANT --token $DUPLO_TOKEN
duploctl service update_pod_label <service-name> --deletevar env-key1 --host $DUPLO_HOST --tenant $DUPLO_TENANT --token $DUPLO_TOKEN

Args: name: The name of the service to update. setvar: A list of key value pairs to set as environment variables. strategy: The merge strategy to use for env vars. Valid options are "merge" or "replace". Default is merge. deletevar: A list of keys to delete from the environment variables.

Returns:

Name Type Description
message

A message about success.

Parameters:

name positional
The resource name
str
--setvar, -V <key> <value> repeatable
a key and value to set as an environment variable
str nargs: 2
--strategy, -strat
The merge strategy to use. Valid options are "merge" or "replace". Default is merge.
str default: merge
merge replace
--deletevar, -D repeatable
a key to delete from the environment variables
str

update_replicas

Scale Service

Update the number of replicas for a service.

Basic CLI Use
duploctl service update_replicas <service-name> --replicas <replicas>
Wait for Scaling

The update replicas supports the global --wait flag. This will wait till the number of pods match the desired count.

duploctl service update_replicas myapp --replicas 99 --wait

Parameters:

name positional
The resource name
str
--replicas, -r
Number of replicas for service
int

Methods

current_replicaset

Get the current replicaset for a service.

Finds the name of the underlying replicaset for a named service.

info

This is not a cli command. It's primarily used internally but could be useful in a custom script.

Parameters:

Name Type Description Default
name str

The name of the service to get replicaset for.

required

Returns:

Type Description
str

The current replicaset for the service.

Raises:

Type Description
DuploError

If the service could not be found.

image_from_body

Get the image from a service body.

info

This is not a cli command. It's primarily used internally but could be useful in a custom script.

Parameters:

Name Type Description Default
body dict

The body of the service.

required

Returns:

Name Type Description
image str

The image for the service.

name_from_body

Service name from body.

Simply returns the services name given an entire service object.

info

This is not a cli command. It's primarily used internally but could be useful in a custom script.

Parameters:

Name Type Description Default
body dict

The service object.

required

Returns:

Name Type Description
name str

The name of the service.