- 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.sh
If you are using the Air Gapped installation,
./scripts/create_cloud_secrets.sh
A 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.