- Home
- About Pixie
- Installing Pixie
- Using Pixie
- Tutorials
- Reference
Pixie allows you to connect multiple Kubernetes clusters to a single Pixie Cloud instance. The main advantage of such a deployment is that you can monitor all your Kubernetes clusters from a single point.
This guide explains how to share a Pixie Cloud instance across multiple Pixie deployments.
Install the NGINX Ingress Controller in your Kubernetes cluster. Please refer to the NGINX Ingress Controller Installation Guide for more information.
Note the IP address assigned to the Ingress Controller service. All requests to the Pixie Cloud will be sent through this.
E.g. The following image shows the services created in the namespace where the NGINX Ingress Controller was installed. Note the IP address in the EXTERNAL-IP column of the ingress-nginx-controller Load Balancer service.

Two DNS A records need to be created pointing to the NGINX Ingress controller IP address obtained above.
Suppose that your Pixie custom domain name is pixie.example.com and the IP address obtained above is a.b.c.d. Two A records need to be created as follows.
pixie.example.com a.b.c.dwork.pixie.example.com a.b.c.d
If you are using the Self-Hosted installation,
./scripts/create_cloud_secrets.shIf you are using the Air Gapped installation,
./scripts/create_cloud_secrets.shA TLS certificate is required for the custom domains that you wish to use with Pixie.
Suppose that your Pixie custom domain name is pixie.example.com. You need to obtain a single certificate that is valid for both pixie.example.com and work.pixie.example.com. Finally, create a Kubernetes secret (of type kubernetes.io/tls) named cloud-proxy-tls-certs in the plc namespace using the certificate.
One way to obtain it is by creating a Let's Encrypt certificate using cert-manager. Securing NGINX-ingress tutorial from cert-manager has detailed information about the process.
Here are sample resources that can be used with cert-manager:
Sample ClusterIssuer resource
apiVersion: cert-manager.io/v1kind: ClusterIssuermetadata:name: letsencrypt-cluster-issuerspec:acme:server: https://acme-v02.api.letsencrypt.org/directoryemail: admin@example.comprivateKeySecretRef:name: letsencrypt-cluster-issuer-keysolvers:- http01:ingress:class: nginx
Sample Certificate resource
apiVersion: cert-manager.io/v1kind: Certificatemetadata:name: cloud-proxy-tls-certsnamespace: plcspec:dnsNames:- pixie.example.com- work.pixie.example.comsecretName: cloud-proxy-tls-certsissuerRef:name: letsencrypt-cluster-issuerkind: ClusterIssuer
Two Kubernetes Ingresses are required for Pixie Cloud; One for HTTPs and the other for gRPCs communication.
Create two ingresses as follows.
kubectl apply -f k8s/cloud/overlays/exposed_services_nginx/cloud_ingress_grpcs.yamlkubectl apply -f k8s/cloud/overlays/exposed_services_nginx/cloud_ingress_https.yaml
If you are using the Self-Hosted installation,
k8s/cloud/public/domain_config.yaml set the value of PASSTHROUGH_PROXY_PORT to be empty.PASSTHROUGH_PROXY_PORT: ""
If you are using the Air Gapped installation,
yamls/cloud.yaml, find the ConfigMap named pl-domain-config. Set the value of PASSTHROUGH_PROXY_PORT in it to be empty.PASSTHROUGH_PROXY_PORT: ""
Finally, deploy Pixie in each cluster that you wish to monitor.
If you are using the Self-Hosted installation, in Deploy Pixie instructions, skip the --dev_cloud_namespace plc flag when executing px deploy commands.
If you are using the Air Gapped installation, deploy Pixie as explained here.