I have some old laptops and raspberry pis around my house I want to use for build processes, hosting websites or tools. Historically, I’ve leveraged k3s to try to make the most out of this old hardware. My day-to-day is not working directly on Kubernetes. I still struggle to remember exactly what I am supposed to do in a scenario or how to get around an issue. I’m used to using GitLab ci for build jobs but it needs a lot of horse power to get anything going. I also ran into issues once Traefik was installed dealing with port 80 being taken over. This weekend I wanted to dive into what a combined helm and kustomize deploy would look like via ArgoCD. I may cover that in a future article.
Installing K3s, Ambassador, and ArgoCD
# Piping to bash is probably not best practice but its easy curl -sfL https://get.k3s.io | sh -s - --disable=traefik.
Once that is installed you can visit the Ambassador initializer. For the purposes of my learning I skipped advanced things like tls termination, service mesh, and Knative. Once you step throught the options you can run the generated commands on your k3s instance.
Installing Tekton Pipelines and an Ingress for Ambassador
Once Tekton Pipelines is installed you can also install its dashboard. I ran into challenges with how the app is configured to run on the root URL. I found a workaround using Ambassador Ingress instead of mappings.
Install tekton pipelines
kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/tekton-dashboard-release.yaml
--- apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: ambassador annotations: ingressclass.kubernetes.io/is-default-class: "true" spec: controller: getambassador.io/ingress-controller --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: tekton-ingress namespace: tekton-pipelines spec: ingressClassName: ambassador rules: - http: paths: - path: /tekton-dash/ pathType: Prefix backend: service: name: tekton-dashboard port: number: 9097 host: YOURK3SHOSTNAME
You can save the above as a file and use kubectl apply -f. Hopefully should work for you to access at http://YOURHOSTNAME/tekton-dash/
You should be able to now access argocd and tekton pipelines dashboard from your k3s instance.