Use Container-backed Remote CLIs

Remote platform CLIs can be used in any shell after sourcing the generated remote CLI/client RC file. This RC file sets up the required environment variables and aliases for the remote CLI commands.


Consider adding this command to your .login or shell rc file, such that your shells will automatically be initialized with the environment variables and aliases for the remote CLI commands.


You must have completed the configuration steps described in Configuring Container-backed Remote CLIs before proceeding.


Kubernetes kubectl CLI commands


The first usage of a remote CLI command will be slow as it requires that the docker image supporting the remote CLIs/clients be pulled from the remote registry.

root@myclient:/home/user/remote_wd# source
Please enter your OpenStack Password for project tenant1 as user user1:

root@myclient:/home/user/remote_wd# kubectl -n kube-system get pods
NAME                                       READY   STATUS      RESTARTS   AGE
calico-kube-controllers-767467f9cf-wtvmr   1/1     Running     1          3d2h
calico-node-j544l                          1/1     Running     1          3d
calico-node-ngmxt                          1/1     Running     1          3d1h
calico-node-qtc99                          1/1     Running     1          3d
calico-node-x7btl                          1/1     Running     4          3d2h
ceph-pools-audit-1569848400-rrpjq          0/1     Completed   0          12m
ceph-pools-audit-1569848700-jhv5n          0/1     Completed   0          7m26s
ceph-pools-audit-1569849000-cb988          0/1     Completed   0          2m25s
coredns-7cf476b5c8-5x724                   1/1     Running     1          3d2h


Some CLI commands are designed to leave you in a shell prompt, for example:

root@myclient:/home/user/remote_wd# openstack


root@myclient:/home/user/remote_wd# kubectl exec -ti <pod_name> -- /bin/bash

In most cases, the remote CLI will detect and handle these commands correctly. If you encounter cases that are not handled correctly, you can force-enable or disable the shell options using the <FORCE_SHELL> or <FORCE_NO_SHELL> variables before the command.

For example:

root@myclient:/home/user/remote_wd# FORCE_SHELL=true kubectl exec -ti <pod_name> -- /bin/bash
root@myclient:/home/user/remote_wd# FORCE_NO_SHELL=true kubectl exec <pod_name> -- ls

You cannot use both variables at the same time.

Remote CLI commands with local files

If you need to run a remote CLI command that references a local file, then that file must be copied to or created in the working directory specified in the -w option on the ./ command.

For example:

  1. If you have not already done so, source the file.

    root@myclient:/home/user/remote_wd# source
  2. Copy the file local file and run the remote command.

    root@myclient:/home/user# cp /<someDir>/test.yml $HOME/remote_cli_wd/test.yml
    root@myclient:/home/user# cd $HOME/remote_cli_wd
    root@myclient:/home/user/remote_cli_wd# kubectl -n kube-system  create -f test.yml
    pod/test-pod created
    root@myclient:/home/user/remote_cli_wd# kubectl -n kube-system  delete -f test.yml
    pod/test-pod deleted


Do the following to use helm.


For non-admin users, additional configuration is required first as discussed in StarlingX Security: Configuring Remote Helm Client for Non-Admin Users.


When using helm, any command that requires access to a helm repository (managed locally) will require that you be in the $HOME/remote_cli_wd directory and use the --home "./.helm" option.

  1. Do the initial set-up of the helm client.

    1. If you have not already done so, source the file.

      % source
    2. Complete the initial set-up.

      % cd $HOME/remote_cli_wd
      % helm init --client-only --home "./.helm"
  2. Run a helm command.

    1. If you have not already done so, source the file.

      % source
    2. Run a helm command. This example installs WordPress.

      % cd $HOME/remote_cli_wd
      % helm list
      % helm install --name wordpress stable/wordpress  --home "./.helm"