No description
  • Clojure 73%
  • Python 14.5%
  • Shell 11.5%
  • Dockerfile 1%
Find a file
2026-07-06 10:03:39 +02:00
doc remove cljs part 2025-06-24 17:18:42 +02:00
infrastructure bump version to: 4.1.1-SNAPSHOT 2026-07-06 10:03:39 +02:00
src change to contains?, remove do-basic-auth function (is redundant), wrap in concat 2026-07-03 12:06:11 +02:00
.gitignore update deps & drop cljs (#7) 2025-07-28 09:12:57 +00:00
.gitlab-ci.yml remove cljs part 2025-06-24 17:22:21 +02:00
build.py add httpd build 2026-06-29 09:23:31 +02:00
LICENSE Project skeleton 2022-09-08 15:04:17 +02:00
project.clj bump version to: 4.1.1-SNAPSHOT 2026-07-06 10:03:39 +02:00
README.md remove cljs part 2025-06-24 17:18:42 +02:00

convention 4 kubernetes: c4k-website

Clojars Project pipeline status

DeltaChat chat over e-mail | M meissa@social.meissa-gmbh.de | Blog | Website

Purpose

GitOps for static generated Websites.

c4k-website generates k8s-manifest for a webserver serving static html.

c4k-website is an example how to create k8s manifests for OneShotDeployments with https://repo.prod.meissa.de/meissa/c4k-common.

Features

Serving multiple websites

You can serve many websites, each of can listen to a list of domain names. E.g.

# Config example
websites:
- unique-name: "test.io" 
  fqdns: ["test.de", "test.org", "www.test.de", "www.test.org"]
- unique-name: "example.io"
  fqdns: ["example.org", "www.example.com"]

https & Letsencrypt Certificates

The domain names listed will get their certificates from letsencrypt out of the box.

Ratelimiting

There is a Ratelimit included for each website. This makes it harder to DOS one or all websites served.

Monitoring

Monitoring on GrafanaCloud (or any other grafana) is included out of the box.

GitOps your Websites

If your repository is on a frogejo or gitea repo, we included GitOps. We ask every ten minutes the repo api for new pushed content.

If there is new content we generate the new static html & serve it.

Support Hugo and Cryogene

For static html generation we support cryogen & hugo.

Usage

Prerequisites:

  • DNS routes pointing to your k8s cluster.
  • frogejo or gitea instance for your website repo. In doubt use https://codeberg.org
  • A git repository with your hugo / cryogene website
    • the project provides a generate.sh (maybe your generatoin needs some preprocessing)
    • generate.sh deliver its static generated html to target/html

Development & mirrors

Development happens at: https://repo.prod.meissa.de/meissa/c4k-website

Mirrors are:

For more details about our repository model see: https://repo.prod.meissa.de/meissa/federate-your-repos

Create a new version of docker image "c4k-website-build"

Go to folder infrastructure/build/ and create an image with pyb image. After you have tagged the image and pushed it to "docker.io" it can be used by c4k-website. (TODO: document how to tag and push.)
To use the new image, update the image's version in line
- image: domaindrivenarchitecture/c4k-website-build:2.0.6
in file: build-cron.yaml
Then (re-)deploy the c4k-website to the server or - alternatively - update the version of the image manually on the server in the corresponding cronJob-Deployment to automatically pull and use the new image on the server.

License

Copyright © 2022 - 2025 meissa GmbH Licensed under the Apache License, Version 2.0 (the "License") Pls. find licenses of our subcomponents here