Compare commits
47 Commits
Author | SHA1 | Date | |
---|---|---|---|
327e0aa799 | |||
b7e948954b | |||
93c0658c19 | |||
bdf74f2deb | |||
2435bb9f8a | |||
5ee38dcf7f | |||
a754dc9275 | |||
732e080da3 | |||
22e1ebdce1 | |||
e4280f2c4e | |||
a99609d21d | |||
e55658d382 | |||
9dbe9e1114 | |||
eea198786a | |||
da9c0a7b58 | |||
d582b884bf | |||
aa3e4c64ee | |||
ce479629f6 | |||
89fd516b20 | |||
8bbb991afb | |||
4c5c9ba553 | |||
ef1511d4f7 | |||
a290219c81 | |||
c4e406f855 | |||
2beac5f4dd | |||
5f5cd0268a | |||
796cbb6d30 | |||
39ebf7eb78 | |||
a1c5161ff7 | |||
2307ad667e | |||
a26e832fed | |||
8582010d90 | |||
b7186eb8b4 | |||
0f3528818f | |||
9fadc77979 | |||
13d231a62c | |||
6cbaa06bec | |||
1552e9c877 | |||
3b2cd37ea4 | |||
4c566cbc1a | |||
69c528e5e0 | |||
42bf35593f | |||
4e739c5f08 | |||
f75623b4ff | |||
d82b5e4a98 | |||
42c738211c | |||
c54bc35c9f |
12
.gitignore
vendored
12
.gitignore
vendored
@@ -18,3 +18,15 @@ cover*
|
||||
|
||||
# will be treated later
|
||||
/examples/*
|
||||
|
||||
# nsis
|
||||
nsis/*.dll
|
||||
nsis/*.exe
|
||||
|
||||
doc/share
|
||||
__pycache__
|
||||
|
||||
.rpmmacros
|
||||
*.gpg
|
||||
|
||||
katenary
|
||||
|
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022-2024 Patrice Ferlet
|
||||
Copyright (c) 2022-2025 The Katenary authors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
439
Makefile
439
Makefile
@@ -1,46 +1,91 @@
|
||||
# Strict mode
|
||||
SHELL := bash
|
||||
.SHELLFLAGS := -eu -o pipefail -c
|
||||
.ONESHELL:
|
||||
.DELETE_ON_ERROR:
|
||||
.PHONY: all binaries build check-dist-all check-dist-archlinux check-dist-debian check-dist-fedora check-dist-rocky check-dist-ubuntu check-sign clean-all clean-dist clean-go-cache clean-package-signer cover deb dist dist-full doc freebsd gpg-sign help install install-gomarkdoc katenary manpage packager-oci-image packages pacman prepare pull rpm rpm-sign sast serve-doc show-cover tar test uninstall upx warn-docker
|
||||
MAKEFLAGS += --warn-undefined-variables
|
||||
MAKEFLAGS += --no-builtin-rules
|
||||
|
||||
# Get a version string from git
|
||||
CUR_SHA=$(shell git log -n1 --pretty='%h')
|
||||
CUR_BRANCH=$(shell git branch --show-current)
|
||||
VERSION=$(shell git describe --exact-match --tags $(CUR_SHA) 2>/dev/null || echo $(CUR_BRANCH)-$(CUR_SHA))
|
||||
CTN:=$(shell which podman 2>&1 1>/dev/null && echo "podman" || echo "docker")
|
||||
PREFIX=~/.local
|
||||
VERSION=$(shell git describe --exact-match --tags $(CUR_SHA) 2>/dev/null || echo $(CUR_BRANCH)-$(CUR_SHA))# use by golang flags
|
||||
|
||||
# Go build command and environment variables for target OS and architecture
|
||||
GOVERSION=1.24
|
||||
GO=container
|
||||
OUT=katenary
|
||||
RELEASE=""
|
||||
BLD_CMD=go build -ldflags="-X 'katenary/generator.Version=$(RELEASE)$(VERSION)'" -o $(OUT) ./cmd/katenary
|
||||
GO=container# container, local
|
||||
OUTPUT=katenary
|
||||
GOOS=linux
|
||||
GOARCH=amd64
|
||||
CGO_ENABLED=0
|
||||
SIGNER=metal3d@gmail.com
|
||||
PREFIX=~/.local
|
||||
|
||||
warn-docker:
|
||||
@echo -e "\033[1;31mWarning: Docker is not recommended, use Podman instead.\033[0m"
|
||||
sleep 5
|
||||
|
||||
# Get the container (Podman is preferred, but docker can be used too. It may failed with Docker.)
|
||||
# TODO: propose nerdctl
|
||||
CTN:=$(shell which podman 2>&1 1>/dev/null && echo "podman" || echo "docker")
|
||||
ifeq ($(CTN),podman)
|
||||
CTN_USERMAP=--userns=keep-id
|
||||
else
|
||||
$(MAKE) warn-docker
|
||||
CTN_USERMAP=--user=$(shell id -u):$(shell id -g) -e HOME=/tmp
|
||||
endif
|
||||
|
||||
|
||||
# Packaging OCI image, to build rpm, deb, pacman, tar packages
|
||||
# We changes the keep-id uid/gid for Podman, so that the user inside the container is the same as the user outside.
|
||||
# For Docker, as it doesn't support userns, we use common options, but it may fail...
|
||||
PKG_OCI_IMAGE=packaging:fedora
|
||||
ifeq ($(CTN),podman)
|
||||
# podman
|
||||
PKG_OCI_OPTS:=--rm -it \
|
||||
-v ./:/opt/katenary:z \
|
||||
--userns keep-id:uid=1001,gid=1001 \
|
||||
$(PKG_OCI_IMAGE)
|
||||
else
|
||||
# docker
|
||||
PKG_OCI_OPTS:=--rm -it \
|
||||
-v ./:/opt/katenary:z \
|
||||
-e HOME=/tmp \
|
||||
$(CTN_USERMAP) \
|
||||
$(PKG_OCI_IMAGE)
|
||||
endif
|
||||
GO_BUILD=go build -ldflags="-X 'katenary/generator.Version=$(VERSION)'" -o $(OUTPUT) ./cmd/katenary
|
||||
|
||||
|
||||
# UPX compression
|
||||
UPX_OPTS =
|
||||
UPX ?= upx $(UPX_OPTS)
|
||||
|
||||
BUILD_IMAGE=docker.io/golang:$(GOVERSION)-alpine
|
||||
# SHELL=/bin/bash
|
||||
BUILD_IMAGE=docker.io/golang:$(GOVERSION)
|
||||
|
||||
# List of source files
|
||||
SOURCES=$(wildcard ./*.go ./*/*.go ./*/*/*.go)
|
||||
SOURCES=$(shell find -name "*.go" -or -name "*.tpl" -type f | grep -v -P "^./example|^./vendor")
|
||||
# List of binaries to build and sign
|
||||
BINARIES=dist/katenary-linux-amd64 dist/katenary-linux-arm64 dist/katenary.exe dist/katenary-darwin-amd64 dist/katenary-freebsd-amd64 dist/katenary-freebsd-arm64
|
||||
BINARIES=\
|
||||
dist/katenary-linux-amd64\
|
||||
dist/katenary-linux-arm64\
|
||||
dist/katenary-darwin-amd64\
|
||||
dist/katenary-freebsd-amd64\
|
||||
dist/katenary-freebsd-arm64\
|
||||
dist/katenary.exe\
|
||||
dist/katenary-windows-setup.exe
|
||||
|
||||
## GPG
|
||||
# List of signatures to build
|
||||
ASC_BINARIES=$(patsubst %,%.asc,$(BINARIES))
|
||||
# GPG signer
|
||||
SIGNER=metal3d@gmail.com
|
||||
|
||||
# defaults
|
||||
# Browser command to see coverage report after tests
|
||||
BROWSER=$(shell command -v epiphany || echo xdg-open)
|
||||
SHELL := bash
|
||||
# strict mode
|
||||
.SHELLFLAGS := -eu -o pipefail -c
|
||||
# One session per target
|
||||
.ONESHELL:
|
||||
.DELETE_ON_ERROR:
|
||||
MAKEFLAGS += --warn-undefined-variables
|
||||
MAKEFLAGS += --no-builtin-rules
|
||||
.PHONY: help clean build install tests test doc
|
||||
|
||||
all: build
|
||||
|
||||
|
||||
help:
|
||||
@cat <<EOF | fold -s -w 80
|
||||
=== HELP ===
|
||||
@@ -74,11 +119,13 @@ help:
|
||||
This will build the binary for darwin amd64.
|
||||
|
||||
Or you can build all versions:
|
||||
$$ make build-all
|
||||
$$ make binaries
|
||||
EOF
|
||||
|
||||
|
||||
## Standard build
|
||||
## BUILD
|
||||
|
||||
# Simply build the binary for the current OS and architecture
|
||||
build: pull katenary
|
||||
|
||||
pull:
|
||||
@@ -87,73 +134,263 @@ ifneq ($(GO),local)
|
||||
@$(CTN) pull $(BUILD_IMAGE)
|
||||
endif
|
||||
|
||||
katenary: $(SOURCES) Makefile go.mod go.sum
|
||||
katenary: $(SOURCES) go.mod go.sum
|
||||
ifeq ($(GO),local)
|
||||
@echo "=> Build on host using go"
|
||||
$(BLD_CMD)
|
||||
else ifeq ($(CTN),podman)
|
||||
@echo "=> Build in container using" $(CTN)
|
||||
echo $(GOOS) $(GOARCH)
|
||||
podman run -e CGO_ENABLED=$(CGO_ENABLED) -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) -e CC=$(CC) \
|
||||
--rm -v $(PWD):/go/src/katenary:z -w /go/src/katenary --userns keep-id $(BUILD_IMAGE) $(BLD_CMD)
|
||||
$(GO_BUILD)
|
||||
else
|
||||
@echo "=> Build in container using" $(CTN)
|
||||
@docker run -e CGO_ENABLED=$(CGO_ENABLED) -e GOOS=$(GOOS) -e GOARCH=$(GOARCH) \
|
||||
--rm -v $(PWD):/go/src/katenary:z -w /go/src/katenary --user $(shell id -u):$(shell id -g) -e HOME=/tmp $(BUILD_IMAGE) $(BLD_CMD)
|
||||
@$(CTN) run \
|
||||
-e CGO_ENABLED=$(CGO_ENABLED) \
|
||||
-e GOOS=$(GOOS) \
|
||||
-e GOARCH=$(GOARCH) \
|
||||
--rm -v $(PWD):/go/src/katenary:z \
|
||||
-w /go/src/katenary \
|
||||
-v go-cache:/go/pkg/mod:z \
|
||||
$(CTN_USERMAP) \
|
||||
$(BUILD_IMAGE) $(GO_BUILD)
|
||||
endif
|
||||
|
||||
|
||||
## Release build
|
||||
dist: prepare $(BINARIES) upx $(ASC_BINARIES)
|
||||
# Make dist, build executables for all platforms, sign them, and compress them with upx if possible.
|
||||
# Also generate the windows installer.
|
||||
binaries: prepare $(BINARIES)
|
||||
dist: binaries upx packages
|
||||
dist-full: clean-dist dist gpg-sign check-sign rpm-sign check-dist-all
|
||||
|
||||
prepare: pull
|
||||
prepare: pull packager-oci-image
|
||||
mkdir -p dist
|
||||
|
||||
dist/katenary-linux-amd64:
|
||||
dist/katenary-linux-amd64: $(SOURCES) go.mod go.sum
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for linux-amd64...\033[0m"
|
||||
$(MAKE) katenary GOOS=linux GOARCH=amd64 OUT=$@
|
||||
$(MAKE) katenary GOOS=linux GOARCH=amd64 OUTPUT=$@
|
||||
strip $@
|
||||
|
||||
dist/katenary-linux-arm64:
|
||||
dist/katenary-linux-arm64: $(SOURCES) go.mod go.sum
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for linux-arm...\033[0m"
|
||||
$(MAKE) katenary GOOS=linux GOARCH=arm64 OUT=$@
|
||||
$(MAKE) katenary GOOS=linux GOARCH=arm64 OUTPUT=$@
|
||||
|
||||
dist/katenary.exe:
|
||||
dist/katenary.exe: $(SOURCES) go.mod go.sum
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for windows...\033[0m"
|
||||
$(MAKE) katenary GOOS=windows GOARCH=amd64 OUT=$@
|
||||
$(MAKE) katenary GOOS=windows GOARCH=amd64 OUTPUT=$@
|
||||
|
||||
dist/katenary-darwin-amd64:
|
||||
dist/katenary-darwin-amd64: $(SOURCES) go.mod go.sum
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for darwin...\033[0m"
|
||||
$(MAKE) katenary GOOS=darwin GOARCH=amd64 OUT=$@
|
||||
$(MAKE) katenary GOOS=darwin GOARCH=amd64 OUTPUT=$@
|
||||
|
||||
dist/katenary-freebsd-amd64:
|
||||
dist/katenary-freebsd-amd64: $(SOURCES) go.mod go.sum
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for freebsd...\033[0m"
|
||||
$(MAKE) katenary GOOS=freebsd GOARCH=amd64 OUT=$@
|
||||
$(MAKE) katenary GOOS=freebsd GOARCH=amd64 OUTPUT=$@
|
||||
strip $@
|
||||
|
||||
dist/katenary-freebsd-arm64:
|
||||
dist/katenary-freebsd-arm64: $(SOURCES) go.mod go.sum
|
||||
@echo
|
||||
@echo -e "\033[1;32mBuilding katenary $(VERSION) for freebsd-arm64...\033[0m"
|
||||
$(MAKE) katenary GOOS=freebsd GOARCH=arm64 OUT=$@
|
||||
$(MAKE) katenary GOOS=freebsd GOARCH=arm64 OUTPUT=$@
|
||||
|
||||
dist/katenary-windows-setup.exe: nsis/EnVar.dll dist/katenary.exe
|
||||
@$(CTN) run -w /opt/katenary $(PKG_OCI_OPTS) \
|
||||
makensis -DAPP_VERSION=$(VERSION) nsis/katenary.nsi
|
||||
mv nsis/katenary-windows-setup.exe dist/katenary-windows-setup.exe
|
||||
|
||||
# Download the EnVar plugin for NSIS, put it in the nsis directory, and clean up
|
||||
nsis/EnVar.dll:
|
||||
curl https://nsis.sourceforge.io/mediawiki/images/7/7f/EnVar_plugin.zip -o nsis/EnVar_plugin.zip
|
||||
cd nsis
|
||||
unzip -o EnVar_plugin.zip Plugins/x86-unicode/EnVar.dll
|
||||
mv Plugins/x86-unicode/EnVar.dll EnVar.dll
|
||||
rm -rf EnVar_plugin.zip Plugins
|
||||
|
||||
# UPX compression
|
||||
upx: upx-linux upx-darwin
|
||||
|
||||
upx-linux: dist/katenary-linux-amd64 dist/katenary-linux-arm64
|
||||
$(UPX) $^
|
||||
|
||||
upx-darwin: dist/katenary-darwin-amd64
|
||||
$(UPX) --force-macos $^
|
||||
|
||||
## Linux / FreeBSD packages with fpm
|
||||
|
||||
DESCRIPTION := $(shell cat packaging/description | sed ':a;N;$$!ba;s/\n/\\n/g')
|
||||
|
||||
FPM_OPTS=--name katenary \
|
||||
--url https://katenary.org \
|
||||
--vendor "Katenary Project" \
|
||||
--maintainer "Patrice Ferlet <metal3d@gmail.com>" \
|
||||
--license "MIT" \
|
||||
--description="$$(printf "$(DESCRIPTION)" | fold -s)"
|
||||
|
||||
# base files (doc...)
|
||||
FPM_BASES=../LICENSE=/usr/local/share/doc/katenary/LICENSE \
|
||||
../README.md=/usr/local/share/doc/katenary/README.md
|
||||
|
||||
FPM_COMMON_FILES=$(FPM_BASES) ../doc/share/man/man1/katenary.1=/usr/local/share/man/man1/katenary.1
|
||||
|
||||
# ArchLinux has got inconsistent /usr/local/man directory
|
||||
FPM_COMMON_FILES_ARCHLINUX=$(FPM_BASES) ../doc/share/man/man1/katenary.1=/usr/local/man/man1/katenary.1 \
|
||||
|
||||
# Pacman refuses dashes in version, and should start with a number
|
||||
PACMAN_VERSION=$(shell echo $(VERSION) | sed 's/-/./g; s/^v//')
|
||||
|
||||
define RPM_MACROS
|
||||
%_signature gpg
|
||||
%_gpg_path /home/builder/.gnupg
|
||||
%_gpg_name $(SIGNER)
|
||||
%_gpgbin /usr/bin/gpg2
|
||||
%__gpg_sign_cmd %{__gpg} gpg --force-v3-sigs --batch --verbose --no-armor --no-secmem-warning -u "%{_gpg_name}" -sbo %{__signature_filename} --digest-algo sha256 %{__plaintext_filename}'
|
||||
endef
|
||||
|
||||
rpm: dist/katenary-linux-$(GOARCH)
|
||||
@echo "==> Building RPM packages for $(GOARCH)..."
|
||||
$(CTN) run -w /opt/katenary/dist $(PKG_OCI_OPTS) \
|
||||
fpm -s dir -t rpm -a $(GOARCH) -f $(FPM_OPTS) --version=$(VERSION) \
|
||||
$(FPM_COMMON_FILES) \
|
||||
./katenary-linux-$(GOARCH)=/usr/local/bin/katenary
|
||||
rpm-sign:
|
||||
[ -f .rpmmacros ] || echo "$(RPM_MACROS)" > .rpmmacros
|
||||
[ -f .secret.gpg ] || gpg --export-secret-keys -a $(SIGNER) > .secret.gpg
|
||||
$(CTN) run -w /opt/katenary/dist \
|
||||
-v ./.secret.gpg:/home/builder/signer.gpg \
|
||||
-v packager-gpg:/home/builder/.gnupg \
|
||||
$(PKG_OCI_OPTS) \
|
||||
gpg --import /home/builder/signer.gpg
|
||||
$(CTN) run -w /opt/katenary/dist \
|
||||
-v .rpmmacros:/home/builder/.rpmmacros:z \
|
||||
-v packager-gpg:/home/builder/.gnupg \
|
||||
$(PKG_OCI_OPTS) \
|
||||
bash -c 'for rpm in $$(find . -iname "*.rpm"); do echo signing: $$rpm; rpm --addsign $$rpm; done'
|
||||
|
||||
deb:
|
||||
@echo "==> Building DEB packages for $(GOARCH)..."
|
||||
$(CTN) run -w /opt/katenary/dist $(PKG_OCI_OPTS) \
|
||||
fpm -s dir -t deb -a $(GOARCH) -f $(FPM_OPTS) --version=$(VERSION) \
|
||||
$(FPM_COMMON_FILES) \
|
||||
./katenary-linux-$(GOARCH)=/usr/local/bin/katenary
|
||||
|
||||
pacman:
|
||||
@echo "==> Building Pacman packages for $(GOARCH)..."
|
||||
$(CTN) run -w /opt/katenary/dist $(PKG_OCI_OPTS) \
|
||||
fpm -s dir -t pacman -a $(GOARCH) -f $(FPM_OPTS) --version=$(PACMAN_VERSION) \
|
||||
$(FPM_COMMON_FILES_ARCHLINUX) \
|
||||
./katenary-linux-$(GOARCH)=/usr/local/bin/katenary
|
||||
|
||||
freebsd:
|
||||
@echo "==> Building FreeBSD packages for $(GOARCH)..."
|
||||
$(CTN) run -w /opt/katenary/dist $(PKG_OCI_OPTS) \
|
||||
fpm -s dir -t freebsd -a $(GOARCH) -f $(FPM_OPTS) --version=$(VERSION)\
|
||||
$(FPM_COMMON_FILES) \
|
||||
./katenary-freebsd-$(GOARCH)=/usr/local/bin/katenary
|
||||
mv dist/katenary-$(VERSION).txz dist/katenary-freebsd-$(VERSION).$(GOARCH).txz
|
||||
|
||||
tar:
|
||||
@echo "==> Building TAR packages for $(GOOS) $(GOARCH)..."
|
||||
$(CTN) run -w /opt/katenary/dist $(PKG_OCI_OPTS) \
|
||||
fpm -s dir -t tar -a $(GOARCH) -f $(FPM_OPTS) \
|
||||
$(FPM_COMMON_FILES) \
|
||||
./katenary-$(GOOS)-$(GOARCH)=/usr/local/bin/katenary
|
||||
mv dist/katenary.tar dist/katenary-$(GOOS)-$(VERSION).$(GOARCH).tar
|
||||
|
||||
packages: manpage packager-oci-image
|
||||
for arch in amd64 arm64; do \
|
||||
$(MAKE) rpm GOARCH=$$arch; \
|
||||
$(MAKE) deb GOARCH=$$arch; \
|
||||
$(MAKE) pacman GOARCH=$$arch; \
|
||||
$(MAKE) freebsd GOARCH=$$arch; \
|
||||
$(MAKE) tar GOARCH=$$arch GOOS=linux; \
|
||||
$(MAKE) tar GOARCH=$$arch GOOS=freebsd; \
|
||||
done
|
||||
|
||||
packager-oci-image:
|
||||
@$(CTN) build -t packaging:fedora ./packaging/oci 1>/dev/null
|
||||
|
||||
## GPG signing
|
||||
|
||||
gpg-sign:
|
||||
rm -f dist/*.asc
|
||||
$(MAKE) $(ASC_BINARIES)
|
||||
|
||||
check-sign:
|
||||
@echo "=> Checking signatures..."
|
||||
@for f in $(ASC_BINARIES); do \
|
||||
if gpg --verify $$f &>/dev/null; then \
|
||||
echo "Signature for $$f is valid"; \
|
||||
else \
|
||||
echo "Signature for $$f is invalid"; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
done
|
||||
@echo "=> checking in blank environment..."
|
||||
keyid=$(shell gpg -k --with-colons $(SIGNER)| grep '^pub' | cut -d: -f5);
|
||||
$(CTN) run --rm -it -e GPGKEY=$${keyid} -v ./dist:/opt/dist:z \
|
||||
packaging:fedora \
|
||||
bash -c '
|
||||
gpg --recv-key $$GPGKEY || exit 1;
|
||||
echo "Trusting $(SIGNER) key...";
|
||||
echo "trusted-key 483493B2DD0845DA8F21A26DF3702E3FAD8F76DC" >> ~/.gnupg/gpg.conf;
|
||||
gpg --update-trustdb;
|
||||
rm -f ~/.gnupg/gpg.conf;
|
||||
for f in /opt/dist/*.asc; do echo "==> $${f}"; gpg --verify $${f}; done;
|
||||
echo "=> Listing imported keys...";
|
||||
gpg -k
|
||||
'
|
||||
|
||||
dist/%.asc: dist/%
|
||||
gpg --armor --detach-sign --default-key $(SIGNER) $< &>/dev/null || exit 1
|
||||
|
||||
|
||||
upx:
|
||||
$(UPX) dist/katenary-linux-amd64
|
||||
$(UPX) dist/katenary-linux-arm64
|
||||
#$(UPX) dist/katenary.exe
|
||||
$(UPX) dist/katenary-darwin-amd64 --force-macos
|
||||
check-dist-rocky:
|
||||
@echo "=> Checking Rocky Linux package..."
|
||||
p=$(wildcard dist/*x86_64.rpm);
|
||||
$(CTN) run --rm -it -v ./dist:/opt:z quay.io/rockylinux/rockylinux:latest bash -c "
|
||||
rpm -ivh /opt/$$(basename $$p);
|
||||
katenary version;
|
||||
"
|
||||
|
||||
check-dist-fedora:
|
||||
@echo "=> Checking Fedora package..."
|
||||
p=$(wildcard dist/*x86_64.rpm);
|
||||
$(CTN) run --rm -it -v ./dist:/opt:z quay.io/fedora/fedora:latest bash -c "
|
||||
rpm -ivh /opt/$$(basename $$p);
|
||||
katenary version;
|
||||
"
|
||||
|
||||
check-dist-archlinux:
|
||||
echo "=> Checking ArchLinux package..."
|
||||
p=$(wildcard dist/*x86_64.pkg.tar.zst);
|
||||
$(CTN) run --rm -it -v ./dist:/opt:z quay.io/archlinux/archlinux bash -c "
|
||||
pacman -U /opt/$$(basename $$p) --noconfirm;
|
||||
katenary version;
|
||||
"
|
||||
|
||||
check-dist-debian:
|
||||
@echo "=> Checking Debian package..."
|
||||
p=$(wildcard dist/*amd64.deb);
|
||||
$(CTN) run --rm -it -v ./dist:/opt:z debian:latest bash -c "
|
||||
dpkg -i /opt/$$(basename $$p);
|
||||
katenary version;
|
||||
"
|
||||
check-dist-ubuntu:
|
||||
@echo "=> Checking Ubuntu package..."
|
||||
p=$(wildcard dist/*amd64.deb);
|
||||
$(CTN) run --rm -it -v ./dist:/opt:z ubuntu:latest bash -c "
|
||||
dpkg -i /opt/$$(basename $$p);
|
||||
katenary version;
|
||||
"
|
||||
|
||||
check-dist-all:
|
||||
$(MAKE) check-dist-fedora
|
||||
$(MAKE) check-dist-rocky
|
||||
$(MAKE) check-dist-debian
|
||||
$(MAKE) check-dist-ubuntu
|
||||
$(MAKE) check-dist-archlinux
|
||||
|
||||
## installation and uninstallation
|
||||
|
||||
install: build
|
||||
install -Dm755 katenary $(PREFIX)/bin/katenary
|
||||
@@ -161,11 +398,7 @@ install: build
|
||||
uninstall:
|
||||
rm -f $(PREFIX)/bin/katenary
|
||||
|
||||
clean:
|
||||
rm -rf katenary dist/* release.id
|
||||
|
||||
|
||||
serve-doc: __label_doc
|
||||
serve-doc: doc
|
||||
@cd doc && \
|
||||
[ -d venv ] || python -m venv venv; \
|
||||
source venv/bin/activate && \
|
||||
@@ -174,52 +407,31 @@ serve-doc: __label_doc
|
||||
echo "==> Serving doc with mkdocs..." && \
|
||||
mkdocs serve
|
||||
|
||||
tests: test
|
||||
test:
|
||||
@echo -e "\033[1;33mTesting katenary $(VERSION)...\033[0m"
|
||||
go test -coverprofile=cover.out ./...
|
||||
$(MAKE) cover
|
||||
|
||||
cover:
|
||||
go tool cover -func=cover.out | grep "total:"
|
||||
go tool cover -html=cover.out -o cover.html
|
||||
if [ "$(BROWSER)" = "xdg-open" ]; then
|
||||
xdg-open cover.html
|
||||
else
|
||||
$(BROWSER) -i --new-window cover.html
|
||||
fi
|
||||
|
||||
push-release: build-all
|
||||
@rm -f release.id
|
||||
# read personal access token from .git-credentials
|
||||
TOKEN=$(shell cat .credentials)
|
||||
# create a new release based on current tag and get the release id
|
||||
@curl -sSL -X POST \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-H "Authorization: token $$TOKEN" \
|
||||
-d "{\"tag_name\": \"$(VERSION)\", \"target_commitish\": \"\", \"name\": \"$(VERSION)\", \"draft\": true, \"prerelease\": true}" \
|
||||
https://api.github.com/repos/metal3d/katenary/releases | jq -r '.id' > release.id
|
||||
@echo "Release id: $$(cat release.id) created"
|
||||
@echo "Uploading assets..."
|
||||
# push all dist binary as assets to the release
|
||||
@for i in $$(find dist -type f -name "katenary*"); do
|
||||
curl -sSL -H "Authorization: token $$TOKEN" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-H "Content-Type: application/octet-stream" \
|
||||
--data-binary @$$i \
|
||||
https://uploads.github.com/repos/metal3d/katenary/releases/$$(cat release.id)/assets?name=$$(basename $$i)
|
||||
done
|
||||
@rm -f release.id
|
||||
|
||||
## Documentation generation
|
||||
|
||||
doc:
|
||||
@echo "=> Generating documentation..."
|
||||
# generate the labels doc and code doc
|
||||
$(MAKE) __label_doc
|
||||
|
||||
manpage:
|
||||
@echo "=> Generating manpage from documentation"
|
||||
@cd doc && \
|
||||
[ -d venv ] || python -m venv venv; \
|
||||
source venv/bin/activate && \
|
||||
echo "==> Installing requirements in the virtual env..." && \
|
||||
pip install -qq -r requirements.txt && \
|
||||
echo "==> Generating manpage..." && \
|
||||
MANPAGE=true mkdocs build && \
|
||||
rm -rf site &&
|
||||
echo "==> Manpage generated in doc/share/man/man1/katenary.1"
|
||||
|
||||
install-gomarkdoc:
|
||||
go install github.com/princjef/gomarkdoc/cmd/gomarkdoc@latest
|
||||
|
||||
__label_doc:
|
||||
@command -v gomarkdoc || (echo "==> We need to install gomarkdoc..." && \
|
||||
go install github.com/princjef/gomarkdoc/cmd/gomarkdoc@latest)
|
||||
$(MAKE) install-gomarkdoc)
|
||||
@echo "=> Generating labels doc..."
|
||||
# short label doc
|
||||
go run ./cmd/katenary help-labels -m | \
|
||||
@@ -243,6 +455,8 @@ __label_doc:
|
||||
done
|
||||
|
||||
|
||||
## TESTS, security analysis, and code quality
|
||||
|
||||
# Scan the source code.
|
||||
# - we don't need detection of text/template as it's not a web application, and
|
||||
# - we don't need sha1 detection as it is not used for cryptographic purposes.
|
||||
@@ -254,3 +468,34 @@ sast:
|
||||
--exclude-rule go.lang.security.audit.crypto.use_of_weak_crypto.use-of-sha1 \
|
||||
--metrics=on \
|
||||
.
|
||||
test:
|
||||
@echo -e "\033[1;33mTesting katenary $(VERSION)...\033[0m"
|
||||
go test -coverprofile=cover.out ./...
|
||||
$(MAKE) cover
|
||||
|
||||
cover:
|
||||
@go tool cover -func=cover.out | grep "total:"
|
||||
go tool cover -html=cover.out -o cover.html
|
||||
|
||||
show-cover:
|
||||
@[ -f cover.html ] || (echo "cover.html is not present, run make test before"; exit 1)
|
||||
if [ "$(BROWSER)" = "xdg-open" ]; then
|
||||
xdg-open cover.html
|
||||
else
|
||||
$(BROWSER) -i --new-window cover.html
|
||||
fi
|
||||
|
||||
## Miscellaneous
|
||||
|
||||
clean-all: clean-dist clean-package-signer clean-go-cache
|
||||
|
||||
clean-dist:
|
||||
rm -rf dist
|
||||
rm -f katenary
|
||||
|
||||
clean-package-signer:
|
||||
rm -f .secret.gpg .rpmmacros
|
||||
|
||||
clean-go-cache:
|
||||
$(CTN) volume rm -f go-cache
|
||||
|
||||
|
51
README.md
51
README.md
@@ -4,9 +4,9 @@
|
||||
|
||||
<div style="text-align:center; margin: auto 0 4em 0" align="center">
|
||||
|
||||
[](https://katenary.readthedocs.io/en/latest/?badge=latest)
|
||||
[](https://goreportcard.com/report/github.com/metal3d/katenary)
|
||||
[](https://github.com/metal3d/katenary/releases)
|
||||
[](https://katenary.readthedocs.io/latest/?badge=latest)
|
||||
[](https://goreportcard.com/report/github.com/Katenary/katenary)
|
||||
[](https://github.com/Katenary/katenary/releases)
|
||||
[](https://sonarcloud.io/summary/new_code?id=metal3d_katenary)
|
||||
[](https://sonarcloud.io/summary/new_code?id=metal3d_katenary)
|
||||
[](https://sonarcloud.io/summary/new_code?id=metal3d_katenary)
|
||||
@@ -41,16 +41,16 @@ The main developer is [Patrice FERLET](https://github.com/metal3d).
|
||||
|
||||
## Install
|
||||
|
||||
You can download the binaries from the [Release](https://github.com/metal3d/katenary/releases) section. Copy the binary
|
||||
You can download the binaries from the [Release](https://github.com/Katenary/katenary/releases) section. Copy the binary
|
||||
and rename it to `katenary`. Place the binary inside your `PATH`. You should now be able to call the `katenary` command.
|
||||
|
||||
You can of course get the binary with `go install -u github.com/metal3d/katenary/cmd/katenary/...` but the `main` branch
|
||||
You can of course get the binary with `go install -u github.com/Katenary/katenary/cmd/katenary/...` but the `main` branch
|
||||
is continuously updated. It's preferable to use releases.
|
||||
|
||||
You can use this commands on Linux:
|
||||
|
||||
```bash
|
||||
sh <(curl -sSL https://raw.githubusercontent.com/metal3d/katenary/master/install.sh)
|
||||
sh <(curl -sSL https://raw.githubusercontent.com/Katenary/katenary/master/install.sh)
|
||||
```
|
||||
|
||||
## Or, build yourself
|
||||
@@ -111,6 +111,7 @@ katenary completion fish | source
|
||||
## Usage
|
||||
|
||||
```text
|
||||
|
||||
Katenary is a tool to convert compose files to Helm Charts.
|
||||
|
||||
Each [command] and subcommand has got an "help" and "--help" flag to show more information.
|
||||
@@ -137,17 +138,17 @@ Flags:
|
||||
Use "katenary [command] --help" for more information about a command.
|
||||
```
|
||||
|
||||
Katenary will try to find a `docker-compose.yaml` or `docker-compose.yml` file inside the current directory. It will
|
||||
check *the existence of the `chart` directory to create a new Helm Chart inside a named subdirectory. Katenary will ask
|
||||
you if you want to delete it before recreating.
|
||||
Katenary will try to find a `docker-compose.yaml` or `docker-compose.yml` file inside the current directory. It will
|
||||
check \*the existence of the `chart` directory to create a new Helm Chart inside a named subdirectory. Katenary will ask
|
||||
you if you want to delete it before recreating.
|
||||
|
||||
It creates a subdirectory inside `chart` that is named with the `appname` option (default is `MyApp`)
|
||||
|
||||
> To respect the ability to install the same application in the same namespace, Katenary will create variable names
|
||||
> like `{{ .Release.Name }}-servicename`. So, you will need to use some labels inside your docker-compose file to help
|
||||
> Katenary to build a correct helm chart.
|
||||
> To respect the ability to install the same application in the same namespace, Katenary will create variable names
|
||||
> like `{{ .Release.Name }}-servicename`. So, you will need to use some labels inside your docker-compose file to help
|
||||
> Katenary to build a correct helm chart.
|
||||
|
||||
Example of a possible `docker-compose.yaml` file:
|
||||
Example of a possible `docker-compose.yaml` file:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
@@ -210,21 +211,21 @@ These labels could be found by `katenary help-labels`, and can be placed as labe
|
||||
To get more information about a label, use `katenary help-label <name_without_prefix>
|
||||
e.g. katenary help-label dependencies
|
||||
|
||||
katenary.v3/configmap-files: list of strings Add files to the configmap.
|
||||
katenary.v3/configmap-files: []string Inject files as Configmap.
|
||||
katenary.v3/cronjob: object Create a cronjob from the service.
|
||||
katenary.v3/dependencies: list of objects Add Helm dependencies to the service.
|
||||
katenary.v3/dependencies: []object Add Helm dependencies to the service.
|
||||
katenary.v3/description: string Description of the service
|
||||
katenary.v3/env-from: list of strings Add environment variables from antoher service.
|
||||
katenary.v3/exchange-volumes: list of objects Add exchange volumes (empty directory on the node) to share data
|
||||
katenary.v3/env-from: []string Add environment variables from another service.
|
||||
katenary.v3/exchange-volumes: []object Add exchange volumes (empty directory on the node) to share data
|
||||
katenary.v3/health-check: object Health check to be added to the deployment.
|
||||
katenary.v3/ignore: bool Ignore the service
|
||||
katenary.v3/ingress: object Ingress rules to be added to the service.
|
||||
katenary.v3/main-app: bool Mark the service as the main app.
|
||||
katenary.v3/map-env: object Map env vars from the service to the deployment.
|
||||
katenary.v3/ports: list of uint32 Ports to be added to the service.
|
||||
katenary.v3/map-env: map[string]string Map env vars from the service to the deployment.
|
||||
katenary.v3/ports: []uint32 Ports to be added to the service.
|
||||
katenary.v3/same-pod: string Move the same-pod deployment to the target deployment.
|
||||
katenary.v3/secrets: list of string Env vars to be set as secrets.
|
||||
katenary.v3/values: list of string or map Environment variables to be added to the values.yaml
|
||||
katenary.v3/secrets: []string Env vars to be set as secrets.
|
||||
katenary.v3/values: []string or map[string]string Environment variables to be added to the values.yaml
|
||||
katenary.v3/values-from: map[string]string Add values from another service.
|
||||
```
|
||||
|
||||
@@ -244,7 +245,7 @@ services:
|
||||
port: 80
|
||||
```
|
||||
|
||||
You can remove the labels, and use a kanetary.yaml file:
|
||||
You can remove the labels, and use a `katenary.yaml` file:
|
||||
|
||||
```yaml
|
||||
web:
|
||||
@@ -255,7 +256,7 @@ web:
|
||||
|
||||
To validate the `katenary.yaml` file, you can use the JSON schema using the "master" raw content:
|
||||
|
||||
`https://raw.githubusercontent.com/metal3d/katenary/refs/heads/master/katenary.json`
|
||||
`https://raw.githubusercontent.com/Katenary/katenary/refs/heads/master/katenary.json`
|
||||
|
||||
It's easy to configure in [LazyVim](https://www.lazyvim.org/), using `nvim-lspconfig`,
|
||||
create a Lua file in your `plugins` directory, or apply the settings as the example below:
|
||||
@@ -272,7 +273,7 @@ return {
|
||||
settings = {
|
||||
yaml = {
|
||||
schemas = {
|
||||
["https://raw.githubusercontent.com/metal3d/katenary/master/katenary.json"] = "katenary.yaml",
|
||||
["https://raw.githubusercontent.com/Katenary/katenary/master/katenary.json"] = "katenary.yaml",
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -288,7 +289,7 @@ Use this address to validate the `katenary.yaml` file in VSCode:
|
||||
```json
|
||||
{
|
||||
"yaml.schemas": {
|
||||
"https://raw.githubusercontent.com/metal3d/katenary/master/katenary.json": "katenary.yaml"
|
||||
"https://raw.githubusercontent.com/Katenary/katenary/master/katenary.json": "katenary.yaml"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
@@ -2,4 +2,5 @@ MD012: false
|
||||
MD013: false
|
||||
MD022: false
|
||||
MD033: false
|
||||
MD041: false
|
||||
MD046: false
|
||||
|
@@ -19,9 +19,10 @@ and flexibility.
|
||||
|
||||
Kompose is able to generate Helm charts, but [it could be not the case in future releases](https://github.com/kubernetes/kompose/issues/1716) for several reasons[^2].
|
||||
|
||||
[^2]: The author of Kompose explains that they have no bandwidth to maintain the Helm chart generation. It's a complex
|
||||
task, and we can confirm. Katenary takes a lot of time to be developed and maintained. This issue mentions Katenary as
|
||||
an alternative to Helm chart generation :smile:
|
||||
[^2]:
|
||||
The author of Kompose explains that they have no bandwidth to maintain the Helm chart generation. It's a complex
|
||||
task, and we can confirm. Katenary takes a lot of time to be developed and maintained. This issue mentions Katenary as
|
||||
an alternative to Helm chart generation :smile:
|
||||
|
||||
The project is focused on Kubernetes manifests and proposes to use "Kustomize" to adapt the manifests. Helm seems to be
|
||||
not the priority.
|
||||
@@ -86,9 +87,9 @@ tested some concepts.
|
||||
You can help us in many ways.
|
||||
|
||||
- The first things we really need, more than money, more than anything else, is to have feedback. If you use Katenary,
|
||||
if you have some issues, if you have some ideas, please open an issue on the [GitHub repository](https://github.com/metal3d/katenary).
|
||||
if you have some issues, if you have some ideas, please open an issue on the [GitHub repository](https://github.com/Katenary/katenary).
|
||||
- The second thing is to help us to fix issues. If you're a Go developer, or if you want to fix the documentation,
|
||||
your help is greatly appreciated.
|
||||
your help is greatly appreciated.
|
||||
- And then, of course, we need money, or sponsors.
|
||||
|
||||
### If you're a company
|
||||
@@ -105,6 +106,7 @@ All main contributors[^3] will be listed on the website and in the documentation
|
||||
|
||||
> If you want to be anonymous, please tell us.
|
||||
|
||||
[^3]: Main contributors are the people who have made a significant contribution to the project. It could be code,
|
||||
documentation, or any other help. There is no defined rules, at this time, to evaluate the contribution.
|
||||
It's a subjective decision.
|
||||
[^3]:
|
||||
Main contributors are the people who have made a significant contribution to the project. It could be code,
|
||||
documentation, or any other help. There is no defined rules, at this time, to evaluate the contribution.
|
||||
It's a subjective decision.
|
||||
|
@@ -42,13 +42,13 @@ share it with the community.
|
||||
The main developer is [Patrice FERLET](https://github.com/metal3d).
|
||||
|
||||
The project source
|
||||
code is hosted on the [:fontawesome-brands-github: Katenary GitHub Repository](https://github.com/metal3d/katenary).
|
||||
code is hosted on the [:fontawesome-brands-github: Katenary GitHub Repository](https://github.com/Katenary/katenary).
|
||||
|
||||
## Install Katenary
|
||||
|
||||
Katenary is developed using the :fontawesome-brands-golang:{ .gopher } [Go](https://go.dev) language.
|
||||
The binary is statically linked, so you can simply download it from the [release
|
||||
page](https://github.com/metal3d/katenary/releases) of the project in GitHub.
|
||||
page](https://github.com/Katenary/katenary/releases) of the project in GitHub.
|
||||
|
||||
You need to select the right binary for your operating system and architecture, and copy the binary in a directory
|
||||
that is in your `PATH`.
|
||||
@@ -57,17 +57,17 @@ If you are a Linux user, you can use the "one line installation command" which w
|
||||
`$HOME/.local/bin` directory if it exists.
|
||||
|
||||
```bash
|
||||
sh <(curl -sSL https://raw.githubusercontent.com/metal3d/katenary/master/install.sh)
|
||||
sh <(curl -sSL https://raw.githubusercontent.com/Katenary/katenary/master/install.sh)
|
||||
```
|
||||
|
||||
!!! Info "Upgrading is integrated to the `katenary` command"
|
||||
Katenary propose a `upgrade` sub-command to update the current binary to the latest stable release.
|
||||
Katenary propose a `upgrade` sub-command to update the current binary to the latest stable release.
|
||||
|
||||
Of course, you need to install Katenary once :smile:
|
||||
|
||||
!!! Note "You prefer to compile it, no need to install Go"
|
||||
You can also build and install it yourself, the provided Makefile has got a `build` command that uses `podman` or
|
||||
`docker` to build the binary.
|
||||
You can also build and install it yourself, the provided Makefile has got a `build` command that uses `podman` or
|
||||
`docker` to build the binary.
|
||||
|
||||
So, you don't need to install Go compiler :+1:.
|
||||
|
||||
@@ -77,7 +77,7 @@ sh <(curl -sSL https://raw.githubusercontent.com/metal3d/katenary/master/install
|
||||
To compile it, you can use the following commands:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/metal3d/katenary.git
|
||||
git clone https://github.com/Katenary/katenary.git
|
||||
cd katenary
|
||||
make build
|
||||
make install
|
||||
|
@@ -1,19 +1,28 @@
|
||||
# Labels documentation
|
||||
|
||||
Katenary proposes labels to set in `compose.yaml` files (or override files) to configure the Helm Chart generation. Because it is sometimes needed to have structured values, it is necessary to use the Yaml syntax. While compose labels are string, we can use `|` to use Yaml multilines as value.
|
||||
Katenary proposes labels to set in `compose.yaml` files (or override files) to configure the Helm Chart generation.
|
||||
Because it is sometimes needed to have structured values, it is necessary to use the YAML syntax.
|
||||
While compose labels are string, we can use _here-doc_ syntax using `|` to use YAML multiline as value.
|
||||
|
||||
Katenary will try to Unmarshal these labels.
|
||||
```yaml
|
||||
label-name: |-
|
||||
# this is actually a multiline string here
|
||||
key1: value1
|
||||
key2: value2
|
||||
```
|
||||
|
||||
Katenary will try to _Unmarshal_ these labels.
|
||||
|
||||
## Label list and types
|
||||
|
||||
<!-- START_LABEL_DOC : do not remove this tag !-->
|
||||
| Label name | Description | Type |
|
||||
| ------------------------------ | ---------------------------------------------------------------- | -------------------------------- |
|
||||
| `katenary.v3/configmap-files` | Add files to the configmap. | `[]string` |
|
||||
| `katenary.v3/configmap-files` | Inject files as Configmap. | `[]string` |
|
||||
| `katenary.v3/cronjob` | Create a cronjob from the service. | `object` |
|
||||
| `katenary.v3/dependencies` | Add Helm dependencies to the service. | `[]object` |
|
||||
| `katenary.v3/description` | Description of the service | `string` |
|
||||
| `katenary.v3/env-from` | Add environment variables from antoher service. | `[]string` |
|
||||
| `katenary.v3/env-from` | Add environment variables from another service. | `[]string` |
|
||||
| `katenary.v3/exchange-volumes` | Add exchange volumes (empty directory on the node) to share data | `[]object` |
|
||||
| `katenary.v3/health-check` | Health check to be added to the deployment. | `object` |
|
||||
| `katenary.v3/ignore` | Ignore the service | `bool` |
|
||||
@@ -33,7 +42,7 @@ Katenary will try to Unmarshal these labels.
|
||||
<!-- START_DETAILED_DOC : do not remove this tag !-->
|
||||
### katenary.v3/configmap-files
|
||||
|
||||
Add files to the configmap.
|
||||
Inject files as Configmap.
|
||||
|
||||
**Type**: `[]string`
|
||||
|
||||
@@ -157,7 +166,7 @@ labels:
|
||||
|
||||
### katenary.v3/env-from
|
||||
|
||||
Add environment variables from antoher service.
|
||||
Add environment variables from another service.
|
||||
|
||||
**Type**: `[]string`
|
||||
|
||||
|
@@ -35,7 +35,7 @@ var Version = "master" // changed at compile time
|
||||
```
|
||||
|
||||
<a name="Convert"></a>
|
||||
## func [Convert](<https://github.com/metal3d/katenary/blob/develop/generator/converter.go#L99>)
|
||||
## func [Convert](<https://github.com/katenary/katenary/blob/develop/generator/converter.go#L99>)
|
||||
|
||||
```go
|
||||
func Convert(config ConvertOptions, dockerComposeFile ...string) error
|
||||
@@ -44,7 +44,7 @@ func Convert(config ConvertOptions, dockerComposeFile ...string) error
|
||||
Convert a compose \(docker, podman...\) project to a helm chart. It calls Generate\(\) to generate the chart and then write it to the disk.
|
||||
|
||||
<a name="GetLabels"></a>
|
||||
## func [GetLabels](<https://github.com/metal3d/katenary/blob/develop/generator/labels.go#L12>)
|
||||
## func [GetLabels](<https://github.com/katenary/katenary/blob/develop/generator/labels.go#L12>)
|
||||
|
||||
```go
|
||||
func GetLabels(serviceName, appName string) map[string]string
|
||||
@@ -53,7 +53,7 @@ func GetLabels(serviceName, appName string) map[string]string
|
||||
GetLabels returns the labels for a service. It uses the appName to replace the \_\_replace\_\_ in the labels. This is used to generate the labels in the templates.
|
||||
|
||||
<a name="GetMatchLabels"></a>
|
||||
## func [GetMatchLabels](<https://github.com/metal3d/katenary/blob/develop/generator/labels.go#L25>)
|
||||
## func [GetMatchLabels](<https://github.com/katenary/katenary/blob/develop/generator/labels.go#L25>)
|
||||
|
||||
```go
|
||||
func GetMatchLabels(serviceName, appName string) map[string]string
|
||||
@@ -62,7 +62,7 @@ func GetMatchLabels(serviceName, appName string) map[string]string
|
||||
GetMatchLabels returns the matchLabels for a service. It uses the appName to replace the \_\_replace\_\_ in the labels. This is used to generate the matchLabels in the templates.
|
||||
|
||||
<a name="GetVersion"></a>
|
||||
## func [GetVersion](<https://github.com/metal3d/katenary/blob/develop/generator/version.go#L14>)
|
||||
## func [GetVersion](<https://github.com/katenary/katenary/blob/develop/generator/version.go#L14>)
|
||||
|
||||
```go
|
||||
func GetVersion() string
|
||||
@@ -71,7 +71,7 @@ func GetVersion() string
|
||||
GetVersion return the version of katneary. It's important to understand that the version is set at compile time for the github release. But, it the user get katneary using \`go install\`, the version should be different.
|
||||
|
||||
<a name="Helper"></a>
|
||||
## func [Helper](<https://github.com/metal3d/katenary/blob/develop/generator/helper.go#L15>)
|
||||
## func [Helper](<https://github.com/katenary/katenary/blob/develop/generator/helper.go#L15>)
|
||||
|
||||
```go
|
||||
func Helper(name string) string
|
||||
@@ -80,7 +80,7 @@ func Helper(name string) string
|
||||
Helper returns the \_helpers.tpl file for a chart.
|
||||
|
||||
<a name="NewCronJob"></a>
|
||||
## func [NewCronJob](<https://github.com/metal3d/katenary/blob/develop/generator/cronJob.go#L28>)
|
||||
## func [NewCronJob](<https://github.com/katenary/katenary/blob/develop/generator/cronJob.go#L28>)
|
||||
|
||||
```go
|
||||
func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (*CronJob, *RBAC)
|
||||
@@ -89,7 +89,7 @@ func NewCronJob(service types.ServiceConfig, chart *HelmChart, appName string) (
|
||||
NewCronJob creates a new CronJob from a compose service. The appName is the name of the application taken from the project name.
|
||||
|
||||
<a name="ToK8SYaml"></a>
|
||||
## func [ToK8SYaml](<https://github.com/metal3d/katenary/blob/develop/generator/utils.go#L90>)
|
||||
## func [ToK8SYaml](<https://github.com/katenary/katenary/blob/develop/generator/utils.go#L90>)
|
||||
|
||||
```go
|
||||
func ToK8SYaml(obj any) ([]byte, error)
|
||||
@@ -98,7 +98,7 @@ func ToK8SYaml(obj any) ([]byte, error)
|
||||
|
||||
|
||||
<a name="UnWrapTPL"></a>
|
||||
## func [UnWrapTPL](<https://github.com/metal3d/katenary/blob/develop/generator/utils.go#L86>)
|
||||
## func [UnWrapTPL](<https://github.com/katenary/katenary/blob/develop/generator/utils.go#L86>)
|
||||
|
||||
```go
|
||||
func UnWrapTPL(in []byte) []byte
|
||||
@@ -107,7 +107,7 @@ func UnWrapTPL(in []byte) []byte
|
||||
UnWrapTPL removes the line wrapping from a template.
|
||||
|
||||
<a name="ChartTemplate"></a>
|
||||
## type [ChartTemplate](<https://github.com/metal3d/katenary/blob/develop/generator/chart.go#L21-L24>)
|
||||
## type [ChartTemplate](<https://github.com/katenary/katenary/blob/develop/generator/chart.go#L21-L24>)
|
||||
|
||||
ChartTemplate is a template of a chart. It contains the content of the template and the name of the service. This is used internally to generate the templates.
|
||||
|
||||
@@ -119,7 +119,7 @@ type ChartTemplate struct {
|
||||
```
|
||||
|
||||
<a name="ConfigMap"></a>
|
||||
## type [ConfigMap](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L37-L42>)
|
||||
## type [ConfigMap](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L37-L42>)
|
||||
|
||||
ConfigMap is a kubernetes ConfigMap. Implements the DataMap interface.
|
||||
|
||||
@@ -131,7 +131,7 @@ type ConfigMap struct {
|
||||
```
|
||||
|
||||
<a name="NewConfigMap"></a>
|
||||
### func [NewConfigMap](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L46>)
|
||||
### func [NewConfigMap](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L46>)
|
||||
|
||||
```go
|
||||
func NewConfigMap(service types.ServiceConfig, appName string, forFile bool) *ConfigMap
|
||||
@@ -140,7 +140,7 @@ func NewConfigMap(service types.ServiceConfig, appName string, forFile bool) *Co
|
||||
NewConfigMap creates a new ConfigMap from a compose service. The appName is the name of the application taken from the project name. The ConfigMap is filled by environment variables and labels "map\-env".
|
||||
|
||||
<a name="NewConfigMapFromDirectory"></a>
|
||||
### func [NewConfigMapFromDirectory](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L119>)
|
||||
### func [NewConfigMapFromDirectory](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L119>)
|
||||
|
||||
```go
|
||||
func NewConfigMapFromDirectory(service types.ServiceConfig, appName, path string) *ConfigMap
|
||||
@@ -149,7 +149,7 @@ func NewConfigMapFromDirectory(service types.ServiceConfig, appName, path string
|
||||
NewConfigMapFromDirectory creates a new ConfigMap from a compose service. This path is the path to the file or directory. If the path is a directory, all files in the directory are added to the ConfigMap. Each subdirectory are ignored. Note that the Generate\(\) function will create the subdirectories ConfigMaps.
|
||||
|
||||
<a name="ConfigMap.AddBinaryData"></a>
|
||||
### func \(\*ConfigMap\) [AddBinaryData](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L157>)
|
||||
### func \(\*ConfigMap\) [AddBinaryData](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L157>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AddBinaryData(key string, value []byte)
|
||||
@@ -158,7 +158,7 @@ func (c *ConfigMap) AddBinaryData(key string, value []byte)
|
||||
AddBinaryData adds binary data to the configmap. Append or overwrite the value if the key already exists.
|
||||
|
||||
<a name="ConfigMap.AddData"></a>
|
||||
### func \(\*ConfigMap\) [AddData](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L152>)
|
||||
### func \(\*ConfigMap\) [AddData](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L152>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AddData(key, value string)
|
||||
@@ -167,7 +167,7 @@ func (c *ConfigMap) AddData(key, value string)
|
||||
AddData adds a key value pair to the configmap. Append or overwrite the value if the key already exists.
|
||||
|
||||
<a name="ConfigMap.AppendDir"></a>
|
||||
### func \(\*ConfigMap\) [AppendDir](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L166>)
|
||||
### func \(\*ConfigMap\) [AppendDir](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L166>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AppendDir(path string) error
|
||||
@@ -176,7 +176,7 @@ func (c *ConfigMap) AppendDir(path string) error
|
||||
AppendDir adds files from given path to the configmap. It is not recursive, to add all files in a directory, you need to call this function for each subdirectory.
|
||||
|
||||
<a name="ConfigMap.AppendFile"></a>
|
||||
### func \(\*ConfigMap\) [AppendFile](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L213>)
|
||||
### func \(\*ConfigMap\) [AppendFile](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L213>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) AppendFile(path string) error
|
||||
@@ -185,7 +185,7 @@ func (c *ConfigMap) AppendFile(path string) error
|
||||
|
||||
|
||||
<a name="ConfigMap.Filename"></a>
|
||||
### func \(\*ConfigMap\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L237>)
|
||||
### func \(\*ConfigMap\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L237>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) Filename() string
|
||||
@@ -194,7 +194,7 @@ func (c *ConfigMap) Filename() string
|
||||
Filename returns the filename of the configmap. If the configmap is used for files, the filename contains the path.
|
||||
|
||||
<a name="ConfigMap.SetData"></a>
|
||||
### func \(\*ConfigMap\) [SetData](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L247>)
|
||||
### func \(\*ConfigMap\) [SetData](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L247>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) SetData(data map[string]string)
|
||||
@@ -203,7 +203,7 @@ func (c *ConfigMap) SetData(data map[string]string)
|
||||
SetData sets the data of the configmap. It replaces the entire data.
|
||||
|
||||
<a name="ConfigMap.Yaml"></a>
|
||||
### func \(\*ConfigMap\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L252>)
|
||||
### func \(\*ConfigMap\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L252>)
|
||||
|
||||
```go
|
||||
func (c *ConfigMap) Yaml() ([]byte, error)
|
||||
@@ -212,7 +212,7 @@ func (c *ConfigMap) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the configmap
|
||||
|
||||
<a name="ConfigMapMount"></a>
|
||||
## type [ConfigMapMount](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L28-L31>)
|
||||
## type [ConfigMapMount](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L28-L31>)
|
||||
|
||||
|
||||
|
||||
@@ -223,7 +223,7 @@ type ConfigMapMount struct {
|
||||
```
|
||||
|
||||
<a name="ConvertOptions"></a>
|
||||
## type [ConvertOptions](<https://github.com/metal3d/katenary/blob/develop/generator/chart.go#L27-L36>)
|
||||
## type [ConvertOptions](<https://github.com/katenary/katenary/blob/develop/generator/chart.go#L27-L36>)
|
||||
|
||||
ConvertOptions are the options to convert a compose project to a helm chart.
|
||||
|
||||
@@ -241,7 +241,7 @@ type ConvertOptions struct {
|
||||
```
|
||||
|
||||
<a name="CronJob"></a>
|
||||
## type [CronJob](<https://github.com/metal3d/katenary/blob/develop/generator/cronJob.go#L22-L25>)
|
||||
## type [CronJob](<https://github.com/katenary/katenary/blob/develop/generator/cronJob.go#L22-L25>)
|
||||
|
||||
CronJob is a kubernetes CronJob.
|
||||
|
||||
@@ -253,7 +253,7 @@ type CronJob struct {
|
||||
```
|
||||
|
||||
<a name="CronJob.Filename"></a>
|
||||
### func \(\*CronJob\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/cronJob.go#L114>)
|
||||
### func \(\*CronJob\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/cronJob.go#L114>)
|
||||
|
||||
```go
|
||||
func (c *CronJob) Filename() string
|
||||
@@ -264,7 +264,7 @@ Filename returns the filename of the cronjob.
|
||||
Implements the Yaml interface.
|
||||
|
||||
<a name="CronJob.Yaml"></a>
|
||||
### func \(\*CronJob\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/cronJob.go#L121>)
|
||||
### func \(\*CronJob\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/cronJob.go#L121>)
|
||||
|
||||
```go
|
||||
func (c *CronJob) Yaml() ([]byte, error)
|
||||
@@ -275,7 +275,7 @@ Yaml returns the yaml representation of the cronjob.
|
||||
Implements the Yaml interface.
|
||||
|
||||
<a name="CronJobValue"></a>
|
||||
## type [CronJobValue](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L118-L123>)
|
||||
## type [CronJobValue](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L118-L123>)
|
||||
|
||||
CronJobValue is a cronjob configuration that will be saved in values.yaml.
|
||||
|
||||
@@ -289,7 +289,7 @@ type CronJobValue struct {
|
||||
```
|
||||
|
||||
<a name="DataMap"></a>
|
||||
## type [DataMap](<https://github.com/metal3d/katenary/blob/develop/generator/types.go#L4-L7>)
|
||||
## type [DataMap](<https://github.com/katenary/katenary/blob/develop/generator/types.go#L4-L7>)
|
||||
|
||||
DataMap is a kubernetes ConfigMap or Secret. It can be used to add data to the ConfigMap or Secret.
|
||||
|
||||
@@ -301,7 +301,7 @@ type DataMap interface {
|
||||
```
|
||||
|
||||
<a name="Deployment"></a>
|
||||
## type [Deployment](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L34-L44>)
|
||||
## type [Deployment](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L34-L44>)
|
||||
|
||||
Deployment is a kubernetes Deployment.
|
||||
|
||||
@@ -313,7 +313,7 @@ type Deployment struct {
|
||||
```
|
||||
|
||||
<a name="NewDeployment"></a>
|
||||
### func [NewDeployment](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L48>)
|
||||
### func [NewDeployment](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L48>)
|
||||
|
||||
```go
|
||||
func NewDeployment(service types.ServiceConfig, chart *HelmChart) *Deployment
|
||||
@@ -322,7 +322,7 @@ func NewDeployment(service types.ServiceConfig, chart *HelmChart) *Deployment
|
||||
NewDeployment creates a new Deployment from a compose service. The appName is the name of the application taken from the project name. It also creates the Values map that will be used to create the values.yaml file.
|
||||
|
||||
<a name="Deployment.AddContainer"></a>
|
||||
### func \(\*Deployment\) [AddContainer](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L115>)
|
||||
### func \(\*Deployment\) [AddContainer](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L115>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddContainer(service types.ServiceConfig)
|
||||
@@ -331,7 +331,7 @@ func (d *Deployment) AddContainer(service types.ServiceConfig)
|
||||
AddContainer adds a container to the deployment.
|
||||
|
||||
<a name="Deployment.AddHealthCheck"></a>
|
||||
### func \(\*Deployment\) [AddHealthCheck](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L160>)
|
||||
### func \(\*Deployment\) [AddHealthCheck](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L161>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddHealthCheck(service types.ServiceConfig, container *corev1.Container)
|
||||
@@ -340,7 +340,7 @@ func (d *Deployment) AddHealthCheck(service types.ServiceConfig, container *core
|
||||
|
||||
|
||||
<a name="Deployment.AddIngress"></a>
|
||||
### func \(\*Deployment\) [AddIngress](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L189>)
|
||||
### func \(\*Deployment\) [AddIngress](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L190>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddIngress(service types.ServiceConfig, appName string) *Ingress
|
||||
@@ -349,7 +349,7 @@ func (d *Deployment) AddIngress(service types.ServiceConfig, appName string) *In
|
||||
AddIngress adds an ingress to the deployment. It creates the ingress object.
|
||||
|
||||
<a name="Deployment.AddLegacyVolume"></a>
|
||||
### func \(\*Deployment\) [AddLegacyVolume](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L219>)
|
||||
### func \(\*Deployment\) [AddLegacyVolume](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L220>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddLegacyVolume(name, kind string)
|
||||
@@ -358,7 +358,7 @@ func (d *Deployment) AddLegacyVolume(name, kind string)
|
||||
|
||||
|
||||
<a name="Deployment.AddVolumes"></a>
|
||||
### func \(\*Deployment\) [AddVolumes](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L195>)
|
||||
### func \(\*Deployment\) [AddVolumes](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L196>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) AddVolumes(service types.ServiceConfig, appName string)
|
||||
@@ -367,7 +367,7 @@ func (d *Deployment) AddVolumes(service types.ServiceConfig, appName string)
|
||||
AddVolumes adds a volume to the deployment. It does not create the PVC, it only adds the volumes to the deployment. If the volume is a bind volume it will warn the user that it is not supported yet.
|
||||
|
||||
<a name="Deployment.BindFrom"></a>
|
||||
### func \(\*Deployment\) [BindFrom](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L240>)
|
||||
### func \(\*Deployment\) [BindFrom](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L241>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) BindFrom(service types.ServiceConfig, binded *Deployment)
|
||||
@@ -376,7 +376,7 @@ func (d *Deployment) BindFrom(service types.ServiceConfig, binded *Deployment)
|
||||
|
||||
|
||||
<a name="Deployment.BindMapFilesToContainer"></a>
|
||||
### func \(\*Deployment\) [BindMapFilesToContainer](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L374>)
|
||||
### func \(\*Deployment\) [BindMapFilesToContainer](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L375>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) BindMapFilesToContainer(service types.ServiceConfig, secrets []string, appName string) (*corev1.Container, int)
|
||||
@@ -385,7 +385,7 @@ func (d *Deployment) BindMapFilesToContainer(service types.ServiceConfig, secret
|
||||
|
||||
|
||||
<a name="Deployment.DependsOn"></a>
|
||||
### func \(\*Deployment\) [DependsOn](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L268>)
|
||||
### func \(\*Deployment\) [DependsOn](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L269>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) DependsOn(to *Deployment, servicename string) error
|
||||
@@ -394,7 +394,7 @@ func (d *Deployment) DependsOn(to *Deployment, servicename string) error
|
||||
DependsOn adds a initContainer to the deployment that will wait for the service to be up.
|
||||
|
||||
<a name="Deployment.Filename"></a>
|
||||
### func \(\*Deployment\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L299>)
|
||||
### func \(\*Deployment\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L300>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) Filename() string
|
||||
@@ -403,7 +403,7 @@ func (d *Deployment) Filename() string
|
||||
Filename returns the filename of the deployment.
|
||||
|
||||
<a name="Deployment.MountExchangeVolumes"></a>
|
||||
### func \(\*Deployment\) [MountExchangeVolumes](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L425>)
|
||||
### func \(\*Deployment\) [MountExchangeVolumes](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L426>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) MountExchangeVolumes()
|
||||
@@ -412,7 +412,7 @@ func (d *Deployment) MountExchangeVolumes()
|
||||
|
||||
|
||||
<a name="Deployment.SetEnvFrom"></a>
|
||||
### func \(\*Deployment\) [SetEnvFrom](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L304>)
|
||||
### func \(\*Deployment\) [SetEnvFrom](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L305>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) SetEnvFrom(service types.ServiceConfig, appName string, samePod ...bool)
|
||||
@@ -421,7 +421,7 @@ func (d *Deployment) SetEnvFrom(service types.ServiceConfig, appName string, sam
|
||||
SetEnvFrom sets the environment variables to a configmap. The configmap is created.
|
||||
|
||||
<a name="Deployment.Yaml"></a>
|
||||
### func \(\*Deployment\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/deployment.go#L449>)
|
||||
### func \(\*Deployment\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/deployment.go#L450>)
|
||||
|
||||
```go
|
||||
func (d *Deployment) Yaml() ([]byte, error)
|
||||
@@ -430,7 +430,7 @@ func (d *Deployment) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the deployment.
|
||||
|
||||
<a name="FileMapUsage"></a>
|
||||
## type [FileMapUsage](<https://github.com/metal3d/katenary/blob/develop/generator/configMap.go#L21>)
|
||||
## type [FileMapUsage](<https://github.com/katenary/katenary/blob/develop/generator/configMap.go#L21>)
|
||||
|
||||
FileMapUsage is the usage of the filemap.
|
||||
|
||||
@@ -448,7 +448,7 @@ const (
|
||||
```
|
||||
|
||||
<a name="HelmChart"></a>
|
||||
## type [HelmChart](<https://github.com/metal3d/katenary/blob/develop/generator/chart.go#L40-L53>)
|
||||
## type [HelmChart](<https://github.com/katenary/katenary/blob/develop/generator/chart.go#L40-L53>)
|
||||
|
||||
HelmChart is a Helm Chart representation. It contains all the templates, values, versions, helpers...
|
||||
|
||||
@@ -471,7 +471,7 @@ type HelmChart struct {
|
||||
```
|
||||
|
||||
<a name="Generate"></a>
|
||||
### func [Generate](<https://github.com/metal3d/katenary/blob/develop/generator/generator.go#L31>)
|
||||
### func [Generate](<https://github.com/katenary/katenary/blob/develop/generator/generator.go#L31>)
|
||||
|
||||
```go
|
||||
func Generate(project *types.Project) (*HelmChart, error)
|
||||
@@ -491,7 +491,7 @@ The Generate function will create the HelmChart object this way:
|
||||
- Merge the same\-pod services.
|
||||
|
||||
<a name="NewChart"></a>
|
||||
### func [NewChart](<https://github.com/metal3d/katenary/blob/develop/generator/chart.go#L56>)
|
||||
### func [NewChart](<https://github.com/katenary/katenary/blob/develop/generator/chart.go#L56>)
|
||||
|
||||
```go
|
||||
func NewChart(name string) *HelmChart
|
||||
@@ -500,7 +500,7 @@ func NewChart(name string) *HelmChart
|
||||
NewChart creates a new empty chart with the given name.
|
||||
|
||||
<a name="HelmChart.SaveTemplates"></a>
|
||||
### func \(\*HelmChart\) [SaveTemplates](<https://github.com/metal3d/katenary/blob/develop/generator/chart.go#L71>)
|
||||
### func \(\*HelmChart\) [SaveTemplates](<https://github.com/katenary/katenary/blob/develop/generator/chart.go#L71>)
|
||||
|
||||
```go
|
||||
func (chart *HelmChart) SaveTemplates(templateDir string)
|
||||
@@ -509,7 +509,7 @@ func (chart *HelmChart) SaveTemplates(templateDir string)
|
||||
SaveTemplates the templates of the chart to the given directory.
|
||||
|
||||
<a name="Ingress"></a>
|
||||
## type [Ingress](<https://github.com/metal3d/katenary/blob/develop/generator/ingress.go#L17-L21>)
|
||||
## type [Ingress](<https://github.com/katenary/katenary/blob/develop/generator/ingress.go#L17-L21>)
|
||||
|
||||
|
||||
|
||||
@@ -521,7 +521,7 @@ type Ingress struct {
|
||||
```
|
||||
|
||||
<a name="NewIngress"></a>
|
||||
### func [NewIngress](<https://github.com/metal3d/katenary/blob/develop/generator/ingress.go#L24>)
|
||||
### func [NewIngress](<https://github.com/katenary/katenary/blob/develop/generator/ingress.go#L24>)
|
||||
|
||||
```go
|
||||
func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress
|
||||
@@ -530,7 +530,7 @@ func NewIngress(service types.ServiceConfig, Chart *HelmChart) *Ingress
|
||||
NewIngress creates a new Ingress from a compose service.
|
||||
|
||||
<a name="Ingress.Filename"></a>
|
||||
### func \(\*Ingress\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/ingress.go#L128>)
|
||||
### func \(\*Ingress\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/ingress.go#L128>)
|
||||
|
||||
```go
|
||||
func (ingress *Ingress) Filename() string
|
||||
@@ -539,7 +539,7 @@ func (ingress *Ingress) Filename() string
|
||||
|
||||
|
||||
<a name="Ingress.Yaml"></a>
|
||||
### func \(\*Ingress\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/ingress.go#L132>)
|
||||
### func \(\*Ingress\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/ingress.go#L132>)
|
||||
|
||||
```go
|
||||
func (ingress *Ingress) Yaml() ([]byte, error)
|
||||
@@ -548,7 +548,7 @@ func (ingress *Ingress) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="IngressValue"></a>
|
||||
## type [IngressValue](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L29-L36>)
|
||||
## type [IngressValue](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L29-L36>)
|
||||
|
||||
IngressValue is a ingress configuration that will be saved in values.yaml.
|
||||
|
||||
@@ -564,7 +564,7 @@ type IngressValue struct {
|
||||
```
|
||||
|
||||
<a name="PersistenceValue"></a>
|
||||
## type [PersistenceValue](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L16-L21>)
|
||||
## type [PersistenceValue](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L16-L21>)
|
||||
|
||||
PersistenceValue is a persistence configuration that will be saved in values.yaml.
|
||||
|
||||
@@ -578,7 +578,7 @@ type PersistenceValue struct {
|
||||
```
|
||||
|
||||
<a name="RBAC"></a>
|
||||
## type [RBAC](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L20-L24>)
|
||||
## type [RBAC](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L20-L24>)
|
||||
|
||||
RBAC is a kubernetes RBAC containing a role, a rolebinding and an associated serviceaccount.
|
||||
|
||||
@@ -591,7 +591,7 @@ type RBAC struct {
|
||||
```
|
||||
|
||||
<a name="NewRBAC"></a>
|
||||
### func [NewRBAC](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L27>)
|
||||
### func [NewRBAC](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L27>)
|
||||
|
||||
```go
|
||||
func NewRBAC(service types.ServiceConfig, appName string) *RBAC
|
||||
@@ -600,7 +600,7 @@ func NewRBAC(service types.ServiceConfig, appName string) *RBAC
|
||||
NewRBAC creates a new RBAC from a compose service. The appName is the name of the application taken from the project name.
|
||||
|
||||
<a name="RepositoryValue"></a>
|
||||
## type [RepositoryValue](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L10-L13>)
|
||||
## type [RepositoryValue](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L10-L13>)
|
||||
|
||||
RepositoryValue is a docker repository image and tag that will be saved in values.yaml.
|
||||
|
||||
@@ -612,7 +612,7 @@ type RepositoryValue struct {
|
||||
```
|
||||
|
||||
<a name="Role"></a>
|
||||
## type [Role](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L114-L117>)
|
||||
## type [Role](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L114-L117>)
|
||||
|
||||
Role is a kubernetes Role.
|
||||
|
||||
@@ -624,7 +624,7 @@ type Role struct {
|
||||
```
|
||||
|
||||
<a name="Role.Filename"></a>
|
||||
### func \(\*Role\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L119>)
|
||||
### func \(\*Role\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L119>)
|
||||
|
||||
```go
|
||||
func (r *Role) Filename() string
|
||||
@@ -633,7 +633,7 @@ func (r *Role) Filename() string
|
||||
|
||||
|
||||
<a name="Role.Yaml"></a>
|
||||
### func \(\*Role\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L123>)
|
||||
### func \(\*Role\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L123>)
|
||||
|
||||
```go
|
||||
func (r *Role) Yaml() ([]byte, error)
|
||||
@@ -642,7 +642,7 @@ func (r *Role) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="RoleBinding"></a>
|
||||
## type [RoleBinding](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L100-L103>)
|
||||
## type [RoleBinding](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L100-L103>)
|
||||
|
||||
RoleBinding is a kubernetes RoleBinding.
|
||||
|
||||
@@ -654,7 +654,7 @@ type RoleBinding struct {
|
||||
```
|
||||
|
||||
<a name="RoleBinding.Filename"></a>
|
||||
### func \(\*RoleBinding\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L105>)
|
||||
### func \(\*RoleBinding\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L105>)
|
||||
|
||||
```go
|
||||
func (r *RoleBinding) Filename() string
|
||||
@@ -663,7 +663,7 @@ func (r *RoleBinding) Filename() string
|
||||
|
||||
|
||||
<a name="RoleBinding.Yaml"></a>
|
||||
### func \(\*RoleBinding\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L109>)
|
||||
### func \(\*RoleBinding\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L109>)
|
||||
|
||||
```go
|
||||
func (r *RoleBinding) Yaml() ([]byte, error)
|
||||
@@ -672,7 +672,7 @@ func (r *RoleBinding) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="Secret"></a>
|
||||
## type [Secret](<https://github.com/metal3d/katenary/blob/develop/generator/secret.go#L22-L25>)
|
||||
## type [Secret](<https://github.com/katenary/katenary/blob/develop/generator/secret.go#L22-L25>)
|
||||
|
||||
Secret is a kubernetes Secret.
|
||||
|
||||
@@ -686,7 +686,7 @@ type Secret struct {
|
||||
```
|
||||
|
||||
<a name="NewSecret"></a>
|
||||
### func [NewSecret](<https://github.com/metal3d/katenary/blob/develop/generator/secret.go#L28>)
|
||||
### func [NewSecret](<https://github.com/katenary/katenary/blob/develop/generator/secret.go#L28>)
|
||||
|
||||
```go
|
||||
func NewSecret(service types.ServiceConfig, appName string) *Secret
|
||||
@@ -695,7 +695,7 @@ func NewSecret(service types.ServiceConfig, appName string) *Secret
|
||||
NewSecret creates a new Secret from a compose service
|
||||
|
||||
<a name="Secret.AddData"></a>
|
||||
### func \(\*Secret\) [AddData](<https://github.com/metal3d/katenary/blob/develop/generator/secret.go#L70>)
|
||||
### func \(\*Secret\) [AddData](<https://github.com/katenary/katenary/blob/develop/generator/secret.go#L70>)
|
||||
|
||||
```go
|
||||
func (s *Secret) AddData(key, value string)
|
||||
@@ -704,7 +704,7 @@ func (s *Secret) AddData(key, value string)
|
||||
AddData adds a key value pair to the secret.
|
||||
|
||||
<a name="Secret.Filename"></a>
|
||||
### func \(\*Secret\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/secret.go#L86>)
|
||||
### func \(\*Secret\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/secret.go#L86>)
|
||||
|
||||
```go
|
||||
func (s *Secret) Filename() string
|
||||
@@ -713,7 +713,7 @@ func (s *Secret) Filename() string
|
||||
Filename returns the filename of the secret.
|
||||
|
||||
<a name="Secret.SetData"></a>
|
||||
### func \(\*Secret\) [SetData](<https://github.com/metal3d/katenary/blob/develop/generator/secret.go#L91>)
|
||||
### func \(\*Secret\) [SetData](<https://github.com/katenary/katenary/blob/develop/generator/secret.go#L91>)
|
||||
|
||||
```go
|
||||
func (s *Secret) SetData(data map[string]string)
|
||||
@@ -722,7 +722,7 @@ func (s *Secret) SetData(data map[string]string)
|
||||
SetData sets the data of the secret.
|
||||
|
||||
<a name="Secret.Yaml"></a>
|
||||
### func \(\*Secret\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/secret.go#L98>)
|
||||
### func \(\*Secret\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/secret.go#L98>)
|
||||
|
||||
```go
|
||||
func (s *Secret) Yaml() ([]byte, error)
|
||||
@@ -731,7 +731,7 @@ func (s *Secret) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the secret.
|
||||
|
||||
<a name="Service"></a>
|
||||
## type [Service](<https://github.com/metal3d/katenary/blob/develop/generator/service.go#L17-L20>)
|
||||
## type [Service](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L18-L21>)
|
||||
|
||||
Service is a kubernetes Service.
|
||||
|
||||
@@ -743,7 +743,7 @@ type Service struct {
|
||||
```
|
||||
|
||||
<a name="NewService"></a>
|
||||
### func [NewService](<https://github.com/metal3d/katenary/blob/develop/generator/service.go#L23>)
|
||||
### func [NewService](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L24>)
|
||||
|
||||
```go
|
||||
func NewService(service types.ServiceConfig, appName string) *Service
|
||||
@@ -752,7 +752,7 @@ func NewService(service types.ServiceConfig, appName string) *Service
|
||||
NewService creates a new Service from a compose service.
|
||||
|
||||
<a name="Service.AddPort"></a>
|
||||
### func \(\*Service\) [AddPort](<https://github.com/metal3d/katenary/blob/develop/generator/service.go#L52>)
|
||||
### func \(\*Service\) [AddPort](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L53>)
|
||||
|
||||
```go
|
||||
func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
|
||||
@@ -761,7 +761,7 @@ func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string)
|
||||
AddPort adds a port to the service.
|
||||
|
||||
<a name="Service.Filename"></a>
|
||||
### func \(\*Service\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/service.go#L76>)
|
||||
### func \(\*Service\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L78>)
|
||||
|
||||
```go
|
||||
func (s *Service) Filename() string
|
||||
@@ -770,7 +770,7 @@ func (s *Service) Filename() string
|
||||
Filename returns the filename of the service.
|
||||
|
||||
<a name="Service.Yaml"></a>
|
||||
### func \(\*Service\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/service.go#L81>)
|
||||
### func \(\*Service\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/service.go#L83>)
|
||||
|
||||
```go
|
||||
func (s *Service) Yaml() ([]byte, error)
|
||||
@@ -779,7 +779,7 @@ func (s *Service) Yaml() ([]byte, error)
|
||||
Yaml returns the yaml representation of the service.
|
||||
|
||||
<a name="ServiceAccount"></a>
|
||||
## type [ServiceAccount](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L132-L135>)
|
||||
## type [ServiceAccount](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L132-L135>)
|
||||
|
||||
ServiceAccount is a kubernetes ServiceAccount.
|
||||
|
||||
@@ -791,7 +791,7 @@ type ServiceAccount struct {
|
||||
```
|
||||
|
||||
<a name="ServiceAccount.Filename"></a>
|
||||
### func \(\*ServiceAccount\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L137>)
|
||||
### func \(\*ServiceAccount\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L137>)
|
||||
|
||||
```go
|
||||
func (r *ServiceAccount) Filename() string
|
||||
@@ -800,7 +800,7 @@ func (r *ServiceAccount) Filename() string
|
||||
|
||||
|
||||
<a name="ServiceAccount.Yaml"></a>
|
||||
### func \(\*ServiceAccount\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/rbac.go#L141>)
|
||||
### func \(\*ServiceAccount\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/rbac.go#L141>)
|
||||
|
||||
```go
|
||||
func (r *ServiceAccount) Yaml() ([]byte, error)
|
||||
@@ -809,7 +809,7 @@ func (r *ServiceAccount) Yaml() ([]byte, error)
|
||||
|
||||
|
||||
<a name="TLS"></a>
|
||||
## type [TLS](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L23-L26>)
|
||||
## type [TLS](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L23-L26>)
|
||||
|
||||
|
||||
|
||||
@@ -821,7 +821,7 @@ type TLS struct {
|
||||
```
|
||||
|
||||
<a name="Value"></a>
|
||||
## type [Value](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L39-L50>)
|
||||
## type [Value](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L39-L50>)
|
||||
|
||||
Value will be saved in values.yaml. It contains configuration for all deployment and services.
|
||||
|
||||
@@ -841,7 +841,7 @@ type Value struct {
|
||||
```
|
||||
|
||||
<a name="NewValue"></a>
|
||||
### func [NewValue](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L57>)
|
||||
### func [NewValue](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L57>)
|
||||
|
||||
```go
|
||||
func NewValue(service types.ServiceConfig, main ...bool) *Value
|
||||
@@ -852,7 +852,7 @@ NewValue creates a new Value from a compose service. The value contains the nece
|
||||
If \`main\` is true, the tag will be empty because it will be set in the helm chart appVersion.
|
||||
|
||||
<a name="Value.AddIngress"></a>
|
||||
### func \(\*Value\) [AddIngress](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L90>)
|
||||
### func \(\*Value\) [AddIngress](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L90>)
|
||||
|
||||
```go
|
||||
func (v *Value) AddIngress(host, path string)
|
||||
@@ -861,7 +861,7 @@ func (v *Value) AddIngress(host, path string)
|
||||
|
||||
|
||||
<a name="Value.AddPersistence"></a>
|
||||
### func \(\*Value\) [AddPersistence](<https://github.com/metal3d/katenary/blob/develop/generator/values.go#L104>)
|
||||
### func \(\*Value\) [AddPersistence](<https://github.com/katenary/katenary/blob/develop/generator/values.go#L104>)
|
||||
|
||||
```go
|
||||
func (v *Value) AddPersistence(volumeName string)
|
||||
@@ -870,7 +870,7 @@ func (v *Value) AddPersistence(volumeName string)
|
||||
AddPersistence adds persistence configuration to the Value.
|
||||
|
||||
<a name="VolumeClaim"></a>
|
||||
## type [VolumeClaim](<https://github.com/metal3d/katenary/blob/develop/generator/volume.go#L18-L23>)
|
||||
## type [VolumeClaim](<https://github.com/katenary/katenary/blob/develop/generator/volume.go#L18-L23>)
|
||||
|
||||
VolumeClaim is a kubernetes VolumeClaim. This is a PersistentVolumeClaim.
|
||||
|
||||
@@ -882,7 +882,7 @@ type VolumeClaim struct {
|
||||
```
|
||||
|
||||
<a name="NewVolumeClaim"></a>
|
||||
### func [NewVolumeClaim](<https://github.com/metal3d/katenary/blob/develop/generator/volume.go#L26>)
|
||||
### func [NewVolumeClaim](<https://github.com/katenary/katenary/blob/develop/generator/volume.go#L26>)
|
||||
|
||||
```go
|
||||
func NewVolumeClaim(service types.ServiceConfig, volumeName, appName string) *VolumeClaim
|
||||
@@ -891,7 +891,7 @@ func NewVolumeClaim(service types.ServiceConfig, volumeName, appName string) *Vo
|
||||
NewVolumeClaim creates a new VolumeClaim from a compose service.
|
||||
|
||||
<a name="VolumeClaim.Filename"></a>
|
||||
### func \(\*VolumeClaim\) [Filename](<https://github.com/metal3d/katenary/blob/develop/generator/volume.go#L62>)
|
||||
### func \(\*VolumeClaim\) [Filename](<https://github.com/katenary/katenary/blob/develop/generator/volume.go#L62>)
|
||||
|
||||
```go
|
||||
func (v *VolumeClaim) Filename() string
|
||||
@@ -900,7 +900,7 @@ func (v *VolumeClaim) Filename() string
|
||||
Filename returns the suggested filename for a VolumeClaim.
|
||||
|
||||
<a name="VolumeClaim.Yaml"></a>
|
||||
### func \(\*VolumeClaim\) [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/volume.go#L67>)
|
||||
### func \(\*VolumeClaim\) [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/volume.go#L67>)
|
||||
|
||||
```go
|
||||
func (v *VolumeClaim) Yaml() ([]byte, error)
|
||||
@@ -909,7 +909,7 @@ func (v *VolumeClaim) Yaml() ([]byte, error)
|
||||
Yaml marshals a VolumeClaim into yaml.
|
||||
|
||||
<a name="Yaml"></a>
|
||||
## type [Yaml](<https://github.com/metal3d/katenary/blob/develop/generator/types.go#L10-L13>)
|
||||
## type [Yaml](<https://github.com/katenary/katenary/blob/develop/generator/types.go#L10-L13>)
|
||||
|
||||
Yaml is a kubernetes object that can be converted to yaml.
|
||||
|
||||
|
@@ -8,7 +8,7 @@ import "katenary/generator/extrafiles"
|
||||
|
||||
Package extrafiles provides function to generate the Chart files that are not objects. Like README.md and notes.txt...
|
||||
|
||||
## func [NotesFile](<https://github.com/metal3d/katenary/blob/develop/generator/extrafiles/notes.go#L13>)
|
||||
## func [NotesFile](<https://github.com/katenary/katenary/blob/develop/generator/extrafiles/notes.go#L13>)
|
||||
|
||||
```go
|
||||
func NotesFile(services []string) string
|
||||
@@ -17,7 +17,7 @@ func NotesFile(services []string) string
|
||||
NotesFile returns the content of the note.txt file.
|
||||
|
||||
<a name="ReadMeFile"></a>
|
||||
## func [ReadMeFile](<https://github.com/metal3d/katenary/blob/develop/generator/extrafiles/readme.go#L46>)
|
||||
## func [ReadMeFile](<https://github.com/katenary/katenary/blob/develop/generator/extrafiles/readme.go#L46>)
|
||||
|
||||
```go
|
||||
func ReadMeFile(charname, description string, values map[string]any) string
|
||||
|
@@ -12,7 +12,7 @@ A katenary file, named "katenary.yml" or "katenary.yaml", is a file where you ca
|
||||
|
||||
Formely, the file describe the same structure as in labels, and so that can be validated and completed by LSP. It also ease the use of katenary.
|
||||
|
||||
## func [GenerateSchema](<https://github.com/metal3d/katenary/blob/develop/generator/katenaryfile/main.go#L137>)
|
||||
## func [GenerateSchema](<https://github.com/katenary/katenary/blob/develop/generator/katenaryfile/main.go#L137>)
|
||||
|
||||
```go
|
||||
func GenerateSchema() string
|
||||
@@ -21,7 +21,7 @@ func GenerateSchema() string
|
||||
GenerateSchema generates the schema for the katenary.yaml file.
|
||||
|
||||
<a name="OverrideWithConfig"></a>
|
||||
## func [OverrideWithConfig](<https://github.com/metal3d/katenary/blob/develop/generator/katenaryfile/main.go#L49>)
|
||||
## func [OverrideWithConfig](<https://github.com/katenary/katenary/blob/develop/generator/katenaryfile/main.go#L49>)
|
||||
|
||||
```go
|
||||
func OverrideWithConfig(project *types.Project)
|
||||
@@ -30,7 +30,7 @@ func OverrideWithConfig(project *types.Project)
|
||||
OverrideWithConfig overrides the project with the katenary.yaml file. It will set the labels of the services with the values from the katenary.yaml file. It work in memory, so it will not modify the original project.
|
||||
|
||||
<a name="Service"></a>
|
||||
## type [Service](<https://github.com/metal3d/katenary/blob/develop/generator/katenaryfile/main.go#L27-L44>)
|
||||
## type [Service](<https://github.com/katenary/katenary/blob/develop/generator/katenaryfile/main.go#L27-L44>)
|
||||
|
||||
Service is a struct that contains the service configuration for katenary
|
||||
|
||||
@@ -56,7 +56,7 @@ type Service struct {
|
||||
```
|
||||
|
||||
<a name="StringOrMap"></a>
|
||||
## type [StringOrMap](<https://github.com/metal3d/katenary/blob/develop/generator/katenaryfile/main.go#L24>)
|
||||
## type [StringOrMap](<https://github.com/katenary/katenary/blob/develop/generator/katenaryfile/main.go#L24>)
|
||||
|
||||
StringOrMap is a struct that can be either a string or a map of strings. It's a helper struct to unmarshal the katenary.yaml file and produce the schema
|
||||
|
||||
|
@@ -17,7 +17,7 @@ const KatenaryLabelPrefix = "katenary.v3"
|
||||
```
|
||||
|
||||
<a name="GetLabelHelp"></a>
|
||||
## func [GetLabelHelp](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L88>)
|
||||
## func [GetLabelHelp](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L88>)
|
||||
|
||||
```go
|
||||
func GetLabelHelp(asMarkdown bool) string
|
||||
@@ -26,7 +26,7 @@ func GetLabelHelp(asMarkdown bool) string
|
||||
GetLabelHelp return the help for the labels.
|
||||
|
||||
<a name="GetLabelHelpFor"></a>
|
||||
## func [GetLabelHelpFor](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L97>)
|
||||
## func [GetLabelHelpFor](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L97>)
|
||||
|
||||
```go
|
||||
func GetLabelHelpFor(labelname string, asMarkdown bool) string
|
||||
@@ -35,7 +35,7 @@ func GetLabelHelpFor(labelname string, asMarkdown bool) string
|
||||
GetLabelHelpFor returns the help for a specific label.
|
||||
|
||||
<a name="GetLabelNames"></a>
|
||||
## func [GetLabelNames](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L72>)
|
||||
## func [GetLabelNames](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L72>)
|
||||
|
||||
```go
|
||||
func GetLabelNames() []string
|
||||
@@ -44,7 +44,7 @@ func GetLabelNames() []string
|
||||
GetLabelNames returns a sorted list of all katenary label names.
|
||||
|
||||
<a name="Prefix"></a>
|
||||
## func [Prefix](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L235>)
|
||||
## func [Prefix](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L235>)
|
||||
|
||||
```go
|
||||
func Prefix() string
|
||||
@@ -53,7 +53,7 @@ func Prefix() string
|
||||
|
||||
|
||||
<a name="Help"></a>
|
||||
## type [Help](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L64-L69>)
|
||||
## type [Help](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L64-L69>)
|
||||
|
||||
Help is the documentation of a label.
|
||||
|
||||
@@ -67,7 +67,7 @@ type Help struct {
|
||||
```
|
||||
|
||||
<a name="Label"></a>
|
||||
## type [Label](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L57>)
|
||||
## type [Label](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L57>)
|
||||
|
||||
Label is a katenary label to find in compose files.
|
||||
|
||||
@@ -99,7 +99,7 @@ const (
|
||||
```
|
||||
|
||||
<a name="LabelName"></a>
|
||||
### func [LabelName](<https://github.com/metal3d/katenary/blob/develop/generator/labels/katenaryLabels.go#L59>)
|
||||
### func [LabelName](<https://github.com/katenary/katenary/blob/develop/generator/labels/katenaryLabels.go#L59>)
|
||||
|
||||
```go
|
||||
func LabelName(name string) Label
|
||||
|
@@ -1,246 +0,0 @@
|
||||
<!-- Code generated by gomarkdoc. DO NOT EDIT -->
|
||||
|
||||
# labelStructs
|
||||
|
||||
```go
|
||||
import "katenary/generator/labels/labelStructs"
|
||||
```
|
||||
|
||||
labelStructs is a package that contains the structs used to represent the labels in the yaml files.
|
||||
|
||||
## type [ConfigMapFile](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/configMap.go#L5>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type ConfigMapFile []string
|
||||
```
|
||||
|
||||
<a name="ConfigMapFileFrom"></a>
|
||||
### func [ConfigMapFileFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/configMap.go#L7>)
|
||||
|
||||
```go
|
||||
func ConfigMapFileFrom(data string) (ConfigMapFile, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="CronJob"></a>
|
||||
## type [CronJob](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/cronJob.go#L5-L10>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type CronJob struct {
|
||||
Image string `yaml:"image,omitempty" json:"image,omitempty"`
|
||||
Command string `yaml:"command" json:"command,omitempty"`
|
||||
Schedule string `yaml:"schedule" json:"schedule,omitempty"`
|
||||
Rbac bool `yaml:"rbac" json:"rbac,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="CronJobFrom"></a>
|
||||
### func [CronJobFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/cronJob.go#L12>)
|
||||
|
||||
```go
|
||||
func CronJobFrom(data string) (*CronJob, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="Dependency"></a>
|
||||
## type [Dependency](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/dependencies.go#L6-L12>)
|
||||
|
||||
Dependency is a dependency of a chart to other charts.
|
||||
|
||||
```go
|
||||
type Dependency struct {
|
||||
Values map[string]any `yaml:"-" json:"values,omitempty"`
|
||||
Name string `yaml:"name" json:"name"`
|
||||
Version string `yaml:"version" json:"version"`
|
||||
Repository string `yaml:"repository" json:"repository"`
|
||||
Alias string `yaml:"alias,omitempty" json:"alias,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="DependenciesFrom"></a>
|
||||
### func [DependenciesFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/dependencies.go#L15>)
|
||||
|
||||
```go
|
||||
func DependenciesFrom(data string) ([]Dependency, error)
|
||||
```
|
||||
|
||||
DependenciesFrom returns a slice of dependencies from the given string.
|
||||
|
||||
<a name="EnvFrom"></a>
|
||||
## type [EnvFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/envFrom.go#L5>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type EnvFrom []string
|
||||
```
|
||||
|
||||
<a name="EnvFromFrom"></a>
|
||||
### func [EnvFromFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/envFrom.go#L8>)
|
||||
|
||||
```go
|
||||
func EnvFromFrom(data string) (EnvFrom, error)
|
||||
```
|
||||
|
||||
EnvFromFrom returns a EnvFrom from the given string.
|
||||
|
||||
<a name="ExchangeVolume"></a>
|
||||
## type [ExchangeVolume](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/exchangeVolume.go#L5-L10>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type ExchangeVolume struct {
|
||||
Name string `yaml:"name" json:"name"`
|
||||
MountPath string `yaml:"mountPath" json:"mountPath"`
|
||||
Type string `yaml:"type,omitempty" json:"type,omitempty"`
|
||||
Init string `yaml:"init,omitempty" json:"init,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="NewExchangeVolumes"></a>
|
||||
### func [NewExchangeVolumes](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/exchangeVolume.go#L12>)
|
||||
|
||||
```go
|
||||
func NewExchangeVolumes(data string) ([]*ExchangeVolume, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="HealthCheck"></a>
|
||||
## type [HealthCheck](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/probes.go#L11-L14>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type HealthCheck struct {
|
||||
LivenessProbe *corev1.Probe `yaml:"livenessProbe,omitempty" json:"livenessProbe,omitempty"`
|
||||
ReadinessProbe *corev1.Probe `yaml:"readinessProbe,omitempty" json:"readinessProbe,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="ProbeFrom"></a>
|
||||
### func [ProbeFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/probes.go#L16>)
|
||||
|
||||
```go
|
||||
func ProbeFrom(data string) (*HealthCheck, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="Ingress"></a>
|
||||
## type [Ingress](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/ingress.go#L14-L22>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type Ingress struct {
|
||||
Port *int32 `yaml:"port,omitempty" json:"port,omitempty"`
|
||||
Annotations map[string]string `yaml:"annotations,omitempty" jsonschema:"nullable" json:"annotations,omitempty"`
|
||||
Hostname string `yaml:"hostname" json:"hostname,omitempty"`
|
||||
Path *string `yaml:"path,omitempty" json:"path,omitempty"`
|
||||
Class *string `yaml:"class,omitempty" json:"class,omitempty" jsonschema:"default:-"`
|
||||
Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
|
||||
TLS *TLS `yaml:"tls,omitempty" json:"tls,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="IngressFrom"></a>
|
||||
### func [IngressFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/ingress.go#L25>)
|
||||
|
||||
```go
|
||||
func IngressFrom(data string) (*Ingress, error)
|
||||
```
|
||||
|
||||
IngressFrom creates a new Ingress from a compose service.
|
||||
|
||||
<a name="MapEnv"></a>
|
||||
## type [MapEnv](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/mapenv.go#L5>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type MapEnv map[string]string
|
||||
```
|
||||
|
||||
<a name="MapEnvFrom"></a>
|
||||
### func [MapEnvFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/mapenv.go#L8>)
|
||||
|
||||
```go
|
||||
func MapEnvFrom(data string) (MapEnv, error)
|
||||
```
|
||||
|
||||
MapEnvFrom returns a MapEnv from the given string.
|
||||
|
||||
<a name="Ports"></a>
|
||||
## type [Ports](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/ports.go#L5>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type Ports []uint32
|
||||
```
|
||||
|
||||
<a name="PortsFrom"></a>
|
||||
### func [PortsFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/ports.go#L8>)
|
||||
|
||||
```go
|
||||
func PortsFrom(data string) (Ports, error)
|
||||
```
|
||||
|
||||
PortsFrom returns a Ports from the given string.
|
||||
|
||||
<a name="Secrets"></a>
|
||||
## type [Secrets](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/secrets.go#L5>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type Secrets []string
|
||||
```
|
||||
|
||||
<a name="SecretsFrom"></a>
|
||||
### func [SecretsFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/secrets.go#L7>)
|
||||
|
||||
```go
|
||||
func SecretsFrom(data string) (Secrets, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
<a name="TLS"></a>
|
||||
## type [TLS](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/ingress.go#L10-L12>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type TLS struct {
|
||||
Enabled bool `yaml:"enabled" json:"enabled,omitempty"`
|
||||
}
|
||||
```
|
||||
|
||||
<a name="ValueFrom"></a>
|
||||
## type [ValueFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/valueFrom.go#L5>)
|
||||
|
||||
|
||||
|
||||
```go
|
||||
type ValueFrom map[string]string
|
||||
```
|
||||
|
||||
<a name="GetValueFrom"></a>
|
||||
### func [GetValueFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelStructs/valueFrom.go#L7>)
|
||||
|
||||
```go
|
||||
func GetValueFrom(data string) (*ValueFrom, error)
|
||||
```
|
||||
|
||||
|
||||
|
||||
Generated by [gomarkdoc](<https://github.com/princjef/gomarkdoc>)
|
@@ -8,7 +8,7 @@ import "katenary/generator/labels/labelstructs"
|
||||
|
||||
Package labelstructs is a package that contains the structs used to represent the labels in the yaml files.
|
||||
|
||||
## type [ConfigMapFile](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/configMap.go#L5>)
|
||||
## type [ConfigMapFile](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/configMap.go#L5>)
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ type ConfigMapFile []string
|
||||
```
|
||||
|
||||
<a name="ConfigMapFileFrom"></a>
|
||||
### func [ConfigMapFileFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/configMap.go#L7>)
|
||||
### func [ConfigMapFileFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/configMap.go#L7>)
|
||||
|
||||
```go
|
||||
func ConfigMapFileFrom(data string) (ConfigMapFile, error)
|
||||
@@ -26,7 +26,7 @@ func ConfigMapFileFrom(data string) (ConfigMapFile, error)
|
||||
|
||||
|
||||
<a name="CronJob"></a>
|
||||
## type [CronJob](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/cronJob.go#L5-L10>)
|
||||
## type [CronJob](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/cronJob.go#L5-L10>)
|
||||
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ type CronJob struct {
|
||||
```
|
||||
|
||||
<a name="CronJobFrom"></a>
|
||||
### func [CronJobFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/cronJob.go#L12>)
|
||||
### func [CronJobFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/cronJob.go#L12>)
|
||||
|
||||
```go
|
||||
func CronJobFrom(data string) (*CronJob, error)
|
||||
@@ -49,7 +49,7 @@ func CronJobFrom(data string) (*CronJob, error)
|
||||
|
||||
|
||||
<a name="Dependency"></a>
|
||||
## type [Dependency](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/dependencies.go#L6-L12>)
|
||||
## type [Dependency](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/dependencies.go#L6-L12>)
|
||||
|
||||
Dependency is a dependency of a chart to other charts.
|
||||
|
||||
@@ -64,7 +64,7 @@ type Dependency struct {
|
||||
```
|
||||
|
||||
<a name="DependenciesFrom"></a>
|
||||
### func [DependenciesFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/dependencies.go#L15>)
|
||||
### func [DependenciesFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/dependencies.go#L15>)
|
||||
|
||||
```go
|
||||
func DependenciesFrom(data string) ([]Dependency, error)
|
||||
@@ -73,7 +73,7 @@ func DependenciesFrom(data string) ([]Dependency, error)
|
||||
DependenciesFrom returns a slice of dependencies from the given string.
|
||||
|
||||
<a name="EnvFrom"></a>
|
||||
## type [EnvFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/envFrom.go#L5>)
|
||||
## type [EnvFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/envFrom.go#L5>)
|
||||
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ type EnvFrom []string
|
||||
```
|
||||
|
||||
<a name="EnvFromFrom"></a>
|
||||
### func [EnvFromFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/envFrom.go#L8>)
|
||||
### func [EnvFromFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/envFrom.go#L8>)
|
||||
|
||||
```go
|
||||
func EnvFromFrom(data string) (EnvFrom, error)
|
||||
@@ -91,7 +91,7 @@ func EnvFromFrom(data string) (EnvFrom, error)
|
||||
EnvFromFrom returns a EnvFrom from the given string.
|
||||
|
||||
<a name="ExchangeVolume"></a>
|
||||
## type [ExchangeVolume](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/exchangeVolume.go#L5-L10>)
|
||||
## type [ExchangeVolume](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/exchangeVolume.go#L5-L10>)
|
||||
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ type ExchangeVolume struct {
|
||||
```
|
||||
|
||||
<a name="NewExchangeVolumes"></a>
|
||||
### func [NewExchangeVolumes](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/exchangeVolume.go#L12>)
|
||||
### func [NewExchangeVolumes](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/exchangeVolume.go#L12>)
|
||||
|
||||
```go
|
||||
func NewExchangeVolumes(data string) ([]*ExchangeVolume, error)
|
||||
@@ -114,7 +114,7 @@ func NewExchangeVolumes(data string) ([]*ExchangeVolume, error)
|
||||
|
||||
|
||||
<a name="HealthCheck"></a>
|
||||
## type [HealthCheck](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/probes.go#L11-L14>)
|
||||
## type [HealthCheck](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/probes.go#L11-L14>)
|
||||
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ type HealthCheck struct {
|
||||
```
|
||||
|
||||
<a name="ProbeFrom"></a>
|
||||
### func [ProbeFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/probes.go#L16>)
|
||||
### func [ProbeFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/probes.go#L16>)
|
||||
|
||||
```go
|
||||
func ProbeFrom(data string) (*HealthCheck, error)
|
||||
@@ -135,7 +135,7 @@ func ProbeFrom(data string) (*HealthCheck, error)
|
||||
|
||||
|
||||
<a name="Ingress"></a>
|
||||
## type [Ingress](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/ingress.go#L14-L22>)
|
||||
## type [Ingress](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/ingress.go#L14-L22>)
|
||||
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ type Ingress struct {
|
||||
```
|
||||
|
||||
<a name="IngressFrom"></a>
|
||||
### func [IngressFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/ingress.go#L25>)
|
||||
### func [IngressFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/ingress.go#L25>)
|
||||
|
||||
```go
|
||||
func IngressFrom(data string) (*Ingress, error)
|
||||
@@ -161,7 +161,7 @@ func IngressFrom(data string) (*Ingress, error)
|
||||
IngressFrom creates a new Ingress from a compose service.
|
||||
|
||||
<a name="MapEnv"></a>
|
||||
## type [MapEnv](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/mapenv.go#L5>)
|
||||
## type [MapEnv](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/mapenv.go#L5>)
|
||||
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@ type MapEnv map[string]string
|
||||
```
|
||||
|
||||
<a name="MapEnvFrom"></a>
|
||||
### func [MapEnvFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/mapenv.go#L8>)
|
||||
### func [MapEnvFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/mapenv.go#L8>)
|
||||
|
||||
```go
|
||||
func MapEnvFrom(data string) (MapEnv, error)
|
||||
@@ -179,7 +179,7 @@ func MapEnvFrom(data string) (MapEnv, error)
|
||||
MapEnvFrom returns a MapEnv from the given string.
|
||||
|
||||
<a name="Ports"></a>
|
||||
## type [Ports](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/ports.go#L5>)
|
||||
## type [Ports](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/ports.go#L5>)
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ type Ports []uint32
|
||||
```
|
||||
|
||||
<a name="PortsFrom"></a>
|
||||
### func [PortsFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/ports.go#L8>)
|
||||
### func [PortsFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/ports.go#L8>)
|
||||
|
||||
```go
|
||||
func PortsFrom(data string) (Ports, error)
|
||||
@@ -197,7 +197,7 @@ func PortsFrom(data string) (Ports, error)
|
||||
PortsFrom returns a Ports from the given string.
|
||||
|
||||
<a name="Secrets"></a>
|
||||
## type [Secrets](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/secrets.go#L5>)
|
||||
## type [Secrets](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/secrets.go#L5>)
|
||||
|
||||
|
||||
|
||||
@@ -206,7 +206,7 @@ type Secrets []string
|
||||
```
|
||||
|
||||
<a name="SecretsFrom"></a>
|
||||
### func [SecretsFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/secrets.go#L7>)
|
||||
### func [SecretsFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/secrets.go#L7>)
|
||||
|
||||
```go
|
||||
func SecretsFrom(data string) (Secrets, error)
|
||||
@@ -215,7 +215,7 @@ func SecretsFrom(data string) (Secrets, error)
|
||||
|
||||
|
||||
<a name="TLS"></a>
|
||||
## type [TLS](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/ingress.go#L10-L12>)
|
||||
## type [TLS](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/ingress.go#L10-L12>)
|
||||
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ type TLS struct {
|
||||
```
|
||||
|
||||
<a name="ValueFrom"></a>
|
||||
## type [ValueFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/valueFrom.go#L5>)
|
||||
## type [ValueFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/valueFrom.go#L5>)
|
||||
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ type ValueFrom map[string]string
|
||||
```
|
||||
|
||||
<a name="GetValueFrom"></a>
|
||||
### func [GetValueFrom](<https://github.com/metal3d/katenary/blob/develop/generator/labels/labelstructs/valueFrom.go#L7>)
|
||||
### func [GetValueFrom](<https://github.com/katenary/katenary/blob/develop/generator/labels/labelstructs/valueFrom.go#L7>)
|
||||
|
||||
```go
|
||||
func GetValueFrom(data string) (*ValueFrom, error)
|
||||
|
@@ -8,7 +8,7 @@ import "katenary/parser"
|
||||
|
||||
Package parser is a wrapper around compose\-go to parse compose files.
|
||||
|
||||
## func [Parse](<https://github.com/metal3d/katenary/blob/develop/parser/main.go#L29>)
|
||||
## func [Parse](<https://github.com/katenary/katenary/blob/develop/parser/main.go#L29>)
|
||||
|
||||
```go
|
||||
func Parse(profiles []string, envFiles []string, dockerComposeFile ...string) (*types.Project, error)
|
||||
|
@@ -17,7 +17,7 @@ const DirectoryPermission = 0o755
|
||||
```
|
||||
|
||||
<a name="AsResourceName"></a>
|
||||
## func [AsResourceName](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L196>)
|
||||
## func [AsResourceName](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L196>)
|
||||
|
||||
```go
|
||||
func AsResourceName(name string) string
|
||||
@@ -26,7 +26,7 @@ func AsResourceName(name string) string
|
||||
AsResourceName returns a resource name with underscores to respect the kubernetes naming convention. It's the opposite of FixedResourceName.
|
||||
|
||||
<a name="Confirm"></a>
|
||||
## func [Confirm](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L164>)
|
||||
## func [Confirm](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L164>)
|
||||
|
||||
```go
|
||||
func Confirm(question string, icon ...Icon) bool
|
||||
@@ -35,7 +35,7 @@ func Confirm(question string, icon ...Icon) bool
|
||||
Confirm asks a question and returns true if the answer is y.
|
||||
|
||||
<a name="CountStartingSpaces"></a>
|
||||
## func [CountStartingSpaces](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L41>)
|
||||
## func [CountStartingSpaces](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L41>)
|
||||
|
||||
```go
|
||||
func CountStartingSpaces(line string) int
|
||||
@@ -44,7 +44,7 @@ func CountStartingSpaces(line string) int
|
||||
CountStartingSpaces counts the number of spaces at the beginning of a string.
|
||||
|
||||
<a name="EncodeBasicYaml"></a>
|
||||
## func [EncodeBasicYaml](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L178>)
|
||||
## func [EncodeBasicYaml](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L178>)
|
||||
|
||||
```go
|
||||
func EncodeBasicYaml(data any) ([]byte, error)
|
||||
@@ -53,7 +53,7 @@ func EncodeBasicYaml(data any) ([]byte, error)
|
||||
EncodeBasicYaml encodes a basic yaml from an interface.
|
||||
|
||||
<a name="FixedResourceName"></a>
|
||||
## func [FixedResourceName](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L190>)
|
||||
## func [FixedResourceName](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L190>)
|
||||
|
||||
```go
|
||||
func FixedResourceName(name string) string
|
||||
@@ -62,7 +62,7 @@ func FixedResourceName(name string) string
|
||||
FixedResourceName returns a resource name without underscores to respect the kubernetes naming convention.
|
||||
|
||||
<a name="GetContainerByName"></a>
|
||||
## func [GetContainerByName](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L87>)
|
||||
## func [GetContainerByName](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L87>)
|
||||
|
||||
```go
|
||||
func GetContainerByName(name string, containers []corev1.Container) (*corev1.Container, int)
|
||||
@@ -71,7 +71,7 @@ func GetContainerByName(name string, containers []corev1.Container) (*corev1.Con
|
||||
GetContainerByName returns a container by name and its index in the array. It returns nil, \-1 if not found.
|
||||
|
||||
<a name="GetKind"></a>
|
||||
## func [GetKind](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L54>)
|
||||
## func [GetKind](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L54>)
|
||||
|
||||
```go
|
||||
func GetKind(path string) (kind string)
|
||||
@@ -80,7 +80,7 @@ func GetKind(path string) (kind string)
|
||||
GetKind returns the kind of the resource from the file path.
|
||||
|
||||
<a name="GetServiceNameByPort"></a>
|
||||
## func [GetServiceNameByPort](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L77>)
|
||||
## func [GetServiceNameByPort](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L77>)
|
||||
|
||||
```go
|
||||
func GetServiceNameByPort(port int) string
|
||||
@@ -89,7 +89,7 @@ func GetServiceNameByPort(port int) string
|
||||
GetServiceNameByPort returns the service name for a port. It the service name is not found, it returns an empty string.
|
||||
|
||||
<a name="GetValuesFromLabel"></a>
|
||||
## func [GetValuesFromLabel](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L129>)
|
||||
## func [GetValuesFromLabel](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L129>)
|
||||
|
||||
```go
|
||||
func GetValuesFromLabel(service types.ServiceConfig, LabelValues string) map[string]*EnvConfig
|
||||
@@ -98,7 +98,7 @@ func GetValuesFromLabel(service types.ServiceConfig, LabelValues string) map[str
|
||||
GetValuesFromLabel returns a map of values from a label.
|
||||
|
||||
<a name="HashComposefiles"></a>
|
||||
## func [HashComposefiles](<https://github.com/metal3d/katenary/blob/develop/utils/hash.go#L12>)
|
||||
## func [HashComposefiles](<https://github.com/katenary/katenary/blob/develop/utils/hash.go#L12>)
|
||||
|
||||
```go
|
||||
func HashComposefiles(files []string) (string, error)
|
||||
@@ -107,7 +107,7 @@ func HashComposefiles(files []string) (string, error)
|
||||
HashComposefiles returns a hash of the compose files.
|
||||
|
||||
<a name="Int32Ptr"></a>
|
||||
## func [Int32Ptr](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L35>)
|
||||
## func [Int32Ptr](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L35>)
|
||||
|
||||
```go
|
||||
func Int32Ptr(i int32) *int32
|
||||
@@ -116,7 +116,7 @@ func Int32Ptr(i int32) *int32
|
||||
Int32Ptr returns a pointer to an int32.
|
||||
|
||||
<a name="PathToName"></a>
|
||||
## func [PathToName](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L106>)
|
||||
## func [PathToName](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L106>)
|
||||
|
||||
```go
|
||||
func PathToName(path string) string
|
||||
@@ -125,7 +125,7 @@ func PathToName(path string) string
|
||||
PathToName converts a path to a kubernetes complient name.
|
||||
|
||||
<a name="StrPtr"></a>
|
||||
## func [StrPtr](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L38>)
|
||||
## func [StrPtr](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L38>)
|
||||
|
||||
```go
|
||||
func StrPtr(s string) *string
|
||||
@@ -134,7 +134,7 @@ func StrPtr(s string) *string
|
||||
StrPtr returns a pointer to a string.
|
||||
|
||||
<a name="TplName"></a>
|
||||
## func [TplName](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L22>)
|
||||
## func [TplName](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L22>)
|
||||
|
||||
```go
|
||||
func TplName(serviceName, appname string, suffix ...string) string
|
||||
@@ -143,16 +143,16 @@ func TplName(serviceName, appname string, suffix ...string) string
|
||||
TplName returns the name of the kubernetes resource as a template string. It is used in the templates and defined in \_helper.tpl file.
|
||||
|
||||
<a name="TplValue"></a>
|
||||
## func [TplValue](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L97>)
|
||||
## func [TplValue](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L97>)
|
||||
|
||||
```go
|
||||
func TplValue(serviceName, variable string, pipes ...string) string
|
||||
```
|
||||
|
||||
TplValue returns a container by name and its index in the array.
|
||||
TplValue returns a string that can be used in a template to access a value from the values file.
|
||||
|
||||
<a name="Warn"></a>
|
||||
## func [Warn](<https://github.com/metal3d/katenary/blob/develop/utils/icons.go#L25>)
|
||||
## func [Warn](<https://github.com/katenary/katenary/blob/develop/utils/icons.go#L25>)
|
||||
|
||||
```go
|
||||
func Warn(msg ...any)
|
||||
@@ -161,7 +161,7 @@ func Warn(msg ...any)
|
||||
Warn prints a warning message
|
||||
|
||||
<a name="WordWrap"></a>
|
||||
## func [WordWrap](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L159>)
|
||||
## func [WordWrap](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L159>)
|
||||
|
||||
```go
|
||||
func WordWrap(text string, lineWidth int) string
|
||||
@@ -170,7 +170,7 @@ func WordWrap(text string, lineWidth int) string
|
||||
WordWrap wraps a string to a given line width. Warning: it may break the string. You need to check the result.
|
||||
|
||||
<a name="Wrap"></a>
|
||||
## func [Wrap](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L71>)
|
||||
## func [Wrap](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L71>)
|
||||
|
||||
```go
|
||||
func Wrap(src, above, below string) string
|
||||
@@ -179,7 +179,7 @@ func Wrap(src, above, below string) string
|
||||
Wrap wraps a string with a string above and below. It will respect the indentation of the src string.
|
||||
|
||||
<a name="EnvConfig"></a>
|
||||
## type [EnvConfig](<https://github.com/metal3d/katenary/blob/develop/utils/utils.go#L123-L126>)
|
||||
## type [EnvConfig](<https://github.com/katenary/katenary/blob/develop/utils/utils.go#L123-L126>)
|
||||
|
||||
EnvConfig is a struct to hold the description of an environment variable.
|
||||
|
||||
@@ -191,7 +191,7 @@ type EnvConfig struct {
|
||||
```
|
||||
|
||||
<a name="Icon"></a>
|
||||
## type [Icon](<https://github.com/metal3d/katenary/blob/develop/utils/icons.go#L6>)
|
||||
## type [Icon](<https://github.com/katenary/katenary/blob/develop/utils/icons.go#L6>)
|
||||
|
||||
Icon is a unicode icon
|
||||
|
||||
|
@@ -13,7 +13,7 @@ katenary convert
|
||||
|
||||
This will create a `chart` directory with the helm chart inside.
|
||||
|
||||
But, in general, you will need to add a few configuration to help Katenary to transpose the compose file to a working
|
||||
But, in general, you will need to add a few configurations to help Katenary to transpose the compose file to a working
|
||||
helm chart.
|
||||
|
||||
There are two ways to configure Katenary:
|
||||
@@ -25,7 +25,7 @@ The Katenary file `katenary.yaml` has benefits over the labels in the compose fi
|
||||
|
||||
- you can validate the configuration with a schema, and use completion in your editor
|
||||
- you separate the configuration and leave the compose file "intact"
|
||||
- the syntax is a bit simpler, instead of using `katenary.v3/xxx: |-" you can use`xxx: ...`
|
||||
- the syntax is a bit simpler, instead of using `katenary.v3/xxx: |-` you can use `xxx: ...`
|
||||
|
||||
But: **this implies that you have to maintain two files if the compose file changes.**
|
||||
|
||||
@@ -46,7 +46,6 @@ services:
|
||||
port: 8080
|
||||
katenary.v3/map-env: |-
|
||||
DB_HOST: "{{ .Release.Name }}-database"
|
||||
|
||||
```
|
||||
|
||||
Using a Katenary file, you can do:
|
||||
@@ -130,8 +129,8 @@ After having installed `katenary`, the standard usage is to call:
|
||||
It will search standard compose files in the current directory and try to create a helm chart in "chart" directory.
|
||||
|
||||
!!! Info
|
||||
Katenary uses the compose-go library which respects the Docker and Docker-Compose specification. Keep in mind that
|
||||
it will find files exactly the same way as `docker-compose` and `podman-compose` do it.
|
||||
Katenary uses the compose-go library which respects the Docker and Docker-Compose specification. Keep in mind that
|
||||
it will find files exactly the same way as `docker-compose` and `podman-compose` do it.
|
||||
|
||||
Of course, you can provide others files than the default with (cumulative) `-c` options:
|
||||
|
||||
@@ -142,11 +141,11 @@ Of course, you can provide others files than the default with (cumulative) `-c`
|
||||
Katenary proposes a lot of labels to configure the helm chart generation, but some are very important.
|
||||
|
||||
!!! Info
|
||||
For more complete label usage, see [the labels page](labels.md).
|
||||
For more complete label usage, see [the labels page](labels.md).
|
||||
|
||||
### Work with Depends On?
|
||||
|
||||
Kubernetes does not provide service or pod starting detection from others pods. But katenary will create init containers
|
||||
Kubernetes does not provide service or pod starting detection from others pods. But Katenary will create `initContainer`
|
||||
to make you able to wait for a service to respond. But you'll probably need to adapt a bit the compose file.
|
||||
|
||||
See this compose file:
|
||||
|
@@ -3,6 +3,16 @@ docs_dir: ./docs
|
||||
plugins:
|
||||
- search
|
||||
- inline-svg
|
||||
- manpage:
|
||||
enabled: !ENV [MANPAGE, false]
|
||||
preprocess: preprocess.py
|
||||
pages:
|
||||
- title: Katenary
|
||||
header: Katenary helm chart generator
|
||||
output: share/man/man1/katenary.1
|
||||
inputs:
|
||||
- usage.md
|
||||
- labels.md
|
||||
theme:
|
||||
name: material
|
||||
custom_dir: overrides
|
||||
@@ -42,7 +52,7 @@ extra:
|
||||
generator: false
|
||||
social:
|
||||
- icon: fontawesome/brands/github
|
||||
link: https://github.com/metal3d/katenary
|
||||
link: https://github.com/katenary/katenary
|
||||
nav:
|
||||
- "Home": index.md
|
||||
- usage.md
|
||||
@@ -60,6 +70,5 @@ nav:
|
||||
- ExtraFiles: packages/generator/extrafiles.md
|
||||
- labels:
|
||||
- packages/generator/labels.md
|
||||
- LabelStructs: packages/generator/labels/labelStructs.md
|
||||
- Labelstructs: packages/generator/labels/labelstructs.md
|
||||
- KatenaryFile: packages/generator/katenaryfile.md
|
||||
|
||||
|
22
doc/preprocess.py
Normal file
22
doc/preprocess.py
Normal file
@@ -0,0 +1,22 @@
|
||||
"""Called by mkdocs to preprocess files and build manpages"""
|
||||
|
||||
from bs4 import BeautifulSoup, Tag
|
||||
|
||||
|
||||
def to_remove(tag: Tag) -> bool:
|
||||
"""Removes images, SVGs, links containing images or SVGs, and permalinks from the BeautifulSoup object."""
|
||||
if tag.name in {"img", "svg"}:
|
||||
return True
|
||||
# remove links containing images or SVGs
|
||||
if tag.name == "a" and tag.img and to_remove(tag.img):
|
||||
return True
|
||||
# remove permalinks
|
||||
if tag.name == "a" and "headerlink" in tag.get("class", ()):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def preprocess(soup: BeautifulSoup, output: str) -> None:
|
||||
"""Preprocess the BeautifulSoup object to remove unwanted elements."""
|
||||
for element in soup.find_all(to_remove):
|
||||
element.decompose()
|
@@ -5,3 +5,5 @@ pymdown-extensions==10.*
|
||||
mkdocs-material==9.*
|
||||
mkdocs-material-extensions==1.*
|
||||
mkdocs-plugin-inline-svg-mod
|
||||
beautifulsoup4==4.*
|
||||
mkdocs-manpage[preprocess]
|
||||
|
@@ -136,6 +136,7 @@ func (d *Deployment) AddContainer(service types.ServiceConfig) {
|
||||
Resources: corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{},
|
||||
},
|
||||
Command: service.Command,
|
||||
}
|
||||
if _, ok := d.chart.Values[service.Name]; !ok {
|
||||
d.chart.Values[service.Name] = NewValue(service, d.isMainApp)
|
||||
|
@@ -495,3 +495,39 @@ services:
|
||||
t.Errorf("Expected valueFrom to be set")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCheckCommand(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
web-app:
|
||||
image: nginx:1.29
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |-
|
||||
echo "Hello, World!"
|
||||
echo "Done"
|
||||
`
|
||||
|
||||
// composeFile = fmt.Sprintf(composeFile, labels.Prefix())
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
output := internalCompileTest(t, "-s", "templates/web_app/deployment.yaml")
|
||||
dt := v1.Deployment{}
|
||||
if err := yaml.Unmarshal([]byte(output), &dt); err != nil {
|
||||
t.Errorf(unmarshalError, err)
|
||||
}
|
||||
// find the command in the container
|
||||
command := dt.Spec.Template.Spec.Containers[0].Command
|
||||
if len(command) != 3 {
|
||||
t.Errorf("Expected command to have 3 elements, got %d", len(command))
|
||||
}
|
||||
if command[0] != "sh" || command[1] != "-c" {
|
||||
t.Errorf("Expected command to be 'sh -c', got %s", strings.Join(command, " "))
|
||||
}
|
||||
}
|
||||
|
@@ -224,7 +224,7 @@
|
||||
type: "[]object"
|
||||
|
||||
"configmap-files":
|
||||
short: "Add files to the configmap."
|
||||
short: "Inject files as Configmap."
|
||||
long: |-
|
||||
It makes a file or directory to be converted to one or more ConfigMaps
|
||||
and mounted in the pod. The file or directory is relative to the
|
||||
@@ -266,7 +266,7 @@
|
||||
type: "object"
|
||||
|
||||
"env-from":
|
||||
short: "Add environment variables from antoher service."
|
||||
short: "Add environment variables from another service."
|
||||
type: "[]string"
|
||||
long: |-
|
||||
It adds environment variables from another service to the current service.
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package generator
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"katenary/utils"
|
||||
"regexp"
|
||||
"strings"
|
||||
@@ -59,6 +60,7 @@ func (s *Service) AddPort(port types.ServicePortConfig, serviceName ...string) {
|
||||
|
||||
if targetPort := utils.GetServiceNameByPort(int(port.Target)); targetPort == "" {
|
||||
finalport = intstr.FromInt(int(port.Target))
|
||||
name = fmt.Sprintf("port-%d", port.Target)
|
||||
} else {
|
||||
finalport = intstr.FromString(targetPort)
|
||||
name = targetPort
|
||||
|
@@ -47,3 +47,37 @@ services:
|
||||
t.Errorf("Expected 2 ports, got %d", foundPort)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWithSeveralUnknownPorts(t *testing.T) {
|
||||
composeFile := `
|
||||
services:
|
||||
multi:
|
||||
image: nginx
|
||||
ports:
|
||||
- 12443
|
||||
- 12480
|
||||
labels:
|
||||
katenary.v3/ingress: |-
|
||||
port: 12443
|
||||
`
|
||||
tmpDir := setup(composeFile)
|
||||
defer teardown(tmpDir)
|
||||
|
||||
currentDir, _ := os.Getwd()
|
||||
os.Chdir(tmpDir)
|
||||
defer os.Chdir(currentDir)
|
||||
|
||||
output := internalCompileTest(t, "-s", "templates/multi/service.yaml")
|
||||
service := v1.Service{}
|
||||
if err := yaml.Unmarshal([]byte(output), &service); err != nil {
|
||||
t.Errorf(unmarshalError, err)
|
||||
}
|
||||
|
||||
if len(service.Spec.Ports) != 2 {
|
||||
t.Errorf("Expected 2 ports, got %d", len(service.Spec.Ports))
|
||||
}
|
||||
// ensure that both port names are different
|
||||
if service.Spec.Ports[0].Name == service.Spec.Ports[1].Name {
|
||||
t.Errorf("Expected different port names, got %s and %s", service.Spec.Ports[0].Name, service.Spec.Ports[1].Name)
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,8 @@
|
||||
package generator
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Version is the version of katenary. It is set at compile time.
|
||||
@@ -12,13 +12,17 @@ var Version = "master" // changed at compile time
|
||||
// the version is set at compile time for the github release. But, it the user get
|
||||
// katneary using `go install`, the version should be different.
|
||||
func GetVersion() string {
|
||||
if strings.HasPrefix(Version, "release-") {
|
||||
// try to get the semantic version from the Version variable (theorically set at compile time)
|
||||
if reg := regexp.MustCompile(`^v?\d+.\d+.\d+.*|^release-.*`); reg.MatchString(Version) {
|
||||
return Version
|
||||
}
|
||||
// get the version from the build info
|
||||
v, ok := debug.ReadBuildInfo()
|
||||
if ok {
|
||||
|
||||
// OK... let's try to get the version from the build info
|
||||
// get the version from the build info (when installed with go install)
|
||||
if v, ok := debug.ReadBuildInfo(); ok {
|
||||
return v.Main.Version + "-" + v.GoVersion
|
||||
}
|
||||
|
||||
// OK... none worked, so we return the default version
|
||||
return Version
|
||||
}
|
||||
|
@@ -8,11 +8,24 @@ import (
|
||||
func TestVersion(t *testing.T) {
|
||||
// we build on "devel" branch
|
||||
v := GetVersion()
|
||||
// by default, the version comes from build info and it's a development version
|
||||
if !strings.Contains(v, "(devel)") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
}
|
||||
|
||||
// now, imagine we are on a release branch
|
||||
Version = "1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, "1.0.0") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
}
|
||||
// now, imagine we are on v1.0.0
|
||||
Version = "v1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, "v1.0.0") {
|
||||
t.Errorf("Expected version to be set, got %s", v)
|
||||
}
|
||||
// we can also compile a release branch
|
||||
Version = "release-1.0.0"
|
||||
v = GetVersion()
|
||||
if !strings.Contains(v, "release-1.0.0") {
|
||||
|
2
go.mod
2
go.mod
@@ -1,4 +1,4 @@
|
||||
module katenary // github.com/metal3d/katenary
|
||||
module katenary // github.com/katenay/katenary
|
||||
|
||||
go 1.24.0
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
# Install the latest version of the Katenary detecting the right OS and architecture.
|
||||
# Can be launched with the following command:
|
||||
# sh <(curl -sSL https://raw.githubusercontent.com/metal3d/katenary/master/install.sh)
|
||||
# sh <(curl -sSL https://raw.githubusercontent.com/Katenary/katenary/master/install.sh)
|
||||
|
||||
set -e
|
||||
|
||||
@@ -43,7 +43,7 @@ if ! echo "$PATH" | grep -q "$INSTALL_PATH"; then
|
||||
fi
|
||||
|
||||
# Where to download the binary
|
||||
BASE="https://github.com/metal3d/katenary/releases/latest/download/"
|
||||
BASE="https://github.com/Katenary/katenary/releases/latest/download/"
|
||||
|
||||
# for compatibility with older ARM versions
|
||||
if [ $ARCH = "x86_64" ]; then
|
||||
|
124
nsis/katenary.nsi
Normal file
124
nsis/katenary.nsi
Normal file
@@ -0,0 +1,124 @@
|
||||
!define APP_NAME "Katenary"
|
||||
!define COMPANY_NAME "Katenary"
|
||||
|
||||
OutFile "katenary-windows-setup.exe"
|
||||
InstallDir "$LOCALAPPDATA\Katenary"
|
||||
RequestExecutionLevel user
|
||||
|
||||
!include "MUI2.nsh"
|
||||
!addplugindir "."
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
!insertmacro MUI_LANGUAGE "English" ; The first language is the default language
|
||||
!insertmacro MUI_LANGUAGE "Afrikaans"
|
||||
!insertmacro MUI_LANGUAGE "Albanian"
|
||||
!insertmacro MUI_LANGUAGE "Arabic"
|
||||
!insertmacro MUI_LANGUAGE "Armenian"
|
||||
!insertmacro MUI_LANGUAGE "Asturian"
|
||||
!insertmacro MUI_LANGUAGE "Basque"
|
||||
!insertmacro MUI_LANGUAGE "Belarusian"
|
||||
!insertmacro MUI_LANGUAGE "Bosnian"
|
||||
!insertmacro MUI_LANGUAGE "Breton"
|
||||
!insertmacro MUI_LANGUAGE "Bulgarian"
|
||||
!insertmacro MUI_LANGUAGE "Catalan"
|
||||
!insertmacro MUI_LANGUAGE "Corsican"
|
||||
!insertmacro MUI_LANGUAGE "Croatian"
|
||||
!insertmacro MUI_LANGUAGE "Czech"
|
||||
!insertmacro MUI_LANGUAGE "Danish"
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "Esperanto"
|
||||
!insertmacro MUI_LANGUAGE "Estonian"
|
||||
!insertmacro MUI_LANGUAGE "Farsi"
|
||||
!insertmacro MUI_LANGUAGE "Finnish"
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "Galician"
|
||||
!insertmacro MUI_LANGUAGE "Georgian"
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
!insertmacro MUI_LANGUAGE "Greek"
|
||||
!insertmacro MUI_LANGUAGE "Hebrew"
|
||||
!insertmacro MUI_LANGUAGE "Hindi"
|
||||
!insertmacro MUI_LANGUAGE "Hungarian"
|
||||
!insertmacro MUI_LANGUAGE "Icelandic"
|
||||
!insertmacro MUI_LANGUAGE "Indonesian"
|
||||
!insertmacro MUI_LANGUAGE "Irish"
|
||||
!insertmacro MUI_LANGUAGE "Italian"
|
||||
!insertmacro MUI_LANGUAGE "Japanese"
|
||||
!insertmacro MUI_LANGUAGE "Korean"
|
||||
!insertmacro MUI_LANGUAGE "Kurdish"
|
||||
!insertmacro MUI_LANGUAGE "Latvian"
|
||||
!insertmacro MUI_LANGUAGE "Lithuanian"
|
||||
!insertmacro MUI_LANGUAGE "Luxembourgish"
|
||||
!insertmacro MUI_LANGUAGE "Macedonian"
|
||||
!insertmacro MUI_LANGUAGE "Malay"
|
||||
!insertmacro MUI_LANGUAGE "Mongolian"
|
||||
!insertmacro MUI_LANGUAGE "Norwegian"
|
||||
!insertmacro MUI_LANGUAGE "NorwegianNynorsk"
|
||||
!insertmacro MUI_LANGUAGE "Pashto"
|
||||
!insertmacro MUI_LANGUAGE "Polish"
|
||||
!insertmacro MUI_LANGUAGE "Portuguese"
|
||||
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
||||
!insertmacro MUI_LANGUAGE "Romanian"
|
||||
!insertmacro MUI_LANGUAGE "Russian"
|
||||
!insertmacro MUI_LANGUAGE "ScotsGaelic"
|
||||
!insertmacro MUI_LANGUAGE "Serbian"
|
||||
!insertmacro MUI_LANGUAGE "SerbianLatin"
|
||||
!insertmacro MUI_LANGUAGE "SimpChinese"
|
||||
!insertmacro MUI_LANGUAGE "Slovak"
|
||||
!insertmacro MUI_LANGUAGE "Slovenian"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
!insertmacro MUI_LANGUAGE "SpanishInternational"
|
||||
!insertmacro MUI_LANGUAGE "Swedish"
|
||||
!insertmacro MUI_LANGUAGE "Tatar"
|
||||
!insertmacro MUI_LANGUAGE "Thai"
|
||||
!insertmacro MUI_LANGUAGE "TradChinese"
|
||||
!insertmacro MUI_LANGUAGE "Turkish"
|
||||
!insertmacro MUI_LANGUAGE "Ukrainian"
|
||||
!insertmacro MUI_LANGUAGE "Uzbek"
|
||||
!insertmacro MUI_LANGUAGE "Vietnamese"
|
||||
!insertmacro MUI_LANGUAGE "Welsh"
|
||||
|
||||
Name "${APP_NAME} ${APP_VERSION}"
|
||||
|
||||
Section "Install"
|
||||
SetOutPath "$INSTDIR"
|
||||
File "..\dist\katenary.exe"
|
||||
File "..\LICENSE"
|
||||
File "..\README.md"
|
||||
|
||||
WriteUninstaller "$INSTDIR\uninstall-katenary.exe"
|
||||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Katenary" "DisplayName" "Katenary"
|
||||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Katenary" "UninstallString" "$INSTDIR\uninstall-katenary.exe"
|
||||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Katenary" "InstallLocation" "$INSTDIR"
|
||||
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Katenary" "DisplayIcon" "$INSTDIR\katenary.exe"
|
||||
|
||||
EnVar::SetHKCU
|
||||
Pop $0
|
||||
|
||||
EnVar::AddValue "Path" "$INSTDIR"
|
||||
Pop $0
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "Uninstall"
|
||||
EnVar::SetHKCU
|
||||
Pop $0
|
||||
|
||||
EnVar::DeleteValue "Path" "$INSTDIR"
|
||||
Pop $0
|
||||
|
||||
Delete "$INSTDIR\katenary.exe"
|
||||
Delete "$INSTDIR\uninstall-katenary.exe"
|
||||
Delete "$INSTDIR\LICENSE"
|
||||
Delete "$INSTDIR\README.md"
|
||||
RMDir "$INSTDIR"
|
||||
|
||||
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\Katenary"
|
||||
SectionEnd
|
4
packaging/description
Normal file
4
packaging/description
Normal file
@@ -0,0 +1,4 @@
|
||||
Katenary transforms docker/podman compose files to Helm Charts.
|
||||
It harnesses the labels from your "compose" file to craft complete Helm Charts effortlessly, saving you time and energy.
|
||||
- Simple automated CLI: Katenary handles the grunt work, generating everything needed for seamless service binding and Helm Chart creation.
|
||||
- Effortless Efficiency: You only need to add labels when it's necessary to precise things. Then call katenary convert and let the magic happen.
|
20
packaging/oci/Containerfile
Normal file
20
packaging/oci/Containerfile
Normal file
@@ -0,0 +1,20 @@
|
||||
FROM registry.fedoraproject.org/fedora:42
|
||||
RUN set -eux; \
|
||||
microdnf -y install \
|
||||
rubygems rpmbuild rpmsign bsdtar mingw-nsis-base.x86_64 mingw32-nsis.noarch gpg2; \
|
||||
microdnf clean all;
|
||||
|
||||
# create user with 999 UID/GID
|
||||
RUN set -eux; \
|
||||
groupadd -g 1001 builder; \
|
||||
useradd -m -u 1001 -g 1001 -d /home/builder -s /bin/bash builder; \
|
||||
chown builder:builder /home/builder
|
||||
|
||||
USER builder
|
||||
ENV PATH="/home/builder/bin:${PATH}"
|
||||
WORKDIR /home/builder
|
||||
RUN set -eux; \
|
||||
gem install fpm
|
||||
|
||||
|
||||
|
@@ -93,7 +93,7 @@ func GetContainerByName(name string, containers []corev1.Container) (*corev1.Con
|
||||
return nil, -1
|
||||
}
|
||||
|
||||
// TplValue returns a container by name and its index in the array.
|
||||
// TplValue returns a string that can be used in a template to access a value from the values file.
|
||||
func TplValue(serviceName, variable string, pipes ...string) string {
|
||||
if len(pipes) == 0 {
|
||||
return `{{ tpl .Values.` + serviceName + `.` + variable + ` $ }}`
|
||||
|
245
utils/utils_test.go
Normal file
245
utils/utils_test.go
Normal file
@@ -0,0 +1,245 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
)
|
||||
|
||||
func TestTplName(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
serviceName string
|
||||
appname string
|
||||
suffix []string
|
||||
want string
|
||||
}{
|
||||
{"simple test without suffix", "foosvc", "myapp", nil, `{{ include "myapp.fullname" . }}-foosvc`},
|
||||
{"simple test with suffix", "foosvc", "myapp", []string{"bar"}, `{{ include "myapp.fullname" . }}-foosvc-bar`},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := TplName(tt.serviceName, tt.appname, tt.suffix...)
|
||||
if got != tt.want {
|
||||
t.Errorf("TplName() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestCountStartingSpaces(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
line string
|
||||
want int
|
||||
}{
|
||||
{
|
||||
"test no spaces",
|
||||
"the line is here",
|
||||
0,
|
||||
},
|
||||
{
|
||||
"test with 4 spaces",
|
||||
" line with 4 spaces",
|
||||
4,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := CountStartingSpaces(tt.line)
|
||||
if got != tt.want {
|
||||
t.Errorf("CountStartingSpaces() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetKind(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
path string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
"test get kind from file path",
|
||||
"my.deployment.yaml",
|
||||
"deployment",
|
||||
},
|
||||
{
|
||||
"test with 2 parts",
|
||||
"service.yaml",
|
||||
"service",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := GetKind(tt.path)
|
||||
if got != tt.want {
|
||||
t.Errorf("GetKind() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestWrap(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
src string
|
||||
above string
|
||||
below string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
"test a simple wrap",
|
||||
" - foo: bar",
|
||||
"line above",
|
||||
"line below",
|
||||
" line above\n - foo: bar\n line below",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := Wrap(tt.src, tt.above, tt.below)
|
||||
if got != tt.want {
|
||||
t.Errorf("Wrap() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetServiceNameByPort(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
port int
|
||||
want string
|
||||
}{
|
||||
{
|
||||
"test http port by service number 80",
|
||||
80,
|
||||
"http",
|
||||
},
|
||||
{
|
||||
"test with a port that has no service name",
|
||||
8745,
|
||||
"",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := GetServiceNameByPort(tt.port)
|
||||
if got != tt.want {
|
||||
t.Errorf("GetServiceNameByPort() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetContainerByName(t *testing.T) {
|
||||
httpContainer := &corev1.Container{
|
||||
Name: "http",
|
||||
}
|
||||
mariadbContainer := &corev1.Container{
|
||||
Name: "mariadb",
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
containerName string
|
||||
containers []corev1.Container
|
||||
want *corev1.Container
|
||||
want2 int
|
||||
}{
|
||||
{
|
||||
"get container from by name",
|
||||
"http",
|
||||
[]corev1.Container{
|
||||
*httpContainer,
|
||||
*mariadbContainer,
|
||||
},
|
||||
httpContainer, 0,
|
||||
},
|
||||
{
|
||||
"get container from by name",
|
||||
"mariadb",
|
||||
[]corev1.Container{
|
||||
*httpContainer,
|
||||
*mariadbContainer,
|
||||
},
|
||||
mariadbContainer, 1,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got, got2 := GetContainerByName(tt.containerName, tt.containers)
|
||||
if got.Name != tt.want.Name {
|
||||
t.Errorf("GetContainerByName() = %v, want %v", got.Name, tt.want.Name)
|
||||
}
|
||||
if got2 != tt.want2 {
|
||||
t.Errorf("GetContainerByName() = %v, want %v", got2, tt.want2)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestTplValue(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
serviceName string
|
||||
variable string
|
||||
pipes []string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
"check simple template value",
|
||||
"foosvc",
|
||||
"variableFoo",
|
||||
nil,
|
||||
"{{ tpl .Values.foosvc.variableFoo $ }}",
|
||||
},
|
||||
{
|
||||
"check with pipes",
|
||||
"foosvc",
|
||||
"bar",
|
||||
[]string{"toYaml", "nindent 2"},
|
||||
"{{ tpl .Values.foosvc.bar $ | toYaml | nindent 2 }}",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := TplValue(tt.serviceName, tt.variable, tt.pipes...)
|
||||
if got != tt.want {
|
||||
t.Errorf("TplValue() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPathToName(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string // description of this test case
|
||||
// Named input parameters for target function.
|
||||
path string
|
||||
want string
|
||||
}{
|
||||
{
|
||||
"check complete path with various characters",
|
||||
"./foo/bar.test/and_bad_name",
|
||||
"foo-bar-test-and-bad-name",
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
got := PathToName(tt.path)
|
||||
if got != tt.want {
|
||||
t.Errorf("PathToName() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user