Kubernetes Operator
This page explains the steps required to setup Parseable (in S3 or Local mode) on Kubernetes via Parseable Operator.
Prerequisites
kubectl
installed and configured to point to the relevant Kubernetes cluster.- Kubernetes version 1.20 or above.
Installation
The Parseable operator installation is done in two steps:
- Install the Parseable Operator CRDs and the Parseable Operator itself.
- To deploy Parseable, create a Parseable Operator CR (called Parseable Tenant).
Install the Parseable Operator
Parseable operator can be installed via our Helm chart. The chart installs the CRDs and the Deployment for the operator.
helm repo add parseable https://charts.parseable.com
helm install parseable-operator parseable/operator --create-namespace --namespace parseable-operator
Create a Parseable Tenant
Once the Parseable Operator is installed, you can create a Parseable Tenant CR to deploy Parseable. Note that the tenant yaml used here is for a minimal Parseable setup for demo purposes. For a production setup, refer to the documentation for Parseable Tenant CR below.
kubectl apply -f https://raw.githubusercontent.com/parseablehq/operator/main/config/samples/parseable-ephemeral.yaml
Once this is applied, you should see a Parseable deployment in the default
namespace. To access the Parseable UI, port forward to the Parseable service.
kubectl port-forward svc/parseable-parseable-server 8000:80
You can now access the Parseable UI at http://localhost:8000 and login with the default credentials admin
/admin
.
Parseable Tenant CR Fields
The Parseable Tenant CR has the following fields:
k8sConfig
: This section defines a Kubernetes configuration. The node section (defined below) requires a reference to a Kubernetes configuration, in thenodes.k8sConfig
section.
## Name of the Kubernetes configuration.
- name: server-k8s-config
## Image for a node type.
image: containers.parseable.com/parseable/parseable:v0.4.0
## Service to be created for this Kubernetes configuration.
service:
type: ClusterIP
ports:
- protocol: TCP
port: 80
targetPort: 8000
## Volumes to be created for this Kubernetes configuration.
volumes:
- emptyDir: {}
name: stage-volume
- emptyDir: {}
name: data-volume
## Volume mounts for this Kubernetes configuration.
volumeMount:
- mountPath: /parseable/data
name: data-volume
- mountPath: /parseable/staging
name: stage-volume
## Kubernetes resource limits for this Kubernetes configuration.
resources:
limits:
cpu: 1000m
memory: 1Gi
requests:
cpu: 100m
memory: 128Mi
parseableConfig
: This section defines a Parseable configuration. The node section (defined below) requires a reference to a Parseable configuration, in thenodes.parseableConfig
section.
## Name of the Parseable configuration.
- name: parseable-server-config
## Parseable command line arguments. Can be set to `local-store` or `s3-store`.
cliArgs:
- local-store
## Parseable environment variables.
## Refer the documentation here https://www.parseable.com/docs/env-vars
env: |-
P_ADDR=0.0.0.0:8000
P_STAGING_DIR=/parseable/staging
P_FS_DIR=./data
P_USERNAME=admin
P_PASSWORD=admin
nodes
: This section defines the specifications of a Parseable node type. For example, an ingestion only node or a query only node. The following fields are supported:
## Name of the node type
- name: parseable
## Type of the node. Can be server, ingestor or querier.
type: server
## Kubernetes resource type. Can be Deployment or StatefulSet.
kind: Deployment
## Number of replicas.
replicas: 1
## Kubernetes configuration for the node. Specified above.
k8sConfig: server-k8s-config
## Parseable configuration for the node. Specified above.
parseableConfig: parseable-server-config
deploymentOrder
: This field defines the order in which the nodes are deployed. For example, if you want to deploy a query node first and then an ingestion node, you can specify the order as an . This is useful if you want to deploy a query node first and then deploy an ingestion node that connects to the query node.