forked from gethomepage/homepage
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'benphelps:main' into main
- Loading branch information
Showing
87 changed files
with
12,708 additions
and
649 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,5 +20,7 @@ | |
**/obj | ||
**/secrets.dev.yaml | ||
**/values.dev.yaml | ||
**/.next | ||
README.md | ||
config/ | ||
k3d/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# syntax = docker/dockerfile:latest | ||
FROM docker.io/node:18-alpine | ||
|
||
WORKDIR /app | ||
|
||
COPY --link package.json pnpm-lock.yaml* ./ | ||
|
||
RUN <<EOF | ||
set -xe | ||
apk add libc6-compat | ||
apk add --virtual .gyp python3 make g++ | ||
npm install -g pnpm | ||
npm install -g next | ||
EOF | ||
|
||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store" | ||
|
||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm install -r --offline | ||
|
||
COPY . . | ||
|
||
CMD ["npx", "next", "dev"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
#shellcheck disable=SC2148,SC2155 | ||
export KUBECONFIG=$(readlink -f ./kubeconfig) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
kubeconfig | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Kubernetes Development | ||
|
||
These configs and scripts attempt to simplify spinning up a kubernetes cluster | ||
for development and testing purposes. It leverages [k3d](https://k3d.io) to create | ||
a [k3s](https://k3s.io) cluster in Docker. Homepage can then be deployed either via | ||
the `k3d-deploy.sh` script, or [tilt](https://tilt.dev) can be used to spin up a | ||
local CI loop that will automatically update the deployment. | ||
|
||
All the commands in the document should be run from the `k3d` directory. | ||
|
||
## Requisite Tools | ||
|
||
| Tool | Description | | ||
|-------------------------------------------------------------|----------------------------------------------------------| | ||
| [docker](https://docker.io) | Docker container runtime | | ||
| [kubectl](https://kubernetes.io/releases/download/#kubectl) | Kubernetes CLI | | ||
| [helm](https://helm.sh) | Kubernetes package manager | | ||
| [k3d](https://k3d.io) | Kubernetes on Docker - used to create the cluster | | ||
| [k9s](https://k9scli.io) | (Optional) Command line view for kubernetes cluster | | ||
| [tilt](https://tilt.dev) | (Optional) Local CI loop for kubernetes deployment | | ||
| [direnv](https://direnv.net/) | (Optional) Automatically loads `kubeconfig` via `.envrc` | | ||
|
||
|
||
## One-off Test Deployments | ||
|
||
Create a cluster: | ||
|
||
```sh | ||
./k3d-up.sh | ||
``` | ||
|
||
Build and deploy: | ||
|
||
```sh | ||
./k3d-deploy.sh | ||
``` | ||
|
||
Open the Homepage deployment: | ||
|
||
```sh | ||
xdg-open http://homepage.k3d.localhost:8080/ | ||
``` | ||
|
||
## Continuous Deployment | ||
|
||
Create a cluster: | ||
|
||
```sh | ||
./k3d-up.sh | ||
``` | ||
|
||
Kick off tilt: | ||
|
||
```sh | ||
tilt up | ||
``` | ||
|
||
Press space bar to open the tilt web UI, which is quite informative. | ||
|
||
Open the Homepage deployment: | ||
|
||
```sh | ||
xdg-open http://homepage.k3d.localhost:8080/ | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
docker_build('k3d-registry.localhost:55000/homepage:local', '..', | ||
dockerfile = "../Dockerfile-tilt", | ||
build_args={'node_env': 'development'}, | ||
#entrypoint='pnpm run nodemon /app/server.js', | ||
live_update=[ | ||
sync('.', '/app'), | ||
run('cd /app && pnpm install', trigger=['.package.json', './pnpm-lock.yaml']) | ||
] | ||
) | ||
load('ext://helm_resource', 'helm_resource', 'helm_repo') | ||
helm_repo('jameswynn', 'https://jameswynn.github.io/helm-charts') | ||
|
||
helm_resource('homepage', 'jameswynn/homepage', | ||
image_deps=[ | ||
"k3d-registry.localhost:55000/homepage:local" | ||
], | ||
image_keys=[ | ||
("image.repository", "image.tag") | ||
], | ||
# image_selector= "k3d-registry.localhost:55000/homepage:local", | ||
flags=[ | ||
"-f", "k3d-helm-values.yaml", | ||
"--set", "persistence.dotnext.enabled=true" | ||
] | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#!/bin/bash | ||
|
||
DOCKER_BUILDKIT=1 docker build -t k3d-registry.localhost:55000/homepage:local .. | ||
docker push k3d-registry.localhost:55000/homepage:local | ||
|
||
HELM_REPO_NAME=jameswynn | ||
HELM_REPO_URL=https://jameswynn.github.io/helm-charts | ||
|
||
if ! helm repo list | grep $HELM_REPO_URL > /dev/null; then | ||
helm repo add $HELM_REPO_NAME $HELM_REPO_URL | ||
helm repo update | ||
fi | ||
|
||
helm upgrade --install homepage jameswynn/homepage -f k3d-helm-values.yaml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#!/bin/bash | ||
|
||
k3d cluster delete homepage | ||
rm kubeconfig |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
image: | ||
repository: k3d-registry.localhost:55000/homepage | ||
tag: local | ||
pullPolicy: Always | ||
|
||
config: | ||
bookmarks: | ||
- Developer: | ||
- Github: | ||
- abbr: GH | ||
href: https://github.com/ | ||
services: | ||
- My First Group: | ||
- My First Service: | ||
href: http://localhost/ | ||
description: Homepage is awesome | ||
|
||
- My Second Group: | ||
- My Second Service: | ||
href: http://localhost/ | ||
description: Homepage is the best | ||
|
||
- My Third Group: | ||
- My Third Service: | ||
href: http://localhost/ | ||
description: Homepage is 😎 | ||
widgets: | ||
# show the kubernetes widget, with the cluster summary and individual nodes | ||
- kubernetes: | ||
cluster: | ||
show: true | ||
cpu: true | ||
memory: true | ||
showLabel: true | ||
label: "cluster" | ||
nodes: | ||
show: true | ||
cpu: true | ||
memory: true | ||
showLabel: true | ||
- search: | ||
provider: duckduckgo | ||
target: _blank | ||
kubernetes: | ||
mode: cluster | ||
docker: | ||
settings: | ||
|
||
serviceAccount: | ||
create: true | ||
name: homepage | ||
|
||
enableRbac: true | ||
|
||
ingress: | ||
main: | ||
enabled: true | ||
annotations: | ||
gethomepage.dev/enabled: "true" | ||
gethomepage.dev/name: "Homepage" | ||
gethomepage.dev/description: "Dynamically Detected Homepage" | ||
gethomepage.dev/group: "Dynamic" | ||
gethomepage.dev/icon: "homepage.png" | ||
hosts: | ||
- host: homepage.k3d.localhost | ||
paths: | ||
- path: / | ||
pathType: Prefix | ||
|
||
persistence: | ||
# this persists the .next directory which greatly improves successive pod startup times in Tilt, | ||
# but it breaks normal deployments, so it is disabled by default | ||
dotnext: | ||
enabled: false | ||
type: pvc | ||
accessMode: ReadWriteOnce | ||
size: 1Gi | ||
mountPath: /app/.next |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/bin/bash | ||
|
||
k3d cluster create --config k3d.yaml --wait | ||
k3d kubeconfig get homepage > kubeconfig | ||
chmod 600 kubeconfig | ||
export KUBECONFIG=$(pwd)/kubeconfig | ||
|
||
echo "Waiting for traefik install job to complete (CTRL+C is safe if you're impatient)" | ||
kubectl wait jobs/helm-install-traefik -n kube-system --for condition=complete --timeout 90s && echo "Completed" || echo "Timed out (but it should still come up eventually)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
kind: Simple | ||
apiVersion: k3d.io/v1alpha3 | ||
name: homepage | ||
servers: 1 | ||
agents: 2 | ||
kubeAPI: | ||
hostIP: 0.0.0.0 | ||
hostPort: "6443" | ||
image: rancher/k3s:v1.25.5-k3s1 | ||
volumes: | ||
- volume: /tmp:/tmp/k3d-homepage | ||
nodeFilters: | ||
- all | ||
ports: | ||
- port: 8080:80 | ||
nodeFilters: | ||
- loadbalancer | ||
- port: 0.0.0.0:8443:443 | ||
nodeFilters: | ||
- loadbalancer | ||
options: | ||
k3d: | ||
wait: true | ||
timeout: 6m0s | ||
disableLoadbalancer: false | ||
disableImageVolume: false | ||
disableRollback: false | ||
k3s: | ||
extraArgs: | ||
- arg: --tls-san=127.0.0.1 | ||
nodeFilters: | ||
- server:* | ||
nodeLabels: [] | ||
kubeconfig: | ||
updateDefaultKubeconfig: false | ||
switchCurrentContext: false | ||
runtime: | ||
gpuRequest: "" | ||
serversMemory: "1024Mi" | ||
agentsMemory: "1024Mi" | ||
labels: | ||
- label: foo=bar | ||
nodeFilters: | ||
- server:0 | ||
- loadbalancer | ||
env: | ||
- envVar: bar=baz | ||
nodeFilters: | ||
- all | ||
registries: | ||
create: | ||
name: k3d-registry | ||
# host: 0.0.0.0 | ||
hostPort: "55000" | ||
config: | | ||
mirrors: | ||
"k3d-registry.localhost:55000": | ||
endpoint: | ||
- http://k3d-registry:5000 |
Oops, something went wrong.