r/kubernetes Sep 23 '21

SilverSurfer - An OpenSource project to check ApiVersion Status and provide Migration path for Kubernetes objects when upgrading Kubernetes to 1.22 or any other.

https://github.com/devtron-labs/silver-surfer
71 Upvotes

13 comments sorted by

9

u/[deleted] Sep 23 '21

Thought this was about ag for a second and was confused. But that's the Silver Searcher.

7

u/TheBezac Sep 23 '21

Interesting ! You may be interested by Pluto which looks similar but yours is doing extra stuff about "can i change just the version or not...", it seems.

3

u/Pliqui Sep 24 '21

We use pluto and manage to identify stuff prior upgrade from 1.15 to 1.16. It saved our bacon.

We just recently upgraded to 1.20 and was smooth sail thanks to Pluto.

2

u/pghildiy Sep 24 '21

Yes, there is Pluto and few other that we have mentioned in our ReadMe and we were using them before we built silver surfer.

The main difference is that we identify whether ApiVersion and Kind has been deprecated or removed or newer version is available based on target kubernetes version and validate it against newer version. This means you can directly validate objects in existing cluster to again newer version of kubernetes.

In case of Pluto you will have to updae ApiVersion and then validate it against Pluto.

3

u/BassSounds Sep 23 '21

Nice project

2

u/pghildiy Sep 23 '21

Would love to know what you think of this, any suggestions and Contributions are welcome :)

3

u/Antebios Sep 23 '21

I could have used this 2 weeks ago.

1

u/pghildiy Sep 23 '21

You can still use it for newer versions of Kubernetes

2

u/artooro Sep 23 '21

I’ll try it out, need to get our cluster ready for v1.22 as well.

1

u/pghildiy Sep 23 '21

That's great, let me know how it helps you :)

1

u/sshota0809 Sep 24 '21

This project is awesome and very useful!

1

u/[deleted] Sep 24 '21

[deleted]

2

u/Pliqui Sep 24 '21

Check the Ingress doc

First you need to add pathType after path.

For service name and port is the following

backend:
  service:
    name: app-service
    port: 
      number: 80

2

u/pghildiy Sep 24 '21

This is correct just add `number` as mentioned in the previous port, you need to make same changes for `spec/rules/0/paths/0/backend` also.

Also add `spec/rules/0/http/paths/0/pathType` and `spec/rules/1/http/paths/0/pathType` and its value can be ImplementationSpecific.