Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Google Kubernetes Engine #314

Merged
merged 11 commits into from
Jul 27, 2021
Merged

Google Kubernetes Engine #314

merged 11 commits into from
Jul 27, 2021

Conversation

captn3m0
Copy link
Member

@captn3m0 captn3m0 commented Jul 23, 2021

I'd thought this would be easy, but damn Google makes this confusing :rage1:

Important considerations:

  1. Users can pick different kinds of clusters (standard v/s autopilot)
  2. autopilot clusters must pick a release channel, but standard clusters can pick a kubernetes minor version
  3. standard clusters not enrolled in a release channel will still get automatic control plane upgrades. You can delay them or limit them by defining maintenance windows, but you can't stop them.
  4. node upgrades are in your control only if you picked a minor version.
  5. Even then, google can decide to upgrade your nodes in select cases (See last link)

Note that there are no EoL dates or active support dates for release channels since they will always be supported. Static releases do have a "release date" (when the version was made available in static), but I had to remove it to keep it consistent.

Preview: https://deploy-preview-314--endoflife-date.netlify.app/gke

Pages consulted:

@captn3m0
Copy link
Member Author

captn3m0 commented Jul 23, 2021

Automation Notes

Since GKE releases are quite frequent, it is very hard to keep the latest field updated regularly. Hence, I tried to automate it.

GKE has a Get Server Config API which returns the data gke.json.zip

However, the API needs authentication, so I've created a service account with zero permissions. There's 2 new scripts:

_auto/gke.rb

Authenticates to Google APIs, calls the get_server_config API and stores a parsed output in _data/gke.json

_plugins/liquify.rb

Jekyll doesn't permit YAML frontmatter to contain liquid tags. So we keep the latest tag as a liquid string, and then parse it with a liquify filter in the layout file instead.

An option, perhaps down the line would be to move the gke.json file (and corresponding code) to a separate repo, which can perhaps be fetched at build-time instead.

@captn3m0 captn3m0 added the new-product This PR adds a new product to the website. label Jul 23, 2021
@captn3m0 captn3m0 requested a review from BiNZGi July 26, 2021 06:55
Copy link
Member

@BiNZGi BiNZGi left a comment

Choose a reason for hiding this comment

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

I checked the details and all is okay. The icon does not render and gives a 404 on the image. Please check...

captn3m0 added 11 commits July 27, 2021 11:38
Better for SEO, and the shortlink redirects
The _data/gke.yml file contains placeholder data
_data/gke.json file is generated by this script at build-time

This contains the same data that we need, and in JSON format.
Jekyll prioritizes the gke.json file, and the _includes/gke.html
file now references the new data accordingly.

All together, it looks like:

gke.md --includes--> gke.html

gke.html references site.data.gke which comes from either of:

- gke.yml
- gke.json
This file is saved in the _data directory
- The gke rake script now generates a ready version for Jekyll
- This avoids weird JSON processing and sorting in Liquid
@captn3m0
Copy link
Member Author

Forgot to rebase against master (icon_slug changed to iconSlug there). Should be good now

Copy link
Member

@BiNZGi BiNZGi left a comment

Choose a reason for hiding this comment

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

All good now, nice work -> merge

@BiNZGi BiNZGi merged commit 82c3d17 into master Jul 27, 2021
@captn3m0 captn3m0 deleted the gke branch July 28, 2021 09:11
captn3m0 added a commit that referenced this pull request Apr 16, 2023
I'm still unsure about the activeSupport dates, documented
the policy we've been using so far, based on what was used
when the page was created in #314.

I think a better (and more correct) approach would be to check
against the corresponding k8s release activesupport dates.
It's quite unlikely that GKE gets any new features in a branch
after k8s upstream stops adding them.
@captn3m0 captn3m0 mentioned this pull request Apr 16, 2023
BiNZGi pushed a commit that referenced this pull request Apr 17, 2023
I'm still unsure about the activeSupport dates, documented
the policy we've been using so far, based on what was used
when the page was created in #314.

I think a better (and more correct) approach would be to check
against the corresponding k8s release activesupport dates.
It's quite unlikely that GKE gets any new features in a branch
after k8s upstream stops adding them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new-product This PR adds a new product to the website.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants