feature-image

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/

Conclusion

You should be able to now access argocd and tekton pipelines dashboard from your k3s instance.

Contact me

Let’s Start a Project

Sitemap