Coder Social home page Coder Social logo

learnk8s.io's People

Contributors

alljames avatar amitsaha avatar chrisns avatar danielepolencic avatar denhamparry avatar keithmifsud avatar lewiscowper avatar lowyuenan avatar salmaniqbal avatar sayrus avatar valentin2105 avatar weibeld avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

learnk8s.io's Issues

Newsletter

Kubernetes has a weekly newsletter: KubeWeekly. This is a dump of every link mentioning the word Kubernetes. I find it very hard to follow and not very informative.

There's a second and very young newsletter called Kubelist. The project just started, and I can count only three issues. It's curated ✅and human-friendly. But I think it lacks focus. It's about "all things Kubernetes", same as Kubeweekly.

There's a third newsletter KLWD - Last Week in Kubernetes Development. The newsletter is focussed primarily on maintainers and contributors.

The k8s community is not as mature as other communities. JS and Ruby have a long history when it comes to newsletters, and they have a lot of insights to offer when it comes to helping the community broadcasting news.

This is an opportunity for us to bring some of the learnings and the ❤️from other communities to k8s.

I spent some time thinking about what I'd like to read every week if I were:

  1. a k8s newbie and
  2. someone who wants to develop applications on k8s

I also did a lot of research into other newsletters. I targeted three large communities I'm familiar with:

  • Javascript
  • Ruby
  • Designers

You can explore newsletters from more communities from this awesome newsletter collection.

My findings in a nutshell:

  • A limited set of links. No one has time to read a wall of text
  • Curated content. I think this is probably the most significant learning for me. While the newsletter is already k8s focussed, it should be focussed on a particular aspect of k8s. KLWD is a good example: just news on development.
  • No Spam. Goes without saying.
  • No one wants to subscribe if they can't see the quality of the newsletter. But I couldn't find evidence of what quality means.
  • Author or curator play a significant role when it comes to trusting the content or quality of the newsletter
  • Newsletters are much more than just a list of links. There's an opportunity to share events, funny facts, etc.

So I came up with a newsletter idea in line with what learnk8s does best: helping others to get up to speed with k8s.

image

And this is the full newsletter

image

You may be asking... what about the content?

I collect daily news from r/kubernetes and twitter about Kubernetes. All the bookmarks I save are stored in Diigo.
I reckon we could get a digest of the activity of the Twitter account and the bookmarks I saved during the week to curate a newsletter.
Of course, the retweets, favs, bookmarks have to be learning k8s focussed.

Let me know what you think! @salmaniqbal @denhamparry @chrisns @valentin2105 @keithmifsud

Blog / Post directories

@danielepolencic I think you have made a change instead of the normal Jekyll posts, it seems that you're placing posts inside of a dir named _blog. Why? This is not the Jekyll way! But it's fine, I got it working :)

Sorry about the above, Git could not get the latest changes because of the missing "blog" branch, but now it's fine"

Also, if possible it will be a lot better if you work on a personal fork instead of directly in the shared repo because these are breaking changes and it takes a while to reverse engineer them without any info from you.

I did so. I forked the learnk8s.io repo and will only merge upstream once. My fork is: https://github.com/keithmifsud/learnk8s.io if you have a look at the blog branch you should notice that I added an author blurb "include". Once I am done, I will submit a PR from my fork:blog to main_repo:master for your review.

I also added instructions on using the author's blurb in the readme file.

Add canonical tags to all pages

We should add canonical tags to all the pages.

Tasks:

  1. using the same logic in the sitemap (or backstop.ts test), for each page, load the page, parse it as Hast and check if a <link rel=“canonical” href=“https://example.com/sample-page/” /> exists.
  2. add canonical to all pages, but not for:
  • 404
  • redirects
  • RSS feeds

Please note that the tool should work against a working website such as http://localhost:4000 or https://learnk8s.io

Blog Proposal: From Zero to Kubernets for Python

Title: From Zero to Kubernets for Python
Info: This blog post will help you if you have a python application and you would like to deploy it using Kubernets.

1. The application
You have a python application, in this example we will use a Python Hello world web app. This app is run in a website using flask. When accessed via your favourite web browser it prints the text "Hello World" on the page. This can be replaced by any python application.
a. [Give link to Github that includes the source code for this app]

2. Deployment
You dev this app in your local machine and then it is deployed in Test, QA and Prod environment. Sometimes you might run into an issue in other environments where it would fail on deployment

