Skip to content

feat: add t8s kaas offering#1244

Open
cwrau wants to merge 1 commit into
SovereignCloudStack:mainfrom
cwrau:feat/add-t8s-kaas
Open

feat: add t8s kaas offering#1244
cwrau wants to merge 1 commit into
SovereignCloudStack:mainfrom
cwrau:feat/add-t8s-kaas

Conversation

@cwrau

@cwrau cwrau commented Jul 10, 2026

Copy link
Copy Markdown

No description provided.

@cwrau

cwrau commented Jul 10, 2026

Copy link
Copy Markdown
Author

I hope I implemented this correctly, but at least my preliminary tests were successful.

@cwrau
cwrau force-pushed the feat/add-t8s-kaas branch from 29ccd8c to 725b1a5 Compare July 10, 2026 08:05
@mbuechse

Copy link
Copy Markdown
Contributor

Thanks @cwrau. At first glance, it looks promising! Will have to read carefully and write up a review, but due to vacation, it could take until July 22nd or so...

@mbuechse

Copy link
Copy Markdown
Contributor

Question: you wrote that it's based on Gardener, yet you don't seem to use the Gardener API, but some Helm stuff (I still need to read more carefully). Is Gardener not exposed to your customers? If that's true, we should not mention Gardener.

@cwrau

cwrau commented Jul 10, 2026

Copy link
Copy Markdown
Author

Question: you wrote that it's based on Gardener, yet you don't seem to use the Gardener API, but some Helm stuff (I still need to read more carefully). Is Gardener not exposed to your customers? If that's true, we should not mention Gardener.

Däh, where did you read that? 😅
I looked at git log -p again and I don't think I mentioned that anywhere, as it's not true anyways 😅

Comment thread compliance-monitor/templates/overview.md.j2 Outdated
@cwrau
cwrau force-pushed the feat/add-t8s-kaas branch 2 times, most recently from afb3305 to eff053c Compare July 10, 2026 08:44
@cwrau

cwrau commented Jul 17, 2026

Copy link
Copy Markdown
Author

Ehlo, just wanted to ask if I need to adjust anything?

@mbuechse

Copy link
Copy Markdown
Contributor

@cwrau

No, I'm afraid you just have to wait

Will have to read carefully and write up a review, but due to vacation, it could take until July 22nd or so...

@mbuechse mbuechse left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Looking quite good! Thank you for contributing this!

I am missing k8s 1.34, and I have a few remarks, but small fry only.

Personally, I'm not into the excessive typing and unit-testing, where the former makes the code harder to read and the latter increases the codebase for marginal gain (because, in my experience so far with these plugins, they won't be changed once they work, and the changes we do would not be covered by the tests). However, this is mainly my personal opinion, and if you prefer the typing and unit-testing, then so be it.

kind: t8s
config:
kubernetesVersion: '1.35'
version_patch: 2

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Ideally, the latest patch version should be selected automatically. For instance, is there a way to enumerate available patch versions?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Sadly no, to do that we'd have to look at our TeutonetesClouds status and there are internal settings/infos on that object.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We may be able to live with this restriction for a while, but in the long run, it won't be fun bumping the patch version by hand every time the testcase version-policy-check is failed...

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Oh, I didn't know the patch version was part of the certification, I assumed only the minor was required.

But the patch version will be removed when our customer portal allows machine access, then we'd have no choice of the patch version (or any version for that matter) in any case. (we'd have update schedules just for SCS that have the old versions 😅)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

For SCS, we would like to be able to select the k8s branch (so major.minor), and the patch version can just be whatever is most recent. From what you're writing it doesn't sound so far off.

"chartRef": HR_CHART_REF,
"driftDetection": {"mode": "enabled"},
"interval": "1m",
"values": {**HR_VALUES_FIXED, "version": self.k8s_version},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Minor remark: Since this method only uses this one instance variable, I'm wondering whether it's better turned into a function that takes k8s_version as a parameter.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

This would "break" consistency to the other build* and apply* methods. But I can change it if you want

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

You're right. But now that is even more concerning: can we not provision multiple clusters at the same time? At the very least two, one for each branch?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

That wasn't planned, no.

K8s RBAC isn't that flexible, but if we have some form of deterministic order we could allow 3; each with an indexed suffix (-1, -2 and -3)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We can live with one, I suppose. The CI pipeline has been equipped with a semaphore so only one k8s branch will be tested at a time, so we should be safe.

From a programming standpoint, I think the class doesn't make a lot of sense because many of its methods don't even use self. So these methods could be turned into simple functions or staticmethod or classmethod. However, I would rather suggest we pretend that certain quantities are not actually constants and introduce instance variables for them, even if we only ever instantiate them with the same value. Like you just said, even if these values need to be hard-coded/prepared on the server side, several of them could exist, and then this would make sense.

Comment thread Tests/kaas/plugin/plugin_t8s.py Outdated
Comment thread Tests/kaas/plugin/plugin_t8s.py Outdated
Comment thread Tests/kaas/plugin/plugin_t8s.py Outdated
Signed-off-by: Chris Werner Rau <cwrau@cwrau.info>
@cwrau
cwrau force-pushed the feat/add-t8s-kaas branch from eff053c to cd73c52 Compare July 22, 2026 13:01
@cwrau

cwrau commented Jul 22, 2026

Copy link
Copy Markdown
Author

Looking quite good! Thank you for contributing this!

I am missing k8s 1.34, and I have a few remarks, but small fry only.

Ah, we don't have anyone on 1.34 anymore, so I didn't think about that, is that necessary?

Personally, I'm not into the excessive typing and unit-testing, where the former makes the code harder to read and the latter increases the codebase for marginal gain (because, in my experience so far with these plugins, they won't be changed once they work, and the changes we do would not be covered by the tests). However, this is mainly my personal opinion, and if you prefer the typing and unit-testing, then so be it.

Typing is definitely for my own sanity and maintainability, but if that isn't this repos style I can drop it.

Same goes for the tests, if those testable changes aren't really happening then OK 😁

@mbuechse

Copy link
Copy Markdown
Contributor

Like I said, we can keep the typing and the tests. I don't want to impose my style upon contributors, and it's a welcome chance to prove me wrong. 😄

So long as 1.34 is officially supported (this would be until Oct 27, 2026), we would need to have it, but Teutonet could also declare that you don't want to be certified before that date 😉

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants