- Home
- About Pixie
- Installing Pixie
- Using Pixie
- Tutorials
- Reference
Get Pixie fully managed with one of the Hosted Pixie offerings or run on your own infrastructure with the following self-managed option.
Review Pixie's requirements to make sure that your Kubernetes cluster is supported.
Determine if you already have Operator Lifecycle Manager (OLM) deployed to your cluster, possibly to the default olm
namespace. Pixie uses the Kubernetes Operator pattern to manage its Vizier, which handles data collection and query execution (see the Architecture diagram). The OLM is used to install, update and manage the Vizier Operator.
Ensure that your cluster supports Pixie creating and using PersistentVolumes.
Pixie interacts with the Linux kernel to install BPF programs to collect telemetry data. In order to install BPF programs, Pixie vizier-pem-*
pods require privileged access.
Clone the Pixie repo.
git clone https://github.com/pixie-io/pixie.gitcd pixie
Pick a cloud release version from the tags on the repo. The following should pick the latest release for you.
export LATEST_CLOUD_RELEASE=$(git tag | perl -ne 'print $1 if /release\/cloud\/v([^\-]*)$/' | sort -t '.' -k1,1nr -k2,2nr -k3,3nr | head -n 1)
Checkout the release tag.
git checkout "release/cloud/v${LATEST_CLOUD_RELEASE}"
Update the versions in the appropriate kustomization file.
perl -pi -e "s|newTag: latest|newTag: \"${LATEST_CLOUD_RELEASE}\"|g" k8s/cloud/public/kustomization.yaml
(Optional) By default, the self-hosted Pixie Cloud will be accessible through dev.withpixie.dev
. If you wish to use a custom domain name, replace all occurances of dev.withpixie.dev
in the following files with the domain name of your choice.
k8s/cloud/public/base/proxy_envoy.yamlk8s/cloud/public/base/domain_config.yamlscripts/create_cloud_secrets.sh
Install mkcert
following the directions here. Pixie uses SSL to securely communicate between Pixie Cloud and the UI. Self-managed Pixie Cloud requires managing your own certificates. mkcert
is a simple tool to create and install a local certificate authority (CA) in the system root store in order to generate locally-trusted certificates.
Start mkcert
. This command will set up local CA and create a root certificate that Chrome and your CLI will now trust. To access Pixie Cloud from different machine that the one it was set up on, you will need to install this certificate there as well.
mkcert -install
Create the plc
namespace. This namespace is not currently configurable. Several of the install scripts expect Pixie Cloud to be deployed to the plc
namespace.
kubectl create namespace plc
Create the Pixie Cloud secrets. From the top level pixie/
directory, run:
./scripts/create_cloud_secrets.sh
Install kustomize
following the directions here.
Deploy Pixie Cloud dependencies and wait for all pods within the plc
namespace to become ready and available before proceeding to the next step. If there is an error, you may need to retry this step. You may verify any of the images in the generated Kustomize files by following the steps in Verifying Images.
kustomize build k8s/cloud_deps/base/elastic/operator | kubectl apply -f -kustomize build k8s/cloud_deps/public | kubectl apply -f -
Deploy Pixie Cloud.
kustomize build k8s/cloud/public/ | kubectl apply -f -
Wait for all pods within the plc
namespace to become ready and available. Note that you may have one or more create-hydra-client-job
pod errors, but as long as long as another instance of that pod successfully completes, that is ok.
kubectl get pods -n plc
Ensure that the cloud-proxy-service
and vzconn-service
LoadBalancer services have External IPs assigned. If you are running Pixie Cloud on minikube
, you likely need to run minikube tunnel
before continuing with this setup.
minikube tunnel # if running on minikubekubectl get service cloud-proxy-service -n plckubectl get service vzconn-service -n plc
Setup your DNS. This produces a dev_dns_updater
binary in the top level pixie
directory.
go build src/utils/dev_dns_updater/dev_dns_updater.go
You'll need to hardcode in your kube config. If you are using a custom domain name, specify it as the value of the --domain-name
flag. Leave this tab open.
./dev_dns_updater --domain-name="dev.withpixie.dev" --kubeconfig=$HOME/.kube/config --n=plc
Navigate to dev.withpixie.dev
in your browser. Make sure that the network you are on can access your cluster.
admin@default.com
for the email and admin
for the password.Add users to your organization to share access to Pixie Live Views, query running clusters, and deploy new Pixie clusters. For instructions, see the User Management & Sharing reference docs.
Set the cloud address with an environment variable. If you configured a custom domain name, use that as the variable's value:
export PX_CLOUD_ADDR=dev.withpixie.dev
Install Pixie's CLI. The easiest way to install Pixie's CLI is using the install script:
# Copy and run command to install the Pixie CLI.bash -c "$(curl -fsSL https://withpixie.ai/install.sh)"
For alternate install options (Docker, Debian package, RPM, direct download of the binary) see the CLI Install page.
Pixie's CLI is the fastest and easiest way to deploy Pixie. You can also deploy Pixie using YAML or Helm.
To deploy Pixie using the CLI:
# Deploy the Pixie Platform in your K8s cluster (No OLM present on cluster).px deploy --dev_cloud_namespace plc# Deploy the Pixie Platform in your K8s cluster (OLM already exists on cluster).px deploy --dev_cloud_namespace plc --deploy_olm=false# Deploy Pixie with a specific memory limit (2Gi is the default, 1Gi is the minimum recommended)px deploy --dev_cloud_namespace plc --pem_memory_limit=1Gi
Pixie will deploy pods to the pl
, plc
, px-operator
, and olm
(if deploying the OLM) namespaces.
For more deploy options that you can specify to configure Pixie, refer to our deploy options.
Check out the next section of our docs for Using Pixie. You can also check out our Tutorials section.
Learn how to use Pixie for
There are two options for deploying Pixie to another Kubernetes cluster.
This will spin up a separate instance of Pixie Cloud for each Pixie deployment that you have.
If you select this option, each of your Pixie deployments will point to the same instance of Pixie Cloud. In order to ensure that all of your clusters can access Pixie Cloud, you will need to do the following:
Please refer to the Production Readiness guide for detailed instructions.
Please see our Troubleshooting guide, reach out on our Community Slack or file an issue on GitHub.