3. Docker
This is where Docker helps, if you can contain your application in an image, you can reliably deploy it on any envirnment.
a. [Brief description of Docker containers and its advantages, perhaps link to other docker resources]
b. [Show and walk through the docker file]
c.
d. Is it worth showing how a container can hold different versions of Python (2.7 / 3) without having to change your local references??

4. How can Kubernets help?
K8s helps with automating deployment, scaling and management of containers.
[Put a couple of lines on features of k8s, rolling updates, declarative configuration etc]
[Give a line on options of where k8s can be run]
[Simplified k8s architecture diagram]
[Install Minikube instructions for windows and mac]
[Install/get kubectl]

5. k8s Deployment
[Show the deployment.yaml file and point out the container name and other properties e.g. replicas etc]
[kubectl create -f deployment.yaml]
[kubectl expose]
[Perhaps show how replicasets work?]

6. Conclude
[Summarise what was learnt and provide next steps for further learning?]

Move from Google Analytics to Google Tag Manaer

Superseded learnk8s/team#18

  • Replace Google Analytics with Google Tag Manager. Instructions:

The following code should be placed in the <head>:

<!-- Google Tag Manager -->

<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':

new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],

j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=

'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);

})(window,document,'script','dataLayer','GTM-5WCKPRL');</script>

<!-- End Google Tag Manager -->
  • The following code should be placed at the beginning of body:
<!-- Google Tag Manager (noscript) -->

<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5WCKPRL"

height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>

<!-- End Google Tag Manager (noscript) -->
  • You should remove the old GA tag.

Add Social Media Share Links to articles.

@danielepolencic I use ShareThis for my social share buttons on my site. Would you like the use this too?

I have one post with the share buttons at the very start of the content and at the end of the article's content. I found this to be a lot better than just at the bottom. What would you like both or just at the end?

Do you have any text in mind? Mine says Don't be selfish...

I can set this up and send you the credentials over Keybase. If you decide to use the same service, you can choose whether to show the number of shares or not. Please let me know your choice.

Improve article on how to deploy Laravel to Kubernetes

Article:

We received the following comments:

Running laravel in production using serve is considered bad practice.
boris_eve

RUN php artisan key:generate
You should only run this one.....it should be retrieved from a secret or else things like already set cookies get funky on rebuild of the container.
RUN php artisan serve --host=0.0.0.0 --port=8181
Shouldn't this be CMD?
Also no explanation that "php artisan serve" should not be used for anything outside development and that requires a bit more kubernetes work to serve laravel without it.
delfinom

RUN php artisan key:generate
If this is generating a secret key, this looks very wrong, because it would embed a secret key into an image that gets pushed to a registry.
If the key is ephemeral (doesn’t need to survive the containers’ lifetimes) it’s better to create it when the container runs. If it’s a persistent secret then Kubernetes has a secrets feature that is appropriate.
sacundim

I think we should fix the content. I'm not sure what's considered to be best practice in the Laravel world.

Also, we should tweak the title again — I know what you're thinking, we went live already.
I think this article is not one-off. It isn't one of those articles that are forgotten after a while (like How to optimise your Docker images).
More and more people will look for this kind of content in the long run.

In that respect, I suggest we rename the article, but still retain most of the original one.

  • Introduction to Kubernetes: How to Deploy a Laravel 5 application
  • Getting started with Laravel 5 on Kubernetes
  • Deploy a Laravel 5 application to Kubernetes

The titles are variations of articles already published for Heroku — i.e. I google "laravel heroku" and generated variations of the titles.

@keithmifsud let me know what you think.

Article excerpt in blog list page

@danielepolencic I suggest that instead of just adding <!--more--> to limit the excerpt, add a front-matter property similar to the og-description so that we are not limited to the content at the start of the article.

If you agree, I'm happy to do this.

Social Media Sharing Bugs and Enhancements

  • Change the Twitter Sharing method to use the new Web Intent.
  • Consolidate the JS functions that handle the popup window.
  • Change the display of the sharing buttons for mobile devices so that they are static at the end of the article's content. - Moved to a new issue to avoid delays #GH-68

Develop and Design the User Picks in newsletter layout and the latest contributors in the newsletter landing page.

When we have user contributions to the newsletter, the user_pick section should be design and the newsletter landing page should be refactored/tested.

