Skip to content

docs(knative): update to newer Go and Knative versions#438

Open
ishaanxgupta wants to merge 3 commits intourunc-dev:mainfrom
hemang1404:fix-knative-tutorial-430
Open

docs(knative): update to newer Go and Knative versions#438
ishaanxgupta wants to merge 3 commits intourunc-dev:mainfrom
hemang1404:fix-knative-tutorial-430

Conversation

@ishaanxgupta
Copy link
Contributor

Description

This PR updates the Knative integration tutorial to use the latest versions and improves the documentation structure

  • Update Go version from 1.21.5 to use dynamic [[ versions.go ]] template (currently 1.24.6)
  • Update Knative version to use [[ versions.knative ]] template (currently 1.17.0)
  • Restructure installation to prioritize pre-built binaries (Option 1)
  • Simplify Go and ko installation instructions
  • Add ko version verification step
  • Improve clarity of pre-built vs source build options

Related issues

How was this tested?

  • Verified template syntax matches mkdocs.yml configuration (j2_variable_start_string: "[[")
  • Confirmed versions.go and versions.knative variables exist in docs/variables/versions.yml
  • Checked consistency with other tutorials (e.g., Running-urunc-with-kind.md uses same template pattern)
  • Validated pre-built S3 URL format matches original format (with -5220308.yaml suffix)
  • Ensured source build option still uses nubificus/serving -b feat_urunc to preserve urunc patches
  • Reviewed all changes for accuracy and completeness

LLM usage

GitHub Copilot assisted with code review.

Checklist

  • I have read the contribution guide.
  • The linter passes locally (make lint).
  • The e2e tests of at least one tool pass locally (make test_ctr, make test_nerdctl, make test_docker, make test_crictl).
  • If LLMs were used: I have read the llm policy.

collaborated with @hemang1404

@netlify
Copy link

netlify bot commented Feb 3, 2026

Deploy Preview for urunc ready!

Name Link
🔨 Latest commit 42df884
🔍 Latest deploy log https://app.netlify.com/projects/urunc/deploys/6998b194b2fa5e0007373fec
😎 Deploy Preview https://deploy-preview-438--urunc.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@ishaanxgupta
Copy link
Contributor Author

@cmainas please have a look and let me know if any changes are required

@hemang1404 hemang1404 force-pushed the fix-knative-tutorial-430 branch from f74e0c9 to 70ff35e Compare February 3, 2026 18:25
@cmainas
Copy link
Contributor

cmainas commented Feb 4, 2026

Hello @ishaanxgupta ,

please try to create a knative environment with your suggested changes and provide enough proof that this works.

@cmainas
Copy link
Contributor

cmainas commented Feb 4, 2026

Duplicate with #433

@cmainas cmainas added the duplicate This issue or pull request already exists label Feb 4, 2026
@ishaanxgupta
Copy link
Contributor Author

ishaanxgupta commented Feb 6, 2026

Hi @cmainas
Here are the validation results tested by me and @hemang1404

image image image

Test Environment

  • OS: Ubuntu 22.04 (WSL2)
  • Kubernetes: Kind v0.32.0

Results

  • go version go1.24.6 linux/amd64
  • Template [[ versions.go ]] correctly resolves to 1.24.6 from versions.yml
  • Simplified installation using /latest/ works correctly
  • Knative v1.17.0 Deployed
  • Pre-built Knative v1.17.0 URL works correctly
  • Template variable [[ versions.knative ]] resolves properly
  • All Knative components deploy successfully

Copy link
Contributor

@cmainas cmainas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @ishaanxgupta and @hemang1404 for testing this. I have a left comment for the structure of the tutorial. I have also verified that it works. A few more notes:

  • We can add an instruction to get the ingress IP. Simply transforming the note that starts with Note: 10.244.9.220 is the IP of the kourier-internal svc. to an instruction before invoking the function
  • I think we can remove the Wrapping upsection

