Tillered Arctic
How-To GuidesService Management

Delete a Service

How to delete a service and its associated routes

How to Delete a Service

This guide shows you how to delete an Arctic service and clean up its associated configuration.

Before You Start

Understand that deleting a service:

  • Removes all routes associated with the service
  • Removes the MACVLAN interface (if one was created)
  • Updates firewall rules to stop routing traffic
  • Does not affect the source or target peers

Delete a Service

1. Find the Service ID

List services to find the ID:

arctic services list

2. Delete the Service

arctic services delete SERVICE_ID

# You will be prompted to confirm. Use --yes to skip confirmation:
arctic services delete SERVICE_ID --yes

3. Verify Deletion

Confirm the service was removed:

arctic services list

The service should no longer appear in the list.

What Happens When You Delete

When a service is deleted:

  1. Routes Removed: All CIDR-based routing rules are deleted
  2. Interface Cleaned Up: The MACVLAN interface is removed from the host
  3. Firewall Updated: NFTables rules no longer match traffic for this service
  4. Configs Regenerated: Pegasus and Tempest configs are updated

Configuration changes propagate automatically, typically within seconds.

Bulk Deletion

To delete multiple services, you can use a loop:

# Delete all services targeting a specific peer
for id in $(arctic services list --target-peer PEER_ID -j | jq -r '.[].id'); do
  arctic services delete "$id" --yes
done

Troubleshooting

Service Not Found

If the service ID is not found:

  1. Verify the service exists: arctic services list
  2. Check you are connected to the correct agent
  3. The service may have already been deleted

Interface Not Removed

If the MACVLAN interface persists after deletion:

  1. Check Network Manager logs: journalctl -u arctic-agent | grep netmgr
  2. Manually remove if needed: ip link delete INTERFACE_NAME
  3. Trigger a sync: arctic cluster sync

Routes Still Active

If traffic is still being routed after deletion:

  1. Trigger a config sync: arctic cluster sync
  2. Verify NFTables rules: nft list ruleset | grep arctic
  3. Check Pegasus config was updated: cat /opt/tillered/pegasus/config.json