This repository provides the necessary files to deploy the core components of the HawkV6 project on a Kubernetes cluster. The following elements are included:
- Jalapeno: Used for network data aggregation, processing, and storage.
- Jalapeno API Gateway (JAGW): Facilitates easy retrieval and subscription of data stored in Jalapeno.
- Consul: Serves as a service registry for network services.
Additionally, this repository includes Grafana dashboards stored in the grafana-dashboards
folder. These dashboards are not automatically included in the Jalapeno Grafana instance but can be easily imported and used.
Before proceeding, ensure that you've cloned this repository and initialized the Helm submodules (jagw-helm
and jalapeno-helm
):
git clone https://github.com/hawkv6/deployment.git
git submodule init
git submodule update
Follow these steps to install Jalapeno in the hawkv6-jalapeno
namespace:
-
Prepare Configuration Files:
- Modify the
jalapeno-values.yaml
file according to your requirements. - Copy the modified content to the
values.yaml
file within thejalapeno-helm
submodule:
cp jalapeno-values.yaml jalapeno-helm/jalapeno-helm/values.yaml
- Modify the
-
Configure Telegraf Ingress
-
This action ensures the correct Kafka topics are used for data transfer to the
clab-telemetry-linker
. -
Copy the
collector-telegraf-ingress-cm.yaml
content into the corresponding ConfigMap in thejalapeno-helm
submodule.:cp collector-telegraf-ingress-cm.yaml jalapeno-helm/jalapeno-helm/templates/collectors/telegraf-ingress/collector-telegraf-ingress-cm.yaml
The following Kafka topics are used for data transfer:
hawkv6.telemetry.unprocessed
: Contains unprocessed performance measurement telemetry data, utilized by theclab-telemetry-linker
.hawkv6.openconfig
: Holds OpenConfig interface status and related IPv6 addresses, used by thegeneric-processor
.jalapeno.telemetry
: Handles all other telemetry data.
- Configure Telegraf Egress
-
This action ensures data is forwarded to InfluxDB.
-
Copy the
processors-telegraf-egress-cm.yaml
content into the corresponding ConfigMap in thejalapeno-helm
submodule:cp processors-telegraf-egress-cm.yaml jalapeno-helm/jalapeno-helm/templates/processors/telegraf-egress/processors-telegraf-egress-cm.yaml
These Kafka topics are used for data transfer to InfluxDB:
hawkv6.telemetry.processed
: Contains the processed performance measurement telemetry data. Theclab-telemetry-linker
writes to this topic.jalapeno.telemetry
: Handles all other telemetry data.hawkv6.telemetry.normalized
: Contains normalized telemetry data. Thegeneric-processor
writes to this topic.
- Deploy Jalapeno
-
Install Jalapeno in the
hawkv6-jalapeno
namespace using Helm:cd jalapeno-helm helm install jalapeno ./jalapeno-helm -n hawkv6-jalapeno --create-namespace
- Import Grafana Dashboards (Optional)
- Import the dashboards found in the
grafana-dashboards
folder into the Jalapeno Grafana instance.
Follow these steps to install the Jalapeno API Gateway in the hawkv6-jagw
namespace:
-
Configure Jalapeno API Gateway:
- Modify the
jagw-values.yaml
file according to your requirements. - Copy the updated content to the
values.yaml
file in thejagw-helm
submodule:
cp jagw-values.yaml jagw-helm/jagw/values.yaml
- Modify the
-
Install the API Gateway:
- Deploy the Jalapeno API Gateway in the
hawkv6-jagw
namespace using Helm:
cd jagw-helm helm install jagw ./jagw -n hawkv6-jagw --create-namespace
- Deploy the Jalapeno API Gateway in the
Follow these steps to install the Consul instance in the hawkv6-consul
namespace.
-
Configure Consul:
- Modify the
consul-values.yaml
file according to your requirements.
- Modify the
-
Add HashiCorp Helm Repository:
- Add the HashiCorp Helm repository to your Helm configuration:
helm repo add hashicorp https://helm.releases.hashicorp.com "hashicorp" has been added to your repositories
-
Verify Consul Chart Access:
- Ensure that you have access to the Consul chart:
helm search repo hashicorp/consul NAME CHART VERSION APP VERSION DESCRIPTION hashicorp/consul 1.0.1 1.14.1 Official HashiCorp Consul Chart
-
Label Worker Node (Optional):
- If external services cannot reach your internal pod, you may need to work with hostPorts. To do this, label a worker node to run the Consul server:
kubectl label nodes dev-w-0 hawkv6-consul-server=true
-
Label Namespace:
- Since Consul only accepts non-K8S client agents with Host Ports, label the namespace accordingly:
```bash
kubectl create namespace hawkv6-clab
kubectl label ns hawkv6-clab --overwrite \
pod-security.kubernetes.io/enforce=privileged \
pod-security.kubernetes.io/warn=privileged
```
-
Install Consul:
- Deploy Consul in the
hawkv6-consul
namespace using Helm:
helm install consul hashicorp/consul --namespace hawkv6-consul --values consul-values.yaml
- Deploy Consul in the