```

### Clone urunc-enabled Knative Serving
### Option 1: Use Pre-built Knative (Recommended)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good, but if users decide not to build Knative, then there is no reason to installl docker, go and ko. Therefore, it would be better to move this further up before installing anything and adjusting the text.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, we will need to adjust the prerequisites, to keep them as a working K8s and urunc installation and move the "Basic git, curl, kubectl, and docker installed" to the option that builds knative from scratch.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay

@hemang1404 hemang1404 force-pushed the fix-knative-tutorial-430 branch 2 times, most recently from e91074f to 70ff35e Compare February 8, 2026 07:20
@ishaanxgupta
Copy link
Contributor Author

@cmainas made the changes as you suggested, please have a look

@cmainas cmainas mentioned this pull request Feb 9, 2026
@7h3-3mp7y-m4n
Copy link

Hey @ishaanxgupta did you also check the tutorial, by building Knative from scratch?

@hemang1404 hemang1404 force-pushed the fix-knative-tutorial-430 branch 2 times, most recently from 2435527 to 0ee4b4b Compare February 11, 2026 21:07
@7h3-3mp7y-m4n
Copy link

any updates @ishaanxgupta and @hemang1404 on this ?

hemang1404 and others added 3 commits February 21, 2026 00:38
- Update Go version from 1.21.5 to use dynamic [[ versions.go ]] template (currently 1.24.6)
- Update Knative version to use [[ versions.knative ]] template (currently 1.17.0)
- Restructure installation to prioritize pre-built binaries (Option 1)
- Simplify Go and ko installation instructions
- Add ko version verification step
- Improve clarity of pre-built vs source build options

Fixes: urunc-dev#430

Signed-off-by: hemang1404 <hemangsharrma@gmail.com>
Co-authored-by: ishaanxgupta <ishaankone@gmail.com>
Co-authored-by: Hemang Sharrma <hemangsharrma@gmail.com>
Signed-off-by: ishaanxgupta <ishaankone@gmail.com>
Signed-off-by: Ishaan Gupta <ishaankone@gmail.com>
Signed-off-by: Hemang Sharrma <hemangsharrma@gmail.com>
Co-authored-by: Hemang Sharrma <hemangsharrma@gmail.com>
@hemang1404 hemang1404 force-pushed the fix-knative-tutorial-430 branch from 382f3cf to 42df884 Compare February 20, 2026 19:10
#### Environment Setup

### Install Go 1.21
Install [Docker](/quickstart/#install-docker), Go [[ versions.go ]], and `ko`:
Copy link

@7h3-3mp7y-m4n 7h3-3mp7y-m4n Feb 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have already menionted about docker in the prerequisites, so why don't we add docker install link directly to it? Also its duplication (A suggestion)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the prerequisites, we mention a A Docker-compatible registry and docker is required due to ko (AFAIK).

Comment on lines +39 to 49
##### Install Go (≥ 1.23)

### Verify Go installation (Should be 1.21.5)
Please follow the official [Go installation instructions](https://go.dev/doc/install) to install Go 1.23 or newer.

##### Verify Go installation

```console
$ export GOROOT=/usr/local/go1.21/go
$ export PATH=$GOROOT/bin:$PATH
$ export PATH=/usr/local/go/bin:$PATH
$ export GOPATH=$HOME/go
$ go version
go version go1.21.5 linux/amd64
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should list Go ≥ 1.23 under Prerequisites rather than documenting the full installation and verification steps. Since most developers already have Go installed if they are already using knative, it’s enough to state the required version and link to the official installation guide (https://go.dev/doc/install). This keeps the documentation clean, concise, and avoids duplicating upstream instructions.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sounds good.

Comment on lines +51 to 55
##### Install ko
```bash
export OS=Linux
export ARCH=x86_64
curl -sSfL "https://github.com/ko-build/ko/releases/download/v${VERSION}/ko_${VERSION}_${OS}_${ARCH}.tar.gz" -o ko.tar.gz
sudo tar -zxvf ko.tar.gz -C /usr/local/bin`
curl -sSfL https://github.com/ko-build/ko/releases/latest/download/ko_Linux_x86_64.tar.gz | sudo tar xzf - -C /usr/local/bin
ko version
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The first paragraph of the documentation already says that if we are building from source, we would need ko, so I think we should also put ko in prerequisites, and about the installation guide, I am not sure ( also confused)

Copy link
Contributor

@cmainas cmainas Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we should add ko in the prerequisites. If ko provides an installation method rather than from its releases we can point to there, otherwise we can provide the commands to fetch and install ko


> Note: There are cases where due to the large manifests, kubectl fails. Try a second time, or use `kubectl create -f https://s3.nbfc.io/knative/knative-v[[ versions.knative ]]-urunc-5220308.yaml`

## Setup Networking (Kourier)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should add a link for kourier, people can also reach their website and explore. ( A suggestion)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure I get this one.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mean, adding it like this

## Setup Networking ([Kourier](https://github.com/knative-extensions/net-kourier))

Comment on lines 110 to 114
```bash
kubectl get ksvc -A -o wide
```

Should be empty. Create an simple httpreply

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should remove the first step cause the user is already building from scratch, so nothing would be there. Just continue the line -> Create an simple httpreply service, based on a simple C program:

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense. Also, we do not have to mention that "Should be empty"

Comment on lines 122 to 126
### Check Knative Service

```bash
kubectl get ksvc -A -o wide
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can change the header to Check Knative Services are running, or we can also add the output for it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can add the output, the title can stay the same

kubectl get svc -n kourier-system kourier-internal -o jsonpath='{.spec.clusterIP}'
```

Note the IP address returned (e.g., `10.244.9.220`). You'll use this in the following curl commands.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can write something like this -> This command returns the internal ClusterIP (e.g., 10.244.9.220). Use this value in the next curl command (A suggestion)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let;s just replace "You'll use" with "Use"

@7h3-3mp7y-m4n
Copy link

I've added more suggestions @ishaanxgupta and @hemang1404 , what are your thoughts about them?

@cmainas
Copy link
Contributor

cmainas commented Feb 23, 2026

Hello all, thank you for your comments.

I just want to point out that the tutorial is still broken and we need to fix this. We can apply any other changes later, but if something is broken, we need to fix it quickly and then find ways to improve it.

@ishaanxgupta
Copy link
Contributor Author

Hello all, thank you for your comments.

I just want to point out that the tutorial is still broken and we need to fix this. We can apply any other changes later, but if something is broken, we need to fix it quickly and then find ways to improve it.

@cmainas
So i guess what if we merge this and fix the suggestions in the follow-up PR?

Comment on lines 84 to 89
kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml
kubectl patch configmap/config-network -n knative-serving --type merge -p \
'{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'
kubectl patch configmap/config-domain -n knative-serving --type merge -p \
'{"data":{"127.0.0.1.nip.io":""}}'
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

after running we can encounter this error
kubectl apply -f https://github.com/knative/net-kourier/releases/latest/download/kourier.yaml kubectl patch configmap/config-network -n knative-serving --type merge -p \ '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}' kubectl patch configmap/config-domain -n knative-serving --type merge -p \ '{"data":{"127.0.0.1.nip.io":""}}' namespace/kourier-system unchanged configmap/kourier-bootstrap unchanged configmap/config-kourier unchanged serviceaccount/net-kourier unchanged clusterrole.rbac.authorization.k8s.io/net-kourier unchanged clusterrolebinding.rbac.authorization.k8s.io/net-kourier unchanged deployment.apps/net-kourier-controller configured service/net-kourier-controller unchanged deployment.apps/3scale-kourier-gateway unchanged service/kourier unchanged service/kourier-internal unchanged horizontalpodautoscaler.autoscaling/3scale-kourier-gateway unchanged poddisruptionbudget.policy/3scale-kourier-gateway-pdb configured Error from server (BadRequest): Invalid JSON Patch {"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}: command not found Error from server (BadRequest): Invalid JSON Patch

Better we should go for

kubectl apply -f https://github.com/knative-extensions/net-kourier/releases/latest/download/kourier.yaml

kubectl patch configmap/config-network -n knative-serving --type merge -p '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'

kubectl patch configmap/config-domain -n knative-serving --type merge -p '{"data":{"127.0.0.1.nip.io":""}}'

copy paste friendly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

duplicate This issue or pull request already exists ok-to-test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix Knative tutorial

4 participants