Compare commits

...

52 Commits

Author SHA1 Message Date
Timofei Larkin
24fa722276 Merge pull request #642 from aenix-io/release-0.25.3
Prepare release v0.25.3
2025-02-22 11:41:53 +04:00
Timofei Larkin
0211c57bed Prepare release v0.25.3 2025-02-22 10:33:32 +03:00
Timofei Larkin
135b0609b4 Merge pull request #638 from klinch0/feature/move-kubeconfig
feature/mv-kubeconfig
2025-02-21 13:57:33 +04:00
Floppy Disk
6c73e3f3ae feature/mv-kubeconfig 2025-02-20 15:23:54 +03:00
Timofei Larkin
bc95159a80 Merge pull request #634 from aenix-io/release/v0.25.2
Prepare release v0.25.2
2025-02-18 21:03:29 +04:00
Timofei Larkin
0f68db6793 Merge pull request #635 from klinch0/feature/update-limits
feature/add-more-resources
2025-02-18 20:01:09 +03:00
Floppy Disk
9a55747885 add more resources 2025-02-18 17:40:54 +03:00
Timofei Larkin
bd90eb267f Prepare release v0.25.2 2025-02-18 17:22:41 +03:00
Timofei Larkin
7d5b22e662 Merge pull request #632 from klinch0/feature/add-white-label
feature/add-wl
2025-02-17 14:03:25 +04:00
Floppy Disk
42f1dabc31 add wl 2025-02-14 17:47:37 +03:00
Timofei Larkin
eefef8b09f Merge pull request #626 from klinch0/feature/add-workloadmonitors-roles
feature/add-workloadmonitors-roles
2025-02-13 17:58:33 +04:00
Timofei Larkin
93c4616115 Merge pull request #630 from aenix-io/release-0.25.1
Prepare release v0.25.1
2025-02-13 17:32:52 +04:00
Andrei Kvapil
1f6ea333b6 Prepare release v0.25.1
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-02-13 16:00:02 +03:00
Floppy Disk
4cc48e6f34 add-workloadmonitors-roles 2025-02-13 13:33:35 +03:00
Timofei Larkin
ecfb02a76f Merge pull request #625 from klinch0/feature/add-kafka-monitoring
feature/add-kafka-monitoring
2025-02-13 14:21:52 +04:00
Floppy Disk
cc0222aa11 fix dashboard 2025-02-13 13:09:34 +03:00
Andrei Kvapil
65036e8145 Upd cozy-proxy to fix reconciliation logic (#629) 2025-02-12 18:41:27 +01:00
Andrei Kvapil
e2e32096a3 Fix VM services selector (#627)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Updated deployment configurations with the latest application versions
(0.8.1 and 0.5.1) to ensure improved stability and compatibility.
- **Bug Fixes**
- Enhanced service connectivity by refining the criteria used for
routing requests to the correct application endpoints.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-02-12 14:03:10 +01:00
Floppy Disk
84a23947b0 fix 2025-02-12 11:45:16 +03:00
Floppy Disk
d234d58a16 update kafka operator version 2025-02-10 13:29:59 +03:00
Floppy Disk
b75aaf177b add kafka monitoring 2025-02-10 13:29:17 +03:00
klinch0
87328a6ff3 Merge branch 'aenix-io:main' into main 2025-02-10 12:58:03 +03:00
Andrei Kvapil
3fa4dd3af9 Prepare release v0.25.0 (#622)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Upgraded multiple system components to the latest version, ensuring
improved performance, stability, and enhanced security.
- Updated deployment and testing configurations across the platform for
a more reliable user experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-02-09 11:41:28 +01:00
Andrei Kvapil
6245976d3e Fix bootbox chartname (#623) 2025-02-08 22:07:24 +01:00
Andrei Kvapil
dacabe6317 Update cozy-proxy v0.1.1 (#624) 2025-02-08 22:07:12 +01:00
Andrei Kvapil
bf68404c53 Update Talos v1.9.3 (#617)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Upgraded the core installer and related system images from version
v1.9.2 to v1.9.3.
- Refreshed firmware and driver references for improved consistency
across all installation profiles.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-07 14:47:45 +01:00
Andrei Kvapil
5f40685161 fix: running=false for the VMs (#621)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Revised Virtual Machine configuration to require explicit confirmation
for the running state. The system no longer auto-activates instances by
default, giving users more direct control over instance activation.
Existing validations continue to ensure that only valid configurations
are applied, resulting in a more reliable deployment process.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-07 13:53:56 +01:00
Andrei Kvapil
f768dc1632 Introduce externalMethod=WholeIP for VMs (#616)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a new configuration option for specifying the method to
handle external traffic. Users can now choose between "WholeIP" and
"PortList" (default) across virtual machine and instance deployments.
- Service settings now adjust automatically based on the selected
external traffic method.

- **Documentation**
- Updated configuration guides to include details on the new
`externalMethod` parameter and its usage for managing external traffic.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-02-07 08:40:49 +01:00
Andrei Kvapil
1a88883a3b Update cilium v1.16.6 (#618)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Enhanced proxy configuration with dedicated endpoints for metrics,
administration, and health checks.

- **Documentation**
- Updated displayed version number and badge to v1.16.6 for improved
clarity.

- **Chores**
- Upgraded component versions and image digests from v1.16.5 to v1.16.6.
- Streamlined configuration by removing legacy conditional settings and
obsolete CORS directives.
- Refined formatting of tag filters for clearer configuration
management.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-06 13:51:46 +01:00
klinch0
a42f98e04c Merge branch 'aenix-io:main' into main 2025-02-06 15:51:19 +03:00
klinch0
842d3e55bc feature/add-flux-dashboards (#619)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a new dashboard for Flux Control Plane monitoring that
visualizes key performance metrics like CPU, memory, API requests, and
more.
- Added a second dashboard for Flux Cluster Stats to display resource
reconciliation, operation durations, and readiness indicators.
- Seamlessly integrated these dashboards into the monitoring workflow
with dynamic querying and periodic refresh options.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-06 13:50:57 +01:00
klinch0
f02397aab5 Merge branch 'aenix-io:main' into main 2025-02-06 15:41:38 +03:00
klinch0
5a47754a92 feature/add-etcd-vm-node-scrape (#614)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced system monitoring with a new configuration option to collect
etcd metrics. Users can now enable the scraping of etcd metrics via
updated settings, which improves observability.
- Introduced a secure proxy mechanism that conditionally routes metrics
data from etcd, offering administrators greater control over monitoring
capabilities.
- New configuration sections added to various bundles to support etcd
metrics scraping.
  
- **Bug Fixes**
- Removed outdated configuration for VMNodeScrape resource, ensuring
clarity and accuracy in monitoring configurations.

- **Chores**
- Added new service accounts, roles, and bindings to facilitate secure
access for monitoring etcd metrics.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Andrei Kvapil <kvapss@gmail.com>
2025-02-06 13:40:30 +01:00
Andrei Kvapil
d91bc52594 Introduce cozy-proxy (#615)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
- Added a new proxy component to enhance deployment orchestration and
dependency management.
- Introduced dynamic update capabilities for fetching and deploying the
latest assets.
- Enabled configurable settings for container images, networking, and
access control.
- Incorporated streamlined resource naming and labeling for improved
management.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-02-06 12:11:01 +01:00
klinch0
f67816e2d3 Merge branch 'aenix-io:main' into main 2025-02-05 15:38:21 +03:00
klinch0
861e6c464b feature/add-client-etcd-monitoring (#613)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Enhanced etcd monitoring with new metrics exposure, pod scraping
configuration, and comprehensive alert rules for proactive
observability.
- Introduced a new `VMPodScrape` resource for improved pod metrics
collection.
- Added a new PrometheusRule configuration for monitoring etcd clusters
with various alert conditions.
- **Chores**
  - Upgraded the etcd release from version 2.4.0 to 2.5.0.
- Consolidated and renamed monitoring dashboard references for better
consistency.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-05 13:13:28 +01:00
Andrei Kvapil
835ee117f7 Rebiild matchobx (#612)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Chores**
- Upgraded the deployment Docker image to version 0.24.1, ensuring
improved stability and potential performance enhancements.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-02-03 16:42:04 +01:00
klinch0
e5e14722b8 Merge branch 'aenix-io:main' into main 2025-01-30 00:27:55 +03:00
Andrei Kvapil
af48519d65 Prepare release v0.24.1 (#611)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-01-29 11:39:30 +01:00
Andrei Kvapil
d6e9765604 Revert kamaji edge-24.12.1 (#610)
Due to upstream issue: https://github.com/clastix/kamaji/issues/679

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **New Features**
	- Updated Kamaji application version to v1.0.0
	- Modified dependency version constraints for kamaji-etcd

- **Documentation**
	- Updated README with new version information
- Clarified configuration descriptions for DataStore and network
profiles

- **Chores**
	- Updated Chart version to 2.0.0
	- Simplified configuration management in deployment templates
	- Updated Dockerfile to use a different source code version

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-01-29 10:48:12 +01:00
Andrei Kvapil
0ab39f207c Prepare release v0.24.0 (#606)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Release Notes for CozyStack v0.24.0

- **Image Updates**
  - Upgraded CozyStack core components to version v0.24.0
- Updated multiple system images, including cluster-autoscaler, kubevirt
cloud provider, and CSI driver
  - Refreshed images for dashboard, API, and controller components
  - Updated Grafana image to version 1.8.0

- **Infrastructure Changes**
- Replaced `darkhttpd` container with new `assets` container in
deployment configuration
  - Updated image digests across various system components

- **Version Bump**
  - Incremented CozyStack version from v0.23.1 to v0.24.0
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-01-27 19:44:54 +01:00
Andrei Kvapil
ef2e065c77 Update Grafana, build plugins (#607)
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

- **New Features**
  - Updated Grafana to version 11.4.0
- Added new Grafana plugins: VictoriaMetrics logs datasource, Natel
Discrete Panel, and Worldmap Panel

- **Improvements**
  - Enhanced Grafana image build process
  - Dynamically manage Grafana image versioning
  - Updated plugin installation method

- **Version Update**
  - Monitoring package version bumped from 1.7.0 to 1.8.0

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-01-27 18:45:48 +01:00
Andrei Kvapil
80b4c151bd Replace darkhttpd with cozystack-assets-server (#596)
fixes https://github.com/aenix-io/cozystack/issues/602
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
	- Introduced a new custom assets server for serving static files
	- Replaced `darkhttpd` with a custom Go-based file server

- **Improvements**
	- Updated base images to Alpine Linux 3.21
	- Simplified container dependencies
	- Enhanced server configuration with command-line flags

- **Infrastructure**
	- Rebuilt Kubernetes deployment configuration for assets service
	- Updated server startup parameters and container settings
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-01-27 13:57:33 +01:00
klinch0
719cedde02 Merge branch 'aenix-io:main' into main 2025-01-27 15:15:11 +03:00
Andrei Kvapil
cc5eb4765c Introduce BootBox (#601)
- Introduce tinkerbell essentials
- Introduce bootbox


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

# Release Notes: BootBox Package (v0.1.0)

## New Features
- Added BootBox, a PXE hardware provisioning service.
- Introduced network boot configuration with Matchbox and Smee.
- Enabled hardware management through Kubernetes Custom Resource
Definitions.
- Added support for managing physical machine specifications and
configurations.
- New HelmRelease configuration for streamlined deployment.
- Added new application entry for BootBox in the configuration.

## Configuration
- Supports configuring physical machine instances.
- Provides flexible network boot and DHCP settings.
- Includes role-based access control (RBAC) configurations.
- New parameters for trusted proxies and syslog settings.
- Enhanced configuration options for deployment parameters and resource
allocations.
- Introduced new schema for validating configuration values.

## Deployment
- Deployed in `tenant-root` namespace.
- Optional and privileged installation.
- Depends on Cilium and KubeOVN networking components.
- Configurable deployment strategies and resource allocations.
- Introduced new Service and Ingress resources for improved traffic
management.
- Added support for host networking and public IP configurations.

## Compatibility
- Supports single-node and multi-node cluster configurations.
- Compatible with Kubernetes environments.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2025-01-27 10:56:23 +01:00
Andrei Kvapil
d557050eca Fix vm-update hook access to api (#597)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

- **Version Updates**
	- Updated `virtual-machine` package version from `0.7.0` to `0.7.1`
	- Updated `vm-instance` package version from `0.4.0` to `0.4.1`

- **Configuration Changes**
- Added new policy annotation `policy.cozystack.io/allow-to-apiserver:
"true"` to update hook templates for both virtual machine and VM
instance

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-01-27 10:56:04 +01:00
klinch0
469d1e9801 Merge branch 'aenix-io:main' into main 2025-01-23 17:48:38 +03:00
Sergio
05857b954d Fix kamaji make update (#598)
Fix makefile update target for kamaji
Fix Dockerfile for kamaji (golang:1.23 as builder)
kamaji Chart updated

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes

- **New Features**
- Enhanced DataStore configuration with more flexible inheritance and
schema definition
  - Added support for advanced network profile settings

- **Improvements**
  - Updated Kamaji application to version `edge-24.12.1`
  - Upgraded Go runtime to version 1.23
  - Improved documentation for DataStore and configuration settings

- **Dependency Updates**
  - Updated `kamaji-etcd` dependency to version `>=0.8.1`

- **Version Changes**
  - Reset application and chart versions to `0.0.0`

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: SSR <sergey.rabinovich@nexign.com>
2025-01-23 15:28:46 +01:00
klinch0
81819661dc Merge branch 'aenix-io:main' into main 2025-01-21 16:31:57 +03:00
klinch0
2f0d0924a7 Merge branch 'aenix-io:main' into main 2025-01-20 12:05:14 +03:00
klinch0
191c8b4061 Merge branch 'aenix-io:main' into main 2025-01-16 15:26:08 +03:00
Floppy Disk
9de782e719 fix 2025-01-16 13:23:56 +03:00
163 changed files with 15487 additions and 3497 deletions

View File

@@ -6,6 +6,7 @@ build:
make -C packages/apps/mysql image
make -C packages/apps/clickhouse image
make -C packages/apps/kubernetes image
make -C packages/extra/monitoring image
make -C packages/system/cozystack-api image
make -C packages/system/cozystack-controller image
make -C packages/system/cilium image
@@ -35,6 +36,7 @@ assets:
make -C packages/core/installer/ assets
test:
test -f _out/assets/nocloud-amd64.raw.xz || make -C packages/core/installer talos-nocloud
make -C packages/core/testing apply
make -C packages/core/testing test
make -C packages/core/testing test-applications

View File

@@ -0,0 +1,29 @@
package main
import (
"flag"
"log"
"net/http"
"path/filepath"
)
func main() {
addr := flag.String("address", ":8123", "Address to listen on")
dir := flag.String("dir", "/cozystack/assets", "Directory to serve files from")
flag.Parse()
absDir, err := filepath.Abs(*dir)
if err != nil {
log.Fatalf("Error getting absolute path for %s: %v", *dir, err)
}
fs := http.FileServer(http.Dir(absDir))
http.Handle("/", fs)
log.Printf("Server starting on %s, serving directory %s", *addr, absDir)
err = http.ListenAndServe(*addr, nil)
if err != nil {
log.Fatalf("Server failed to start: %v", err)
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,7 @@ fix_d8() {
}
swap_pvc_overview() {
jq '(.panels[] | select(.title=="PVC Detailed") | .panels[] | select(.title=="Overview")) as $a | del(.panels[] | select(.title=="PVC Detailed").panels[] | select(.title=="Overview")) | ( (.panels[] | select(.title=="PVC Detailed"))) as $b | del( .panels[] | select(.title=="PVC Detailed")) | (.panels[.panels|length]=($a|.gridPos.y=$b.gridPos.y)) | (.panels[.panels|length]=($b|.gridPos.y=$a.gridPos.y))'
jq '(.panels[] | select(.title=="PVC Detailed") | .panels[] | select(.title=="Overview")) as $a | del(.panels[] | select(.title=="PVC Detailed").panels[] | select(.title=="Overview")) | ( (.panels[] | select(.title=="PVC Detailed"))) as $b | del( .panels[] | select(.title=="PVC Detailed")) | (.panels[.panels|length]=($a|.gridPos.y=$b.gridPos.y)) | (.panels[.panels|length]=($b|.gridPos.y=$a.gridPos.y))'
}
deprectaed_remove_faq() {
@@ -68,7 +68,7 @@ modules/402-ingress-nginx/monitoring/grafana-dashboards/ingress-nginx/namespace/
modules/402-ingress-nginx/monitoring/grafana-dashboards/ingress-nginx/vhost/vhost_detail.json
modules/402-ingress-nginx/monitoring/grafana-dashboards/ingress-nginx/vhost/vhosts.json
modules/340-monitoring-kubernetes-control-plane/monitoring/grafana-dashboards/kubernetes-cluster/control-plane-status.json
modules/340-monitoring-kubernetes-control-plane/monitoring/grafana-dashboards/kubernetes-cluster/kube-etcd3.json #TODO
modules/340-monitoring-kubernetes-control-plane/monitoring/grafana-dashboards/kubernetes-cluster/kube-etcd.json #TODO
modules/340-monitoring-kubernetes-control-plane/monitoring/grafana-dashboards/kubernetes-cluster/deprecated-resources.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//kubernetes-cluster/nodes/ntp.json #TODO
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//kubernetes-cluster/nodes/nodes.json
@@ -78,6 +78,9 @@ modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//main/pod.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//main/namespace/namespaces.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//main/namespace/namespace.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//main/capacity-planning/capacity-planning.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//flux/flux-control-plane.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//flux/flux-stats.json
modules/340-monitoring-kubernetes/monitoring/grafana-dashboards//kafka/strimzi-kafka.json
EOT
@@ -109,4 +112,3 @@ done <<\EOT
https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-views-namespaces.json
https://raw.githubusercontent.com/dotdc/grafana-dashboards-kubernetes/master/dashboards/k8s-views-pods.json
EOT

View File

@@ -68,7 +68,7 @@ spec:
serviceAccountName: cozystack
containers:
- name: cozystack
image: "ghcr.io/aenix-io/cozystack/cozystack:v0.23.1"
image: "ghcr.io/aenix-io/cozystack/cozystack:v0.25.3"
env:
- name: KUBERNETES_SERVICE_HOST
value: localhost
@@ -86,13 +86,12 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: darkhttpd
image: "ghcr.io/aenix-io/cozystack/cozystack:v0.23.1"
- name: assets
image: "ghcr.io/aenix-io/cozystack/cozystack:v0.25.3"
command:
- /usr/bin/darkhttpd
- /cozystack/assets
- --port
- "8123"
- /usr/bin/cozystack-assets-server
- "-dir=/cozystack/assets"
- "-address=:8123"
ports:
- name: http
containerPort: 8123

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/postgres-backup:0.8.0@sha256:6a8ec7e7052f2d02ec5457d7cbac6ee52b3ed93a883988a192d1394fc7c88117
ghcr.io/aenix-io/cozystack/postgres-backup:0.8.0@sha256:71cdf8bdab3d6f27edeec0ab33ddd8c7b56675a4f2d7bbf4d3e09b70ecb43375

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/nginx-cache:0.3.1@sha256:a3c25199acb8e8426e6952658ccc4acaadb50fe2cfa6359743b64e5166b3fc70
ghcr.io/aenix-io/cozystack/nginx-cache:0.3.1@sha256:4c79017b6663f894812d8c3d4f9e03ef44e4d4032ad8bb91945c92c7cce6a0b0

View File

@@ -16,7 +16,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.3.1
version: 0.3.2
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to

View File

@@ -57,6 +57,12 @@ spec:
class: {{ . }}
{{- end }}
deleteClaim: true
metricsConfig:
type: jmxPrometheusExporter
valueFrom:
configMapKeyRef:
name: {{ .Release.Name }}-metrics
key: kafka-metrics-config.yml
zookeeper:
replicas: {{ .Values.zookeeper.replicas }}
storage:
@@ -68,6 +74,12 @@ spec:
class: {{ . }}
{{- end }}
deleteClaim: false
metricsConfig:
type: jmxPrometheusExporter
valueFrom:
configMapKeyRef:
name: {{ .Release.Name }}-metrics
key: kafka-metrics-config.yml
entityOperator:
topicOperator: {}
userOperator: {}

View File

@@ -0,0 +1,198 @@
kind: ConfigMap
apiVersion: v1
metadata:
name: {{ .Release.Name }}-metrics
data:
kafka-metrics-config.yml: |
# See https://github.com/prometheus/jmx_exporter for more info about JMX Prometheus Exporter metrics
lowercaseOutputName: true
rules:
# Special cases and very specific rules
- pattern: kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
topic: "$4"
partition: "$5"
- pattern: kafka.server<type=(.+), name=(.+), clientId=(.+), brokerHost=(.+), brokerPort=(.+)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
broker: "$4:$5"
- pattern: kafka.server<type=(.+), cipher=(.+), protocol=(.+), listener=(.+), networkProcessor=(.+)><>connections
name: kafka_server_$1_connections_tls_info
type: GAUGE
labels:
cipher: "$2"
protocol: "$3"
listener: "$4"
networkProcessor: "$5"
- pattern: kafka.server<type=(.+), clientSoftwareName=(.+), clientSoftwareVersion=(.+), listener=(.+), networkProcessor=(.+)><>connections
name: kafka_server_$1_connections_software
type: GAUGE
labels:
clientSoftwareName: "$2"
clientSoftwareVersion: "$3"
listener: "$4"
networkProcessor: "$5"
- pattern: "kafka.server<type=(.+), listener=(.+), networkProcessor=(.+)><>(.+-total):"
name: kafka_server_$1_$4
type: COUNTER
labels:
listener: "$2"
networkProcessor: "$3"
- pattern: "kafka.server<type=(.+), listener=(.+), networkProcessor=(.+)><>(.+):"
name: kafka_server_$1_$4
type: GAUGE
labels:
listener: "$2"
networkProcessor: "$3"
- pattern: kafka.server<type=(.+), listener=(.+), networkProcessor=(.+)><>(.+-total)
name: kafka_server_$1_$4
type: COUNTER
labels:
listener: "$2"
networkProcessor: "$3"
- pattern: kafka.server<type=(.+), listener=(.+), networkProcessor=(.+)><>(.+)
name: kafka_server_$1_$4
type: GAUGE
labels:
listener: "$2"
networkProcessor: "$3"
# Some percent metrics use MeanRate attribute
# Ex) kafka.server<type=(KafkaRequestHandlerPool), name=(RequestHandlerAvgIdlePercent)><>MeanRate
- pattern: kafka.(\w+)<type=(.+), name=(.+)Percent\w*><>MeanRate
name: kafka_$1_$2_$3_percent
type: GAUGE
# Generic gauges for percents
- pattern: kafka.(\w+)<type=(.+), name=(.+)Percent\w*><>Value
name: kafka_$1_$2_$3_percent
type: GAUGE
- pattern: kafka.(\w+)<type=(.+), name=(.+)Percent\w*, (.+)=(.+)><>Value
name: kafka_$1_$2_$3_percent
type: GAUGE
labels:
"$4": "$5"
# Generic per-second counters with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+), (.+)=(.+)><>Count
name: kafka_$1_$2_$3_total
type: COUNTER
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+)><>Count
name: kafka_$1_$2_$3_total
type: COUNTER
labels:
"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*><>Count
name: kafka_$1_$2_$3_total
type: COUNTER
# Generic gauges with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Value
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Value
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Value
name: kafka_$1_$2_$3
type: GAUGE
# Emulate Prometheus 'Summary' metrics for the exported 'Histogram's.
# Note that these are missing the '_sum' metric!
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Count
name: kafka_$1_$2_$3_count
type: COUNTER
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
"$6": "$7"
quantile: "0.$8"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Count
name: kafka_$1_$2_$3_count
type: COUNTER
labels:
"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
quantile: "0.$6"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Count
name: kafka_$1_$2_$3_count
type: COUNTER
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
quantile: "0.$4"
# KRaft overall related metrics
# distinguish between always increasing COUNTER (total and max) and variable GAUGE (all others) metrics
- pattern: "kafka.server<type=raft-metrics><>(.+-total|.+-max):"
name: kafka_server_raftmetrics_$1
type: COUNTER
- pattern: "kafka.server<type=raft-metrics><>(current-state): (.+)"
name: kafka_server_raftmetrics_$1
value: 1
type: UNTYPED
labels:
$1: "$2"
- pattern: "kafka.server<type=raft-metrics><>(.+):"
name: kafka_server_raftmetrics_$1
type: GAUGE
# KRaft "low level" channels related metrics
# distinguish between always increasing COUNTER (total and max) and variable GAUGE (all others) metrics
- pattern: "kafka.server<type=raft-channel-metrics><>(.+-total|.+-max):"
name: kafka_server_raftchannelmetrics_$1
type: COUNTER
- pattern: "kafka.server<type=raft-channel-metrics><>(.+):"
name: kafka_server_raftchannelmetrics_$1
type: GAUGE
# Broker metrics related to fetching metadata topic records in KRaft mode
- pattern: "kafka.server<type=broker-metadata-metrics><>(.+):"
name: kafka_server_brokermetadatametrics_$1
type: GAUGE
zookeeper-metrics-config.yml: |
# See https://github.com/prometheus/jmx_exporter for more info about JMX Prometheus Exporter metrics
lowercaseOutputName: true
rules:
# replicated Zookeeper
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+)><>(\\w+)"
name: "zookeeper_$2"
type: GAUGE
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+)><>(\\w+)"
name: "zookeeper_$3"
type: GAUGE
labels:
replicaId: "$2"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(Packets\\w+)"
name: "zookeeper_$4"
type: COUNTER
labels:
replicaId: "$2"
memberType: "$3"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(\\w+)"
name: "zookeeper_$4"
type: GAUGE
labels:
replicaId: "$2"
memberType: "$3"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+), name3=(\\w+)><>(\\w+)"
name: "zookeeper_$4_$5"
type: GAUGE
labels:
replicaId: "$2"
memberType: "$3"

View File

@@ -0,0 +1,40 @@
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMPodScrape
metadata:
name: {{ .Release.Name }}
spec:
podMetricsEndpoints:
- port: tcp-prometheus
scheme: http
relabelConfigs:
- separator: ;
regex: __meta_kubernetes_pod_label_(strimzi_io_.+)
replacement: $1
action: labelmap
- sourceLabels: [__meta_kubernetes_namespace]
separator: ;
regex: (.*)
targetLabel: namespace
replacement: $1
action: replace
- sourceLabels: [__meta_kubernetes_pod_name]
separator: ;
regex: (.*)
targetLabel: pod
replacement: $1
action: replace
- sourceLabels: [__meta_kubernetes_pod_node_name]
separator: ;
regex: (.*)
targetLabel: node
replacement: $1
action: replace
- sourceLabels: [__meta_kubernetes_pod_host_ip]
separator: ;
regex: (.*)
targetLabel: node_ip
replacement: $1
action: replace
selector:
matchLabels:
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/cluster-autoscaler:0.15.0@sha256:538ee308f16c9e627ed16ee7c4aaa65919c2e6c4c2778f964a06e4797610d1cd
ghcr.io/aenix-io/cozystack/cluster-autoscaler:0.15.0@sha256:fa37449761fefd2e04385be505cb669b0f1efcddc2f1ba42c4fcd38af4ea4361

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/kubevirt-cloud-provider:0.15.0@sha256:7716c88947d13dc90ccfcc3e60bfdd6e6fa9b201339a75e9c84bf825c76e2b1f
ghcr.io/aenix-io/cozystack/kubevirt-cloud-provider:0.15.0@sha256:5f1ab06264c09f3dc7bfc43db0b6e68235ac44f83e8a5277dfb74fe6902d6dca

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/kubevirt-csi-driver:0.15.0@sha256:be5e0eef92dada3ace5cddda5c68b30c9fe4682774c5e6e938ed31efba11ebbf
ghcr.io/aenix-io/cozystack/kubevirt-csi-driver:0.15.0@sha256:7b206eb9c1b44cead6e0e4931c569612fa8034f026d845469ebd2d2ef46b85ab

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/ubuntu-container-disk:v1.30.1@sha256:8392f00a7182294ce6fd417d254f7c2aa09fb9203d829dec70344a8050369430
ghcr.io/aenix-io/cozystack/ubuntu-container-disk:v1.30.1@sha256:b882ff398d297824dbf73dee948cfa684cb18006b91bd152e1f03ed22d7190fa

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/mariadb-backup:0.5.2@sha256:4bbfbb397bd7ecea45507ca47989c51429c4a24f40853ac92583e5b5b352fbea
ghcr.io/aenix-io/cozystack/mariadb-backup:0.5.2@sha256:5994e3f7a57054e3cebc532fa29a90edc9a97befe8993cec011e3e726c83e9bd

View File

@@ -1 +1 @@
ghcr.io/aenix-io/cozystack/postgres-backup:0.8.0@sha256:6a8ec7e7052f2d02ec5457d7cbac6ee52b3ed93a883988a192d1394fc7c88117
ghcr.io/aenix-io/cozystack/postgres-backup:0.8.0@sha256:71cdf8bdab3d6f27edeec0ab33ddd8c7b56675a4f2d7bbf4d3e09b70ecb43375

View File

@@ -4,4 +4,4 @@ description: Separated tenant namespace
icon: /logos/tenant.svg
type: application
version: 1.6.7
version: 1.7.0

View File

@@ -0,0 +1,27 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $oidcEnabled := index $cozyConfig.data "oidc-enabled" }}
{{- if $oidcEnabled }}
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: info
namespace: {{ include "tenant.name" . }}
annotations:
helm.sh/resource-policy: keep
labels:
cozystack.io/ui: "true"
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
chart:
spec:
chart: info
reconcileStrategy: Revision
sourceRef:
kind: HelmRepository
name: cozystack-extra
namespace: cozy-public
version: "*"
interval: 1m0s
timeout: 5m0s
{{- end }}

View File

@@ -34,7 +34,11 @@ rules:
- apiGroups: ["apps.cozystack.io"]
resources: ['*']
verbs: ['*']
- apiGroups:
- cozystack.io
resources:
- workloadmonitors
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
@@ -103,6 +107,11 @@ rules:
- get
- list
- watch
- apiGroups:
- cozystack.io
resources:
- workloadmonitors
verbs: ["get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
@@ -175,6 +184,11 @@ rules:
verbs:
- get
- list
- apiGroups:
- cozystack.io
resources:
- workloadmonitors
verbs: ["get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
@@ -258,6 +272,7 @@ rules:
- virtualmachines
- vmdisks
- vminstances
- infos
verbs:
- get
- list
@@ -266,6 +281,11 @@ rules:
- update
- patch
- delete
- apiGroups:
- cozystack.io
resources:
- workloadmonitors
verbs: ["get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
@@ -334,6 +354,11 @@ rules:
- '*'
verbs:
- '*'
- apiGroups:
- cozystack.io
resources:
- workloadmonitors
verbs: ["get", "list", "watch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1

View File

@@ -23,7 +23,8 @@ kafka 0.2.1 3ac17018
kafka 0.2.2 d0758692
kafka 0.2.3 5ca8823
kafka 0.3.0 c07c4bbd
kafka 0.3.1 HEAD
kafka 0.3.1 b7375f73
kafka 0.3.2 HEAD
kubernetes 0.1.0 f642698
kubernetes 0.2.0 7cd7de73
kubernetes 0.3.0 7caccec1
@@ -100,7 +101,9 @@ tenant 1.6.3 2057bb96
tenant 1.6.4 3c9e50a4
tenant 1.6.5 f1e11451
tenant 1.6.6 d4634797
tenant 1.6.7 HEAD
tenant 1.6.7 06afcf27
tenant 1.6.8 4cc48e6f
tenant 1.7.0 HEAD
virtual-machine 0.1.4 f2015d6
virtual-machine 0.1.5 7cd7de7
virtual-machine 0.2.0 5ca8823
@@ -108,12 +111,18 @@ virtual-machine 0.3.0 b908400
virtual-machine 0.4.0 4746d51
virtual-machine 0.5.0 cad9cde
virtual-machine 0.6.0 0e728870
virtual-machine 0.7.0 HEAD
virtual-machine 0.7.0 af58018a
virtual-machine 0.7.1 05857b95
virtual-machine 0.8.0 3fa4dd3
virtual-machine 0.8.1 HEAD
vm-disk 0.1.0 HEAD
vm-instance 0.1.0 ced8e5b9
vm-instance 0.2.0 4f767ee3
vm-instance 0.3.0 0e728870
vm-instance 0.4.0 HEAD
vm-instance 0.4.0 af58018a
vm-instance 0.4.1 05857b95
vm-instance 0.5.0 3fa4dd3
vm-instance 0.5.1 HEAD
vpn 0.1.0 f642698
vpn 0.2.0 7151424
vpn 0.3.0 a2bcf100

View File

@@ -17,10 +17,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.7.0
version: 0.8.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "0.7.0"
appVersion: "0.8.1"

View File

@@ -8,3 +8,4 @@ generate:
&& yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json
yq -i -o json '.properties.externalPorts.items.type = "integer"' values.schema.json
yq -i -o json '.properties.systemDisk.properties.image.enum = ["ubuntu", "cirros", "alpine", "fedora", "talos"]' values.schema.json
yq -i -o json '.properties.externalMethod.enum = ["wholeIP", "PortList"]' values.schema.json

View File

@@ -39,6 +39,7 @@ virtctl ssh <user>@<vm>
| Name | Description | Value |
| ------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------- |
| `external` | Enable external access from outside the cluster | `false` |
| `externalMethod` | specify method to passthrough the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `WholeIP` |
| `externalPorts` | Specify ports to forward from outside the cluster | `[]` |
| `running` | Determines if the virtual machine should be running | `true` |
| `instanceType` | Virtual Machine instance type | `u1.medium` |

View File

@@ -6,16 +6,24 @@ metadata:
name: {{ include "virtual-machine.fullname" . }}
labels:
{{- include "virtual-machine.labels" . | nindent 4 }}
{{- if eq .Values.externalMethod "WholeIP" }}
annotations:
networking.cozystack.io/wholeIP: "true"
{{- end }}
spec:
type: {{ ternary "LoadBalancer" "ClusterIP" .Values.external }}
externalTrafficPolicy: Local
allocateLoadBalancerNodePorts: false
selector:
{{- include "virtual-machine.labels" . | nindent 4 }}
{{- include "virtual-machine.selectorLabels" . | nindent 4 }}
ports:
{{- if eq .Values.externalMethod "WholeIP" }}
- port: 65535
{{- else }}
{{- range .Values.externalPorts }}
- name: port-{{ . }}
port: {{ . }}
targetPort: {{ . }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -45,6 +45,7 @@ spec:
metadata:
labels:
app: "{{ $.Release.Name }}-update-hook"
policy.cozystack.io/allow-to-apiserver: "true"
spec:
serviceAccountName: {{ $.Release.Name }}-update-hook
restartPolicy: Never

View File

@@ -7,6 +7,15 @@
"description": "Enable external access from outside the cluster",
"default": false
},
"externalMethod": {
"type": "string",
"description": "specify method to passthrough the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList`",
"default": "WholeIP",
"enum": [
"wholeIP",
"PortList"
]
},
"externalPorts": {
"type": "array",
"description": "Specify ports to forward from outside the cluster",

View File

@@ -1,8 +1,10 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param externalMethod specify method to passthrough the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList`
## @param externalPorts [array] Specify ports to forward from outside the cluster
external: false
externalMethod: WholeIP
externalPorts:
- 22

View File

@@ -17,10 +17,10 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.4.0
version: 0.5.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "0.4.0"
appVersion: "0.5.1"

View File

@@ -8,3 +8,4 @@ generate:
PREFERENCES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-instancetypes/templates/preferences.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json
yq -i -o json '.properties.externalPorts.items.type = "integer"' values.schema.json
yq -i -o json '.properties.externalMethod.enum = ["WholeIP", "PortList"]' values.schema.json

View File

@@ -36,18 +36,19 @@ virtctl ssh <user>@<vm>
### Common parameters
| Name | Description | Value |
| ------------------ | ---------------------------------------------------------------------------------- | ---------------- |
| `external` | Enable external access from outside the cluster | `false` |
| `externalPorts` | Specify ports to forward from outside the cluster | `[]` |
| `running` | Determines if the virtual machine should be running | `true` |
| `instanceType` | Virtual Machine instance type | `u1.medium` |
| `instanceProfile` | Virtual Machine prefferences profile | `ubuntu` |
| `disks` | List of disks to attach | `[]` |
| `resources.cpu` | The number of CPU cores allocated to the virtual machine | `""` |
| `resources.memory` | The amount of memory allocated to the virtual machine | `""` |
| `sshKeys` | List of SSH public keys for authentication. Can be a single key or a list of keys. | `[]` |
| `cloudInit` | cloud-init user data config. See cloud-init documentation for more details. | `#cloud-config
| Name | Description | Value |
| ------------------ | ---------------------------------------------------------------------------------------------------------- | ---------------- |
| `external` | Enable external access from outside the cluster | `false` |
| `externalMethod` | specify method to passthrough the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList` | `WholeIP` |
| `externalPorts` | Specify ports to forward from outside the cluster | `[]` |
| `running` | Determines if the virtual machine should be running | `true` |
| `instanceType` | Virtual Machine instance type | `u1.medium` |
| `instanceProfile` | Virtual Machine prefferences profile | `ubuntu` |
| `disks` | List of disks to attach | `[]` |
| `resources.cpu` | The number of CPU cores allocated to the virtual machine | `""` |
| `resources.memory` | The amount of memory allocated to the virtual machine | `""` |
| `sshKeys` | List of SSH public keys for authentication. Can be a single key or a list of keys. | `[]` |
| `cloudInit` | cloud-init user data config. See cloud-init documentation for more details. | `#cloud-config
` |
## U Series

View File

@@ -6,16 +6,24 @@ metadata:
name: {{ include "virtual-machine.fullname" . }}
labels:
{{- include "virtual-machine.labels" . | nindent 4 }}
{{- if eq .Values.externalMethod "WholeIP" }}
annotations:
networking.cozystack.io/wholeIP: "true"
{{- end }}
spec:
type: {{ ternary "LoadBalancer" "ClusterIP" .Values.external }}
externalTrafficPolicy: Local
allocateLoadBalancerNodePorts: false
selector:
{{- include "virtual-machine.labels" . | nindent 4 }}
{{- include "virtual-machine.selectorLabels" . | nindent 4 }}
ports:
{{- if eq .Values.externalMethod "WholeIP" }}
- port: 65535
{{- else }}
{{- range .Values.externalPorts }}
- name: port-{{ . }}
port: {{ . }}
targetPort: {{ . }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -35,6 +35,7 @@ spec:
metadata:
labels:
app: "{{ $.Release.Name }}-update-hook"
policy.cozystack.io/allow-to-apiserver: "true"
spec:
serviceAccountName: {{ $.Release.Name }}-update-hook
restartPolicy: Never

View File

@@ -12,7 +12,7 @@ metadata:
labels:
{{- include "virtual-machine.labels" . | nindent 4 }}
spec:
running: {{ .Values.running | default "true" }}
running: {{ .Values.running }}
{{- with .Values.instanceType }}
instancetype:
kind: VirtualMachineClusterInstancetype

View File

@@ -7,6 +7,15 @@
"description": "Enable external access from outside the cluster",
"default": false
},
"externalMethod": {
"type": "string",
"description": "specify method to passthrough the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList`",
"default": "WholeIP",
"enum": [
"WholeIP",
"PortList"
]
},
"externalPorts": {
"type": "array",
"description": "Specify ports to forward from outside the cluster",

View File

@@ -1,8 +1,10 @@
## @section Common parameters
## @param external Enable external access from outside the cluster
## @param externalMethod specify method to passthrough the traffic to the virtual machine. Allowed values: `WholeIP` and `PortList`
## @param externalPorts [array] Specify ports to forward from outside the cluster
external: false
externalMethod: WholeIP
externalPorts:
- 22

View File

@@ -1,3 +1,3 @@
talos:
imager:
image: ghcr.io/siderolabs/imager:v1.9.2
image: ghcr.io/siderolabs/imager:v1.9.3

View File

@@ -30,7 +30,7 @@ image-cozystack: run-builder
--provenance false \
--tag $(REGISTRY)/cozystack:$(call settag,$(TAG)) \
--cache-from type=registry,ref=$(REGISTRY)/cozystack:latest \
--platform linux/amd64,linux/arm64 \
--platform linux/amd64 \
--cache-to type=inline \
--metadata-file images/cozystack.json \
--push=$(PUSH) \
@@ -43,7 +43,7 @@ image-talos: run-builder
test -f ../../../_out/assets/installer-amd64.tar || make talos-installer
skopeo copy docker-archive:../../../_out/assets/installer-amd64.tar docker://$(REGISTRY)/talos:$(call settag,$(TALOS_VERSION))
image-matchbox: run-builder
image-matchbox: run-builder
test -f ../../../_out/assets/kernel-amd64 || make talos-kernel
test -f ../../../_out/assets/initramfs-metal-amd64.xz || make talos-initramfs
docker buildx build -f images/matchbox/Dockerfile ../../.. \
@@ -55,6 +55,8 @@ image-matchbox: run-builder
--metadata-file images/matchbox.json \
--push=$(PUSH) \
--load=$(LOAD)
echo "$(REGISTRY)/matchbox:$(call settag,$(TAG))@$$(yq e '."containerimage.digest"' images/matchbox.json -o json -r)" \
> ../../extra/bootbox/images/matchbox.tag
rm -f images/matchbox.json
assets: talos-iso talos-nocloud talos-metal

View File

@@ -1,4 +1,4 @@
FROM golang:alpine3.19 as k8s-await-election-builder
FROM golang:alpine3.21 as k8s-await-election-builder
ARG K8S_AWAIT_ELECTION_GITREPO=https://github.com/LINBIT/k8s-await-election
ARG K8S_AWAIT_ELECTION_VERSION=0.4.1
@@ -13,7 +13,7 @@ RUN git clone ${K8S_AWAIT_ELECTION_GITREPO} /usr/local/go/k8s-await-election/ \
&& make \
&& mv ./out/k8s-await-election-${TARGETARCH} /k8s-await-election
FROM alpine:3.19 AS builder
FROM golang:alpine3.21 as builder
RUN apk add --no-cache make git
RUN apk add helm --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
@@ -21,12 +21,14 @@ RUN apk add helm --repository=https://dl-cdn.alpinelinux.org/alpine/edge/communi
COPY . /src/
WORKDIR /src
RUN go build -o /cozystack-assets-server -ldflags '-extldflags "-static" -w -s' ./cmd/cozystack-assets-server
# Check that versions_map is not changed
RUN make repos
FROM alpine:3.19
FROM alpine:3.21
RUN apk add --no-cache make darkhttpd
RUN apk add --no-cache make
RUN apk add helm kubectl --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
COPY scripts /cozystack/scripts
@@ -34,6 +36,7 @@ COPY --from=builder /src/packages/core /cozystack/packages/core
COPY --from=builder /src/packages/system /cozystack/packages/system
COPY --from=builder /src/_out/repos /cozystack/assets/repos
COPY --from=builder /src/_out/logos /cozystack/assets/logos
COPY --from=builder /cozystack-assets-server /usr/bin/cozystack-assets-server
COPY --from=k8s-await-election-builder /k8s-await-election /usr/bin/k8s-await-election
COPY dashboards /cozystack/assets/dashboards

View File

@@ -3,24 +3,24 @@
arch: amd64
platform: metal
secureboot: false
version: v1.9.2
version: v1.9.3
input:
kernel:
path: /usr/install/amd64/vmlinuz
initramfs:
path: /usr/install/amd64/initramfs.xz
baseInstaller:
imageRef: ghcr.io/siderolabs/installer:v1.9.2
imageRef: ghcr.io/siderolabs/installer:v1.9.3
systemExtensions:
- imageRef: ghcr.io/siderolabs/amd-ucode:20241210
- imageRef: ghcr.io/siderolabs/amd-ucode:20250109
- imageRef: ghcr.io/siderolabs/amdgpu-firmware:20241110
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20241210
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20250109
- imageRef: ghcr.io/siderolabs/i915-ucode:20241110
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20241210
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20250109
- imageRef: ghcr.io/siderolabs/intel-ucode:20241112
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20241210
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.2
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.2
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20250109
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.3
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.3
output:
kind: initramfs
imageOptions: {}

View File

@@ -3,24 +3,24 @@
arch: amd64
platform: metal
secureboot: false
version: v1.9.2
version: v1.9.3
input:
kernel:
path: /usr/install/amd64/vmlinuz
initramfs:
path: /usr/install/amd64/initramfs.xz
baseInstaller:
imageRef: ghcr.io/siderolabs/installer:v1.9.2
imageRef: ghcr.io/siderolabs/installer:v1.9.3
systemExtensions:
- imageRef: ghcr.io/siderolabs/amd-ucode:20241210
- imageRef: ghcr.io/siderolabs/amd-ucode:20250109
- imageRef: ghcr.io/siderolabs/amdgpu-firmware:20241110
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20241210
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20250109
- imageRef: ghcr.io/siderolabs/i915-ucode:20241110
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20241210
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20250109
- imageRef: ghcr.io/siderolabs/intel-ucode:20241112
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20241210
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.2
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.2
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20250109
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.3
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.3
output:
kind: installer
imageOptions: {}

View File

@@ -3,24 +3,24 @@
arch: amd64
platform: metal
secureboot: false
version: v1.9.2
version: v1.9.3
input:
kernel:
path: /usr/install/amd64/vmlinuz
initramfs:
path: /usr/install/amd64/initramfs.xz
baseInstaller:
imageRef: ghcr.io/siderolabs/installer:v1.9.2
imageRef: ghcr.io/siderolabs/installer:v1.9.3
systemExtensions:
- imageRef: ghcr.io/siderolabs/amd-ucode:20241210
- imageRef: ghcr.io/siderolabs/amd-ucode:20250109
- imageRef: ghcr.io/siderolabs/amdgpu-firmware:20241110
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20241210
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20250109
- imageRef: ghcr.io/siderolabs/i915-ucode:20241110
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20241210
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20250109
- imageRef: ghcr.io/siderolabs/intel-ucode:20241112
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20241210
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.2
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.2
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20250109
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.3
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.3
output:
kind: iso
imageOptions: {}

View File

@@ -3,24 +3,24 @@
arch: amd64
platform: metal
secureboot: false
version: v1.9.2
version: v1.9.3
input:
kernel:
path: /usr/install/amd64/vmlinuz
initramfs:
path: /usr/install/amd64/initramfs.xz
baseInstaller:
imageRef: ghcr.io/siderolabs/installer:v1.9.2
imageRef: ghcr.io/siderolabs/installer:v1.9.3
systemExtensions:
- imageRef: ghcr.io/siderolabs/amd-ucode:20241210
- imageRef: ghcr.io/siderolabs/amd-ucode:20250109
- imageRef: ghcr.io/siderolabs/amdgpu-firmware:20241110
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20241210
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20250109
- imageRef: ghcr.io/siderolabs/i915-ucode:20241110
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20241210
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20250109
- imageRef: ghcr.io/siderolabs/intel-ucode:20241112
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20241210
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.2
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.2
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20250109
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.3
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.3
output:
kind: kernel
imageOptions: {}

View File

@@ -3,24 +3,24 @@
arch: amd64
platform: metal
secureboot: false
version: v1.9.2
version: v1.9.3
input:
kernel:
path: /usr/install/amd64/vmlinuz
initramfs:
path: /usr/install/amd64/initramfs.xz
baseInstaller:
imageRef: ghcr.io/siderolabs/installer:v1.9.2
imageRef: ghcr.io/siderolabs/installer:v1.9.3
systemExtensions:
- imageRef: ghcr.io/siderolabs/amd-ucode:20241210
- imageRef: ghcr.io/siderolabs/amd-ucode:20250109
- imageRef: ghcr.io/siderolabs/amdgpu-firmware:20241110
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20241210
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20250109
- imageRef: ghcr.io/siderolabs/i915-ucode:20241110
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20241210
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20250109
- imageRef: ghcr.io/siderolabs/intel-ucode:20241112
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20241210
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.2
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.2
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20250109
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.3
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.3
output:
kind: image
imageOptions: { diskSize: 1306525696, diskFormat: raw }

View File

@@ -3,24 +3,24 @@
arch: amd64
platform: nocloud
secureboot: false
version: v1.9.2
version: v1.9.3
input:
kernel:
path: /usr/install/amd64/vmlinuz
initramfs:
path: /usr/install/amd64/initramfs.xz
baseInstaller:
imageRef: ghcr.io/siderolabs/installer:v1.9.2
imageRef: ghcr.io/siderolabs/installer:v1.9.3
systemExtensions:
- imageRef: ghcr.io/siderolabs/amd-ucode:20241210
- imageRef: ghcr.io/siderolabs/amd-ucode:20250109
- imageRef: ghcr.io/siderolabs/amdgpu-firmware:20241110
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20241210
- imageRef: ghcr.io/siderolabs/bnx2-bnx2x:20250109
- imageRef: ghcr.io/siderolabs/i915-ucode:20241110
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20241210
- imageRef: ghcr.io/siderolabs/intel-ice-firmware:20250109
- imageRef: ghcr.io/siderolabs/intel-ucode:20241112
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20241210
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.2
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.2
- imageRef: ghcr.io/siderolabs/qlogic-firmware:20250109
- imageRef: ghcr.io/siderolabs/drbd:9.2.12-v1.9.3
- imageRef: ghcr.io/siderolabs/zfs:2.2.7-v1.9.3
output:
kind: image
imageOptions: { diskSize: 1306525696, diskFormat: raw }

View File

@@ -67,13 +67,12 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: darkhttpd
- name: assets
image: "{{ .Values.cozystack.image }}"
command:
- /usr/bin/darkhttpd
- /cozystack/assets
- --port
- "8123"
- /usr/bin/cozystack-assets-server
- "-dir=/cozystack/assets"
- "-address=:8123"
ports:
- name: http
containerPort: 8123

View File

@@ -1,2 +1,2 @@
cozystack:
image: ghcr.io/aenix-io/cozystack/cozystack:v0.23.1@sha256:dfa803a3e02ec9ea221029d361aa9d7aef0b5eb0a36d66c949b265d4ac4fc114
image: ghcr.io/aenix-io/cozystack/cozystack:v0.25.3@sha256:d0d3739f2ffd8edca7a143d48bc4cf7c3e4f84910fb76c340e1e8a43bf303c7c

View File

@@ -31,6 +31,13 @@ releases:
autoDirectNodeRoutes: true
routingMode: native
- name: cozy-proxy
releaseName: cozystack
chart: cozy-cozy-proxy
namespace: cozy-system
optional: true
dependsOn: [cilium]
- name: cert-manager-crds
releaseName: cert-manager-crds
chart: cozy-cert-manager-crds
@@ -75,6 +82,10 @@ releases:
privileged: true
optional: true
dependsOn: [cilium,victoria-metrics-operator]
values:
scrapeRules:
etcd:
enabled: true
- name: metallb
releaseName: metallb
@@ -199,3 +210,11 @@ releases:
namespace: cozy-keycloak
optional: true
dependsOn: [keycloak]
- name: bootbox
releaseName: bootbox
chart: cozy-bootbox
namespace: cozy-bootbox
privileged: true
optional: true
dependsOn: [cilium]

View File

@@ -58,6 +58,10 @@ releases:
privileged: true
optional: true
dependsOn: [victoria-metrics-operator]
values:
scrapeRules:
etcd:
enabled: true
- name: etcd-operator
releaseName: etcd-operator

View File

@@ -50,6 +50,12 @@ releases:
SVC_CIDR: "{{ index $cozyConfig.data "ipv4-svc-cidr" }}"
JOIN_CIDR: "{{ index $cozyConfig.data "ipv4-join-cidr" }}"
- name: cozy-proxy
releaseName: cozystack
chart: cozy-cozy-proxy
namespace: cozy-system
dependsOn: [cilium,kubeovn]
- name: cert-manager-crds
releaseName: cert-manager-crds
chart: cozy-cert-manager-crds
@@ -97,6 +103,10 @@ releases:
namespace: cozy-monitoring
privileged: true
dependsOn: [cilium,kubeovn,victoria-metrics-operator]
values:
scrapeRules:
etcd:
enabled: true
- name: kubevirt-operator
releaseName: kubevirt-operator
@@ -222,24 +232,67 @@ releases:
namespace: cozy-dashboard
dependsOn: [cilium,kubeovn,keycloak-configure]
values:
kubeapps:
{{- if .Capabilities.APIVersions.Has "source.toolkit.fluxcd.io/v1" }}
{{- with (lookup "source.toolkit.fluxcd.io/v1" "HelmRepository" "cozy-public" "").items }}
redis:
master:
podAnnotations:
{{- range $index, $repo := . }}
{{- with (($repo.status).artifact).revision }}
repository.cozystack.io/{{ $repo.metadata.name }}: {{ quote . }}
redis:
master:
podAnnotations:
{{- range $index, $repo := . }}
{{- with (($repo.status).artifact).revision }}
repository.cozystack.io/{{ $repo.metadata.name }}: {{ quote . }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
dashboard:
image:
registry: ghcr.io/aenix-io/cozystack
repository: dashboard
tag: v0.25.0
digest: "sha256:81e7b625c667bce5fc339eb97c8e115eafb82f66df4501550b3677ac53f6e234"
{{- $wlConfigmap := lookup "v1" "ConfigMap" "cozy-dashboard" "white-label" }}
{{- $locale := dig "data" "locale" "" $wlConfigmap }}
{{- if $locale }}
customLocale:
"Kubeapps": {{ $locale }}
{{- end }}
customStyle: |
{{- $logoImage := dig "data" "logo" "" $wlConfigmap }}
{{- if $logoImage }}
.kubeapps-logo {
background-image: {{ $logoImage }}
}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- $dashboardKCconfig := lookup "v1" "ConfigMap" "cozy-dashboard" "kubeapps-auth-config" }}
{{- $dashboardKCValues := dig "data" "values.yaml" "" $dashboardKCconfig }}
{{- if $dashboardKCValues }}
{{- $dashboardKCValues | nindent 4 }}
{{- end }}
#serviceaccount-selector {
display: none;
}
.login-moreinfo {
display: none;
}
a[href="#/docs"] {
display: none;
}
.login-group .clr-form-control .clr-control-label {
display: none;
}
.appview-separator div.appview-first-row div.center {
display: none;
}
.appview-separator div.appview-first-row section[aria-labelledby="app-secrets"] {
display: none;
}
.appview-first-row section[aria-labelledby="access-urls-title"] {
width: 100%;
}
{{- $dashboardKCconfig := lookup "v1" "ConfigMap" "cozy-dashboard" "kubeapps-auth-config" }}
{{- $dashboardKCValues := dig "data" "values.yaml" "" $dashboardKCconfig }}
{{- if $dashboardKCValues }}
valuesFrom:
- kind: ConfigMap
name: kubeapps-auth-config
valuesKey: values.yaml
{{- end }}
{{- if eq $oidcEnabled "true" }}
dependsOn: [keycloak-configure]
@@ -281,6 +334,14 @@ releases:
optional: true
dependsOn: [cilium,kubeovn]
- name: bootbox
releaseName: bootbox
chart: cozy-bootbox
namespace: cozy-bootbox
privileged: true
optional: true
dependsOn: [cilium,kubeovn]
{{- if $oidcEnabled }}
- name: keycloak
releaseName: keycloak

View File

@@ -70,6 +70,10 @@ releases:
namespace: cozy-monitoring
privileged: true
dependsOn: [victoria-metrics-operator]
values:
scrapeRules:
etcd:
enabled: true
- name: etcd-operator
releaseName: etcd-operator
@@ -151,9 +155,9 @@ releases:
chart: cozy-dashboard
namespace: cozy-dashboard
values:
kubeapps:
{{- if .Capabilities.APIVersions.Has "source.toolkit.fluxcd.io/v1" }}
{{- with (lookup "source.toolkit.fluxcd.io/v1" "HelmRepository" "cozy-public" "").items }}
kubeapps:
redis:
master:
podAnnotations:
@@ -164,12 +168,54 @@ releases:
{{- end }}
{{- end }}
{{- end }}
{{- $dashboardKCconfig := lookup "v1" "ConfigMap" "cozy-dashboard" "kubeapps-auth-config" }}
{{- $dashboardKCValues := dig "data" "values.yaml" "" $dashboardKCconfig }}
{{- if $dashboardKCValues }}
{{- $dashboardKCValues | nindent 4 }}
{{- end }}
dashboard:
image:
registry: ghcr.io/aenix-io/cozystack
repository: dashboard
tag: v0.25.0
digest: "sha256:81e7b625c667bce5fc339eb97c8e115eafb82f66df4501550b3677ac53f6e234"
{{- $wlConfigmap := lookup "v1" "ConfigMap" "cozy-dashboard" "white-label" }}
{{- $locale := dig "data" "locale" "" $wlConfigmap }}
{{- if $locale }}
customLocale:
"Kubeapps": {{ $locale }}
{{- end }}
customStyle: |
{{- $logoImage := dig "data" "logo" "" $wlConfigmap }}
{{- if $logoImage }}
.kubeapps-logo {
background-image: {{ $logoImage }}
}
{{- end }}
#serviceaccount-selector {
display: none;
}
.login-moreinfo {
display: none;
}
a[href="#/docs"] {
display: none;
}
.login-group .clr-form-control .clr-control-label {
display: none;
}
.appview-separator div.appview-first-row div.center {
display: none;
}
.appview-separator div.appview-first-row section[aria-labelledby="app-secrets"] {
display: none;
}
.appview-first-row section[aria-labelledby="access-urls-title"] {
width: 100%;
}
{{- $dashboardKCconfig := lookup "v1" "ConfigMap" "cozy-dashboard" "kubeapps-auth-config" }}
{{- $dashboardKCValues := dig "data" "values.yaml" "" $dashboardKCconfig }}
{{- if $dashboardKCValues }}
valuesFrom:
- kind: ConfigMap
name: kubeapps-auth-config
valuesKey: values.yaml
{{- end }}
{{- if eq $oidcEnabled "true" }}
dependsOn: [keycloak-configure]

View File

@@ -1,2 +1,2 @@
e2e:
image: ghcr.io/aenix-io/cozystack/e2e-sandbox:v0.23.1@sha256:0f4ffa7f23d6cdc633c0c4a0b852fde9710edbce96486fd9bd29c7d0d7710380
image: ghcr.io/aenix-io/cozystack/e2e-sandbox:v0.25.3@sha256:3c505ef20030ee4ff9412553c7ecc2077c01fb2785ff48991c404e09cd0db69f

View File

@@ -0,0 +1,6 @@
apiVersion: v2
name: bootbox
description: PXE hardware provisioning
icon: /logos/bootbox.svg
type: application
version: 0.1.0

View File

@@ -0,0 +1,11 @@
NAME=bootbox
NAMESPACE=tenant-root
include ../../../scripts/package.mk
generate:
readme-generator -v values.yaml -s values.schema.json.tmp -r README.md
cat values.schema.json.tmp | \
jq '.properties.machines.items.type = "object"' \
> values.schema.json
rm -f values.schema.json.tmp

View File

@@ -0,0 +1,11 @@
# BootBox
## Parameters
### Common parameters
| Name | Description | Value |
| --------------- | ----------------------------------------------------- | ------ |
| `whitelistHTTP` | Secure HTTP by enabling client networks whitelisting | `true` |
| `whitelist` | List of client networks | `[]` |
| `machines` | Configuration of physical machine instances | `[]` |

View File

@@ -0,0 +1,18 @@
apk add iptables iproute2 qemu-system-x86_64 qemu-img
iptables -t nat -D POSTROUTING -s 10.8.2.0/24 ! -d 10.8.2.0/24 -j MASQUERADE 2>/dev/null || true
iptables -t nat -A POSTROUTING -s 10.8.2.0/24 ! -d 10.8.2.0/24 -j MASQUERADE
ip link del tap0 2>/dev/null || true
ip tuntap add dev tap0 mode tap
ip link set tap0 up
ip addr add 10.8.2.1/24 dev tap0
rm -f data.img
qemu-img create data.img 100G
qemu-system-x86_64 -machine type=pc,accel=kvm -cpu host -smp 4 -m 8192 \
-device virtio-net,netdev=net0,mac=d6:fa:af:52:25:93 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
-drive file=data.img,if=virtio,format=raw \
-nographic

View File

@@ -0,0 +1 @@
ghcr.io/aenix-io/cozystack/matchbox:v0.25.3@sha256:2e5c6e4530f3421f8133485d2bb092374ec10ae198a4b685aef61ff1e7fa9aff

View File

@@ -0,0 +1,91 @@
<svg width="144" height="144" viewBox="0 0 144 144" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="144" height="144" rx="24" fill="url(#paint0_linear_979_792)"/>
<path d="M71.5698 76.5336C71.2374 76.5336 70.9036 76.4847 70.5829 76.3892L36.2079 66.0767C34.3885 65.5311 33.3562 63.6144 33.9017 61.7966C34.4489 59.9755 36.3657 58.9483 38.1817 59.4904L71.5698 69.5076L104.958 59.4904C106.776 58.96 108.691 59.9772 109.238 61.7966C109.783 63.6144 108.751 65.5311 106.932 66.0767L72.5567 76.3892C72.236 76.4847 71.9022 76.5336 71.5698 76.5336Z" fill="#231F20"/>
<path d="M74.973 53.0214C74.7668 54.3276 73.8043 55.3933 72.5668 55.7714L38.1918 66.0839C37.848 66.187 37.5387 66.2214 37.1949 66.2214C36.3699 66.2214 35.5793 65.912 34.9262 65.362L21.1762 53.3308C20.248 52.5401 19.8355 51.2683 20.0762 50.0651C20.3168 48.862 21.1762 47.8651 22.3449 47.487L53.2824 37.1745C54.3137 36.8308 55.448 37.0026 56.3418 37.6214L73.5293 49.6526C74.6293 50.4089 75.1793 51.7151 74.973 53.0214Z" fill="#FFDC83"/>
<path d="M121.964 53.3308L108.214 65.362C107.56 65.912 106.77 66.2214 105.945 66.2214C105.601 66.2214 105.292 66.187 104.948 66.0839L70.573 55.7714C69.3355 55.3933 68.373 54.3276 68.1667 53.0214C67.9605 51.7151 68.5105 50.4089 69.6105 49.6526L86.798 37.6214C87.6917 37.0026 88.8261 36.8308 89.8574 37.1745L120.795 47.487C121.964 47.8651 122.823 48.862 123.064 50.0651C123.304 51.2683 122.892 52.5401 121.964 53.3308Z" fill="#FFDC83"/>
<path d="M109.382 63.6426V107.471C109.382 108.88 108.522 110.152 107.216 110.668L72.8412 124.418C72.4287 124.589 72.0162 124.658 71.5693 124.658C71.1225 124.658 70.71 124.589 70.2975 124.418L35.9225 110.668C34.6162 110.152 33.7568 108.88 33.7568 107.471V63.6426C33.7568 61.752 35.3037 60.2051 37.1943 60.2051H105.944C107.835 60.2051 109.382 61.752 109.382 63.6426Z" fill="#EABD4C"/>
<path d="M107.999 61.4958C107.999 62.9812 107.037 64.2979 105.643 64.7368L72.4613 74.865C72.1295 74.9662 71.8308 75 71.499 75C71.1672 75 70.8686 74.9662 70.5368 74.865L37.3549 64.7368C35.9613 64.2979 34.999 62.9812 34.999 61.4958C34.999 60.0103 35.9613 58.6937 37.3549 58.2548L70.5368 48.1266C71.1672 47.9578 71.8308 47.9578 72.4613 48.1266L105.643 58.2548C107.037 58.6937 107.999 60.0103 107.999 61.4958Z" fill="#4C3825"/>
<path d="M74.5118 77C75.35 77 76.1794 76.9628 77 76.9133V21.0867C76.1765 21.0347 75.3471 21 74.5059 21C73.6647 21 72.8294 21.0347 72 21.0867V76.9108C72.8265 76.9628 73.6588 76.9975 74.5 77H74.5118Z" fill="url(#paint1_linear_979_792)"/>
<path d="M44.0282 38.1129L43.2078 37.2959C42.0773 38.9121 41.0746 40.614 40.2088 42.3861C50.1001 52.4354 51.1424 57.2835 51.1289 58.9074C51.0919 63.026 46.0522 69.4845 40.1416 75.4657C40.9996 77.2375 41.9933 78.9405 43.1137 80.5592C43.4499 80.223 43.7693 79.9137 44.0954 79.5842C52.625 70.9975 56.794 64.2498 56.8445 58.9477C56.8949 53.6457 52.7024 46.8879 44.0282 38.1129Z" fill="url(#paint2_linear_979_792)"/>
<path d="M104.695 79.5975L105.676 80.5725C106.795 78.9492 107.787 77.2417 108.642 75.4655C102.735 69.4709 97.6948 62.9955 97.6545 58.8937C97.6175 54.8928 102.627 48.4208 108.568 42.359C107.703 40.5917 106.703 38.8944 105.576 37.2822L104.755 38.0992C96.081 46.8575 91.8885 53.6791 91.9389 58.9442C91.9894 64.2092 96.1583 71.0107 104.695 79.5975Z" fill="url(#paint3_linear_979_792)"/>
<path d="M87.4396 58.9344C87.4396 51.5378 90.7378 39.2393 95.8179 27.6165C94.1979 26.5139 92.495 25.5382 90.7244 24.6982C85.1635 37.2287 81.7207 50.5561 81.7207 58.9478C81.7207 67.0673 85.4493 80.5425 91.111 93.1403C92.8468 92.2859 94.5147 91.3002 96.1004 90.1917C90.8589 78.4009 87.4396 66.0755 87.4396 58.9344Z" fill="url(#paint4_linear_979_792)"/>
<path d="M67.0384 58.9353C67.0384 50.4998 63.4578 37.0985 57.9608 24.7227C56.2158 25.5613 54.5377 26.5325 52.9412 27.6275C58.0314 39.2435 61.3228 51.5454 61.3228 58.9353C61.3228 66.073 57.9036 78.395 52.6621 90.1724C54.2482 91.2802 55.9161 92.2658 57.6514 93.121C63.3199 80.5266 67.0384 67.0614 67.0384 58.9353Z" fill="url(#paint5_linear_979_792)"/>
<path d="M74.4229 74.987L60.6729 95.612C60.0197 96.6089 58.9541 97.1589 57.8197 97.1589C57.4072 97.1589 56.9604 97.0901 56.5479 96.9183L22.1729 83.1683C21.1416 82.7558 20.3854 81.8964 20.1104 80.8651C19.8354 79.7995 20.076 78.6651 20.7635 77.8401L34.5135 60.6526C35.3729 59.5526 32.7391 57.8404 34.0797 58.2185L72.5666 69.7964C73.5979 70.1058 74.4229 70.8964 74.801 71.9276C75.1791 72.9589 75.0416 74.0933 74.4229 74.987Z" fill="#FFDC83"/>
<path d="M123.029 80.6242C122.754 81.6555 121.998 82.5492 121.001 82.9274L86.6261 96.918C86.1792 97.0899 85.7667 97.1586 85.3199 97.1586C84.1855 97.1586 83.1199 96.6086 82.4667 95.6117L68.7167 74.9867C68.098 74.093 67.9605 72.9586 68.3386 71.9274C68.7167 70.8961 69.5417 70.1055 70.573 69.7961L108.469 58.4331C109.81 58.0206 107.732 59.5524 108.626 60.618L122.376 77.5992C123.064 78.4242 123.304 79.5586 123.029 80.6242Z" fill="#FFDC83"/>
<defs>
<linearGradient id="paint0_linear_979_792" x1="24" y1="3.5" x2="181" y2="147" gradientUnits="userSpaceOnUse">
<stop stop-color="#480000"/>
<stop offset="1" stop-color="#AE2300"/>
</linearGradient>
<linearGradient id="paint1_linear_979_792" x1="74.5" y1="17.2369" x2="74.5" y2="79.9133" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFD200"/>
<stop offset="0.06" stop-color="#FFB500"/>
<stop offset="0.14" stop-color="#FF8C00"/>
<stop offset="0.21" stop-color="#FF7300"/>
<stop offset="0.26" stop-color="#FF6A00"/>
<stop offset="0.33" stop-color="#FC4F0E"/>
<stop offset="0.43" stop-color="#F92F1E"/>
<stop offset="0.51" stop-color="#F81B27"/>
<stop offset="0.57" stop-color="#F7142B"/>
<stop offset="0.68" stop-color="#DF162E"/>
<stop offset="0.79" stop-color="#AF1A38"/>
<stop offset="1" stop-color="#4B214C"/>
</linearGradient>
<linearGradient id="paint2_linear_979_792" x1="48.493" y1="15.8928" x2="48.493" y2="100.954" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFD200"/>
<stop offset="0.06" stop-color="#FFB500"/>
<stop offset="0.14" stop-color="#FF8C00"/>
<stop offset="0.21" stop-color="#FF7300"/>
<stop offset="0.26" stop-color="#FF6A00"/>
<stop offset="0.33" stop-color="#FC4F0E"/>
<stop offset="0.43" stop-color="#F92F1E"/>
<stop offset="0.51" stop-color="#F81B27"/>
<stop offset="0.57" stop-color="#F7142B"/>
<stop offset="0.68" stop-color="#DF162E"/>
<stop offset="0.79" stop-color="#AF1A38"/>
<stop offset="1" stop-color="#4B214C"/>
</linearGradient>
<linearGradient id="paint3_linear_979_792" x1="100.29" y1="15.8926" x2="100.29" y2="100.953" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFD200"/>
<stop offset="0.06" stop-color="#FFB500"/>
<stop offset="0.14" stop-color="#FF8C00"/>
<stop offset="0.21" stop-color="#FF7300"/>
<stop offset="0.26" stop-color="#FF6A00"/>
<stop offset="0.33" stop-color="#FC4F0E"/>
<stop offset="0.43" stop-color="#F92F1E"/>
<stop offset="0.51" stop-color="#F81B27"/>
<stop offset="0.57" stop-color="#F7142B"/>
<stop offset="0.68" stop-color="#DF162E"/>
<stop offset="0.79" stop-color="#AF1A38"/>
<stop offset="1" stop-color="#4B214C"/>
</linearGradient>
<linearGradient id="paint4_linear_979_792" x1="88.9122" y1="15.8929" x2="88.9122" y2="100.954" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFD200"/>
<stop offset="0.06" stop-color="#FFB500"/>
<stop offset="0.14" stop-color="#FF8C00"/>
<stop offset="0.21" stop-color="#FF7300"/>
<stop offset="0.26" stop-color="#FF6A00"/>
<stop offset="0.33" stop-color="#FC4F0E"/>
<stop offset="0.43" stop-color="#F92F1E"/>
<stop offset="0.51" stop-color="#F81B27"/>
<stop offset="0.57" stop-color="#F7142B"/>
<stop offset="0.68" stop-color="#DF162E"/>
<stop offset="0.79" stop-color="#AF1A38"/>
<stop offset="1" stop-color="#4B214C"/>
</linearGradient>
<linearGradient id="paint5_linear_979_792" x1="59.857" y1="15.8938" x2="59.857" y2="100.955" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFD200"/>
<stop offset="0.06" stop-color="#FFB500"/>
<stop offset="0.14" stop-color="#FF8C00"/>
<stop offset="0.21" stop-color="#FF7300"/>
<stop offset="0.26" stop-color="#FF6A00"/>
<stop offset="0.33" stop-color="#FC4F0E"/>
<stop offset="0.43" stop-color="#F92F1E"/>
<stop offset="0.51" stop-color="#F81B27"/>
<stop offset="0.57" stop-color="#F7142B"/>
<stop offset="0.68" stop-color="#DF162E"/>
<stop offset="0.79" stop-color="#AF1A38"/>
<stop offset="1" stop-color="#4B214C"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

View File

@@ -0,0 +1,6 @@
{{- if ne .Release.Name .Chart.Name }}
{{- fail (printf "The name of the release MUST BE %s" .Chart.Name) }}
{{- end -}}
{{- if ne .Release.Namespace "tenant-root" }}
{{- fail "The namespace of the release MUST BE tenant-root" }}
{{- end -}}

View File

@@ -0,0 +1,35 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ .Release.Name }}-dashboard-resources
rules:
- apiGroups:
- networking.k8s.io
resources:
- ingresses
resourceNames:
- bootbox
verbs: ["get", "list", "watch"]
- apiGroups:
- ""
resources:
- secrets
resourceNames:
- grafana-admin-password
verbs: ["get", "list", "watch"]
- apiGroups:
- ""
resources:
- services
resourceNames:
- bootbox
verbs: ["get", "list", "watch"]
- apiGroups:
- cozystack.io
resources:
- workloadmonitors
resourceNames:
- bootbox-matchbox
verbs: ["get", "list", "watch"]

View File

@@ -0,0 +1,42 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: bootbox-profiles
data:
default.json: |
{
"id": "default",
"name": "default",
"boot": {
"kernel": "/assets/vmlinuz",
"initrd": ["/assets/initramfs.xz"],
"args": [
"initrd=initramfs.xz",
"init_on_alloc=1",
"slab_nomerge",
"pti=on",
"console=tty0",
"console=ttyS0",
"printk.devkmsg=on",
"talos.platform=metal"
]
}
}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: bootbox-groups
data:
default.json: |
{
"id": "default",
"name": "default",
"profile": "default"
}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: bootbox-configs
data:

View File

@@ -0,0 +1,54 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: bootbox-matchbox
spec:
replicas: 1
selector:
matchLabels:
app: bootbox-matchbox
template:
metadata:
labels:
app: bootbox-matchbox
spec:
containers:
- name: matchbox
image: "{{ $.Files.Get "images/matchbox.tag" | trim }}"
args:
- "-address=:8080"
- "-log-level=debug"
volumeMounts:
- name: profiles-volume
mountPath: /var/lib/matchbox/profiles
- name: groups-volume
mountPath: /var/lib/matchbox/groups
- name: configs-volume
mountPath: /var/lib/matchbox/assets/configs
ports:
- name: http
containerPort: 8080
protocol: TCP
volumes:
- name: profiles-volume
configMap:
name: bootbox-profiles
- name: groups-volume
configMap:
name: bootbox-groups
- name: configs-volume
configMap:
name: bootbox-configs
---
apiVersion: cozystack.io/v1alpha1
kind: WorkloadMonitor
metadata:
name: bootbox-matchbox
spec:
replicas: 1
minReplicas: 1
kind: bootbox
type: matchbox
selector:
app: bootbox-matchbox
version: {{ $.Chart.Version }}

View File

@@ -0,0 +1,37 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $issuerType := (index $cozyConfig.data "clusterissuer") | default "http01" }}
{{- $myNS := lookup "v1" "Namespace" "" .Release.Namespace }}
{{- $ingress := index $myNS.metadata.annotations "namespace.cozystack.io/ingress" }}
{{- $host := index $myNS.metadata.annotations "namespace.cozystack.io/host" }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: bootbox
labels:
app: bootbox
annotations:
{{- if ne $issuerType "cloudflare" }}
acme.cert-manager.io/http01-ingress-class: {{ $ingress }}
{{- end }}
cert-manager.io/cluster-issuer: letsencrypt-prod
{{- if .Values.whitelistHTTP }}
nginx.ingress.kubernetes.io/whitelist-source-range: "{{ join "," (.Values.whitelist | default "0.0.0.0/32") }}"
{{- end }}
spec:
ingressClassName: {{ $ingress }}
tls:
- hosts:
- "{{ printf "bootbox.%s" (.Values.host | default $host) }}"
secretName: bootbox-tls
rules:
- host: "{{ printf "bootbox.%s" (.Values.host | default $host) }}"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: bootbox
port:
name: http

View File

@@ -0,0 +1,47 @@
{{- $cozyConfig := lookup "v1" "ConfigMap" "cozy-system" "cozystack" }}
{{- $issuerType := (index $cozyConfig.data "clusterissuer") | default "http01" }}
{{- $myNS := lookup "v1" "Namespace" "" .Release.Namespace }}
{{- $ingress := index $myNS.metadata.annotations "namespace.cozystack.io/ingress" }}
{{- $host := index $myNS.metadata.annotations "namespace.cozystack.io/host" }}
{{ range $m := .Values.machines }}
---
apiVersion: tinkerbell.org/v1alpha1
kind: Hardware
metadata:
name: {{ $m.hostname }}
namespace: cozy-bootbox
spec:
interfaces:
{{- range $mac := $m.mac }}
- dhcp:
hostname: {{ $m.hostname }}
mac: {{ $mac }}
{{- with $m.arch }}
arch: {{ . }}
{{- end }}
{{- with $m.ip }}
ip:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with $m.leaseTime }}
lease_time: {{ . }}
{{- end }}
{{- with $m.uefi }}
uefi: {{ . }}
{{- end }}
{{- with $m.nameServers }}
name_servers:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with $m.timeServers }}
time_servers:
{{- toYaml . | nindent 8 }}
{{- end }}
netboot:
allowPXE: true
ipxe:
url: "https://{{ printf "bootbox.%s" ($.Values.host | default $host) }}/boot.ipxe"
{{- end }}
{{- end }}

View File

@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: bootbox
spec:
selector:
app: bootbox-matchbox
ports:
- protocol: TCP
port: 80
targetPort: http
name: http

View File

@@ -0,0 +1,25 @@
{
"title": "Chart Values",
"type": "object",
"properties": {
"whitelistHTTP": {
"type": "boolean",
"description": "Secure HTTP by enabling client networks whitelisting",
"default": true
},
"whitelist": {
"type": "array",
"description": "List of client networks",
"default": [],
"items": {}
},
"machines": {
"type": "array",
"description": "Configuration of physical machine instances",
"default": "[]",
"items": {
"type": "object"
}
}
}
}

View File

@@ -0,0 +1,30 @@
## @section Common parameters
## @param whitelistHTTP Secure HTTP by enabling client networks whitelisting
## @param whitelist List of client networks
## Example:
## whitelistHTTP: true
## whitelist:
## - "1.2.3.4"
## - "10.8.0.0/16"
##
whitelistHTTP: true
whitelist: []
## @param machines [array] Configuration of physical machine instances
##
## Example:
## machines:
## - hostname: machine1
## arch: x86_64
## ip:
## address: 10.8.2.2
## gateway: 10.8.2.1
## netmask: 255.255.255.0
## leaseTime: 86400
## mac: [d6:fa:af:52:25:93]
## nameServers: [1.1.1.1,8.8.8.8]
## timeServers: [pool.ntp.org]
## uefi: true
machines: []

View File

@@ -3,4 +3,4 @@ name: etcd
description: Storage for Kubernetes clusters
icon: /logos/etcd.svg
type: application
version: 2.4.0
version: 2.5.0

View File

@@ -40,6 +40,12 @@ spec:
labels:
cozystack.io/service: etcd
spec:
containers:
- name: etcd
ports:
- name: metrics
containerPort: 2381
protocol: TCP
topologySpreadConstraints:
- maxSkew: 1
topologyKey: "kubernetes.io/hostname"

View File

@@ -0,0 +1,11 @@
apiVersion: operator.victoriametrics.com/v1beta1
kind: VMPodScrape
metadata:
name: etcd-pod-scrape
spec:
podMetricsEndpoints:
- port: metrics
scheme: http
selector:
matchLabels:
app.kubernetes.io/name: etcd

View File

@@ -0,0 +1,132 @@
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: etcd-rules
spec:
groups:
- name: etcd
rules:
- alert: etcdInsufficientMembers
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': insufficient members '{{`{{ $value }}`}}'."
expr: |
sum(up{job=~".*etcd.*"} == bool 1) by (job) < ((count(up{job=~".*etcd.*"}) by (job) + 1) / 2)
for: 3m
labels:
severity: critical
- alert: etcdNoLeader
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': member '{{`{{ $labels.instance }}`}}' has no leader."
expr: |
etcd_server_has_leader{job=~".*etcd.*"} == 0
for: 1m
labels:
severity: critical
- alert: etcdHighNumberOfLeaderChanges
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': instance '{{`{{ $labels.instance }}`}}' has seen '{{`{{ $value }}`}}' leader changes within the last hour."
expr: |
rate(etcd_server_leader_changes_seen_total{job=~".*etcd.*"}[15m]) > 3
for: 15m
labels:
severity: warning
- alert: etcdHighNumberOfFailedGRPCRequests
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': '{{`{{ $value }}`}}' of requests for '{{`{{ $labels.grpc_method }}`}}' failed on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method)
/
sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method)
> 1
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedGRPCRequests
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': '{{`{{ $value }}`}}' of requests for '{{`{{ $labels.grpc_method }}`}}' failed on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method)
/
sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method)
> 5
for: 5m
labels:
severity: critical
- alert: etcdGRPCRequestsSlow
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': gRPC requests to '{{`{{ $labels.grpc_method }}`}}' are taking '{{`{{ $value }}`}}' on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~".*etcd.*", grpc_type="unary"}[5m])) by (job, instance, grpc_service, grpc_method, le))
> 0.15
for: 10m
labels:
severity: critical
- alert: etcdMemberCommunicationSlow
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': member communication with '{{`{{ $labels.To }}`}}' is taking '{{`{{ $value }}`}}' on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~".*etcd.*"}[5m]))
> 0.15
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedProposals
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}': '{{`{{ $value }}`}}' proposal failures within the last hour on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
rate(etcd_server_proposals_failed_total{job=~".*etcd.*"}[15m]) > 5
for: 15m
labels:
severity: warning
- alert: etcdHighNumberOfFailedHTTPRequests
annotations:
summary: "'{{`{{ $value }}`}}' of requests for '{{`{{ $labels.method }}`}}' failed on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) BY (method) > 0.01
for: 10m
labels:
severity: warning
- alert: etcdHighNumberOfFailedHTTPRequests
annotations:
summary: "'{{`{{ $value }}`}}' of requests for '{{`{{ $labels.method }}`}}' failed on etcd instance '{{`{{ $labels.instance }}`}}'."
expr: |
sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) BY (method) > 0.05
for: 10m
labels:
severity: critical
- alert: etcdHTTPRequestsSlow
annotations:
summary: "etcd instance '{{`{{ $labels.instance }}`}}' HTTP requests to '{{`{{ $labels.method }}`}}' are slow."
expr: |
histogram_quantile(0.99, rate(etcd_http_successful_duration_seconds_bucket[5m]))
> 0.15
for: 10m
labels:
severity: warning
- alert: etcdMembersDown
annotations:
summary: "etcd cluster '{{`{{ $labels.job }}`}}' members are down."
description: 'etcd cluster "{{`{{ $labels.job }}`}}": members are down {{`{{ $value }}`}}.'
expr: |
max without (endpoint) (
sum without (instance, pod) (up{job=~".*etcd.*"} == bool 0)
or
count without (To) (
sum without (instance, pod) (rate(etcd_network_peer_sent_failures_total{job=~".*etcd.*"}[120s])) > 0.01
)
)
> 0
for: 10m
labels:
severity: critical

View File

@@ -0,0 +1,2 @@
.helmignore
/logos

View File

@@ -0,0 +1,6 @@
apiVersion: v2
name: info
description: Info
icon: /logos/info.svg
type: application
version: 1.0.0

View File

@@ -0,0 +1,3 @@
NAME=etcd
include ../../../scripts/package.mk

View File

@@ -0,0 +1,18 @@
# Info
### Kubeconfig for tenant
### Kubelogin
For using kubeconfig need install kubelogin.
```bash
# Homebrew (macOS and Linux)
brew install int128/kubelogin/kubelogin
# Krew (macOS, Linux, Windows and ARM)
kubectl krew install oidc-login
# Chocolatey (Windows)
choco install kubelogin
```

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill="#000000" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
width="800px" height="800px" viewBox="0 0 32 32" xml:space="preserve">
<g>
<path d="M17.962,24.725l1.806,0.096v2.531h-7.534v-2.406l1.045-0.094c0.568-0.063,0.916-0.254,0.916-1.014v-8.801
c0-0.699-0.188-0.92-0.791-0.92l-1.106-0.062v-2.626h5.666L17.962,24.725L17.962,24.725z M15.747,4.648
c1.394,0,2.405,1.047,2.405,2.374c0,1.331-1.014,2.313-2.438,2.313c-1.454,0-2.404-0.982-2.404-2.313
C13.31,5.695,14.26,4.648,15.747,4.648z M16,32C7.178,32,0,24.822,0,16S7.178,0,16,0c8.82,0,16,7.178,16,16S24.82,32,16,32z M16,3
C8.832,3,3,8.832,3,16s5.832,13,13,13s13-5.832,13-13S23.168,3,16,3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 963 B

View File

@@ -1,13 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ include "tenant.name" . }}-dashboard-resources
namespace: {{ .Release.namespace }}
name: info-dashboard-resources
rules:
- apiGroups:
- ""
resources:
- secrets
resourceNames:
- kubeconfig-{{ include "tenant.name" . }}
- kubeconfig-{{ .Release.Namespace }}
verbs: ["get", "list", "watch"]

View File

@@ -15,8 +15,7 @@
apiVersion: v1
kind: Secret
metadata:
name: kubeconfig-{{ include "tenant.name" . }}
namespace: tenant-root
name: kubeconfig-{{ .Release.Namespace }}
stringData:
kubeconfig: |
apiVersion: v1
@@ -28,10 +27,10 @@ stringData:
contexts:
- context:
cluster: cluster
namespace: {{ include "tenant.name" . }}
namespace: {{ .Release.Namespace }}
user: keycloak
name: {{ include "tenant.name" . }}
current-context: {{ include "tenant.name" . }}
name: {{ .Release.Namespace }}
current-context: {{ .Release.Namespace }}
users:
- name: keycloak
user:

View File

@@ -0,0 +1 @@
{}

View File

View File

@@ -3,4 +3,4 @@ name: monitoring
description: Monitoring and observability stack
icon: /logos/monitoring.svg
type: application
version: 1.7.0
version: 1.8.0

View File

@@ -1,5 +1,8 @@
GRAFANA_TAG = $(shell awk '$$1 == "version:" {print $$2}' Chart.yaml)
NAME=monitoring
include ../../../scripts/common-envs.mk
include ../../../scripts/package.mk
generate:
@@ -8,3 +11,16 @@ generate:
jq '.properties.metricsStorages.items.type = "object" | .properties.logsStorages.items.type = "object"' \
> values.schema.json
rm -f values.schema.json.tmp
image:
docker buildx build --platform linux/amd64 images/grafana \
--provenance false \
--tag $(REGISTRY)/grafana:$(call settag,$(GRAFANA_TAG)) \
--cache-from type=registry,ref=$(REGISTRY)/grafana:latest \
--cache-to type=inline \
--metadata-file images/grafana.json \
--push=$(PUSH) \
--load=$(LOAD)
echo "$(REGISTRY)/grafana:$(call settag,$(GRAFANA_TAG))@$$(yq e '."containerimage.digest"' images/grafana.json -o json -r)" \
> images/grafana.tag
rm -f images/grafana.json

View File

@@ -30,5 +30,8 @@ main/nodes
control-plane/control-plane-status
control-plane/deprecated-resources
control-plane/dns-coredns
control-plane/kube-etcd3
control-plane/kube-etcd
kubevirt/kubevirt-control-plane
flux/flux-control-plane
flux/flux-stats
kafka/strimzi-kafka

View File

@@ -0,0 +1 @@
ghcr.io/aenix-io/cozystack/grafana:1.8.0@sha256:1a484f970903cc38745251f3fbc1d4737065f2d0a8a08c0adccc8972aa25aa59

View File

@@ -0,0 +1,15 @@
FROM grafana/grafana:11.4.0
USER root
RUN mkdir -p /var/lib/grafana-plugins \
&& chown -R grafana:0 /var/lib/grafana-plugins
USER grafana
ARG VLOGS_VERSION=v0.14.1
RUN curl -L https://github.com/VictoriaMetrics/victorialogs-datasource/releases/download/${VLOGS_VERSION}/victoriametrics-logs-datasource-${VLOGS_VERSION}.tar.gz | \
tar -xzf - -C /var/lib/grafana-plugins
RUN grafana-cli --pluginsDir /var/lib/grafana-plugins plugins install natel-discrete-panel
RUN grafana-cli --pluginsDir /var/lib/grafana-plugins plugins install grafana-worldmap-panel

View File

@@ -36,38 +36,19 @@ spec:
replicas: 2
template:
spec:
initContainers:
- name: "load-vm-ds-plugin"
image: "curlimages/curl:7.85.0"
command: [ "/bin/sh" ]
workingDir: "/var/lib/grafana"
securityContext:
runAsUser: 10001
runAsNonRoot: true
runAsGroup: 10001
args:
- "-c"
- |
set -ex
mkdir -p /var/lib/grafana/plugins/
ver=$(curl -s https://api.github.com/repos/VictoriaMetrics/victorialogs-datasource/releases/latest | grep -oE 'v0\.13\.[0-9]+' | head -1)
curl -L https://github.com/VictoriaMetrics/victorialogs-datasource/releases/download/$ver/victoriametrics-logs-datasource-$ver.tar.gz -o /var/lib/grafana/plugins/vl-plugin.tar.gz
tar -xf /var/lib/grafana/plugins/vl-plugin.tar.gz -C /var/lib/grafana/plugins/
rm /var/lib/grafana/plugins/vl-plugin.tar.gz
volumeMounts:
- name: grafana-data
mountPath: /var/lib/grafana
containers:
- name: grafana
image: grafana/grafana:11.2.0
image: "{{ $.Files.Get "images/grafana.tag" | trim }}"
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: false
readinessProbe:
failureThreshold: 3
env:
- name: GF_INSTALL_PLUGINS
value: grafana-worldmap-panel,natel-discrete-panel
#- name: GF_INSTALL_PLUGINS
# value: grafana-worldmap-panel,natel-discrete-panel
- name: GF_PATHS_PLUGINS
value: /var/lib/grafana-plugins
- name: ONCALL_API_URL
value: http://grafana-oncall-engine:8080
- name: GF_DATABASE_HOST

View File

@@ -1,10 +1,13 @@
bootbox 0.1.0 HEAD
etcd 1.0.0 f7eaab0
etcd 2.0.0 a6d0f7cf
etcd 2.0.1 6fc1cc7d
etcd 2.1.0 2b00fcf8
etcd 2.2.0 5ca8823
etcd 2.3.0 b908400d
etcd 2.4.0 HEAD
etcd 2.4.0 cb7b8158
etcd 2.5.0 HEAD
info 1.0.0 HEAD
ingress 1.0.0 f642698
ingress 1.1.0 838bee5d
ingress 1.2.0 ced8e5b
@@ -23,7 +26,8 @@ monitoring 1.5.3 c1ca19dc
monitoring 1.5.4 d4634797
monitoring 1.6.0 cb7b8158
monitoring 1.6.1 3bb97596
monitoring 1.7.0 HEAD
monitoring 1.7.0 749110aa
monitoring 1.8.0 HEAD
seaweedfs 0.1.0 5ca8823
seaweedfs 0.2.0 9e33dc0
seaweedfs 0.2.1 249bf35

View File

@@ -0,0 +1,3 @@
apiVersion: v2
name: cozy-bootbox
version: 0.0.0 # Placeholder, the actual version will be automatically set during the build process

View File

@@ -0,0 +1,16 @@
export NAME=bootbox
export NAMESPACE=cozy-$(NAME)
include ../../../scripts/package.mk
update:
rm -rf charts
mkdir -p charts
cd charts && \
tag=$$(git ls-remote --tags --sort="v:refname" https://github.com/tinkerbell/charts | awk -F'[/^]' 'END{print $$3}') && \
curl -sSL https://github.com/tinkerbell/charts/archive/refs/tags/$${tag}.tar.gz | \
tar xzvf - --strip 2 charts-$${tag#*v}/tinkerbell
find charts -maxdepth 1 -mindepth 1 ! -name tink -and ! -name smee -exec rm -rf {} \;
mkdir -p charts/smee/crds
mv charts/tink/crds/hardware-crd.yaml charts/smee/crds
rm -rf charts/tink

View File

@@ -0,0 +1,25 @@
apiVersion: v2
name: smee
description: Smee is the network boot service for Tinkerbell
icon: https://github.com/tinkerbell/artwork/blob/6f07de53d75cb8932dbc7d14201e038cf3a3b230/Tinkerbell-Icon-Dark.png
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.6.2
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "0.15.1"

View File

@@ -0,0 +1,388 @@
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.16.3
name: hardware.tinkerbell.org
spec:
group: tinkerbell.org
names:
categories:
- tinkerbell
kind: Hardware
listKind: HardwareList
plural: hardware
shortNames:
- hw
singular: hardware
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .status.state
name: State
type: string
name: v1alpha1
schema:
openAPIV3Schema:
description: Hardware is the Schema for the Hardware API.
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: HardwareSpec defines the desired state of Hardware.
properties:
bmcRef:
description: |-
BMCRef contains a relation to a BMC state management type in the same
namespace as the Hardware. This may be used for BMC management by
orchestrators.
properties:
apiGroup:
description: |-
APIGroup is the group for the resource being referenced.
If APIGroup is not specified, the specified Kind must be in the core API group.
For any other third-party types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource being referenced
type: string
name:
description: Name is the name of resource being referenced
type: string
required:
- kind
- name
type: object
x-kubernetes-map-type: atomic
disks:
items:
description: Disk represents a disk device for Tinkerbell Hardware.
properties:
device:
type: string
type: object
type: array
interfaces:
items:
description: Interface represents a network interface configuration for Hardware.
properties:
dhcp:
description: DHCP configuration.
properties:
arch:
type: string
hostname:
type: string
iface_name:
type: string
ip:
description: IP configuration.
properties:
address:
type: string
family:
format: int64
type: integer
gateway:
type: string
netmask:
type: string
type: object
lease_time:
format: int64
type: integer
mac:
pattern: ([0-9a-f]{2}[:]){5}([0-9a-f]{2})
type: string
name_servers:
items:
type: string
type: array
time_servers:
items:
type: string
type: array
uefi:
type: boolean
vlan_id:
description: validation pattern for VLANDID is a string number between 0-4096
pattern: ^(([0-9][0-9]{0,2}|[1-3][0-9][0-9][0-9]|40([0-8][0-9]|9[0-6]))(,[1-9][0-9]{0,2}|[1-3][0-9][0-9][0-9]|40([0-8][0-9]|9[0-6]))*)$
type: string
type: object
disableDhcp:
default: false
description: DisableDHCP disables DHCP for this interface.
type: boolean
netboot:
description: Netboot configuration.
properties:
allowPXE:
type: boolean
allowWorkflow:
type: boolean
ipxe:
description: IPXE configuration.
properties:
contents:
type: string
url:
type: string
type: object
osie:
description: OSIE configuration.
properties:
baseURL:
type: string
initrd:
type: string
kernel:
type: string
type: object
type: object
type: object
type: array
metadata:
properties:
bonding_mode:
format: int64
type: integer
custom:
properties:
preinstalled_operating_system_version:
properties:
distro:
type: string
image_tag:
type: string
os_slug:
type: string
slug:
type: string
version:
type: string
type: object
private_subnets:
items:
type: string
type: array
type: object
facility:
properties:
facility_code:
type: string
plan_slug:
type: string
plan_version_slug:
type: string
type: object
instance:
properties:
allow_pxe:
type: boolean
always_pxe:
type: boolean
crypted_root_password:
type: string
hostname:
type: string
id:
type: string
ips:
items:
properties:
address:
type: string
family:
format: int64
type: integer
gateway:
type: string
management:
type: boolean
netmask:
type: string
public:
type: boolean
type: object
type: array
ipxe_script_url:
type: string
network_ready:
type: boolean
operating_system:
properties:
distro:
type: string
image_tag:
type: string
os_slug:
type: string
slug:
type: string
version:
type: string
type: object
rescue:
type: boolean
ssh_keys:
items:
type: string
type: array
state:
type: string
storage:
properties:
disks:
items:
properties:
device:
type: string
partitions:
items:
properties:
label:
type: string
number:
format: int64
type: integer
size:
format: int64
type: integer
start:
format: int64
type: integer
type_guid:
type: string
type: object
type: array
wipe_table:
type: boolean
type: object
type: array
filesystems:
items:
properties:
mount:
properties:
create:
properties:
force:
type: boolean
options:
items:
type: string
type: array
type: object
device:
type: string
files:
items:
properties:
contents:
type: string
gid:
format: int64
type: integer
mode:
format: int64
type: integer
path:
type: string
uid:
format: int64
type: integer
type: object
type: array
format:
type: string
point:
type: string
type: object
type: object
type: array
raid:
items:
properties:
devices:
items:
type: string
type: array
level:
type: string
name:
type: string
spare:
format: int64
type: integer
type: object
type: array
type: object
tags:
items:
type: string
type: array
userdata:
type: string
type: object
manufacturer:
properties:
id:
type: string
slug:
type: string
type: object
state:
type: string
type: object
resources:
additionalProperties:
anyOf:
- type: integer
- type: string
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true
description: |-
Resources represents known resources that are available on a machine.
Resources may be used for scheduling by orchestrators.
type: object
tinkVersion:
format: int64
type: integer
userData:
description: |-
UserData is the user data to configure in the hardware's
metadata
type: string
vendorData:
description: |-
VendorData is the vendor data to configure in the hardware's
metadata
type: string
type: object
status:
description: HardwareStatus defines the observed state of Hardware.
properties:
state:
description: HardwareState represents the hardware state.
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}

View File

@@ -0,0 +1,24 @@
{{ define "smee.ports" }}
- {{ .PortKey }}: {{ .http.port }}
name: {{ .http.name }}
protocol: TCP
- {{ .PortKey }}: {{ .syslog.port }}
name: {{ .syslog.name }}
protocol: UDP
- {{ .PortKey }}: {{ .dhcp.port }}
name: {{ .dhcp.name }}
protocol: UDP
- {{ .PortKey }}: {{ .tftp.port }}
name: {{ .tftp.name }}
protocol: UDP
{{- end }}
{{- define "urlJoiner" }}
{{- if .urlDict.port }}
{{- $host := printf "%v:%v" .urlDict.host .urlDict.port }}
{{- $newDict := set .urlDict "host" $host }}
{{- print (urlJoin $newDict) }}
{{- else }}
{{- print (urlJoin .urlDict) }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,12 @@
{{- define "singleNodeClusterConfig" }}
- effect: NoSchedule
key: node-role.kubernetes.io/control-plane
{{- end }}
{{- define "preferWorkerNodes" }}
- weight: {{ .nodeAffinityWeight }}
preference:
matchExpressions:
- key: node-role.kubernetes.io/control-plane
operator: DoesNotExist
{{- end }}

View File

@@ -0,0 +1,182 @@
{{- if .Values.deploy }}
{{- $publicIP := .Values.publicIP }}
{{- $trustedProxies := .Values.trustedProxies }}
{{- $roleType := .Values.rbac.type }}
{{- $nodeSelector := .Values.nodeSelector }}
{{- if .Values.global }}
{{- $publicIP = coalesce .Values.publicIP .Values.global.publicIP }}
{{- $trustedProxies = coalesce .Values.trustedProxies .Values.global.trustedProxies }}
{{- $roleType = coalesce .Values.global.rbac.type .Values.rbac.type }}
{{- $nodeSelector = coalesce .Values.nodeSelector .Values.global.nodeSelector }}
{{- end }}
{{- $_ := set .Values.dhcp "syslogIp" (default $publicIP .Values.dhcp.syslogIp) }}
{{- $_ := set .Values.dhcp "ipForPacket" (default $publicIP .Values.dhcp.ipForPacket) }}
{{- $_ := set .Values.dhcp "tftpIp" (default $publicIP .Values.dhcp.tftpIp) }}
{{- $_ := set .Values.dhcp.httpIPXE.binaryUrl "host" (default $publicIP .Values.dhcp.httpIPXE.binaryUrl.host) }}
{{- $_ := set .Values.dhcp.httpIPXE.scriptUrl "host" (default $publicIP .Values.dhcp.httpIPXE.scriptUrl.host) }}
{{- $_ := set .Values.http.tinkServer "ip" (default $publicIP .Values.http.tinkServer.ip) }}
{{- $_ := set .Values.http.osieUrl "host" (default $publicIP .Values.http.osieUrl.host) }}
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: {{ .Values.name }}
name: {{ .Values.name }}
namespace: {{ .Release.Namespace | quote }}
spec:
replicas: {{ .Values.replicas }}
selector:
matchLabels:
app: {{ .Values.name }}
stack: tinkerbell
{{- with .Values.selector }}
{{- toYaml . | nindent 6 }}
{{- end }}
strategy:
type: {{ .Values.deployment.strategy.type }}
template:
metadata:
labels:
app: {{ .Values.name }}
stack: tinkerbell
{{- with .Values.selector }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
containers:
- image: {{ .Values.image }}
imagePullPolicy: {{ .Values.imagePullPolicy }}
args:
{{- range .Values.additionalArgs }}
- {{ . }}
{{- end }}
env:
- name: SMEE_LOG_LEVEL
value: {{ .Values.logLevel | quote }}
- name: SMEE_DHCP_ADDR
value: {{ printf "%v:%v" .Values.dhcp.ip .Values.dhcp.port | quote }}
- name: SMEE_DHCP_ENABLED
value: {{ .Values.dhcp.enabled | quote }}
- name: SMEE_DHCP_TFTP_PORT
value: {{ .Values.dhcp.tftpPort | quote }}
- name: SMEE_DHCP_HTTP_IPXE_BINARY_PATH
value: {{ .Values.dhcp.httpIPXE.binaryUrl.path | quote }}
- name: SMEE_DHCP_HTTP_IPXE_BINARY_PORT
value: {{ .Values.dhcp.httpIPXE.binaryUrl.port | quote }}
- name: SMEE_DHCP_HTTP_IPXE_BINARY_SCHEME
value: {{ .Values.dhcp.httpIPXE.binaryUrl.scheme | quote }}
- name: SMEE_DHCP_HTTP_IPXE_SCRIPT_PATH
value: {{ .Values.dhcp.httpIPXE.scriptUrl.path | quote }}
- name: SMEE_DHCP_HTTP_IPXE_SCRIPT_PORT
value: {{ .Values.dhcp.httpIPXE.scriptUrl.port | quote }}
- name: SMEE_DHCP_HTTP_IPXE_SCRIPT_SCHEME
value: {{ .Values.dhcp.httpIPXE.scriptUrl.scheme | quote }}
- name: SMEE_DHCP_MODE
value: {{ .Values.dhcp.mode | quote }}
- name: SMEE_EXTRA_KERNEL_ARGS
value: {{ join " " ( append .Values.http.additionalKernelArgs ( printf "tink_worker_image=%s" ( required "missing tinkWorkerImage" .Values.tinkWorkerImage ) ) ) | quote }}
- name: SMEE_HTTP_IPXE_BINARY_ENABLED
value: {{ .Values.http.ipxeBinaryEnabled | quote }}
- name: SMEE_HTTP_IPXE_SCRIPT_ENABLED
value: {{ .Values.http.ipxeScriptEnabled | quote }}
- name: SMEE_HTTP_PORT
value: {{ .Values.http.port | quote }}
- name: SMEE_OSIE_URL
value: {{include "urlJoiner" (dict "urlDict" .Values.http.osieUrl) | quote }}
- name: SMEE_TINK_SERVER
value: {{ printf "%v:%v" .Values.http.tinkServer.ip .Values.http.tinkServer.port | quote }}
- name: SMEE_TINK_SERVER_TLS
value: {{ .Values.http.tinkServer.tls | quote }}
- name: SMEE_TINK_SERVER_INSECURE_TLS
value: {{ .Values.http.tinkServer.insecureTLS | quote }}
- name: SMEE_TRUSTED_PROXIES
value: {{ required "missing trustedProxies" ( join "," $trustedProxies ) | quote }}
- name: SMEE_SYSLOG_ENABLED
value: {{ .Values.syslog.enabled | quote }}
- name: SMEE_IPXE_SCRIPT_PATCH
value: {{ .Values.ipxeScriptPatch | quote }}
- name: SMEE_TFTP_ENABLED
value: {{ .Values.tftp.enabled | quote }}
- name: SMEE_TFTP_TIMEOUT
value: {{ .Values.tftp.timeout | quote }}
- name: SMEE_TFTP_PORT
value: {{ .Values.tftp.port | quote }}
- name: SMEE_SYSLOG_PORT
value: {{ .Values.syslog.port | quote }}
- name: SMEE_HTTP_ADDR
value: {{ .Values.http.ip | quote }}
- name: SMEE_SYSLOG_ADDR
value: {{ .Values.syslog.ip | quote }}
- name: SMEE_TFTP_ADDR
value: {{ .Values.tftp.ip | quote }}
- name: SMEE_DHCP_HTTP_IPXE_BINARY_HOST
value: {{ .Values.dhcp.httpIPXE.binaryUrl.host | quote }}
- name: SMEE_DHCP_HTTP_IPXE_SCRIPT_HOST
value: {{ .Values.dhcp.httpIPXE.scriptUrl.host | quote }}
- name: SMEE_DHCP_SYSLOG_IP
value: {{ .Values.dhcp.syslogIp | quote }}
- name: SMEE_DHCP_TFTP_IP
value: {{ .Values.dhcp.tftpIp | quote }}
- name: SMEE_DHCP_IP_FOR_PACKET
value: {{ .Values.dhcp.ipForPacket | quote }}
- name: SMEE_ISO_ENABLED
value: {{ .Values.iso.enabled | quote }}
- name: SMEE_ISO_URL
value: {{ .Values.iso.url | quote }}
- name: SMEE_ISO_MAGIC_STRING
value: {{ .Values.iso.magicString | quote }}
- name: SMEE_ISO_STATIC_IPAM_ENABLED
value: {{ .Values.iso.staticIPAMEnabled | quote }}
{{- if eq $roleType "Role"}}
- name: SMEE_BACKEND_KUBE_NAMESPACE
value: {{ .Release.Namespace | quote }}
{{- end }}
{{- range .Values.additionalEnv }}
- name: {{ .name | quote }}
value: {{ .value | quote }}
{{- end }}
{{- if not .Values.hostNetwork }}
ports:
{{- include "smee.ports" ( merge ( dict "PortKey" "containerPort" ) .Values ) | indent 12 }}
{{- end }}
name: {{ .Values.name }}
resources:
limits:
cpu: {{ .Values.resources.limits.cpu }}
memory: {{ .Values.resources.limits.memory }}
requests:
cpu: {{ .Values.resources.requests.cpu }}
memory: {{ .Values.resources.requests.memory }}
{{- with .Values.additionalVolumeMounts }}
volumeMounts:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.additionalVolumes }}
volumes:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ .Values.name }}
{{- if .Values.hostNetwork }}
hostNetwork: true
{{- end }}
{{- with $nodeSelector }}
nodeSelector:
{{ toYaml . | nindent 8 }}
{{- end }}
{{- if or .Values.deployment.tolerations .Values.singleNodeClusterConfig.controlPlaneTolerationsEnabled }}
tolerations:
{{- .Values.deployment.tolerations | toYaml | nindent 8 }}
{{- if .Values.singleNodeClusterConfig.controlPlaneTolerationsEnabled }}
{{- include "singleNodeClusterConfig" . | indent 6 }}
{{- end }}
{{- end }}
{{- if .Values.deployment.affinity }}
affinity:
{{- .Values.deployment.affinity | toYaml | nindent 8 }}
{{- else if .Values.singleNodeClusterConfig.controlPlaneTolerationsEnabled }}
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
{{- include "preferWorkerNodes" (dict "nodeAffinityWeight" .Values.singleNodeClusterConfig.nodeAffinityWeight) | indent 10 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,21 @@
{{- if .Values.deploy }}
{{- $roleType := .Values.rbac.type }}
{{- if .Values.global }}
{{- $roleType = coalesce .Values.global.rbac.type .Values.rbac.type }}
{{- end }}
apiVersion: rbac.authorization.k8s.io/v1
kind: {{ printf "%sBinding" $roleType }}
metadata:
name: {{ .Values.rbac.bindingName }}
{{- if eq $roleType "Role" }}
namespace: {{ .Release.Namespace | quote }}
{{- end }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: {{ $roleType }}
name: {{ .Values.rbac.name }}
subjects:
- kind: ServiceAccount
name: {{ .Values.name }}
namespace: {{ .Release.Namespace | quote }}
{{- end }}

View File

@@ -0,0 +1,17 @@
{{- if .Values.deploy }}
{{- $roleType := .Values.rbac.type }}
{{- if .Values.global }}
{{- $roleType = coalesce .Values.global.rbac.type .Values.rbac.type }}
{{- end }}
apiVersion: rbac.authorization.k8s.io/v1
kind: {{ $roleType }}
metadata:
name: {{ .Values.rbac.name }}
{{- if eq $roleType "Role" }}
namespace: {{ .Release.Namespace | quote }}
{{- end }}
rules:
- apiGroups: ["tinkerbell.org"]
resources: ["hardware", "hardware/status"]
verbs: ["get", "list", "watch"]
{{- end }}

Some files were not shown because too many files have changed in this diff Show More