Contributors:

An include showing up to three contributors, including a profile photo and links to GH, Twitter, website and LinkedIn if and what is available. My opinion is that precedence should be given to contributors which are not team members at LearnK8s and team members should only be shown while there are less than 3 third-party contributors. Third party contributors are community members that have submitted links to a newsletter issue (in the "Your Picks" section).

In the newsletter landing page there should be a condition stating that if contributors are specified in the front-matter then the _includes/newsletter/contributors/static.html should be included, otherwise, the ``_includes/newsletter/contributors/latest.html` will be included as per specs above.

  • Develop an include as per above specs.
  • Ability to override which contributors to display in the front-matter.
<!--

  first, loop through all the issues until we make up three contributors that have at least their full name and their avatar.

  if there's not enough contributors, then they can be manually set in frotn matter. The contributors in front matter will take precedence over the latest ones.


-->

{% assign contributors_number = 0 %}
{% assign contributors = "" %}

{% for issue in site.newsletter %}
  {% if contributors_number < 3 %}
    {% if issue.user_pick %}
      {% for pick in issue.user_pick %}
        {% if pick.user_full_name && pick.user_avatar %}
          {% if contributors_number > 0 %}
          {% assign contributors = contributors | append: ',' }} %}
          {% endif %}
          {% assign contributors = contributors | append: issue.issue | append: "-" | append: forloop.index %}
          {% assign contributors_number = contributors_number | | plus: 1 %}
        {% endif %}
      {% endfor %}
    {% endif %}
  {% endif %}
{% endfor %}

{{ contributors }}

Investigate RSS feed

Readers expressed the interest in subscribing to an RSS feed.

  • Investigate how to add the RSS feed to Jekyll.

  • Install the plugin

  • Test locally. Result: It doe snot work with custom collections.

  • Time for Keithy to develop yet another Jekyll Plugin. I'll be quick this time.

  • Deploy to Netlify and test

  • Add a link somewhere.

One big cluster vs. many small clusters (blog post idea)

Should you have one big cluster or many small clusters for your applications?

If you have 10 applications, should you run each of them on its own small cluster, or run all of them on one big cluster?

Related to "Should you have many small nodes ore few big nodes in your cluster?" blog post.

Here the level of granularity (to split across the small or big clusters) are applications, not pods like in the related article.

Document how to add images to blog posts.

Hi @danielepolencic ,

I'm trying to add an image to a blog post but cannot get it to work. I first copied your image tag from the "smaller images" post and updated the link but I cannot understand how the "link_blog" tag works. Can you please document this in Readme.

Thanks.

launch failed: with fix

bundle exec jekyll server -H 0.0.0.0 --incremental

root@a7f3fe851bb1:/app# bundle exec jekyll server -H 0.0.0.0 --incremental
Configuration file: /app/_config.yml
Source: /app
Destination: /app/_site
Incremental build: enabled
Generating...
Conversion error: Jekyll::Converters::Scss encountered an error while converting 'assets/style.scss':
File to import not found or unreadable: tachyons-sass/tachyons.scss. on line 1
jekyll 3.7.3 | Error: File to import not found or unreadable: tachyons-sass/tachyons.scss. on line 1

Fix

npm install --save tachyons-sass

Use srcset for author avatar

The current avatar image in a blog post is oversized.

We should change the default image from:

<img src='assets/authors/daniel_weibel.jpg' alt='Daniel Weibel' />

to

<img src='assets/authors/image-64x64.jpg' alt='<name>' srcSet="
examples/images/image-64x64.jpg 1x, 
examples/images/image-128x128.jpg 2x
"/>

You can find more info about srcset here: https://www.smashingmagazine.com/2014/05/responsive-images-done-right-guide-picture-srcset/

Update al author avatars to use srcSet.

Kubernetes best practices checklist

Kubernetes best practices v2

Features for v2 of the production best practices checklist

  1. Uniform structure for all items
    • Proposal: What?, Why?, How?, References
    • Makes it easier to comprehend items (and easier to write them)
  2. Organise items by tags
    • No hardcoded categories. Makes it easier to discover items, but also to add items: no need to decide which category to add an item to, just add the item and assign it a set of relevant tags.
  3. Incremental search
    • Incremental search that displays matching items as the search term is typed.
    • Search based on title, content, and possibly tags (if the tag-based organisation is implemented)
  4. Tag selection
    • Display all available tags and allow to filter out the items matching one or more selected tag (if the tag-based organisation is implemented)
  5. Table of contents
    • If not using a tab-based system, include a table of contents with all items
    • Example: https://webconverger.com/faq/
    • Could also be used with a tag-based system to give a concise overview of the currently selected items

Develop & Design a LearnK8s Newsletter and related tasks

As per discussion on #GH-47 and learnk8s/team#15 The landing page should match the following design:

image
mockup#1

and the newsltter itself should match this one:

image
mockup#2

The deliverables of this EPIC are:

  • A Landing Page for the newsletter, encouraging subscription as per mockup#1

    • Reviewed?.
  • A HTML template for the newsletter itself as per mockup#2

    • Reviewed?.
  • A Newsletter Archive Page containing a list of past newsletters. - may need to be revised once we have more than one or a few publications.

    • Reviewed?.
  • A Newsletter email template stored in sendinblue containing the newsletter itself with some changes to the footer (such as a link to unsubscribe) and removal of the top navigation. (current issue is how to get the CSS -> maybe using an external link? -> depends on sendinblue.

    • Reviewed?.
  • A dedicated list of subscribers hosted on sendinblue

    • Reviewed?.

Please do not merge the PR #GH-90 until all the above tasks have been ticked off !!!

Development tasks

Initial:

  • Develop a _newsletter collection.

    • Add permalink and output properties.
  • Create a blank archive page in newsletter-archive/index.html

    • Include a draft for loop for issues within the collection so that I
      can test links etc.
  • Create a blank landing page for the newsletter subscription

    • Should be served under /newsletter.
    • Include a draft link to the archive page and test permalink (always a
      headache).
  • Add a menu item in top navigation of the website to the newsletter
    landing page.

  • Add a menu item in footer of the website to the newsletter landing page.

Newsletter template:

  • Setup a dummy / first issue newsletter under
    _newsletter/issue-1/index,md.

  • Setup a newsletter template which will handle all front matter and includes for all the sections of the newsletter.

  • Must include SEO and OG data.

  • Should have an OG image. I think the image should be the same across all issues.

  • Should include the GA snippet.

  • Fix issue with images not getting loaded (as tested on netflify: https://deploy-preview-90--learnk8s.netlify.com/newsletter/issue-1)

  • Test that once the image issue is fixed, the image is tweeted from the meme include.

    • This is not possible unless the image is already on twitter and a twitter pic url is supplied. Refer to the _pages/newsletter/README.md file for more information.
  • GitHub's star and fork buttons should link to their respective functionality. Starring cannot be linked (without considerable JS), but forking can.

  • Ability to add content at the end of the newsletter's issue.

  • Abiity to add custom content "easily".

  • Must be able to specify the sort order for each section, including the file's content.

  • Include the static "Enjoyed this issue?" section.

  • Include a link to the archive.

  • Include the static footer.

  • Design the newsletter view for desktop and mobile screens.

    • Must replicate some styles for the includes (containing sections)
  • Awaiting review and action for the font-family

  • Awaiting decision on the skype icon.

  • Awaiting instructions regarding the dib class on anchor tags.

Archive Page:

  • Includes a reverse-chrono list of past issues.

    • with the issue number and date of publication as the title.
    • Includes an excerpt to summarise the issue.
  • Issue links should open in a separate tab because the newsletter itself does not have the website's navigation and thus the reader won't be able to come to the archive page _unless they hit the back button or use the back navigation shortcut.

  • Finalise design:

    • Large screens
    • Medium screens
    • Small screens
  • Submit for review.

  • Mark as complete.

Landing Page:

Subscription development tasks:

  • Get API (or similar) details from SendInBlue to link the subscription form with the new contact list.

    • WE obviously cannot use any server-side tech in a static site! Silly me!.
  • Develop an initial subscribe form and link to SendInBlue.

  • Test Integration.

  • Test validation for the form fields.

  • Try to reduce and localise the SendInBlue dependencies .

  • Setup additional tasks for the response page after subscribing - depending on how SendInBlue handles this. NO need of additional tasks other than designing the notifications.

  • Review tasks for the design of a welcome email - depending on how SendInBlue handles this. No longer needed. NO emails will be sent out as there's a confirmation message on screen.

Issue Preview:

A preview of the latest issue should be automatically displayed.

  • Develop an include that gets an iFrame (or similar tech) of the latest issue. The preview will be cropped to match the mockup.

  • Include the preview on the landing page.

  • Refactor this so that if an issue number is specified as a front-matter property, then this issue will be previewed as opposed to the latest one.

Contributors:

These will be manually set in front-matter until we have actual user contributions as per #95.

  • Develop _includes/newsletter/contributors/static.html.
  • Include in the landing page with the front-matter for 3 contributors.

Design:

  • Confirm the submissions' email address.

  • Add a link for user submission.

  • Design the landing page:

    • Large screens.
    • Medium screens.
    • Small screens.
  • Ask for review.

  • Complete the task.

Newsletter email template:

  • Must include an unsubscribe link.
  • Must closely match the browser version of the newsletter.

Layout

  • Add Google Tag Manager to newsletter layout as per #105

Documentation:

  • Prepare and test documentation under _pages/newsletter/README.md
    • Should describe how to add custom sections.
  • Add a link to the above from the main readme file.

Release:

  • Waiting response regarding the existing contacts on Netlify and the existing subscribe form in footer.

  • Remove the dummy issue from _newsletter/issue-1.

    • Not sure if possible but maybe name the dummy issue as issue-0 and then remove it from the archive list but have it available as a preview in the landing page. Possibly add meta tags or an entry in robots file so that it is not indexed.
  • Update link to the archive in landing page so that it doesn't show up unless there are past issues (excl. the dummy one).

Install Jekyll Redirect From plugin

The plugin does not work well with custom collections and does not work at all with our permalinks.

I have added a new layout for automatic redirects and also some instructions on how to use it.

Pod Readiness confusion in Troubleshooting Deployments guide

Throughout https://learnk8s.io/troubleshooting-deployments there seems to be some confusion between the containers of a pod being ready and the pod itself being ready.

It is not possible to determine that a pod is ready from the default kubectl get pods output - only whether it is Running and how many of its containers are ready.

It is (unfortunately) possible for all of the containers in a pod to be Ready but the the Pod itself not to be Ready.

This is an important distinction and alters the fault finding flow.

You can see if a pod is ready in the Conditions section of kubectl describe pods...

Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True

Develop an easier way to include external links in articles' content.

I'll develop an include that takes variables for the anchor's link options.

Update as per #GH-83

  • Look into extending Jekyll or the MD processor so that all external links are automatically opened in a new window and have the correct "rel" attribute.

  • Develop the feature and run integration tests.

  • Bear in mind and check previous posts.

  • Remove the include from the previous PR.

  • Updated the docs. Possibly just remove the content from the previous PR.

Top and Footer navigation not showing all links on smaller screens.

@danielepolencic Is this intentional?

  • On XS screen sizes the top navigation does not show.
  • On SM screen sizes the top navigation only shows some links.

Same goes for the footer.

I think I should rebuild the navigation so that a "burger menu" is shown for XS and SM screens. I also think that I should rebuild the footer so that all content is shown in a responsive manner.

Please let me know your thoughts. I'm able to work on this task.

Blog list will not show more than 5 posts and a link to an archive is not present.

This needs to fixed before publishing the next 2 articles as of today the 12th June 2018.

  • create an additional dummy post for testing.

  • Issue exists due to post_limit in _config file?

  • Plan according to the above:

    • Install Jekyll-paginate-v2.
    • Configure the plugin.
    • Test it works as expected.
    • Add default front-matter setting so that all posts are automatically paginated and test.
    • Apply any required designs such as buttons' styling etc.
  • Remove dummy post.

  • Create PR and assign to a reviewer.

  • Get PR merged and close.

Proposal: add info about non-namespaced resources in "how many clusters"-article

Thank you for very informational and clearly written article https://learnk8s.io/how-many-clusters.

For the cons side of a large shared cluster, the article mentions cluster-wide services like DNS and shared resources like CPU and memory. I would like to propose mentioning also that certain Kubernetes resource kinds are not namespaced and therefore cannot be administered in isolation.

Example use case for custom resource definition (CRD) resource kind:

Two users are working in separate namespaces in a shared cluster. Users would like to deploy a particular version of operator "SampleDB". The operator requires installation of CRDs, which are not namespaced and therefore cannot be managed independently by the users working on the shared cluster. The deployment and version upgrades need to be done by the cluster administrator in coordination with the users.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.