Working on Kubernetes from its early days and co-founding Container Engine at Google, these products solved customers’ critical…
August 3, 2020
Hello pxc: Get complete visibility into your application infrastructure
Today’s dynamic market requires developers to have access to a programmable infrastructure to deploy and manage applications on demand. The secure, multi-tenant, programmable infrastructure provided by Kubernetes enables developers to deliver applications with greater velocity than ever before.
Just like Kubernetes, Portworx provides developers with an open source model called OpenStorage SDK to programmatically manage the application data services. Today, Portworx continues to innovate by providing pxc (pronounced like “pixie”), an open source kubectl plugin utilizing the programmable infrastructure from both Kubernetes and Portworx data services, giving developers a single, unified experience to query and manage their applications on Kubernetes with Portworx.
By being a kubectl plugin, pxc provides developers with many benefits. It fully integrates with kubectl, so it can leverage the kubeconfig file for both automatic configuration and for Portworx user credential references. Developers can also get more detailed information about their Kubernetes data services backed by Portworx. For example, developers can query information about their PVCs using pxc which will communicate with both infrastructures to merge their information and provide them with a single, comprehensive view:
$ kubectl pxc pvc list -n mysql NAME VOLUME CAPACITY SHARED STATE PODS ---- ------ -------- ------ ----- ---- mysql-data pvc-fcb29944-44a4-4856-aa24-56665c754b06 2.0 GiB false on node0 mysql/mysql-69964c897-9v29l
pxc also leverages PX-Security authentication and authorization, securing multitenant access to Portworx services and volumes. Users can provide pxc with their authentication credentials simply by pointing to a Kubernetes secret containing their Portworx authentication information:
$ kubectl pxc login --k8s-secret-name=px-admin-token --k8s-secret-namespace=kube-system Successfully saved login information in Kubeconfig $ kubectl pxc config credentials whoami Name: Luis Pabón Email: firstname.lastname@example.org Subject: b35b4204-d29b-11ea-86da-ac1f6b221662 Groups: engineering Roles: system.user Issued At Time: Wed Jul 29 15:06:21 PDT 2020 Expiration Time: Mon Feb 22 22:06:21 PST 2021 Status: Ok
pxc also presents cluster administrators with the ability to communicate with their Portworx clusters from their client workstation. By being a kubectl plugin, pxc can securely and automatically communicate with Portworx deployed on their Kubernetes system. Here is an example of a cluster description:
$ kubectl pxc cluster describe Name: vin-px-iks118-vpcg2 UUID: 89d27dde-fc88-4c1b-8d2c-6dcd7b70811f Status: Ready Nodes: Hostname Version Used Capacity Status Kernel Version OS -------- ------- ---- -------- ------ -------------- -- kube-bsh9mgcd0vha9pga5mng-iks1-00000300 188.8.131.52-bef5691 8.0 GiB 100 GiB Ready 4.15.0-111-generic Ubuntu 18.04.4 LTS kube-HtFo7tMzntoJFAG3xntM-iks1-00000300 184.108.40.206-bef5691 8.0 GiB 100 GiB Ready 4.15.0-111-generic Ubuntu 18.04.4 LTS kube-nSp9KckKYbeTDJrXAdks-iks1-00000300 220.127.116.11-bef5691 8.0 GiB 100 GiB Ready 4.15.0-111-generic Ubuntu 18.04.4 LTS
Like kubectl, pxc also supports its own plugins, called components. Components are extensions to pxc that can be provided by Portworx or by deployers to their users. Components provide a simple model to easily extend pxc on demand and without updating the pxc code itself. Like kubectl, components can be written in any language as they are applications called by pxc, but if they are written in Golang, a component gains the benefit of using pxc libraries for a better integration. For example, the cluster manager example component cm uses the pxc libraries to initialize any user credentials and to set up a connection to Portworx. In the example below, the cm component sends a request to the cluster to get its UUID and display it.
$ kubectl pxc cm --help This is a short message from cm Usage: cm [flags] cm [command] Available Commands: help Help about any command show Describe a Portworx cluster uuid Show cluster uuid version Show version information Flags: -h, --help help for cm --options Show global options for all commands Use "cm [command] --help" for more information about a command. Use "pxc --options" for a list of global command-line options (applies to all commands) $ kubectl pxc cm uuid 6becde0f-132e-402c-99b5-6feb9e249977
To get pxc for Linux, MacOSX, or Windows WSL, simply use
$ brew tap portworx/brew $ brew install pxc
For more information, please checkout the pxc repo: https://github.com/portworx/pxc