diff --git a/.dockerignore b/.dockerignore index 402dc84b..edbf8525 100644 --- a/.dockerignore +++ b/.dockerignore @@ -20,5 +20,7 @@ **/obj **/secrets.dev.yaml **/values.dev.yaml +**/.next README.md config/ +k3d/ diff --git a/Dockerfile-tilt b/Dockerfile-tilt new file mode 100644 index 00000000..431ef2a6 --- /dev/null +++ b/Dockerfile-tilt @@ -0,0 +1,22 @@ +# syntax = docker/dockerfile:latest +FROM docker.io/node:18-alpine + +WORKDIR /app + +COPY --link package.json pnpm-lock.yaml* ./ + +RUN < /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 diff --git a/k3d/k3d-down.sh b/k3d/k3d-down.sh new file mode 100755 index 00000000..668643d9 --- /dev/null +++ b/k3d/k3d-down.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +k3d cluster delete homepage +rm kubeconfig diff --git a/k3d/k3d-helm-values.yaml b/k3d/k3d-helm-values.yaml new file mode 100644 index 00000000..1fe61bf1 --- /dev/null +++ b/k3d/k3d-helm-values.yaml @@ -0,0 +1,77 @@ +image: + repository: k3d-registry.localhost:55000/homepage + tag: local + pullPolicy: IfNotPresent + +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 + dotnext: + enabled: true + type: pvc + accessMode: ReadWriteOnce + size: 1Gi + mountPath: /app/.next diff --git a/k3d/k3d-up.sh b/k3d/k3d-up.sh new file mode 100755 index 00000000..c90af8f0 --- /dev/null +++ b/k3d/k3d-up.sh @@ -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" diff --git a/k3d/k3d.yaml b/k3d/k3d.yaml new file mode 100644 index 00000000..e976c5c3 --- /dev/null +++ b/k3d/k3d.yaml @@ -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 diff --git a/kubernetes.md b/kubernetes.md index f01f54cf..0035ddd2 100644 --- a/kubernetes.md +++ b/kubernetes.md @@ -141,3 +141,7 @@ Configure it from the `widgets.yaml`. - node1 - node2 ``` + +## Testing + +Refer to the [k3d readme](k3d/README.md).