tektoncd / website

Tekton Website
https://tekton.dev
Apache License 2.0
62 stars 149 forks source link

Metrics server addon for minikube is required before to deploy Tekton pipelines #443

Closed jjuarez closed 1 year ago

jjuarez commented 1 year ago

Expected Behavior

To have a functional cluster at the end of the install section.

Actual Behavior

After the "standard" installation of minikube and trying to install the Tekton stuff using the YAML manifests the pods were not working because of the lack of a proper metrics server deployment.

Steps to Reproduce the Problem

  1. Start minikube
  2. Install Tekton pilines
  3. The deployment is not working

Additional Info

This has a really easy workaround just taking in account the need of having a metrics server deployed, and the best way to do this is to enable this addon in minikube by doing:

minikube addons enable metrics-server

after a few seconds, we should check for the right deployment of this server:

kubectl top pods -A

and then proceed with the Tekton pipelines installation following the rest of the Getting Started section of the tutorial.

afrittoli commented 1 year ago

Hi @jjuarez - thanks for reporting this. I didn't realise we had an hard requirement on a metrics server, if you have the log from the controller would you mind pasting it here? Thank you!

AlanGreene commented 1 year ago

Metrics server shouldn't be required. What minikube + kubernetes version are you using?

Here's a fresh install, Pipelines installed and started as expected. I specified Kubernetes version 1.24 as 1.25 is used by default in the latest version of minikube. Pipelines won't support 1.25 until next release due to use of some deprecated resources that have been removed.

$ minikube start --kubernetes-version v1.24.4
😄  minikube v1.27.0 on Darwin 12.4 (arm64)
    ▪ KUBECONFIG=/Users/alan/.kube/config
✨  Automatically selected the docker driver
📌  Using Docker Desktop driver with root privileges
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.24.4 preload ...
    > preloaded-images-k8s-v18-v1...:  344.05 MiB / 344.05 MiB  100.00% 17.67 M
    > gcr.io/k8s-minikube/kicbase:  0 B [________________________] ?% ? p/s 35s
🔥  Creating docker container (CPUs=2, Memory=5876MB) ...
🐳  Preparing Kubernetes v1.24.4 on Docker 20.10.17 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

$ kubectl apply --filename \
https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
namespace/tekton-pipelines created
Warning: policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
podsecuritypolicy.policy/tekton-pipelines created
clusterrole.rbac.authorization.k8s.io/tekton-pipelines-controller-cluster-access created
clusterrole.rbac.authorization.k8s.io/tekton-pipelines-controller-tenant-access created
clusterrole.rbac.authorization.k8s.io/tekton-pipelines-webhook-cluster-access created
role.rbac.authorization.k8s.io/tekton-pipelines-controller created
role.rbac.authorization.k8s.io/tekton-pipelines-webhook created
role.rbac.authorization.k8s.io/tekton-pipelines-leader-election created
role.rbac.authorization.k8s.io/tekton-pipelines-info created
serviceaccount/tekton-pipelines-controller created
serviceaccount/tekton-pipelines-webhook created
clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller-cluster-access created
clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller-tenant-access created
clusterrolebinding.rbac.authorization.k8s.io/tekton-pipelines-webhook-cluster-access created
rolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller created
rolebinding.rbac.authorization.k8s.io/tekton-pipelines-webhook created
rolebinding.rbac.authorization.k8s.io/tekton-pipelines-controller-leaderelection created
rolebinding.rbac.authorization.k8s.io/tekton-pipelines-webhook-leaderelection created
rolebinding.rbac.authorization.k8s.io/tekton-pipelines-info created
customresourcedefinition.apiextensions.k8s.io/clustertasks.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/pipelines.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/pipelineruns.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/resolutionrequests.resolution.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/pipelineresources.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/runs.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/tasks.tekton.dev created
customresourcedefinition.apiextensions.k8s.io/taskruns.tekton.dev created
secret/webhook-certs created
validatingwebhookconfiguration.admissionregistration.k8s.io/validation.webhook.pipeline.tekton.dev created
mutatingwebhookconfiguration.admissionregistration.k8s.io/webhook.pipeline.tekton.dev created
validatingwebhookconfiguration.admissionregistration.k8s.io/config.webhook.pipeline.tekton.dev created
clusterrole.rbac.authorization.k8s.io/tekton-aggregate-edit created
clusterrole.rbac.authorization.k8s.io/tekton-aggregate-view created
configmap/config-artifact-bucket created
configmap/config-artifact-pvc created
configmap/config-defaults created
configmap/feature-flags created
configmap/pipelines-info created
configmap/config-leader-election created
configmap/config-logging created
configmap/config-observability created
configmap/config-registry-cert created
deployment.apps/tekton-pipelines-controller created
service/tekton-pipelines-controller created
Warning: autoscaling/v2beta1 HorizontalPodAutoscaler is deprecated in v1.22+, unavailable in v1.25+; use autoscaling/v2 HorizontalPodAutoscaler
horizontalpodautoscaler.autoscaling/tekton-pipelines-webhook created
deployment.apps/tekton-pipelines-webhook created
service/tekton-pipelines-webhook created

$ kubectl get po -n tekton-pipelines
NAME                                           READY   STATUS    RESTARTS   AGE
tekton-pipelines-controller-54c7997dc7-fz88g   1/1     Running   0          21s
tekton-pipelines-webhook-59987d7bfc-88l66      1/1     Running   0          21s

Pipelines pods started as expected, then after completing the rest of the tutorial steps:

$ kubectl logs --selector=tekton.dev/taskRun=hello-task-run
Defaulted container "step-echo" out of: step-echo, prepare (init), place-scripts (init)
Hello World
jjuarez commented 1 year ago

Ok, thanks, that's the key, I'm using kubernetes 1.25.0

AlanGreene commented 1 year ago

Ah ok, in that case you should see errors when applying the pipelines yaml.

@afrittoli @geriom we should probably update the tutorials and anywhere else using minikube to pin the Kubernetes version until we land support for 1.25