Arvados can be configured to permit shell access to running containers. This can be handy for debugging, but it could affect reproducability of workflows. This feature can be enabled for admin users, or for all users. By default, it is entirely disabled.
The relevant configuration section is
Containers:
ShellAccess:
# An admin user can use "arvados-client shell" to start an
# interactive shell (with any user ID) in any running
# container.
Admin: false
# Any user can use "arvados-client shell" to start an
# interactive shell (with any user ID) in any running
# container that they started, provided it isn't also
# associated with a different user's container request.
#
# Interactive sessions make it easy to alter the container's
# runtime environment in ways that aren't recorded or
# reproducible. Consider the implications for automatic
# container reuse before enabling and using this feature. In
# particular, note that starting an interactive session does
# not disqualify a container from being reused by a different
# user/workflow in the future.
User: false
To enable the feature a firewall change may also be required. This feature requires the opening of tcp connections from arvados-controller
to the range specified in the net.ipv4.ip_local_port_range
sysctl on compute nodes. If that range is unknown or hard to determine, it will be sufficient to allow tcp connections from arvados-controller
to port 1024-65535 on compute nodes, while allowing traffic that is part of existing tcp connections.
After changing the configuration, arvados-controller
must be restarted for the change to take effect. When enabling, shell access will be enabled for any running containers. When disabling, access is removed immediately for any running containers, as well as any containers started subsequently. Restarting arvados-controller
will kill any active connections.
Usage instructions for this feature are available in the User guide.
The content of this documentation is licensed under the
Creative
Commons Attribution-Share Alike 3.0 United States licence.
Code samples in this documentation are licensed under the
Apache License, Version 2.0.