Using the HPE Kubectl Plugin
The kubectl-hpecp binary is a kubectl plugin that can
be installed from a Kubernetes Dashboard screen. For detailed
information about kubectl plugins, see the official Kubernetes docs (link opens an
external website in a new browser tab or window).
This plugin includes the following commands:
Usage Notes
When you use the kubectl plugin from a headless system, SAML authentication will not work natively. Instead, download the kubeconfig file from the HPE Ezmeral Runtime Enterprise UI and install it on the headless system either one of the following locations:
~/.kube/config- A path pointed to by the KUBECONFIG environment variable.
For all OS types, ensure that the kubectl executable and the
kubectl-hpecp plugin executable are made available on the user's
path.
The sample commands in this topic will vary for Windows users because all commands output
by kubectl-hpecp are intended to be run in bash or
zsh on the Linux and MacOS operating systems, while all commands
for Windows are intended to be run in cmd.exe.
Version Command
The kubectl hpecp version command prints a version-specific string
to the console in either a valid JSON or YAML object, as specified by the flags
passed in to the command. For example (on MacOS):
> kubectl hpecp version
{
"major": "3",
"minor": "0",
"gitVersion": "v3.0-159",
"gitCommit": "15d398acdc03760f0ce269acdf88cc4b5d8cd7e1",
"gitTreeState": "clean",
"buildDate": "2020-02-11 00:02:04",
"goVersion": "go1.13.7",
"compiler": "gc",
"platform": "darwin/amd64"
}
> kubectl hpecp version --output=yaml
major: "3"
minor: "0"
gitversion: v3.0-159
gitcommit: 15d398acdc03760f0ce269acdf88cc4b5d8cd7e1
gittreestate: clean
builddate: "2020-02-11 00:02:04"
goversion: go1.13.7
compiler: gc
platform: darwin/amd64
Refresh Command
The
kubectl hpecp refresh command gets the user a new Kubeconfig
specific to their needs, as specified by the Kubernetes KUBECONFIG documentation (link
opens an external website in a new browser tab or window). This new Kubeconfig
contains only contexts that the user can interact with, based on the user's assigned
role. See Kubernetes Tenant
RBAC.
If HPE Ezmeral Runtime Enterprise is set up for SAML, the user is taken through the SAML login workflow. This requires the user to have a compatible browser. See also Usage Notes.
The semantics for the command are as follows:
> kubectl hpecp refresh <ip_address-or-host_alias-or-hostname> --insecure --hpecp-user=<new_username> --hpecp-pass=<new_password>
User name with which to authenticate to HPECP:
<username>
Password for user [admin]: <password>
The next step is to send credentials across the network.
Since the TLS connection will not be verified, there is
some risk in this.
Would you like to continue? [y/N]
y
Got a new kubeconfig from the server.
Retrieved new Kube Config from HPECP server at hpe-2:8080.
The KUBECONFIG environment variable HAS NOT been set.
Your current session WILL NOT have the new configuration.
To persist these changes by loading all current Kube Config
values into your default Kube Config file, run the
following command:
KUBECONFIG="/Users/tom/.kube/.hpecp/hpe-2/config:/Users/tom/.kube/config-backup" kubectl config view --raw > /Users/tom/.kube/config
To persist these changes by changing your local KUBECONFIG
environment variable, run the following command:
export KUBECONFIG="/Users/tom/.kube/.hpecp/hpe-2/config"
CAUTION - both of these commands will OVERWRITE your current
Kube Config settings. This is probably what you want, but
to confirm that this command will not break your system,
run the following command to view the resulting Kube
Config file:
KUBECONFIG="/Users/tom/.kube/.hpecp/hpe-2/config:/Users/tom/.kube/config" kubectl config view
Where:
<ip_address-or-host_alias-or-hostname>is the IP address, alias, or hostname of the host on which to perform the refresh.<username>is the user name of the current user, assuming that the--hpecp-userflag is not present.<password>is the password of the current user, assuming that the--hpecp-passflag is not present.--insecureis used when the HPE Ezmeral Runtime Enterprise API is not protected by TLS. This situation is not common.--hpecp-useris optionally used when you want to authenticate to the server as a user (the<new_username>) that is different from the currently logged-in user.--hpecp-passis optionally used to supply a different password (the<new_password>), such as when using the--hpecp-userflag.
Altering the Kubeconfig for a user is potentially risky, since doing so overwrites
any item that has a name conflict. For example, if two kubeconfig
files have a user with the name john, only the first
kubeconfig to register the name john will show
up in the final kubeconfig file.
If a user is expected to interact with more than one HPE Ezmeral Runtime Enterprise deployment, then Hewlett Packard Enterprise recommends configuring each deployment with different custom install names. Custom install names function as a human-readable differentiator between the deployments.
For example, if the user john is expected to interact with two
different HPE Ezmeral Runtime Enterprise deployments, and if that user received a different
kubeconfig file from each deployment, then that user cannot use
both kubeconfigs in the same context, because the user name
HPECP-john would not be unique between the
kubeconfigs. However, if each deployment has a custom install
name (such as test and prod), then
john can interact with both systems from the same context,
because the user name on each deployment is different. The user from the
prod deployment is prod-john, and the user
from the test deployment is test-john.
There are some other circumstances that are covered by the kubectl-hpecp
refresh command. To view the command-line help, run the kubectl
hpecp --help command.
Authenticate Command
This command retrieves the current authentication object from the file system. Plugin users should never need to call this command manually.