Running Tekton Pipelines, ArgoCD, and Ambassador on K3s Bare Metal

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 | 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
kubectl apply --filename
kind: IngressClass
  name: ambassador
  annotations: "true"
kind: Ingress
  name: tekton-ingress
  namespace: tekton-pipelines
  ingressClassName: ambassador
  - http:
        - path: /tekton-dash/
          pathType: Prefix
              name: tekton-dashboard
                number: 9097

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.