This is an automated email from the ASF dual-hosted git repository.
piotr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iggy.git
The following commit(s) were added to refs/heads/master by this push:
new 09f608fe chore(helm): add helm charts (#1911)
09f608fe is described below
commit 09f608fe961df351b24231fdc32605b2d8124bdd
Author: Ilya Suhodolets <[email protected]>
AuthorDate: Thu Jul 10 21:15:07 2025 +0300
chore(helm): add helm charts (#1911)
---
DISCLAIMER | 5 -
NOTICE | 19 -
PULL_REQUEST_TEMPLATE.md | 33 -
LICENSE => helm/LICENSE | 3 +-
helm/NOTICE | 13 +
helm/README.md | 5 +
helm/charts/iggy-server/.helmignore | 23 +
helm/charts/iggy-server/Chart.yaml | 30 +
helm/charts/iggy-server/README.md | 53 ++
helm/charts/iggy-server/templates/NOTES.txt | 22 +
helm/charts/iggy-server/templates/_helpers.tpl | 67 ++
helm/charts/iggy-server/templates/deployment.yaml | 85 +++
helm/charts/iggy-server/templates/hpa.yaml | 45 ++
helm/charts/iggy-server/templates/ingress.yaml | 78 ++
helm/charts/iggy-server/templates/service.yaml | 40 +
.../iggy-server/templates/serviceaccount.yaml | 29 +
.../iggy-server/templates/servicemonitor.yaml | 40 +
helm/charts/iggy-server/values.yaml | 125 +++
helm/charts/iggy-ui/.helmignore | 23 +
helm/charts/iggy-ui/Chart.yaml | 30 +
helm/charts/iggy-ui/README.md | 47 ++
helm/charts/iggy-ui/templates/NOTES.txt | 22 +
helm/charts/iggy-ui/templates/_helpers.tpl | 67 ++
helm/charts/iggy-ui/templates/deployment.yaml | 83 ++
helm/charts/iggy-ui/templates/ingress.yaml | 78 ++
helm/charts/iggy-ui/templates/service.yaml | 32 +
helm/charts/iggy-ui/templates/serviceaccount.yaml | 29 +
helm/charts/iggy-ui/values.yaml | 105 +++
scripts/DEPENDENCIES.md | 847 +++++++++++++++++++++
29 files changed, 2019 insertions(+), 59 deletions(-)
diff --git a/DISCLAIMER b/DISCLAIMER
deleted file mode 100644
index aaa3f2df..00000000
--- a/DISCLAIMER
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Iggy (Incubating) is an effort undergoing incubation at the Apache
Software Foundation (ASF), sponsored by the Apache Incubator PMC.
-
-Incubation is required of all newly accepted projects until a further review
indicates that the infrastructure, communications, and decision making process
have stabilized in a manner consistent with other successful ASF projects.
-
-While incubation status is not necessarily a reflection of the completeness or
stability of the code, it does indicate that the project has yet to be fully
endorsed by the ASF.
\ No newline at end of file
diff --git a/NOTICE b/NOTICE
deleted file mode 100644
index 2bd14a99..00000000
--- a/NOTICE
+++ /dev/null
@@ -1,19 +0,0 @@
-Apache Iggy (Incubating)
-Copyright 2025 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-================================================================
-
-This product includes various dependencies and code components that are
subject to separate copyright notices and license terms.
-Your use of these components is governed by their respective licenses.
-For a complete list of dependencies, including their licenses and repository
links,
-please refer to the DEPENDENCIES file.
-
-================================================================
-
-The Iggy project code was originally created, designed, developed by Piotr
Gankiewicz in April 2023.
-It was released as an open-source project under MIT License, later converted
to Apache 2.0 License,
-and donated by LaserData, Inc. to the Apache Software Foundation (ASF) in
February 2025.
-Copyright April 2023 - February 2025 Piotr Gankiewicz, LaserData, Inc.
\ No newline at end of file
diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md
deleted file mode 100644
index fe56a96b..00000000
--- a/PULL_REQUEST_TEMPLATE.md
+++ /dev/null
@@ -1,33 +0,0 @@
-# **PR Submission Guidelines**
-
-**Please remove this entire section before submitting your PR.**
-**This section is only for your reference.**
-
-🙌 **Thank you for contributing to `iggy`!**
-
-To help us incorporate your changes efficiently, please adhere to the
following guidelines:
-
-## General Coding Remarks
-
-- **Code Formatting**: Run `cargo fmt` to ensure your code adheres to the
project's style.
-- **Code Linting**: Run `cargo clippy --all-targets --all-features -- -D
warnings` to make sure your code is lint-free.
-- **Unit Testing**: Write or update unit tests to cover your changes.
-- **Integration Testing**: Write or update integration tests to cover your
changes.
-- **Project Structure**: Follow the `iggy` project's structure and coding
style.
-- **Build Integrity**: Ensure your code compiles and runs error-free.
-- **Check unused dependencies**: Run `cargo machete` to make sure no unused
dependencies made their way into your changeset.
-- **Sort dependencies**: Run `cargo sort --workspace` so that the content of
the toml files stay ordered.
-
-## Commit Message Rules
-
-- **Description**: Provide a concise description of the changes.
-- **Style**: Use an imperative style in the subject line (e.g., "Fix bug"
rather than "Fixed bug" or "Fixes bug").
-- **Brevity**: Keep the subject line under 80 characters.
-- **Rationale**: Explain the 'why' and 'what' of your changes in the summary.
-- **Details**: Use the body to elaborate on the 'how' of your changes.
-- **Context**: Include 'before' and 'after' scenarios if applicable.
-- **References**: Link any relevant issues or PRs in the message body.
-
-**Remember:** Your contribution is essential to the success of `iggy`. Please
ensure that your PR conforms to these guidelines for a swift and smooth
integration process.
-
-Thank you!
diff --git a/LICENSE b/helm/LICENSE
similarity index 99%
rename from LICENSE
rename to helm/LICENSE
index 20a5aeae..9c8f3ea0 100644
--- a/LICENSE
+++ b/helm/LICENSE
@@ -198,5 +198,4 @@
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
- limitations under the License.
-
\ No newline at end of file
+ limitations under the License.
\ No newline at end of file
diff --git a/helm/NOTICE b/helm/NOTICE
new file mode 100644
index 00000000..63d71ff1
--- /dev/null
+++ b/helm/NOTICE
@@ -0,0 +1,13 @@
+Copyright 2023-2025 Piotr Gankiewicz, LaserData, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
\ No newline at end of file
diff --git a/helm/README.md b/helm/README.md
new file mode 100644
index 00000000..e5e62db1
--- /dev/null
+++ b/helm/README.md
@@ -0,0 +1,5 @@
+# The source code has been moved to [Apache
Iggy](https://github.com/apache/iggy/)
+
+## iggy-helm
+
+Official Helm chart for Apache Iggy
diff --git a/helm/charts/iggy-server/.helmignore
b/helm/charts/iggy-server/.helmignore
new file mode 100644
index 00000000..0e8a0eb3
--- /dev/null
+++ b/helm/charts/iggy-server/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/helm/charts/iggy-server/Chart.yaml
b/helm/charts/iggy-server/Chart.yaml
new file mode 100644
index 00000000..4c7d946d
--- /dev/null
+++ b/helm/charts/iggy-server/Chart.yaml
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+apiVersion: v2
+name: iggy-server
+description: A Helm chart for Iggy server
+type: application
+version: 0.1.0
+appVersion: "0.4.300"
+sources:
+ - https://github.com/apache/iggy
+keywords:
+ - iggy
+ - messages
+ - streaming
diff --git a/helm/charts/iggy-server/README.md
b/helm/charts/iggy-server/README.md
new file mode 100644
index 00000000..c812bb72
--- /dev/null
+++ b/helm/charts/iggy-server/README.md
@@ -0,0 +1,53 @@
+# iggy-server
+
+


+
+A Helm chart for Kubernetes
+
+## Values
+
+| Key | Type | Default | Description |
+|-----|------|---------|-------------|
+| additionalLabels | object | `{}` | Additional labels to add to all resources
|
+| affinity | object | `{}` | |
+| autoscaling.enabled | bool | `false` | |
+| autoscaling.maxReplicas | int | `100` | |
+| autoscaling.minReplicas | int | `1` | |
+| autoscaling.targetCPUUtilizationPercentage | int | `80` | |
+| fullnameOverride | string | `""` | |
+| image.pullPolicy | string | `"IfNotPresent"` | |
+| image.repository | string | `"nginx"` | |
+| image.tag | string | `""` | |
+| imagePullSecrets | list | `[]` | |
+| ingress.annotations | object | `{}` | |
+| ingress.className | string | `""` | |
+| ingress.enabled | bool | `false` | |
+| ingress.hosts[0].host | string | `"chart-example.local"` | |
+| ingress.hosts[0].paths[0].path | string | `"/"` | |
+| ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | |
+| ingress.tls | list | `[]` | |
+| nameOverride | string | `""` | |
+| nodeSelector | object | `{}` | |
+| podAnnotations | object | `{}` | |
+| podSecurityContext | object | `{}` | |
+| replicaCount | int | `1` | |
+| resources | object | `{}` | |
+| securityContext | object | `{}` | |
+| server.ports.http | int | `3000` | |
+| server.ports.quic | int | `8080` | |
+| server.ports.tcp | int | `8090` | |
+| service.type | string | `"ClusterIP"` | |
+| serviceAccount.annotations | object | `{}` | |
+| serviceAccount.create | bool | `true` | |
+| serviceAccount.name | string | `""` | |
+| serviceMonitor.additionalLabels | object | `{}` | Add custom labels to the
ServiceMonitor resource |
+| serviceMonitor.enabled | bool | `true` | Enable this if you're using
`"https://github.com/coreos/prometheus-operator"` |
+| serviceMonitor.honorLabels | bool | `false` | |
+| serviceMonitor.interval | string | `"30s"` | Fallback to the prometheus
default unless specified |
+| serviceMonitor.namespace | string | `""` | Namespace to deploy the
ServiceMonitor |
+| serviceMonitor.path | string | `"/metrics"` | Path to scrape metrics |
+| serviceMonitor.scrapeTimeout | string | `"10s"` | Timeout for scrape metrics
request |
+| tolerations | list | `[]` | |
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs
v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
diff --git a/helm/charts/iggy-server/templates/NOTES.txt
b/helm/charts/iggy-server/templates/NOTES.txt
new file mode 100644
index 00000000..f4096db5
--- /dev/null
+++ b/helm/charts/iggy-server/templates/NOTES.txt
@@ -0,0 +1,22 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range $host := .Values.ingress.hosts }}
+ {{- range .paths }}
+ http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
+ {{- end }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+ export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o
jsonpath="{.spec.ports[0].nodePort}" services {{ include "iggy-server.fullname"
. }})
+ export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o
jsonpath="{.items[0].status.addresses[0].address}")
+ echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+ NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+ You can watch the status of by running 'kubectl get --namespace {{
.Release.Namespace }} svc -w {{ include "iggy-server.fullname" . }}'
+ export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{
include "iggy-server.fullname" . }} --template "{{"{{ range (index
.status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
+ echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l
"app.kubernetes.io/name={{ include "iggy-server.name" .
}},app.kubernetes.io/instance={{ .Release.Name }}" -o
jsonpath="{.items[0].metadata.name}")
+ export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }}
$POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
+ echo "Visit http://127.0.0.1:8080 to use your application"
+ kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME
8080:$CONTAINER_PORT
+{{- end }}
diff --git a/helm/charts/iggy-server/templates/_helpers.tpl
b/helm/charts/iggy-server/templates/_helpers.tpl
new file mode 100644
index 00000000..6175cab6
--- /dev/null
+++ b/helm/charts/iggy-server/templates/_helpers.tpl
@@ -0,0 +1,67 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "iggy-server.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to
this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "iggy-server.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "iggy-server.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 |
trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "iggy-server.labels" -}}
+helm.sh/chart: {{ include "iggy-server.chart" . }}
+{{ include "iggy-server.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/component: server
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+app.kubernetes.io/part-of: iggy-server
+{{- if .Values.additionalLabels }}
+{{ toYaml .Values.additionalLabels }}
+{{- end }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "iggy-server.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "iggy-server.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "iggy-server.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "iggy-server.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-server/templates/deployment.yaml
b/helm/charts/iggy-server/templates/deployment.yaml
new file mode 100644
index 00000000..4a2ef626
--- /dev/null
+++ b/helm/charts/iggy-server/templates/deployment.yaml
@@ -0,0 +1,85 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "iggy-server.fullname" . }}
+ labels:
+ {{- include "iggy-server.labels" . | nindent 4 }}
+spec:
+ {{- if not .Values.autoscaling.enabled }}
+ replicas: {{ .Values.replicaCount }}
+ {{- end }}
+ selector:
+ matchLabels:
+ {{- include "iggy-server.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ {{- with .Values.podAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ labels:
+ {{- include "iggy-server.labels" . | nindent 8 }}
+ spec:
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ serviceAccountName: {{ include "iggy-server.serviceAccountName" . }}
+ securityContext:
+ {{- toYaml .Values.podSecurityContext | nindent 8 }}
+ containers:
+ - name: {{ .Chart.Name }}
+ securityContext:
+ {{- toYaml .Values.securityContext | nindent 12 }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag |
default .Chart.AppVersion }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ ports:
+ - name: http
+ containerPort: {{ .Values.server.ports.http }}
+ protocol: TCP
+ - name: tcp
+ containerPort: {{ .Values.server.ports.tcp }}
+ protocol: TCP
+ - name: quic
+ containerPort: {{ .Values.server.ports.quic }}
+ protocol: TCP
+ livenessProbe:
+ httpGet:
+ path: /
+ port: http
+ readinessProbe:
+ httpGet:
+ path: /
+ port: http
+ resources:
+ {{- toYaml .Values.resources | nindent 12 }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
diff --git a/helm/charts/iggy-server/templates/hpa.yaml
b/helm/charts/iggy-server/templates/hpa.yaml
new file mode 100644
index 00000000..c802a571
--- /dev/null
+++ b/helm/charts/iggy-server/templates/hpa.yaml
@@ -0,0 +1,45 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2beta1
+kind: HorizontalPodAutoscaler
+metadata:
+ name: {{ include "iggy-server.fullname" . }}
+ labels:
+ {{- include "iggy-server.labels" . | nindent 4 }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ include "iggy-server.fullname" . }}
+ minReplicas: {{ .Values.autoscaling.minReplicas }}
+ maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+ metrics:
+ {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+ - type: Resource
+ resource:
+ name: cpu
+ targetAverageUtilization: {{
.Values.autoscaling.targetCPUUtilizationPercentage }}
+ {{- end }}
+ {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+ - type: Resource
+ resource:
+ name: memory
+ targetAverageUtilization: {{
.Values.autoscaling.targetMemoryUtilizationPercentage }}
+ {{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-server/templates/ingress.yaml
b/helm/charts/iggy-server/templates/ingress.yaml
new file mode 100644
index 00000000..6a1ffa99
--- /dev/null
+++ b/helm/charts/iggy-server/templates/ingress.yaml
@@ -0,0 +1,78 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+{{- if .Values.ingress.enabled -}}
+{{- $fullName := include "iggy-server.fullname" . -}}
+{{- $svcPort := .Values.service.port -}}
+{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0"
.Capabilities.KubeVersion.GitVersion)) }}
+ {{- if not (hasKey .Values.ingress.annotations
"kubernetes.io/ingress.class") }}
+ {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class"
.Values.ingress.className}}
+ {{- end }}
+{{- end }}
+{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1
+{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1beta1
+{{- else -}}
+apiVersion: extensions/v1beta1
+{{- end }}
+kind: Ingress
+metadata:
+ name: {{ $fullName }}
+ labels:
+ {{- include "iggy-server.labels" . | nindent 4 }}
+ {{- with .Values.ingress.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- if and .Values.ingress.className (semverCompare ">=1.18-0"
.Capabilities.KubeVersion.GitVersion) }}
+ ingressClassName: {{ .Values.ingress.className }}
+ {{- end }}
+ {{- if .Values.ingress.tls }}
+ tls:
+ {{- range .Values.ingress.tls }}
+ - hosts:
+ {{- range .hosts }}
+ - {{ . | quote }}
+ {{- end }}
+ secretName: {{ .secretName }}
+ {{- end }}
+ {{- end }}
+ rules:
+ {{- range .Values.ingress.hosts }}
+ - host: {{ .host | quote }}
+ http:
+ paths:
+ {{- range .paths }}
+ - path: {{ .path }}
+ {{- if and .pathType (semverCompare ">=1.18-0"
$.Capabilities.KubeVersion.GitVersion) }}
+ pathType: {{ .pathType }}
+ {{- end }}
+ backend:
+ {{- if semverCompare ">=1.19-0"
$.Capabilities.KubeVersion.GitVersion }}
+ service:
+ name: {{ $fullName }}
+ port:
+ number: {{ $svcPort }}
+ {{- else }}
+ serviceName: {{ $fullName }}
+ servicePort: {{ $svcPort }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-server/templates/service.yaml
b/helm/charts/iggy-server/templates/service.yaml
new file mode 100644
index 00000000..92ba3eee
--- /dev/null
+++ b/helm/charts/iggy-server/templates/service.yaml
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "iggy-server.fullname" . }}
+ labels:
+ {{- include "iggy-server.labels" . | nindent 4 }}
+spec:
+ type: {{ .Values.service.type }}
+ ports:
+ - name: http
+ port: {{ .Values.server.ports.http }}
+ targetPort: http
+ protocol: TCP
+ - name: quic
+ port: {{ .Values.server.ports.quic }}
+ targetPort: quic
+ protocol: TCP
+ - name: tcp
+ port: {{ .Values.server.ports.tcp }}
+ targetPort: tcp
+ protocol: TCP
+ selector:
+ {{- include "iggy-server.selectorLabels" . | nindent 4 }}
diff --git a/helm/charts/iggy-server/templates/serviceaccount.yaml
b/helm/charts/iggy-server/templates/serviceaccount.yaml
new file mode 100644
index 00000000..8167299d
--- /dev/null
+++ b/helm/charts/iggy-server/templates/serviceaccount.yaml
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: {{ include "iggy-server.serviceAccountName" . }}
+ labels:
+ {{- include "iggy-server.labels" . | nindent 4 }}
+ {{- with .Values.serviceAccount.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-server/templates/servicemonitor.yaml
b/helm/charts/iggy-server/templates/servicemonitor.yaml
new file mode 100644
index 00000000..273a39d6
--- /dev/null
+++ b/helm/charts/iggy-server/templates/servicemonitor.yaml
@@ -0,0 +1,40 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+{{- if .Values.serviceMonitor.enabled }}
+---
+apiVersion: monitoring.coreos.com/v1
+kind: ServiceMonitor
+metadata:
+ labels:
+ {{- include "iggy-server.labels" . | nindent 4 }}
+ {{- if .Values.serviceMonitor.additionalLabels }}
+ {{ toYaml .Values.serviceMonitor.additionalLabels }}
+ {{- end }}
+ name: {{ template "iggy-server.fullname" . }}
+ namespace: {{ .Release.Namespace }}
+spec:
+ endpoints:
+ - path: {{ .Values.serviceMonitor.path }}
+ port: http
+ namespaceSelector:
+ matchNames:
+ - {{ .Release.Namespace }}
+ selector:
+ matchLabels:
+ {{- include "iggy-server.selectorLabels" . | nindent 6 }}
+{{- end }}
diff --git a/helm/charts/iggy-server/values.yaml
b/helm/charts/iggy-server/values.yaml
new file mode 100644
index 00000000..78a16d72
--- /dev/null
+++ b/helm/charts/iggy-server/values.yaml
@@ -0,0 +1,125 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+# Default values for iggy-server.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+ repository: apache/iggy
+ pullPolicy: IfNotPresent
+ # Overrides the image tag whose default is the chart appVersion.
+ tag: ""
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+# -- Additional labels to add to all resources
+additionalLabels: {}
+ # app: iggy
+
+serviceAccount:
+ # Specifies whether a service account should be created
+ create: true
+ # Annotations to add to the service account
+ annotations: {}
+ # The name of the service account to use.
+ # If not set and create is true, a name is generated using the fullname
template
+ name: ""
+
+podAnnotations: {}
+
+podSecurityContext: {}
+ # fsGroup: 2000
+
+securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+service:
+ type: ClusterIP
+
+ingress:
+ enabled: false
+ className: ""
+ annotations: {}
+ # kubernetes.io/ingress.class: nginx
+ # kubernetes.io/tls-acme: "true"
+ hosts:
+ - host: chart-example.local
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ tls: []
+ # - secretName: chart-example-tls
+ # hosts:
+ # - chart-example.local
+
+resources: {}
+ # We usually recommend not to specify default resources and to leave this as
a conscious
+ # choice for the user. This also increases chances charts run on
environments with little
+ # resources, such as Minikube. If you do want to specify resources,
uncomment the following
+ # lines, adjust them as necessary, and remove the curly braces after
'resources:'.
+ # limits:
+ # cpu: 100m
+ # memory: 128Mi
+ # requests:
+ # cpu: 100m
+ # memory: 128Mi
+
+autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 100
+ targetCPUUtilizationPercentage: 80
+ # targetMemoryUtilizationPercentage: 80
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+serviceMonitor:
+ # -- Enable this if you're using
https://github.com/coreos/prometheus-operator
+ enabled: true
+ # -- Namespace to deploy the ServiceMonitor
+ namespace: ""
+ # -- Fallback to the prometheus default unless specified
+ interval: 30s
+ # -- Add custom labels to the ServiceMonitor resource
+ additionalLabels: {}
+ honorLabels: false
+ # -- Path to scrape metrics
+ path: /metrics
+ # -- Timeout for scrape metrics request
+ scrapeTimeout: 10s
+
+# Iggy configuration
+server:
+ ports:
+ http: 3000
+ quic: 8080
+ tcp: 8090
diff --git a/helm/charts/iggy-ui/.helmignore b/helm/charts/iggy-ui/.helmignore
new file mode 100644
index 00000000..0e8a0eb3
--- /dev/null
+++ b/helm/charts/iggy-ui/.helmignore
@@ -0,0 +1,23 @@
+# Patterns to ignore when building packages.
+# This supports shell glob matching, relative path matching, and
+# negation (prefixed with !). Only one pattern per line.
+.DS_Store
+# Common VCS dirs
+.git/
+.gitignore
+.bzr/
+.bzrignore
+.hg/
+.hgignore
+.svn/
+# Common backup files
+*.swp
+*.bak
+*.tmp
+*.orig
+*~
+# Various IDEs
+.project
+.idea/
+*.tmproj
+.vscode/
diff --git a/helm/charts/iggy-ui/Chart.yaml b/helm/charts/iggy-ui/Chart.yaml
new file mode 100644
index 00000000..0e43e117
--- /dev/null
+++ b/helm/charts/iggy-ui/Chart.yaml
@@ -0,0 +1,30 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+apiVersion: v2
+name: iggy-ui
+description: A Helm chart for Iggy UI
+type: application
+version: 0.1.0
+appVersion: "latest"
+sources:
+ - https://github.com/apache/iggy
+keywords:
+ - iggy
+ - messages
+ - streaming
diff --git a/helm/charts/iggy-ui/README.md b/helm/charts/iggy-ui/README.md
new file mode 100644
index 00000000..31b680df
--- /dev/null
+++ b/helm/charts/iggy-ui/README.md
@@ -0,0 +1,47 @@
+# iggy-ui
+
+


+
+A Helm chart for Iggy UI
+
+## Source Code
+
+* <https://github.com/apache/iggy>
+
+## Values
+
+| Key | Type | Default | Description |
+|-----|------|---------|-------------|
+| additionalLabels | object | `{}` | Additional labels to add to all resources
|
+| affinity | object | `{}` | |
+| fullnameOverride | string | `""` | |
+| image.pullPolicy | string | `"IfNotPresent"` | |
+| image.repository | string | `"iggyrs/iggy-web-ui"` | |
+| image.tag | string | `""` | |
+| imagePullSecrets | list | `[]` | |
+| ingress.annotations | object | `{}` | |
+| ingress.className | string | `""` | |
+| ingress.enabled | bool | `false` | |
+| ingress.hosts[0].host | string | `"chart-example.local"` | |
+| ingress.hosts[0].paths[0].path | string | `"/"` | |
+| ingress.hosts[0].paths[0].pathType | string | `"ImplementationSpecific"` | |
+| ingress.tls | list | `[]` | |
+| nameOverride | string | `""` | |
+| nodeSelector | object | `{}` | |
+| podAnnotations | object | `{}` | |
+| podSecurityContext | object | `{}` | |
+| replicaCount | int | `1` | |
+| resources | object | `{}` | |
+| securityContext | object | `{}` | |
+| server.endpoint | string | `"http://iggy-server:80"` | |
+| service.port | int | `3050` | |
+| service.type | string | `"ClusterIP"` | |
+| serviceAccount.annotations | object | `{}` | |
+| serviceAccount.create | bool | `true` | |
+| serviceAccount.name | string | `""` | |
+| tolerations | list | `[]` | |
+| ui.extraEnvs | object | `{}` | |
+| ui.ports.http | int | `3050` | |
+
+----------------------------------------------
+Autogenerated from chart metadata using [helm-docs
v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2)
diff --git a/helm/charts/iggy-ui/templates/NOTES.txt
b/helm/charts/iggy-ui/templates/NOTES.txt
new file mode 100644
index 00000000..40ba3de3
--- /dev/null
+++ b/helm/charts/iggy-ui/templates/NOTES.txt
@@ -0,0 +1,22 @@
+1. Get the application URL by running these commands:
+{{- if .Values.ingress.enabled }}
+{{- range $host := .Values.ingress.hosts }}
+ {{- range .paths }}
+ http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
+ {{- end }}
+{{- end }}
+{{- else if contains "NodePort" .Values.service.type }}
+ export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o
jsonpath="{.spec.ports[0].nodePort}" services {{ include "iggy-ui.fullname" .
}})
+ export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o
jsonpath="{.items[0].status.addresses[0].address}")
+ echo http://$NODE_IP:$NODE_PORT
+{{- else if contains "LoadBalancer" .Values.service.type }}
+ NOTE: It may take a few minutes for the LoadBalancer IP to be available.
+ You can watch the status of by running 'kubectl get --namespace {{
.Release.Namespace }} svc -w {{ include "iggy-ui.fullname" . }}'
+ export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{
include "iggy-ui.fullname" . }} --template "{{"{{ range (index
.status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
+ echo http://$SERVICE_IP:{{ .Values.service.port }}
+{{- else if contains "ClusterIP" .Values.service.type }}
+ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l
"app.kubernetes.io/name={{ include "iggy-ui.name" .
}},app.kubernetes.io/instance={{ .Release.Name }}" -o
jsonpath="{.items[0].metadata.name}")
+ export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }}
$POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
+ echo "Visit http://127.0.0.1:8080 to use your application"
+ kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME
8080:$CONTAINER_PORT
+{{- end }}
diff --git a/helm/charts/iggy-ui/templates/_helpers.tpl
b/helm/charts/iggy-ui/templates/_helpers.tpl
new file mode 100644
index 00000000..fdba2850
--- /dev/null
+++ b/helm/charts/iggy-ui/templates/_helpers.tpl
@@ -0,0 +1,67 @@
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "iggy-ui.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to
this (by the DNS naming spec).
+If release name contains chart name it will be used as a full name.
+*/}}
+{{- define "iggy-ui.fullname" -}}
+{{- if .Values.fullnameOverride }}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- $name := default .Chart.Name .Values.nameOverride }}
+{{- if contains $name .Release.Name }}
+{{- .Release.Name | trunc 63 | trimSuffix "-" }}
+{{- else }}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
+{{- end }}
+{{- end }}
+{{- end }}
+
+{{/*
+Create chart name and version as used by the chart label.
+*/}}
+{{- define "iggy-ui.chart" -}}
+{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 |
trimSuffix "-" }}
+{{- end }}
+
+{{/*
+Common labels
+*/}}
+{{- define "iggy-ui.labels" -}}
+helm.sh/chart: {{ include "iggy-ui.chart" . }}
+{{ include "iggy-ui.selectorLabels" . }}
+{{- if .Chart.AppVersion }}
+app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
+{{- end }}
+app.kubernetes.io/component: server
+app.kubernetes.io/managed-by: {{ .Release.Service }}
+app.kubernetes.io/part-of: iggy-ui
+{{- if .Values.additionalLabels }}
+{{ toYaml .Values.additionalLabels }}
+{{- end }}
+{{- end }}
+
+{{/*
+Selector labels
+*/}}
+{{- define "iggy-ui.selectorLabels" -}}
+app.kubernetes.io/name: {{ include "iggy-ui.name" . }}
+app.kubernetes.io/instance: {{ .Release.Name }}
+{{- end }}
+
+{{/*
+Create the name of the service account to use
+*/}}
+{{- define "iggy-ui.serviceAccountName" -}}
+{{- if .Values.serviceAccount.create }}
+{{- default (include "iggy-ui.fullname" .) .Values.serviceAccount.name }}
+{{- else }}
+{{- default "default" .Values.serviceAccount.name }}
+{{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-ui/templates/deployment.yaml
b/helm/charts/iggy-ui/templates/deployment.yaml
new file mode 100644
index 00000000..364dfd2b
--- /dev/null
+++ b/helm/charts/iggy-ui/templates/deployment.yaml
@@ -0,0 +1,83 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ include "iggy-ui.fullname" . }}
+ labels:
+ {{- include "iggy-ui.labels" . | nindent 4 }}
+spec:
+ replicas: {{ .Values.replicaCount }}
+ selector:
+ matchLabels:
+ {{- include "iggy-ui.selectorLabels" . | nindent 6 }}
+ template:
+ metadata:
+ {{- with .Values.podAnnotations }}
+ annotations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ labels:
+ {{- include "iggy-ui.labels" . | nindent 8 }}
+ spec:
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ serviceAccountName: {{ include "iggy-ui.serviceAccountName" . }}
+ securityContext:
+ {{- toYaml .Values.podSecurityContext | nindent 8 }}
+ containers:
+ - name: {{ .Chart.Name }}
+ securityContext:
+ {{- toYaml .Values.securityContext | nindent 12 }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag |
default .Chart.AppVersion }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ ports:
+ - name: http
+ containerPort: {{ .Values.ui.ports.http }}
+ protocol: TCP
+ livenessProbe:
+ httpGet:
+ path: /
+ port: http
+ readinessProbe:
+ httpGet:
+ path: /
+ port: http
+ resources:
+ {{- toYaml .Values.resources | nindent 12 }}
+ env:
+ - name: PUBLIC_IGGY_API_URL
+ value: {{ .Values.server.endpoint }}
+ {{- with .Values.ui.extraEnvs }}
+ {{- . | toYaml | nindent 12 }}
+ {{- end }}
+ {{- with .Values.nodeSelector }}
+ nodeSelector:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
+ affinity:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.tolerations }}
+ tolerations:
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
diff --git a/helm/charts/iggy-ui/templates/ingress.yaml
b/helm/charts/iggy-ui/templates/ingress.yaml
new file mode 100644
index 00000000..f9e08a19
--- /dev/null
+++ b/helm/charts/iggy-ui/templates/ingress.yaml
@@ -0,0 +1,78 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+{{- if .Values.ingress.enabled -}}
+{{- $fullName := include "iggy-ui.fullname" . -}}
+{{- $svcPort := .Values.service.port -}}
+{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0"
.Capabilities.KubeVersion.GitVersion)) }}
+ {{- if not (hasKey .Values.ingress.annotations
"kubernetes.io/ingress.class") }}
+ {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class"
.Values.ingress.className}}
+ {{- end }}
+{{- end }}
+{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1
+{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
+apiVersion: networking.k8s.io/v1beta1
+{{- else -}}
+apiVersion: extensions/v1beta1
+{{- end }}
+kind: Ingress
+metadata:
+ name: {{ $fullName }}
+ labels:
+ {{- include "iggy-ui.labels" . | nindent 4 }}
+ {{- with .Values.ingress.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ {{- if and .Values.ingress.className (semverCompare ">=1.18-0"
.Capabilities.KubeVersion.GitVersion) }}
+ ingressClassName: {{ .Values.ingress.className }}
+ {{- end }}
+ {{- if .Values.ingress.tls }}
+ tls:
+ {{- range .Values.ingress.tls }}
+ - hosts:
+ {{- range .hosts }}
+ - {{ . | quote }}
+ {{- end }}
+ secretName: {{ .secretName }}
+ {{- end }}
+ {{- end }}
+ rules:
+ {{- range .Values.ingress.hosts }}
+ - host: {{ .host | quote }}
+ http:
+ paths:
+ {{- range .paths }}
+ - path: {{ .path }}
+ {{- if and .pathType (semverCompare ">=1.18-0"
$.Capabilities.KubeVersion.GitVersion) }}
+ pathType: {{ .pathType }}
+ {{- end }}
+ backend:
+ {{- if semverCompare ">=1.19-0"
$.Capabilities.KubeVersion.GitVersion }}
+ service:
+ name: {{ $fullName }}
+ port:
+ number: {{ $svcPort }}
+ {{- else }}
+ serviceName: {{ $fullName }}
+ servicePort: {{ $svcPort }}
+ {{- end }}
+ {{- end }}
+ {{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-ui/templates/service.yaml
b/helm/charts/iggy-ui/templates/service.yaml
new file mode 100644
index 00000000..5df8675d
--- /dev/null
+++ b/helm/charts/iggy-ui/templates/service.yaml
@@ -0,0 +1,32 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ include "iggy-ui.fullname" . }}
+ labels:
+ {{- include "iggy-ui.labels" . | nindent 4 }}
+spec:
+ type: {{ .Values.service.type }}
+ ports:
+ - name: http
+ port: {{ .Values.ui.ports.http }}
+ targetPort: http
+ protocol: TCP
+ selector:
+ {{- include "iggy-ui.selectorLabels" . | nindent 4 }}
diff --git a/helm/charts/iggy-ui/templates/serviceaccount.yaml
b/helm/charts/iggy-ui/templates/serviceaccount.yaml
new file mode 100644
index 00000000..0a06e4b8
--- /dev/null
+++ b/helm/charts/iggy-ui/templates/serviceaccount.yaml
@@ -0,0 +1,29 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+{{- if .Values.serviceAccount.create -}}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: {{ include "iggy-ui.serviceAccountName" . }}
+ labels:
+ {{- include "iggy-ui.labels" . | nindent 4 }}
+ {{- with .Values.serviceAccount.annotations }}
+ annotations:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+{{- end }}
diff --git a/helm/charts/iggy-ui/values.yaml b/helm/charts/iggy-ui/values.yaml
new file mode 100644
index 00000000..72fc3d99
--- /dev/null
+++ b/helm/charts/iggy-ui/values.yaml
@@ -0,0 +1,105 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+---
+# Default values for iggy-ui.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+
+replicaCount: 1
+
+image:
+ repository: iggyrs/iggy-web-ui
+ pullPolicy: IfNotPresent
+ # Overrides the image tag whose default is the chart appVersion.
+ tag: ""
+
+imagePullSecrets: []
+nameOverride: ""
+fullnameOverride: ""
+
+# -- Additional labels to add to all resources
+additionalLabels: {}
+ # app: iggy
+
+serviceAccount:
+ # Specifies whether a service account should be created
+ create: true
+ # Annotations to add to the service account
+ annotations: {}
+ # The name of the service account to use.
+ # If not set and create is true, a name is generated using the fullname
template
+ name: ""
+
+podAnnotations: {}
+
+podSecurityContext: {}
+ # fsGroup: 2000
+
+securityContext: {}
+ # capabilities:
+ # drop:
+ # - ALL
+ # readOnlyRootFilesystem: true
+ # runAsNonRoot: true
+ # runAsUser: 1000
+
+service:
+ type: ClusterIP
+ port: 3050
+
+ingress:
+ enabled: false
+ className: ""
+ annotations: {}
+ # kubernetes.io/ingress.class: nginx
+ # kubernetes.io/tls-acme: "true"
+ hosts:
+ - host: chart-example.local
+ paths:
+ - path: /
+ pathType: ImplementationSpecific
+ tls: []
+ # - secretName: chart-example-tls
+ # hosts:
+ # - chart-example.local
+
+resources: {}
+ # We usually recommend not to specify default resources and to leave this as
a conscious
+ # choice for the user. This also increases chances charts run on
environments with little
+ # resources, such as Minikube. If you do want to specify resources,
uncomment the following
+ # lines, adjust them as necessary, and remove the curly braces after
'resources:'.
+ # limits:
+ # cpu: 100m
+ # memory: 128Mi
+ # requests:
+ # cpu: 100m
+ # memory: 128Mi
+
+nodeSelector: {}
+
+tolerations: []
+
+affinity: {}
+
+# Iggy configuration
+ui:
+ ports:
+ http: 3050
+ extraEnvs: {}
+server:
+ endpoint: http://iggy-server:80
diff --git a/scripts/DEPENDENCIES.md b/scripts/DEPENDENCIES.md
new file mode 100644
index 00000000..fcbf77b5
--- /dev/null
+++ b/scripts/DEPENDENCIES.md
@@ -0,0 +1,847 @@
+# Dependencies
+
+actix-codec: 0.5.2, "Apache-2.0 OR MIT",
+actix-cors: 0.7.1, "Apache-2.0 OR MIT",
+actix-files: 0.6.6, "Apache-2.0 OR MIT",
+actix-http: 3.11.0, "Apache-2.0 OR MIT",
+actix-macros: 0.2.4, "Apache-2.0 OR MIT",
+actix-router: 0.5.3, "Apache-2.0 OR MIT",
+actix-rt: 2.10.0, "Apache-2.0 OR MIT",
+actix-server: 2.6.0, "Apache-2.0 OR MIT",
+actix-service: 2.0.3, "Apache-2.0 OR MIT",
+actix-utils: 3.0.1, "Apache-2.0 OR MIT",
+actix-web: 4.11.0, "Apache-2.0 OR MIT",
+actix-web-codegen: 4.3.0, "Apache-2.0 OR MIT",
+addr2line: 0.24.2, "Apache-2.0 OR MIT",
+adler2: 2.0.1, "0BSD OR Apache-2.0 OR MIT",
+aead: 0.5.2, "Apache-2.0 OR MIT",
+aes: 0.8.4, "Apache-2.0 OR MIT",
+aes-gcm: 0.10.3, "Apache-2.0 OR MIT",
+ahash: 0.7.8, "Apache-2.0 OR MIT",
+ahash: 0.8.12, "Apache-2.0 OR MIT",
+aho-corasick: 1.1.3, "MIT OR Unlicense",
+alloc-no-stdlib: 2.0.4, "BSD-3-Clause",
+alloc-stdlib: 0.2.2, "BSD-3-Clause",
+allocator-api2: 0.2.21, "Apache-2.0 OR MIT",
+android-tzdata: 0.1.1, "Apache-2.0 OR MIT",
+android_system_properties: 0.1.5, "Apache-2.0 OR MIT",
+anstream: 0.6.19, "Apache-2.0 OR MIT",
+anstyle: 1.0.11, "Apache-2.0 OR MIT",
+anstyle-parse: 0.2.7, "Apache-2.0 OR MIT",
+anstyle-query: 1.1.3, "Apache-2.0 OR MIT",
+anstyle-wincon: 3.0.9, "Apache-2.0 OR MIT",
+anyhow: 1.0.98, "Apache-2.0 OR MIT",
+anymap2: 0.13.0, "Apache-2.0 OR MIT",
+arbitrary: 1.4.1, "Apache-2.0 OR MIT",
+arc-swap: 1.7.1, "Apache-2.0 OR MIT",
+arraydeque: 0.5.1, "Apache-2.0 OR MIT",
+arrayref: 0.3.9, "BSD-2-Clause",
+arrayvec: 0.7.6, "Apache-2.0 OR MIT",
+assert_cmd: 2.0.17, "Apache-2.0 OR MIT",
+async-broadcast: 0.7.2, "Apache-2.0 OR MIT",
+async-compression: 0.4.25, "Apache-2.0 OR MIT",
+async-dropper: 0.3.1, "MIT",
+async-dropper-derive: 0.3.1, "MIT",
+async-dropper-simple: 0.2.6, "MIT",
+async-lock: 3.4.0, "Apache-2.0 OR MIT",
+async-scoped: 0.9.0, "Apache-2.0 OR MIT",
+async-stream: 0.3.6, "MIT",
+async-stream-impl: 0.3.6, "MIT",
+async-trait: 0.1.88, "Apache-2.0 OR MIT",
+async_zip: 0.0.17, "MIT",
+atomic: 0.6.1, "Apache-2.0 OR MIT",
+atomic-polyfill: 1.0.3, "Apache-2.0 OR MIT",
+atomic-waker: 1.1.2, "Apache-2.0 OR MIT",
+attohttpc: 0.28.5, "MPL-2.0",
+autocfg: 1.5.0, "Apache-2.0 OR MIT",
+aws-creds: 0.38.0, "MIT",
+aws-lc-rs: 1.13.1, "ISC AND (Apache-2.0 OR ISC)",
+aws-lc-sys: 0.29.0, "ISC AND (Apache-2.0 OR ISC) AND OpenSSL",
+aws-region: 0.26.0, "MIT",
+axum: 0.7.9, "MIT",
+axum: 0.8.4, "MIT",
+axum-core: 0.4.5, "MIT",
+axum-core: 0.5.2, "MIT",
+axum-server: 0.7.2, "MIT",
+backtrace: 0.3.75, "Apache-2.0 OR MIT",
+base64: 0.21.7, "Apache-2.0 OR MIT",
+base64: 0.22.1, "Apache-2.0 OR MIT",
+bcrypt: 0.17.0, "MIT",
+bdd: 0.0.1, "Apache-2.0",
+beef: 0.5.2, "Apache-2.0 OR MIT",
+bench-dashboard-frontend: 0.4.1, "Apache-2.0",
+bench-dashboard-server: 0.4.0, "Apache-2.0",
+bench-dashboard-shared: 0.1.0, "Apache-2.0",
+bench-report: 0.2.2, "Apache-2.0",
+bench-runner: 0.1.0, "Apache-2.0",
+bincode: 1.3.3, "MIT",
+bincode: 2.0.1, "MIT",
+bincode_derive: 2.0.1, "MIT",
+bindgen: 0.69.5, "BSD-3-Clause",
+bitflags: 1.3.2, "Apache-2.0 OR MIT",
+bitflags: 2.9.1, "Apache-2.0 OR MIT",
+bitvec: 1.0.1, "MIT",
+blake3: 1.8.2, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR CC0-1.0",
+block-buffer: 0.10.4, "Apache-2.0 OR MIT",
+blowfish: 0.9.1, "Apache-2.0 OR MIT",
+bon: 3.6.4, "Apache-2.0 OR MIT",
+bon-macros: 3.6.4, "Apache-2.0 OR MIT",
+boolinator: 2.4.0, "Apache-2.0 OR MIT",
+borsh: 1.5.7, "Apache-2.0 OR MIT",
+borsh-derive: 1.5.7, "Apache-2.0",
+brotli: 8.0.1, "BSD-3-Clause AND MIT",
+brotli-decompressor: 5.0.0, "BSD-3-Clause OR MIT",
+bstr: 1.12.0, "Apache-2.0 OR MIT",
+bumpalo: 3.18.1, "Apache-2.0 OR MIT",
+byte-unit: 5.1.6, "MIT",
+bytecheck: 0.6.12, "MIT",
+bytecheck_derive: 0.6.12, "MIT",
+bytecount: 0.6.9, "Apache-2.0 OR MIT",
+bytemuck: 1.23.1, "Apache-2.0 OR MIT OR Zlib",
+byteorder: 1.5.0, "MIT OR Unlicense",
+bytes: 1.10.1, "MIT",
+bytestring: 1.4.0, "Apache-2.0 OR MIT",
+bzip2: 0.5.2, "Apache-2.0 OR MIT",
+bzip2: 0.6.0, "Apache-2.0 OR MIT",
+bzip2-sys: 0.1.13+1.0.8, "Apache-2.0 OR MIT",
+camino: 1.1.10, "Apache-2.0 OR MIT",
+cargo-platform: 0.1.9, "Apache-2.0 OR MIT",
+cargo_metadata: 0.19.2, "MIT",
+castaway: 0.2.3, "MIT",
+cc: 1.2.27, "Apache-2.0 OR MIT",
+cesu8: 1.1.0, "Apache-2.0 OR MIT",
+cexpr: 0.6.0, "Apache-2.0 OR MIT",
+cfg-if: 1.0.1, "Apache-2.0 OR MIT",
+cfg_aliases: 0.2.1, "MIT",
+charming: 0.6.0, "Apache-2.0 OR MIT",
+charming_macros: 0.1.0, "Apache-2.0 OR MIT",
+chrono: 0.4.41, "Apache-2.0 OR MIT",
+cipher: 0.4.4, "Apache-2.0 OR MIT",
+clang-sys: 1.8.1, "Apache-2.0",
+clap: 4.5.40, "Apache-2.0 OR MIT",
+clap_builder: 4.5.40, "Apache-2.0 OR MIT",
+clap_complete: 4.5.54, "Apache-2.0 OR MIT",
+clap_derive: 4.5.40, "Apache-2.0 OR MIT",
+clap_lex: 0.7.5, "Apache-2.0 OR MIT",
+cmake: 0.1.54, "Apache-2.0 OR MIT",
+cobs: 0.2.3, "Apache-2.0 OR MIT",
+colorchoice: 1.0.4, "Apache-2.0 OR MIT",
+colored: 3.0.0, "MPL-2.0",
+combine: 4.6.7, "MIT",
+comfy-table: 7.1.4, "MIT",
+compact_str: 0.7.1, "MIT",
+concurrent-queue: 2.5.0, "Apache-2.0 OR MIT",
+config: 0.15.11, "Apache-2.0 OR MIT",
+console: 0.15.11, "MIT",
+console-api: 0.8.1, "MIT",
+console-subscriber: 0.4.1, "MIT",
+console_error_panic_hook: 0.1.7, "Apache-2.0 OR MIT",
+const-random: 0.1.18, "Apache-2.0 OR MIT",
+const-random-macro: 0.1.16, "Apache-2.0 OR MIT",
+constant_time_eq: 0.3.1, "Apache-2.0 OR CC0-1.0 OR MIT-0",
+convert_case: 0.4.0, "MIT",
+convert_case: 0.6.0, "MIT",
+convert_case: 0.7.1, "MIT",
+cookie: 0.16.2, "Apache-2.0 OR MIT",
+core-foundation: 0.10.1, "Apache-2.0 OR MIT",
+core-foundation-sys: 0.8.7, "Apache-2.0 OR MIT",
+cpufeatures: 0.2.17, "Apache-2.0 OR MIT",
+crc32fast: 1.4.2, "Apache-2.0 OR MIT",
+critical-section: 1.2.0, "Apache-2.0 OR MIT",
+crossbeam: 0.8.4, "Apache-2.0 OR MIT",
+crossbeam-channel: 0.5.15, "Apache-2.0 OR MIT",
+crossbeam-deque: 0.8.6, "Apache-2.0 OR MIT",
+crossbeam-epoch: 0.9.18, "Apache-2.0 OR MIT",
+crossbeam-queue: 0.3.12, "Apache-2.0 OR MIT",
+crossbeam-utils: 0.8.21, "Apache-2.0 OR MIT",
+crossterm: 0.28.1, "MIT",
+crossterm_winapi: 0.9.1, "MIT",
+crunchy: 0.2.3, "MIT",
+crypto-common: 0.1.6, "Apache-2.0 OR MIT",
+ctor: 0.4.2, "Apache-2.0 OR MIT",
+ctor-proc-macro: 0.0.5, "Apache-2.0 OR MIT",
+ctr: 0.9.2, "Apache-2.0 OR MIT",
+cucumber: 0.21.1, "Apache-2.0 OR MIT",
+cucumber-codegen: 0.21.1, "Apache-2.0 OR MIT",
+cucumber-expressions: 0.3.0, "Apache-2.0 OR MIT",
+darling: 0.20.11, "MIT",
+darling_core: 0.20.11, "MIT",
+darling_macro: 0.20.11, "MIT",
+dashmap: 6.1.0, "MIT",
+dbus: 0.9.7, "Apache-2.0 OR MIT",
+dbus-secret-service: 4.0.3, "Apache-2.0 OR MIT",
+deflate64: 0.1.9, "MIT",
+deranged: 0.4.0, "Apache-2.0 OR MIT",
+derive-new: 0.7.0, "MIT",
+derive_arbitrary: 1.4.1, "Apache-2.0 OR MIT",
+derive_builder: 0.20.2, "Apache-2.0 OR MIT",
+derive_builder_core: 0.20.2, "Apache-2.0 OR MIT",
+derive_builder_macro: 0.20.2, "Apache-2.0 OR MIT",
+derive_more: 0.99.20, "MIT",
+derive_more: 2.0.1, "MIT",
+derive_more-impl: 2.0.1, "MIT",
+difflib: 0.4.0, "MIT",
+digest: 0.10.7, "Apache-2.0 OR MIT",
+dircpy: 0.3.19, "MIT",
+dirs: 6.0.0, "Apache-2.0 OR MIT",
+dirs-sys: 0.5.0, "Apache-2.0 OR MIT",
+displaydoc: 0.2.5, "Apache-2.0 OR MIT",
+dlopen2: 0.8.0, "Custom License File",
+dlopen2_derive: 0.4.1, "Custom License File",
+dlv-list: 0.5.2, "Apache-2.0 OR MIT",
+doc-comment: 0.3.3, "MIT",
+dotenvy: 0.15.7, "MIT",
+downcast: 0.11.0, "MIT",
+drain_filter_polyfill: 0.1.3, "Apache-2.0 OR MIT",
+dtoa: 1.0.10, "Apache-2.0 OR MIT",
+dtor: 0.0.6, "Apache-2.0 OR MIT",
+dtor-proc-macro: 0.0.5, "Apache-2.0 OR MIT",
+dunce: 1.0.5, "Apache-2.0 OR CC0-1.0 OR MIT-0",
+dyn-clone: 1.0.19, "Apache-2.0 OR MIT",
+either: 1.15.0, "Apache-2.0 OR MIT",
+embedded-io: 0.4.0, "Apache-2.0 OR MIT",
+embedded-io: 0.6.1, "Apache-2.0 OR MIT",
+encode_unicode: 1.0.0, "Apache-2.0 OR MIT",
+encoding_rs: 0.8.35, "(Apache-2.0 OR MIT) AND BSD-3-Clause",
+enum_dispatch: 0.3.13, "Apache-2.0 OR MIT",
+env_filter: 0.1.3, "Apache-2.0 OR MIT",
+env_logger: 0.11.8, "Apache-2.0 OR MIT",
+equivalent: 1.0.2, "Apache-2.0 OR MIT",
+err_trail: 0.8.5, "Apache-2.0",
+errno: 0.3.13, "Apache-2.0 OR MIT",
+error_set: 0.8.5, "Apache-2.0",
+error_set_impl: 0.8.5, "Apache-2.0",
+event-listener: 5.4.0, "Apache-2.0 OR MIT",
+event-listener-strategy: 0.5.4, "Apache-2.0 OR MIT",
+ext-trait: 1.0.1, "Apache-2.0 OR MIT OR Zlib",
+ext-trait-proc_macros: 1.0.1, "Apache-2.0 OR MIT OR Zlib",
+extension-traits: 1.0.1, "Apache-2.0 OR MIT OR Zlib",
+fast-async-mutex: 0.6.7, "Apache-2.0 OR MIT",
+fastbloom: 0.9.0, "Apache-2.0 OR MIT",
+fastrand: 2.3.0, "Apache-2.0 OR MIT",
+figlet-rs: 0.1.5, "Apache-2.0",
+figment: 0.10.19, "Apache-2.0 OR MIT",
+file-operation: 0.5.12, "MIT",
+filetime: 0.2.25, "Apache-2.0 OR MIT",
+flate2: 1.1.2, "Apache-2.0 OR MIT",
+float-cmp: 0.10.0, "MIT",
+flume: 0.11.1, "Apache-2.0 OR MIT",
+fnv: 1.0.7, "Apache-2.0 OR MIT",
+foldhash: 0.1.5, "Zlib",
+foreign-types: 0.3.2, "Apache-2.0 OR MIT",
+foreign-types-shared: 0.1.1, "Apache-2.0 OR MIT",
+form_urlencoded: 1.2.1, "Apache-2.0 OR MIT",
+fragile: 2.0.1, "Apache-2.0",
+fs-err: 3.1.1, "Apache-2.0 OR MIT",
+fs_extra: 1.3.0, "MIT",
+fsevent-sys: 4.1.0, "MIT",
+funty: 2.0.0, "MIT",
+futures: 0.3.31, "Apache-2.0 OR MIT",
+futures-channel: 0.3.31, "Apache-2.0 OR MIT",
+futures-core: 0.3.31, "Apache-2.0 OR MIT",
+futures-executor: 0.3.31, "Apache-2.0 OR MIT",
+futures-io: 0.3.31, "Apache-2.0 OR MIT",
+futures-lite: 2.6.0, "Apache-2.0 OR MIT",
+futures-macro: 0.3.31, "Apache-2.0 OR MIT",
+futures-sink: 0.3.31, "Apache-2.0 OR MIT",
+futures-task: 0.3.31, "Apache-2.0 OR MIT",
+futures-timer: 3.0.3, "Apache-2.0 OR MIT",
+futures-util: 0.3.31, "Apache-2.0 OR MIT",
+generator: 0.8.5, "Apache-2.0 OR MIT",
+generic-array: 0.14.7, "MIT",
+getrandom: 0.2.16, "Apache-2.0 OR MIT",
+getrandom: 0.3.3, "Apache-2.0 OR MIT",
+ghash: 0.5.1, "Apache-2.0 OR MIT",
+gherkin: 0.14.0, "Apache-2.0 OR MIT",
+gimli: 0.31.1, "Apache-2.0 OR MIT",
+git2: 0.20.2, "Apache-2.0 OR MIT",
+glob: 0.3.2, "Apache-2.0 OR MIT",
+globset: 0.4.16, "MIT OR Unlicense",
+globwalk: 0.9.1, "MIT",
+gloo: 0.8.1, "Apache-2.0 OR MIT",
+gloo: 0.10.0, "Apache-2.0 OR MIT",
+gloo: 0.11.0, "Apache-2.0 OR MIT",
+gloo-console: 0.2.3, "Apache-2.0 OR MIT",
+gloo-console: 0.3.0, "Apache-2.0 OR MIT",
+gloo-dialogs: 0.1.1, "Apache-2.0 OR MIT",
+gloo-dialogs: 0.2.0, "Apache-2.0 OR MIT",
+gloo-events: 0.1.2, "Apache-2.0 OR MIT",
+gloo-events: 0.2.0, "Apache-2.0 OR MIT",
+gloo-file: 0.2.3, "Apache-2.0 OR MIT",
+gloo-file: 0.3.0, "Apache-2.0 OR MIT",
+gloo-history: 0.1.5, "Apache-2.0 OR MIT",
+gloo-history: 0.2.2, "Apache-2.0 OR MIT",
+gloo-net: 0.3.1, "Apache-2.0 OR MIT",
+gloo-net: 0.4.0, "Apache-2.0 OR MIT",
+gloo-net: 0.5.0, "Apache-2.0 OR MIT",
+gloo-render: 0.1.1, "Apache-2.0 OR MIT",
+gloo-render: 0.2.0, "Apache-2.0 OR MIT",
+gloo-storage: 0.2.2, "Apache-2.0 OR MIT",
+gloo-storage: 0.3.0, "Apache-2.0 OR MIT",
+gloo-timers: 0.2.6, "Apache-2.0 OR MIT",
+gloo-timers: 0.3.0, "Apache-2.0 OR MIT",
+gloo-utils: 0.1.7, "Apache-2.0 OR MIT",
+gloo-utils: 0.2.0, "Apache-2.0 OR MIT",
+gloo-worker: 0.2.1, "Apache-2.0 OR MIT",
+gloo-worker: 0.4.0, "Apache-2.0 OR MIT",
+gloo-worker: 0.5.0, "Apache-2.0 OR MIT",
+gloo-worker-macros: 0.1.0, "Apache-2.0 OR MIT",
+governor: 0.10.0, "MIT",
+h2: 0.3.26, "MIT",
+h2: 0.4.10, "MIT",
+halfbrown: 0.3.0, "Apache-2.0 OR MIT",
+handlebars: 6.3.2, "MIT",
+hash32: 0.2.1, "Apache-2.0 OR MIT",
+hashbrown: 0.12.3, "Apache-2.0 OR MIT",
+hashbrown: 0.14.5, "Apache-2.0 OR MIT",
+hashbrown: 0.15.4, "Apache-2.0 OR MIT",
+hashlink: 0.10.0, "Apache-2.0 OR MIT",
+hdrhistogram: 7.5.4, "Apache-2.0 OR MIT",
+heapless: 0.7.17, "Apache-2.0 OR MIT",
+heck: 0.4.1, "Apache-2.0 OR MIT",
+heck: 0.5.0, "Apache-2.0 OR MIT",
+hermit-abi: 0.5.2, "Apache-2.0 OR MIT",
+hex: 0.4.3, "Apache-2.0 OR MIT",
+hmac: 0.12.1, "Apache-2.0 OR MIT",
+home: 0.5.11, "Apache-2.0 OR MIT",
+hostname: 0.4.1, "MIT",
+http: 0.2.12, "Apache-2.0 OR MIT",
+http: 1.3.1, "Apache-2.0 OR MIT",
+http-body: 1.0.1, "MIT",
+http-body-util: 0.1.3, "MIT",
+http-range: 0.1.5, "MIT",
+httparse: 1.10.1, "Apache-2.0 OR MIT",
+httpdate: 1.0.3, "Apache-2.0 OR MIT",
+human-repr: 1.1.0, "MIT",
+humantime: 2.2.0, "Apache-2.0 OR MIT",
+hyper: 1.6.0, "MIT",
+hyper-rustls: 0.27.7, "Apache-2.0 OR ISC OR MIT",
+hyper-timeout: 0.5.2, "Apache-2.0 OR MIT",
+hyper-util: 0.1.14, "MIT",
+iana-time-zone: 0.1.63, "Apache-2.0 OR MIT",
+iana-time-zone-haiku: 0.1.2, "Apache-2.0 OR MIT",
+icu_collections: 2.0.0, "Unicode-3.0",
+icu_locale_core: 2.0.0, "Unicode-3.0",
+icu_normalizer: 2.0.0, "Unicode-3.0",
+icu_normalizer_data: 2.0.0, "Unicode-3.0",
+icu_properties: 2.0.1, "Unicode-3.0",
+icu_properties_data: 2.0.1, "Unicode-3.0",
+icu_provider: 2.0.0, "Unicode-3.0",
+ident_case: 1.0.1, "Apache-2.0 OR MIT",
+idna: 1.0.3, "Apache-2.0 OR MIT",
+idna_adapter: 1.2.1, "Apache-2.0 OR MIT",
+iggy: 0.7.0, "Apache-2.0",
+iggy-bench: 0.2.4, "Apache-2.0",
+iggy-cli: 0.9.0, "Apache-2.0",
+iggy-connectors: 0.1.0, "Apache-2.0",
+iggy_binary_protocol: 0.7.0, "Apache-2.0",
+iggy_common: 0.7.0, "Apache-2.0",
+iggy_connector_quickwit_sink: 0.1.0, "Apache-2.0",
+iggy_connector_random_source: 0.1.0, "Apache-2.0",
+iggy_connector_sdk: 0.1.0, "Apache-2.0",
+iggy_connector_stdout_sink: 0.1.0, "Apache-2.0",
+iggy_examples: 0.0.5, "Apache-2.0",
+ignore: 0.4.23, "MIT OR Unlicense",
+impl-more: 0.1.9, "Apache-2.0 OR MIT",
+implicit-clone: 0.4.9, "Apache-2.0 OR MIT",
+implicit-clone-derive: 0.1.2, "Apache-2.0 OR MIT",
+indexmap: 1.9.3, "Apache-2.0 OR MIT",
+indexmap: 2.9.0, "Apache-2.0 OR MIT",
+indices: 0.3.6, "Apache-2.0",
+inflections: 1.1.1, "MIT",
+inlinable_string: 0.1.15, "Apache-2.0 OR MIT",
+inotify: 0.11.0, "ISC",
+inotify-sys: 0.1.5, "ISC",
+inout: 0.1.4, "Apache-2.0 OR MIT",
+instant: 0.1.13, "BSD-3-Clause",
+integration: 0.0.1, "Apache-2.0",
+inventory: 0.3.20, "Apache-2.0 OR MIT",
+ipnet: 2.11.0, "Apache-2.0 OR MIT",
+iri-string: 0.7.8, "Apache-2.0 OR MIT",
+is_terminal_polyfill: 1.70.1, "Apache-2.0 OR MIT",
+itertools: 0.12.1, "Apache-2.0 OR MIT",
+itertools: 0.13.0, "Apache-2.0 OR MIT",
+itertools: 0.14.0, "Apache-2.0 OR MIT",
+itoa: 1.0.15, "Apache-2.0 OR MIT",
+jiff: 0.2.15, "MIT OR Unlicense",
+jiff-static: 0.2.15, "MIT OR Unlicense",
+jni: 0.21.1, "Apache-2.0 OR MIT",
+jni-sys: 0.3.0, "Apache-2.0 OR MIT",
+jobserver: 0.1.33, "Apache-2.0 OR MIT",
+js-sys: 0.3.77, "Apache-2.0 OR MIT",
+json5: 0.4.1, "ISC",
+jsonwebtoken: 9.3.1, "MIT",
+jwalk: 0.8.1, "MIT",
+keyring: 3.6.2, "Apache-2.0 OR MIT",
+kqueue: 1.1.1, "MIT",
+kqueue-sys: 1.0.4, "MIT",
+language-tags: 0.3.2, "Apache-2.0 OR MIT",
+lazy-regex: 3.4.1, "MIT",
+lazy-regex-proc_macros: 3.4.1, "MIT",
+lazy_static: 1.5.0, "Apache-2.0 OR MIT",
+lazycell: 1.3.0, "Apache-2.0 OR MIT",
+lending-iterator: 0.1.7, "Apache-2.0 OR MIT OR Zlib",
+lending-iterator-proc_macros: 0.1.7, "Apache-2.0 OR MIT OR Zlib",
+libbz2-rs-sys: 0.2.1, "bzip2-1.0.6",
+libc: 0.2.174, "Apache-2.0 OR MIT",
+libdbus-sys: 0.2.5, "Apache-2.0 OR MIT",
+libgit2-sys: 0.18.2+1.9.1, "Apache-2.0 OR MIT",
+libloading: 0.8.8, "ISC",
+liblzma: 0.4.2, "Apache-2.0 OR MIT",
+liblzma-sys: 0.4.4, "Apache-2.0 OR MIT",
+libmimalloc-sys: 0.1.43, "MIT",
+libredox: 0.1.3, "MIT",
+libyml: 0.0.5, "MIT",
+libz-rs-sys: 0.5.1, "Zlib",
+libz-sys: 1.1.22, "Apache-2.0 OR MIT",
+linked-hash-map: 0.5.6, "Apache-2.0 OR MIT",
+linux-raw-sys: 0.4.15, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
+linux-raw-sys: 0.9.4, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
+litemap: 0.8.0, "Unicode-3.0",
+local-channel: 0.1.5, "Apache-2.0 OR MIT",
+local-waker: 0.1.4, "Apache-2.0 OR MIT",
+lock_api: 0.4.13, "Apache-2.0 OR MIT",
+log: 0.4.27, "Apache-2.0 OR MIT",
+logos: 0.15.0, "Apache-2.0 OR MIT",
+logos-codegen: 0.15.0, "Apache-2.0 OR MIT",
+logos-derive: 0.15.0, "Apache-2.0 OR MIT",
+loom: 0.7.2, "MIT",
+lru-slab: 0.1.2, "Apache-2.0 OR MIT OR Zlib",
+macro_rules_attribute: 0.1.3, "MIT",
+macro_rules_attribute-proc_macro: 0.1.3, "MIT",
+matchers: 0.1.0, "MIT",
+matchit: 0.7.3, "MIT AND BSD-3-Clause",
+matchit: 0.8.4, "MIT AND BSD-3-Clause",
+maybe-async: 0.2.10, "MIT",
+md5: 0.7.0, "Apache-2.0 OR MIT",
+memchr: 2.7.5, "MIT OR Unlicense",
+miette: 7.6.0, "Apache-2.0",
+miette-derive: 7.6.0, "Apache-2.0",
+mimalloc: 0.1.47, "MIT",
+mime: 0.3.17, "Apache-2.0 OR MIT",
+mime_guess: 2.0.5, "MIT",
+minidom: 0.16.0, "MPL-2.0",
+minimal-lexical: 0.2.1, "Apache-2.0 OR MIT",
+miniz_oxide: 0.8.9, "Apache-2.0 OR MIT OR Zlib",
+mio: 1.0.4, "MIT",
+mockall: 0.13.1, "Apache-2.0 OR MIT",
+mockall_derive: 0.13.1, "Apache-2.0 OR MIT",
+moka: 0.12.10, "Apache-2.0 OR MIT",
+nanorand: 0.7.0, "Zlib",
+never-say-never: 6.6.666, "Apache-2.0 OR MIT OR Zlib",
+nix: 0.30.1, "MIT",
+nom: 7.1.3, "MIT",
+nom_locate: 4.2.0, "MIT",
+nonzero_ext: 0.3.0, "Apache-2.0",
+nonzero_lit: 0.1.2, "Apache-2.0 OR CC0-1.0 OR MIT",
+normalize-line-endings: 0.3.0, "Apache-2.0",
+notify: 8.0.0, "CC0-1.0",
+notify-types: 2.0.0, "Apache-2.0 OR MIT",
+nougat: 0.2.4, "Apache-2.0 OR MIT OR Zlib",
+nougat-proc_macros: 0.2.4, "Apache-2.0 OR MIT OR Zlib",
+ntapi: 0.4.1, "Apache-2.0 OR MIT",
+nu-ansi-term: 0.46.0, "MIT",
+num: 0.4.3, "Apache-2.0 OR MIT",
+num-bigint: 0.4.6, "Apache-2.0 OR MIT",
+num-complex: 0.4.6, "Apache-2.0 OR MIT",
+num-conv: 0.1.0, "Apache-2.0 OR MIT",
+num-integer: 0.1.46, "Apache-2.0 OR MIT",
+num-iter: 0.1.45, "Apache-2.0 OR MIT",
+num-modular: 0.6.1, "Apache-2.0",
+num-order: 1.2.0, "Apache-2.0",
+num-rational: 0.4.2, "Apache-2.0 OR MIT",
+num-traits: 0.2.19, "Apache-2.0 OR MIT",
+num_cpus: 1.17.0, "Apache-2.0 OR MIT",
+num_threads: 0.1.7, "Apache-2.0 OR MIT",
+objc2-core-foundation: 0.3.1, "Apache-2.0 OR MIT OR Zlib",
+objc2-io-kit: 0.3.1, "Apache-2.0 OR MIT OR Zlib",
+object: 0.36.7, "Apache-2.0 OR MIT",
+octocrab: 0.44.1, "Apache-2.0 OR MIT",
+once_cell: 1.21.3, "Apache-2.0 OR MIT",
+once_cell_polyfill: 1.70.1, "Apache-2.0 OR MIT",
+opaque-debug: 0.3.1, "Apache-2.0 OR MIT",
+openssl: 0.10.73, "Apache-2.0",
+openssl-macros: 0.1.1, "Apache-2.0 OR MIT",
+openssl-probe: 0.1.6, "Apache-2.0 OR MIT",
+openssl-src: 300.5.0+3.5.0, "Apache-2.0 OR MIT",
+openssl-sys: 0.9.109, "MIT",
+opentelemetry: 0.30.0, "Apache-2.0",
+opentelemetry-appender-tracing: 0.30.1, "Apache-2.0",
+opentelemetry-http: 0.30.0, "Apache-2.0",
+opentelemetry-otlp: 0.30.0, "Apache-2.0",
+opentelemetry-proto: 0.30.0, "Apache-2.0",
+opentelemetry-semantic-conventions: 0.30.0, "Apache-2.0",
+opentelemetry_sdk: 0.30.0, "Apache-2.0",
+option-ext: 0.2.0, "MPL-2.0",
+ordered-multimap: 0.7.3, "MIT",
+overload: 0.1.1, "MIT",
+parking: 2.2.1, "Apache-2.0 OR MIT",
+parking_lot: 0.11.2, "Apache-2.0 OR MIT",
+parking_lot: 0.12.4, "Apache-2.0 OR MIT",
+parking_lot_core: 0.8.6, "Apache-2.0 OR MIT",
+parking_lot_core: 0.9.11, "Apache-2.0 OR MIT",
+passterm: 2.0.1, "BSD-3-Clause",
+paste: 1.0.15, "Apache-2.0 OR MIT",
+pathdiff: 0.2.3, "Apache-2.0 OR MIT",
+pbkdf2: 0.12.2, "Apache-2.0 OR MIT",
+pear: 0.2.9, "Apache-2.0 OR MIT",
+pear_codegen: 0.2.9, "Apache-2.0 OR MIT",
+peg: 0.6.3, "MIT",
+peg-macros: 0.6.3, "MIT",
+peg-runtime: 0.6.3, "MIT",
+pem: 3.0.5, "MIT",
+percent-encoding: 2.3.1, "Apache-2.0 OR MIT",
+pest: 2.8.1, "Apache-2.0 OR MIT",
+pest_derive: 2.8.1, "Apache-2.0 OR MIT",
+pest_generator: 2.8.1, "Apache-2.0 OR MIT",
+pest_meta: 2.8.1, "Apache-2.0 OR MIT",
+pin-project: 1.1.10, "Apache-2.0 OR MIT",
+pin-project-internal: 1.1.10, "Apache-2.0 OR MIT",
+pin-project-lite: 0.2.16, "Apache-2.0 OR MIT",
+pin-utils: 0.1.0, "Apache-2.0 OR MIT",
+pinned: 0.1.0, "Apache-2.0 OR MIT",
+pkg-config: 0.3.32, "Apache-2.0 OR MIT",
+polonius-the-crab: 0.2.1, "Apache-2.0 OR MIT OR Zlib",
+polyval: 0.6.2, "Apache-2.0 OR MIT",
+portable-atomic: 1.11.1, "Apache-2.0 OR MIT",
+portable-atomic-util: 0.2.4, "Apache-2.0 OR MIT",
+postcard: 1.1.1, "Apache-2.0 OR MIT",
+potential_utf: 0.1.2, "Unicode-3.0",
+powerfmt: 0.2.0, "Apache-2.0 OR MIT",
+ppv-lite86: 0.2.21, "Apache-2.0 OR MIT",
+predicates: 3.1.3, "Apache-2.0 OR MIT",
+predicates-core: 1.0.9, "Apache-2.0 OR MIT",
+predicates-tree: 1.0.12, "Apache-2.0 OR MIT",
+prettyplease: 0.2.35, "Apache-2.0 OR MIT",
+proc-macro-crate: 1.3.1, "Apache-2.0 OR MIT",
+proc-macro-crate: 3.3.0, "Apache-2.0 OR MIT",
+proc-macro-error: 1.0.4, "Apache-2.0 OR MIT",
+proc-macro-error-attr: 1.0.4, "Apache-2.0 OR MIT",
+proc-macro2: 1.0.95, "Apache-2.0 OR MIT",
+proc-macro2-diagnostics: 0.10.1, "Apache-2.0 OR MIT",
+prokio: 0.1.0, "Apache-2.0 OR MIT",
+prometheus-client: 0.23.1, "Apache-2.0 OR MIT",
+prometheus-client-derive-encode: 0.4.2, "Apache-2.0 OR MIT",
+prost: 0.13.5, "Apache-2.0",
+prost-derive: 0.13.5, "Apache-2.0",
+prost-reflect: 0.15.3, "Apache-2.0 OR MIT",
+prost-types: 0.13.5, "Apache-2.0",
+protox: 0.8.0, "Apache-2.0 OR MIT",
+protox-parse: 0.8.0, "Apache-2.0 OR MIT",
+ptr_meta: 0.1.4, "MIT",
+ptr_meta_derive: 0.1.4, "MIT",
+quanta: 0.12.6, "MIT",
+quick-xml: 0.32.0, "MIT",
+quick-xml: 0.36.2, "MIT",
+quinn: 0.11.8, "Apache-2.0 OR MIT",
+quinn-proto: 0.11.12, "Apache-2.0 OR MIT",
+quinn-udp: 0.5.13, "Apache-2.0 OR MIT",
+quote: 1.0.40, "Apache-2.0 OR MIT",
+r-efi: 5.3.0, "Apache-2.0 OR LGPL-2.1-or-later OR MIT",
+radium: 0.7.0, "MIT",
+rand: 0.8.5, "Apache-2.0 OR MIT",
+rand: 0.9.1, "Apache-2.0 OR MIT",
+rand_chacha: 0.3.1, "Apache-2.0 OR MIT",
+rand_chacha: 0.9.0, "Apache-2.0 OR MIT",
+rand_core: 0.6.4, "Apache-2.0 OR MIT",
+rand_core: 0.9.3, "Apache-2.0 OR MIT",
+raw-cpuid: 11.5.0, "MIT",
+rayon: 1.10.0, "Apache-2.0 OR MIT",
+rayon-core: 1.12.1, "Apache-2.0 OR MIT",
+rcgen: 0.13.2, "Apache-2.0 OR MIT",
+redox_syscall: 0.2.16, "MIT",
+redox_syscall: 0.5.13, "MIT",
+redox_users: 0.5.0, "MIT",
+ref-cast: 1.0.24, "Apache-2.0 OR MIT",
+ref-cast-impl: 1.0.24, "Apache-2.0 OR MIT",
+regex: 1.11.1, "Apache-2.0 OR MIT",
+regex-automata: 0.1.10, "MIT OR Unlicense",
+regex-automata: 0.4.9, "Apache-2.0 OR MIT",
+regex-lite: 0.1.6, "Apache-2.0 OR MIT",
+regex-syntax: 0.6.29, "Apache-2.0 OR MIT",
+regex-syntax: 0.7.5, "Apache-2.0 OR MIT",
+regex-syntax: 0.8.5, "Apache-2.0 OR MIT",
+rend: 0.4.2, "MIT",
+reqwest: 0.12.20, "Apache-2.0 OR MIT",
+reqwest-middleware: 0.4.2, "Apache-2.0 OR MIT",
+reqwest-retry: 0.7.0, "Apache-2.0 OR MIT",
+retry-policies: 0.4.0, "Apache-2.0 OR MIT",
+ring: 0.17.14, "Apache-2.0 AND ISC",
+rkyv: 0.7.45, "MIT",
+rkyv_derive: 0.7.45, "MIT",
+ron: 0.8.1, "Apache-2.0 OR MIT",
+route-recognizer: 0.3.1, "MIT",
+rust-ini: 0.21.1, "MIT",
+rust-s3: 0.36.0-beta.2, "MIT",
+rust_decimal: 1.37.2, "MIT",
+rustc-demangle: 0.1.25, "Apache-2.0 OR MIT",
+rustc-hash: 1.1.0, "Apache-2.0 OR MIT",
+rustc-hash: 2.1.1, "Apache-2.0 OR MIT",
+rustc_version: 0.4.1, "Apache-2.0 OR MIT",
+rustix: 0.38.44, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
+rustix: 1.0.7, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
+rustls: 0.23.28, "Apache-2.0 OR ISC OR MIT",
+rustls-native-certs: 0.8.1, "Apache-2.0 OR ISC OR MIT",
+rustls-pemfile: 2.2.0, "Apache-2.0 OR ISC OR MIT",
+rustls-pki-types: 1.12.0, "Apache-2.0 OR MIT",
+rustls-platform-verifier: 0.5.3, "Apache-2.0 OR MIT",
+rustls-platform-verifier-android: 0.1.1, "Apache-2.0 OR MIT",
+rustls-webpki: 0.103.3, "ISC",
+rustversion: 1.0.21, "Apache-2.0 OR MIT",
+rxml: 0.11.1, "MIT",
+rxml_validation: 0.11.0, "MIT",
+ryu: 1.0.20, "Apache-2.0 OR BSL-1.0",
+safe_arch: 0.7.4, "Apache-2.0 OR MIT OR Zlib",
+same-file: 1.0.6, "MIT OR Unlicense",
+scc: 2.3.4, "Apache-2.0",
+schannel: 0.1.27, "MIT",
+schemars: 0.9.0, "MIT",
+scoped-tls: 1.0.1, "Apache-2.0 OR MIT",
+scopeguard: 1.2.0, "Apache-2.0 OR MIT",
+sdd: 3.0.8, "Apache-2.0",
+seahash: 4.1.0, "MIT",
+sealed: 0.5.0, "Apache-2.0 OR MIT",
+secrecy: 0.10.3, "Apache-2.0 OR MIT",
+security-framework: 3.2.0, "Apache-2.0 OR MIT",
+security-framework-sys: 2.14.0, "Apache-2.0 OR MIT",
+semver: 1.0.26, "Apache-2.0 OR MIT",
+serde: 1.0.219, "Apache-2.0 OR MIT",
+serde-wasm-bindgen: 0.5.0, "MIT",
+serde-wasm-bindgen: 0.6.5, "MIT",
+serde_derive: 1.0.219, "Apache-2.0 OR MIT",
+serde_json: 1.0.140, "Apache-2.0 OR MIT",
+serde_path_to_error: 0.1.17, "Apache-2.0 OR MIT",
+serde_spanned: 0.6.9, "Apache-2.0 OR MIT",
+serde_urlencoded: 0.7.1, "Apache-2.0 OR MIT",
+serde_with: 3.13.0, "Apache-2.0 OR MIT",
+serde_with_macros: 3.13.0, "Apache-2.0 OR MIT",
+serde_yml: 0.0.12, "Apache-2.0 OR MIT",
+serial_test: 3.2.0, "MIT",
+serial_test_derive: 3.2.0, "MIT",
+server: 0.5.0, "Apache-2.0",
+sha1: 0.10.6, "Apache-2.0 OR MIT",
+sha2: 0.10.9, "Apache-2.0 OR MIT",
+sharded-slab: 0.1.7, "MIT",
+shlex: 1.3.0, "Apache-2.0 OR MIT",
+signal-hook-registry: 1.4.5, "Apache-2.0 OR MIT",
+simd-adler32: 0.3.7, "MIT",
+simd-json: 0.15.1, "Apache-2.0 OR MIT",
+simdutf8: 0.1.5, "Apache-2.0 OR MIT",
+simple_asn1: 0.6.3, "ISC",
+siphasher: 1.0.1, "Apache-2.0 OR MIT",
+slab: 0.4.10, "MIT",
+smallvec: 1.15.1, "Apache-2.0 OR MIT",
+smart-default: 0.7.1, "MIT",
+smawk: 0.3.2, "MIT",
+snafu: 0.8.6, "Apache-2.0 OR MIT",
+snafu-derive: 0.8.6, "Apache-2.0 OR MIT",
+socket2: 0.5.10, "Apache-2.0 OR MIT",
+spin: 0.9.8, "MIT",
+spinning_top: 0.3.0, "Apache-2.0 OR MIT",
+stable_deref_trait: 1.2.0, "Apache-2.0 OR MIT",
+static-toml: 1.3.0, "MIT",
+static_assertions: 1.1.0, "Apache-2.0 OR MIT",
+strsim: 0.11.1, "MIT",
+strum: 0.27.1, "MIT",
+strum_macros: 0.27.1, "MIT",
+subtle: 2.6.1, "BSD-3-Clause",
+syn: 1.0.109, "Apache-2.0 OR MIT",
+syn: 2.0.104, "Apache-2.0 OR MIT",
+sync_wrapper: 1.0.2, "Apache-2.0",
+synstructure: 0.13.2, "MIT",
+synthez: 0.3.1, "BlueOak-1.0.0",
+synthez-codegen: 0.3.1, "BlueOak-1.0.0",
+synthez-core: 0.3.1, "BlueOak-1.0.0",
+sysinfo: 0.34.2, "MIT",
+sysinfo: 0.35.2, "MIT",
+tagptr: 0.2.0, "Apache-2.0 OR MIT",
+tap: 1.0.1, "MIT",
+tempfile: 3.20.0, "Apache-2.0 OR MIT",
+terminal_size: 0.4.2, "Apache-2.0 OR MIT",
+termtree: 0.5.1, "MIT",
+test-case: 3.3.1, "MIT",
+test-case-core: 3.3.1, "MIT",
+test-case-macros: 3.3.1, "MIT",
+textwrap: 0.16.2, "MIT",
+thiserror: 1.0.69, "Apache-2.0 OR MIT",
+thiserror: 2.0.12, "Apache-2.0 OR MIT",
+thiserror-impl: 1.0.69, "Apache-2.0 OR MIT",
+thiserror-impl: 2.0.12, "Apache-2.0 OR MIT",
+thread_local: 1.1.9, "Apache-2.0 OR MIT",
+time: 0.3.41, "Apache-2.0 OR MIT",
+time-core: 0.1.4, "Apache-2.0 OR MIT",
+time-macros: 0.2.22, "Apache-2.0 OR MIT",
+tiny-keccak: 2.0.2, "CC0-1.0",
+tinystr: 0.8.1, "Unicode-3.0",
+tinyvec: 1.9.0, "Apache-2.0 OR MIT OR Zlib",
+tinyvec_macros: 0.1.1, "Apache-2.0 OR MIT OR Zlib",
+tokio: 1.45.1, "MIT",
+tokio-macros: 2.5.0, "MIT",
+tokio-rustls: 0.26.2, "Apache-2.0 OR MIT",
+tokio-stream: 0.1.17, "MIT",
+tokio-util: 0.7.15, "MIT",
+toml: 0.8.23, "Apache-2.0 OR MIT",
+toml_datetime: 0.6.11, "Apache-2.0 OR MIT",
+toml_edit: 0.19.15, "Apache-2.0 OR MIT",
+toml_edit: 0.22.27, "Apache-2.0 OR MIT",
+toml_write: 0.1.2, "Apache-2.0 OR MIT",
+tonic: 0.12.3, "MIT",
+tonic: 0.13.1, "MIT",
+tools: 0.1.0, "Apache-2.0",
+tower: 0.4.13, "MIT",
+tower: 0.5.2, "MIT",
+tower-http: 0.6.6, "MIT",
+tower-layer: 0.3.3, "MIT",
+tower-service: 0.3.3, "MIT",
+tracing: 0.1.41, "MIT",
+tracing-appender: 0.2.3, "MIT",
+tracing-attributes: 0.1.30, "MIT",
+tracing-core: 0.1.34, "MIT",
+tracing-log: 0.2.0, "MIT",
+tracing-opentelemetry: 0.31.0, "MIT",
+tracing-subscriber: 0.3.19, "MIT",
+trait-variant: 0.1.2, "Apache-2.0 OR MIT",
+trim-in-place: 0.1.7, "MIT",
+try-lock: 0.2.5, "MIT",
+twox-hash: 2.1.1, "MIT",
+typed-builder: 0.15.2, "Apache-2.0 OR MIT",
+typed-builder-macro: 0.15.2, "Apache-2.0 OR MIT",
+typenum: 1.18.0, "Apache-2.0 OR MIT",
+ucd-trie: 0.1.7, "Apache-2.0 OR MIT",
+ulid: 1.2.1, "MIT",
+uncased: 0.9.10, "Apache-2.0 OR MIT",
+unicase: 2.8.1, "Apache-2.0 OR MIT",
+unicode-ident: 1.0.18, "(MIT OR Apache-2.0) AND Unicode-3.0",
+unicode-linebreak: 0.1.5, "Apache-2.0",
+unicode-segmentation: 1.12.0, "Apache-2.0 OR MIT",
+unicode-width: 0.1.14, "Apache-2.0 OR MIT",
+unicode-width: 0.2.1, "Apache-2.0 OR MIT",
+unicode-xid: 0.2.6, "Apache-2.0 OR MIT",
+universal-hash: 0.5.1, "Apache-2.0 OR MIT",
+untrusted: 0.9.0, "ISC",
+unty: 0.0.4, "Apache-2.0 OR MIT",
+url: 2.5.4, "Apache-2.0 OR MIT",
+urlencoding: 2.1.3, "MIT",
+utf8-width: 0.1.7, "MIT",
+utf8_iter: 1.0.4, "Apache-2.0 OR MIT",
+utf8parse: 0.2.2, "Apache-2.0 OR MIT",
+uuid: 1.17.0, "Apache-2.0 OR MIT",
+v_htmlescape: 0.15.8, "Apache-2.0 OR MIT",
+valuable: 0.1.1, "MIT",
+value-trait: 0.11.0, "Apache-2.0 OR MIT",
+vcpkg: 0.2.15, "Apache-2.0 OR MIT",
+vergen: 9.0.6, "Apache-2.0 OR MIT",
+vergen-git2: 1.0.7, "Apache-2.0 OR MIT",
+vergen-lib: 0.1.6, "Apache-2.0 OR MIT",
+version_check: 0.9.5, "Apache-2.0 OR MIT",
+virtue: 0.0.18, "MIT",
+wait-timeout: 0.2.1, "Apache-2.0 OR MIT",
+walkdir: 2.5.0, "MIT OR Unlicense",
+want: 0.3.1, "MIT",
+wasi: 0.11.1+wasi-snapshot-preview1, "Apache-2.0 OR Apache-2.0 WITH
LLVM-exception OR MIT",
+wasi: 0.14.2+wasi-0.2.4, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
+wasm-bindgen: 0.2.100, "Apache-2.0 OR MIT",
+wasm-bindgen-backend: 0.2.100, "Apache-2.0 OR MIT",
+wasm-bindgen-futures: 0.4.50, "Apache-2.0 OR MIT",
+wasm-bindgen-macro: 0.2.100, "Apache-2.0 OR MIT",
+wasm-bindgen-macro-support: 0.2.100, "Apache-2.0 OR MIT",
+wasm-bindgen-shared: 0.2.100, "Apache-2.0 OR MIT",
+wasm-streams: 0.4.2, "Apache-2.0 OR MIT",
+wasm-timer: 0.2.5, "MIT",
+web-sys: 0.3.77, "Apache-2.0 OR MIT",
+web-time: 1.1.0, "Apache-2.0 OR MIT",
+webpki-root-certs: 0.26.11, "CDLA-Permissive-2.0",
+webpki-root-certs: 1.0.1, "CDLA-Permissive-2.0",
+webpki-roots: 0.26.11, "CDLA-Permissive-2.0",
+webpki-roots: 1.0.1, "CDLA-Permissive-2.0",
+which: 4.4.2, "MIT",
+wide: 0.7.33, "Apache-2.0 OR MIT OR Zlib",
+winapi: 0.3.9, "Apache-2.0 OR MIT",
+winapi-i686-pc-windows-gnu: 0.4.0, "Apache-2.0 OR MIT",
+winapi-util: 0.1.9, "MIT OR Unlicense",
+winapi-x86_64-pc-windows-gnu: 0.4.0, "Apache-2.0 OR MIT",
+windows: 0.57.0, "Apache-2.0 OR MIT",
+windows: 0.61.3, "Apache-2.0 OR MIT",
+windows-collections: 0.2.0, "Apache-2.0 OR MIT",
+windows-core: 0.57.0, "Apache-2.0 OR MIT",
+windows-core: 0.61.2, "Apache-2.0 OR MIT",
+windows-future: 0.2.1, "Apache-2.0 OR MIT",
+windows-implement: 0.57.0, "Apache-2.0 OR MIT",
+windows-implement: 0.60.0, "Apache-2.0 OR MIT",
+windows-interface: 0.57.0, "Apache-2.0 OR MIT",
+windows-interface: 0.59.1, "Apache-2.0 OR MIT",
+windows-link: 0.1.3, "Apache-2.0 OR MIT",
+windows-numerics: 0.2.0, "Apache-2.0 OR MIT",
+windows-result: 0.1.2, "Apache-2.0 OR MIT",
+windows-result: 0.3.4, "Apache-2.0 OR MIT",
+windows-strings: 0.4.2, "Apache-2.0 OR MIT",
+windows-sys: 0.45.0, "Apache-2.0 OR MIT",
+windows-sys: 0.48.0, "Apache-2.0 OR MIT",
+windows-sys: 0.52.0, "Apache-2.0 OR MIT",
+windows-sys: 0.59.0, "Apache-2.0 OR MIT",
+windows-sys: 0.60.2, "Apache-2.0 OR MIT",
+windows-targets: 0.42.2, "Apache-2.0 OR MIT",
+windows-targets: 0.48.5, "Apache-2.0 OR MIT",
+windows-targets: 0.52.6, "Apache-2.0 OR MIT",
+windows-targets: 0.53.2, "Apache-2.0 OR MIT",
+windows-threading: 0.1.0, "Apache-2.0 OR MIT",
+windows_aarch64_gnullvm: 0.42.2, "Apache-2.0 OR MIT",
+windows_aarch64_gnullvm: 0.48.5, "Apache-2.0 OR MIT",
+windows_aarch64_gnullvm: 0.52.6, "Apache-2.0 OR MIT",
+windows_aarch64_gnullvm: 0.53.0, "Apache-2.0 OR MIT",
+windows_aarch64_msvc: 0.42.2, "Apache-2.0 OR MIT",
+windows_aarch64_msvc: 0.48.5, "Apache-2.0 OR MIT",
+windows_aarch64_msvc: 0.52.6, "Apache-2.0 OR MIT",
+windows_aarch64_msvc: 0.53.0, "Apache-2.0 OR MIT",
+windows_i686_gnu: 0.42.2, "Apache-2.0 OR MIT",
+windows_i686_gnu: 0.48.5, "Apache-2.0 OR MIT",
+windows_i686_gnu: 0.52.6, "Apache-2.0 OR MIT",
+windows_i686_gnu: 0.53.0, "Apache-2.0 OR MIT",
+windows_i686_gnullvm: 0.52.6, "Apache-2.0 OR MIT",
+windows_i686_gnullvm: 0.53.0, "Apache-2.0 OR MIT",
+windows_i686_msvc: 0.42.2, "Apache-2.0 OR MIT",
+windows_i686_msvc: 0.48.5, "Apache-2.0 OR MIT",
+windows_i686_msvc: 0.52.6, "Apache-2.0 OR MIT",
+windows_i686_msvc: 0.53.0, "Apache-2.0 OR MIT",
+windows_x86_64_gnu: 0.42.2, "Apache-2.0 OR MIT",
+windows_x86_64_gnu: 0.48.5, "Apache-2.0 OR MIT",
+windows_x86_64_gnu: 0.52.6, "Apache-2.0 OR MIT",
+windows_x86_64_gnu: 0.53.0, "Apache-2.0 OR MIT",
+windows_x86_64_gnullvm: 0.42.2, "Apache-2.0 OR MIT",
+windows_x86_64_gnullvm: 0.48.5, "Apache-2.0 OR MIT",
+windows_x86_64_gnullvm: 0.52.6, "Apache-2.0 OR MIT",
+windows_x86_64_gnullvm: 0.53.0, "Apache-2.0 OR MIT",
+windows_x86_64_msvc: 0.42.2, "Apache-2.0 OR MIT",
+windows_x86_64_msvc: 0.48.5, "Apache-2.0 OR MIT",
+windows_x86_64_msvc: 0.52.6, "Apache-2.0 OR MIT",
+windows_x86_64_msvc: 0.53.0, "Apache-2.0 OR MIT",
+winnow: 0.5.40, "MIT",
+winnow: 0.7.11, "MIT",
+wit-bindgen-rt: 0.39.0, "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT",
+writeable: 0.6.1, "Unicode-3.0",
+wyz: 0.5.1, "MIT",
+yaml-rust2: 0.10.3, "Apache-2.0 OR MIT",
+yansi: 1.0.1, "Apache-2.0 OR MIT",
+yasna: 0.5.2, "Apache-2.0 OR MIT",
+yew: 0.21.0, "Apache-2.0 OR MIT",
+yew-hooks: 0.3.3, "Apache-2.0 OR MIT",
+yew-macro: 0.21.0, "Apache-2.0 OR MIT",
+yew-router: 0.18.0, "Apache-2.0 OR MIT",
+yew-router-macro: 0.18.0, "Apache-2.0 OR MIT",
+yoke: 0.8.0, "Unicode-3.0",
+yoke-derive: 0.8.0, "Unicode-3.0",
+zerocopy: 0.8.26, "Apache-2.0 OR BSD-2-Clause OR MIT",
+zerocopy-derive: 0.8.26, "Apache-2.0 OR BSD-2-Clause OR MIT",
+zerofrom: 0.1.6, "Unicode-3.0",
+zerofrom-derive: 0.1.6, "Unicode-3.0",
+zeroize: 1.8.1, "Apache-2.0 OR MIT",
+zeroize_derive: 1.4.2, "Apache-2.0 OR MIT",
+zerotrie: 0.2.2, "Unicode-3.0",
+zerovec: 0.11.2, "Unicode-3.0",
+zerovec-derive: 0.11.1, "Unicode-3.0",
+zip: 4.2.0, "MIT",
+zlib-rs: 0.5.1, "Zlib",
+zopfli: 0.8.2, "Apache-2.0",
+zstd: 0.13.3, "MIT",
+zstd-safe: 7.2.4, "Apache-2.0 OR MIT",
+zstd-sys: 2.0.15+zstd.1.5.7, "Apache-2.0 OR MIT",