Coder Social home page Coder Social logo

caddy-raspi's Introduction

caddy-raspi

Summary

Code for building a Kubernetes-deployable Docker image with the latest version of Caddy web server on top of the latest ARM32v6/Alpine release, for deployment on a Raspberry Pi K8s based cluster. Caddy installed with the Git & Prometheus plugins to enable content pulls from a Git repo and a Prometheus metrics endpoint, respectively.

Also includes a Kubernetes service & deployments template .yml file. Requires a working Kubernetes cluster and that image build be deployed to an appropriate container registry, like Docker Hub.

Usage

Clone repo.

Customize contents of Caddyfile appropriately for your setup. At a minimum, 'hostname:port' and Git repository endpoint.

Customize values in caddy-app.yml Kubernetes template file. At a minimum, customize container 'image' field. Caddy requires this value match request URL exactly. See https://caddyserver.com/tutorial/caddyfile.

Build image: docker build -t *image/name* .

Push image to registry, in this example, Docker Hub:

docker push image/name

Create Kubernetes Service and Deployment:

kubectl create -f caddy-app.yml

Deployment should now be active and accessible outside the cluster at the appropriate URL:Port for your configuration.

Some helpful topics & commands:

  • Understanding Kubernetes Services / NodePort
  • Show Kubernetes services: kubectl get svc
  • Show K8s Deployments: kubectl get deployments
  • Show K8s Pods with node placements: kubectl get pods -o wide
  • Remove service and deployment from K8s: kubectl delete -f caddy-app.yml

To-Do

  • Enable Automatic HTTPS
  • Enable Caddy dymanic web content (FastCGI?)
  • Potentially change dumb load balancing away from NodePort, possibly Ingress or make use of Nginx.

License

This is open-sourced software licensed under the MIT license.

caddy-raspi's People

Contributors

clayshek avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.