-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathalgolia.json
More file actions
1 lines (1 loc) · 91.8 KB
/
algolia.json
File metadata and controls
1 lines (1 loc) · 91.8 KB
1
[{"content":"Jerome\u0026amp;rsquo;s Blog After too long (5 years), came back to the page. Will start to collect links and projects pertinent to Deep Learning, CNN, RNN\u0026amp;hellip;.\n","date":1677888000,"description":"Text about this post","lastmod":"2023-03-04T00:00:00Z","objectID":"3976528693a0108357f4928017600865","permalink":"https://jbrette.github.io/","publishdate":"2023-03-04T00:00:00Z","title":"Home title"},{"content":"UIP\n","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"6083a88ee3411b0d17ce02d738f69d47","permalink":"https://jbrette.github.io/about/","publishdate":"2018-01-01T00:00:00Z","title":"About"},{"categories":["wiki","ai","wip"],"content":"Goal Kubeflow is a process that allows you to deploy machine learning infrastructure on top of a Kubernetes cluster. The goal here is to deploy Kubeflow first on a local simple Kubernetes cluster running in a VM and then deploy it in the Kubernetes PI Cluster\nKey Aspects WIP Deploy WIP Conclusion WIP Reference Links Kubernetes cross build ","date":1531958400,"description":"Build and Deploy MachineLearning Kubeflow Framework","lastmod":"2018-07-19T00:00:00Z","objectID":"f252eb76666f83e56c23078a921c1a65","permalink":"https://jbrette.github.io/ai_ml/2018-07-19-a/","publishdate":"2018-07-19T00:00:00Z","tags":["kubernetes","machinelearning","rpi"],"title":"Kubeflow"},{"content":"\u0026amp;nbsp;Note The page has to be updated\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"a621d00e7755abecd60274c92147210e","permalink":"https://jbrette.github.io/ai_ml/","publishdate":"2018-01-01T00:00:00Z","title":"AI \u0026 ML"},{"categories":["wiki","blockchain","wip"],"content":"Goal Install Ethereum on Kubernetes and PI\nKey Aspects WIP Deploy WIP Conclusion WIP Reference Links Part3 ","date":1532044800,"description":"Deploy Ethereum Blockchain","lastmod":"2018-07-20T00:00:00Z","objectID":"87fa0018cdc56a9f3342438ba6c642a9","permalink":"https://jbrette.github.io/archives/blockchain/2018-07-20-a/","publishdate":"2018-07-20T00:00:00Z","tags":["kubernetes","blockchain","rpi"],"title":"Ethereum"},{"content":"\u0026amp;nbsp;Note The document hierarchy is unlimite. It also means that the menu levels is unlimited levels.\nThe menu levels has up to 5 levels of indentation. After that there is no indentation.\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"9cf6e7c4aadd3f2ba871bbc89701bdc5","permalink":"https://jbrette.github.io/archives/chapter4/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4 (unlimited levels)"},{"content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"44a83634690289a360cc65a0978c1ff7","permalink":"https://jbrette.github.io/archives/chapter4/chapter4-1/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4-1"},{"content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"445dc96fdbc2e5fcd93d14958c8e1f4a","permalink":"https://jbrette.github.io/archives/chapter4/chapter4-1/chapter4-1-1/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4-1-1"},{"content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"b1d403c18216d0da49b1d93f1311d461","permalink":"https://jbrette.github.io/archives/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4-1-1-1"},{"content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"6f77154d54518915bdd4aec56ed4d8ab","permalink":"https://jbrette.github.io/archives/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4-1-1-1-1"},{"content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"2951b558b95a5e5bb27f0483bc8744dd","permalink":"https://jbrette.github.io/archives/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4-1-1-1-1-1"},{"content":"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"cdd4b77c2a060e0b77a28f24ab0d9fef","permalink":"https://jbrette.github.io/archives/chapter4/chapter4-1/chapter4-1-1/chapter4-1-1-1/chapter4-1-1-1-1/chapter4-1-1-1-1-1/chapter4-1-1-1-1-1-1/","publishdate":"2017-10-17T15:26:15Z","title":"Chapter 4-1-1-1-1-1-1"},{"content":"Introduction This tutorial will show you how to create a simple theme in Hugo. I assume that you are familiar with HTML, the bash command line, and that you are comfortable using Markdown to format content. I\u0026amp;rsquo;ll explain how Hugo uses templates and how you can organize your templates to create a theme. I won\u0026amp;rsquo;t cover using CSS to style your theme.\nWe\u0026amp;rsquo;ll start with creating a new site with a very basic template. Then we\u0026amp;rsquo;ll add in a few pages and posts. With small variations on that, you will be able to create many different types of web sites.\nIn this tutorial, commands that you enter will start with the \u0026amp;ldquo;$\u0026amp;rdquo; prompt. The output will follow. Lines that start with \u0026amp;ldquo;#\u0026amp;rdquo; are comments that I\u0026amp;rsquo;ve added to explain a point. When I show updates to a file, the \u0026amp;ldquo;:wq\u0026amp;rdquo; on the last line means to save the file.\nHere\u0026amp;rsquo;s an example:\n## this is a comment $ echo this is a command this is a command ## edit the file $ vi foo.md +++ date = \u0026amp;quot;2014-09-28\u0026amp;quot; title = \u0026amp;quot;creating a new theme\u0026amp;quot; +++ bah and humbug :wq ## show it $ cat foo.md +++ date = \u0026amp;quot;2014-09-28\u0026amp;quot; title = \u0026amp;quot;creating a new theme\u0026amp;quot; +++ bah and humbug $ Some Definitions There are a few concepts that you need to understand before creating a theme.\nSkins Skins are the files responsible for the look and feel of your site. It’s the CSS that controls colors and fonts, it’s the Javascript that determines actions and reactions. It’s also the rules that Hugo uses to transform your content into the HTML that the site will serve to visitors.\nYou have two ways to create a skin. The simplest way is to create it in the layouts/ directory. If you do, then you don’t have to worry about configuring Hugo to recognize it. The first place that Hugo will look for rules and files is in the layouts/ directory so it will always find the skin.\nYour second choice is to create it in a sub-directory of the themes/ directory. If you do, then you must always tell …","date":1411862400,"description":"","lastmod":"2014-09-28T00:00:00Z","objectID":"010a923d010a1653c33bf590ff9a5254","permalink":"https://jbrette.github.io/archives/creating-a-new-theme/","publishdate":"2014-09-28T00:00:00Z","title":""},{"categories":["Development","golang"],"content":"Hugo uses the excellent Go html/template library for its template engine. It is an extremely lightweight engine that provides a very small amount of logic. In our experience that it is just the right amount of logic to be able to create a good static website. If you have used other template systems from different languages or frameworks you will find a lot of similarities in Go templates.\nThis document is a brief primer on using Go templates. The Go docs provide more details.\nIntroduction to Go Templates Go templates provide an extremely simple template language. It adheres to the belief that only the most basic of logic belongs in the template or view layer. One consequence of this simplicity is that Go templates parse very quickly.\nA unique characteristic of Go templates is they are content aware. Variables and content will be sanitized depending on the context of where they are used. More details can be found in the Go docs.\nBasic Syntax Golang templates are HTML files with the addition of variables and functions.\nGo variables and functions are accessible within {{ }}\nAccessing a predefined variable \u0026amp;ldquo;foo\u0026amp;rdquo;:\n{{ foo }} Parameters are separated using spaces\nCalling the add function with input of 1, 2:\n{{ add 1 2 }} Methods and fields are accessed via dot notation\nAccessing the Page Parameter \u0026amp;ldquo;bar\u0026amp;rdquo;\n{{ .Params.bar }} Parentheses can be used to group items together\n{{ if or (isset .Params \u0026amp;quot;alt\u0026amp;quot;) (isset .Params \u0026amp;quot;caption\u0026amp;quot;) }} Caption {{ end }} Variables Each Go template has a struct (object) made available to it. In hugo each template is passed either a page or a node struct depending on which type of page you are rendering. More details are available on the variables page.\nA variable is accessed by referencing the variable name.\n\u0026amp;lt;title\u0026amp;gt;{{ .Title }}\u0026amp;lt;/title\u0026amp;gt; Variables can also be defined and referenced.\n{{ $address := \u0026amp;quot;123 Main St.\u0026amp;quot;}} {{ $address }} Functions Go template ship with a few functions which …","date":1396396800,"description":"","lastmod":"2014-04-02T00:00:00Z","objectID":"9dae238884833d5c2020bb8815aab50d","permalink":"https://jbrette.github.io/archives/goisforlovers/","publishdate":"2014-04-02T00:00:00Z","tags":["go","golang","templates","themes","development"],"title":"(Hu)go Template Primer"},{"categories":["Development","golang"],"content":"Step 1. Install Hugo Go to Hugo releases and download the appropriate version for your OS and architecture.\nSave it somewhere specific as we will be using it in the next step.\nMore complete instructions are available at Install Hugo\nStep 2. Build the Docs Hugo has its own example site which happens to also be the documentation site you are reading right now.\nFollow the following steps:\n Clone the Hugo repository Go into the repo Run hugo in server mode and build the docs Open your browser to http://localhost:1313 Corresponding pseudo commands:\ngit clone https://github.com/spf13/hugo cd hugo /path/to/where/you/installed/hugo server --source=./docs \u0026amp;gt; 29 pages created \u0026amp;gt; 0 tags index created \u0026amp;gt; in 27 ms \u0026amp;gt; Web Server is available at http://localhost:1313 \u0026amp;gt; Press ctrl+c to stop Once you\u0026amp;rsquo;ve gotten here, follow along the rest of this page on your local build.\nStep 3. Change the docs site Stop the Hugo process by hitting Ctrl+C.\nNow we are going to run hugo again, but this time with hugo in watch mode.\n/path/to/hugo/from/step/1/hugo server --source=./docs --watch \u0026amp;gt; 29 pages created \u0026amp;gt; 0 tags index created \u0026amp;gt; in 27 ms \u0026amp;gt; Web Server is available at http://localhost:1313 \u0026amp;gt; Watching for changes in /Users/spf13/Code/hugo/docs/content \u0026amp;gt; Press ctrl+c to stop Open your favorite editor and change one of the source content pages. How about changing this very file to fix the typo. How about changing this very file to fix the typo.\nContent files are found in docs/content/. Unless otherwise specified, files are located at the same relative location as the url, in our case docs/content/overview/quickstart.md.\nChange and save this file.. Notice what happened in your terminal.\n\u0026amp;gt; Change detected, rebuilding site \u0026amp;gt; 29 pages created \u0026amp;gt; 0 tags index created \u0026amp;gt; in 26 ms Refresh the browser and observe that the typo is now fixed.\nNotice how quick that was. Try to refresh the site before it\u0026amp;rsquo;s finished building. I double dare you. Having nearly …","date":1396396800,"description":"","lastmod":"2014-04-02T00:00:00Z","objectID":"22e77f2d9c9bca3a29d437df07a24a8b","permalink":"https://jbrette.github.io/archives/hugoisforlovers/","publishdate":"2014-04-02T00:00:00Z","tags":["go","golang","hugo","development"],"title":"Getting Started with Hugo"},{"content":"Move static content to static Jekyll has a rule that any directory not starting with _ will be copied as-is to the _site output. Hugo keeps all static content under static. You should therefore move it all there. With Jekyll, something that looked like\n▾ \u0026amp;lt;root\u0026amp;gt;/ ▾ images/ logo.png should become\n▾ \u0026amp;lt;root\u0026amp;gt;/ ▾ static/ ▾ images/ logo.png Additionally, you\u0026amp;rsquo;ll want any files that should reside at the root (such as CNAME) to be moved to static.\nCreate your Hugo configuration file Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the Hugo configuration documentation for details.\nSet your configuration publish folder to _site The default is for Jekyll to publish to _site and for Hugo to publish to public. If, like me, you have _site mapped to a git submodule on the gh-pages branch, you\u0026amp;rsquo;ll want to do one of two alternatives:\n Change your submodule to point to map gh-pages to public instead of _site (recommended).\n git submodule deinit _site git rm _site git submodule add -b gh-pages git@github.com:your-username/your-repo.git public Or, change the Hugo configuration to use _site instead of public.\n { .. \u0026amp;quot;publishdir\u0026amp;quot;: \u0026amp;quot;_site\u0026amp;quot;, .. } Convert Jekyll templates to Hugo templates That\u0026amp;rsquo;s the bulk of the work right here. The documentation is your friend. You should refer to Jekyll\u0026amp;rsquo;s template documentation if you need to refresh your memory on how you built your blog and Hugo\u0026amp;rsquo;s template to learn Hugo\u0026amp;rsquo;s way.\nAs a single reference data point, converting my templates for heyitsalex.net took me no more than a few hours.\nConvert Jekyll plugins to Hugo shortcodes Jekyll has plugins; Hugo has shortcodes. It\u0026amp;rsquo;s fairly trivial to do a port.\nImplementation As an example, I was using a custom image_tag plugin to generate figures with caption when running Jekyll. As I read about shortcodes, I found Hugo had a nice built-in shortcode that does exactly the …","date":1394409600,"description":"","lastmod":"2014-03-10T00:00:00Z","objectID":"34ddcd04a94cda0ad406d0a226e67cc3","permalink":"https://jbrette.github.io/archives/migrate-from-jekyll/","publishdate":"2014-03-10T00:00:00Z","title":""},{"content":"Headings Heading level 1 Heading level 2 Heading level 3 Heading level 4 Heading level 5 Heading level 6 Paragraph Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\nEmphasis Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\nHorizontal Rule Lists Unordered Lists Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Ordered Lists Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Lorem ipsum dolor sit amet, consectetur adipisicing elit Code puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; puts …","date":1508253975,"description":"this is a sample document.","lastmod":"2017-10-17T15:26:15Z","objectID":"7857b67901639b276f0a6fe90c6e0cbc","permalink":"https://jbrette.github.io/archives/sample/","publishdate":"2017-10-17T15:26:15Z","title":"Sample Document"},{"content":"See https://gohugo.io/content-management/shortcodes/#use-hugos-built-in-shortcodes\nfigure 2 People Sitting With View of Yellow Flowers during Daytime gist highlight \u0026amp;lt;section id=\u0026amp;#34;main\u0026amp;#34;\u0026amp;gt; \u0026amp;lt;div\u0026amp;gt; \u0026amp;lt;h1 id=\u0026amp;#34;title\u0026amp;#34;\u0026amp;gt;{{ .Title }}\u0026amp;lt;/h1\u0026amp;gt; {{ range .Data.Pages }} {{ .Render \u0026amp;#34;summary\u0026amp;#34;}} {{ end }} \u0026amp;lt;/div\u0026amp;gt; \u0026amp;lt;/section\u0026amp;gt; tweet Hugo 0.24 Released: Big archetype update + @Netlify _redirects etc. file supporthttps://t.co/X94FmYDEZJ #gohugo #golang @spf13 @bepsays\n\u0026amp;mdash; GoHugo.io (@GoHugoIO) June 21, 2017 vimeo youtube ","date":1508253975,"description":"calling built-in Shortcodes into your content files.","lastmod":"2017-10-17T15:26:15Z","objectID":"f0f54ebabff2f43fb5c825590669b45c","permalink":"https://jbrette.github.io/archives/sample/build-in-shortcodes/","publishdate":"2017-10-17T15:26:15Z","title":"Build-in Shortcodes"},{"content":"Code highlight with clipboard sample/custom-shortcodes.html Copy{{\u0026amp;lt; highlight html \u0026amp;gt;}} \u0026amp;lt;section id=\u0026amp;#34;main\u0026amp;#34;\u0026amp;gt; \u0026amp;lt;div\u0026amp;gt; \u0026amp;lt;h1 id=\u0026amp;#34;title\u0026amp;#34;\u0026amp;gt;{{ .Title }}\u0026amp;lt;/h1\u0026amp;gt; {{ range .Pages }} {{ .Render \u0026amp;#34;summary\u0026amp;#34;}} {{ end }} \u0026amp;lt;/div\u0026amp;gt; \u0026amp;lt;/section\u0026amp;gt; {{\u0026amp;lt; /highlight \u0026amp;gt;}} Alert panel Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Alert panel using HTML Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Alert panel using Markdown (use the % character) primary I\u0026amp;rsquo;m an inline-style link with title\n One Two Three Alert panel with titles and colors primary Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, …","date":1508253975,"description":"calling custom Shortcodes into your content files.","lastmod":"2017-10-17T15:26:15Z","objectID":"4d079f6f0e5a62567dc876e0a0f1a156","permalink":"https://jbrette.github.io/archives/sample/custom-shortcodes/","publishdate":"2017-10-17T15:26:15Z","title":"Custom Shortcodes"},{"content":"Headings # Heading level 1 ## Heading level 2 ### Heading level 3 #### Heading level 4 ##### Heading level 5 ###### Heading level 6 Emphasis *Italic* **Bold** ~~Strikethrough~~ Horizontal Rule --- Lists Unordered Lists - First item - Second item - Third item - Fourth item or\n* First item * Second item * Third item * Fourth item Ordered Lists 1. First item 2. Second item 3. Third item 4. Fourth item Code ```ruby puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; puts \u0026amp;#39;The best way to log and share programmers knowledge.\u0026amp;#39; ``` Inline code `#ffce44` Blockquote \u0026amp;gt; this is a blockquote. this is a blockquote. this is a blockquote. this is a blockquote. this is a blockquote. this is a blockquote. \u0026amp;gt; \u0026amp;gt; this is a blockquote. \u0026amp;gt; \u0026amp;gt; this is a blockquote. \u0026amp;gt; \u0026amp;gt; this is a blockquote Links [Hugo Techdoc Theme demo](https://themes.gohugo.io/theme/hugo-theme-techdoc/) Table | header | header | header | |------------|-------------|--------------| | Lorem | Lorem | Lorem | | ipsum | ipsum | ipsum | | dolor | dolor | dolor | | sit | sit | sit | | amet | amet | amet | Images  Image with link [](https://www.pexels.com/photo/2-people-sitting-with-view-of-yellow-flowers-during-daytime-196666/) Definition Lists First Term : This is the definition. Second Term : This is the definition. : This is the definition. Task Lists - [x] to do task 1 - [ ] to do task 2 - [ ] to do task 3 Footnotes this is a footnote,[^1] and this is the second footnote.[^2] [^1]: This is the first footnote. [^2]: This is the second footnote. ","date":1605626775,"description":"calling custom Shortcodes into your content files.","lastmod":"2020-11-17T15:26:15Z","objectID":"481de93d289777cfb89604cd2dbe15c6","permalink":"https://jbrette.github.io/archives/sample/markdown-syntax/","publishdate":"2020-11-17T15:26:15Z","title":"Markdown Syntax"},{"content":"\u0026amp;nbsp;Note Search Shortcode powered by Algolia\nYou can create a search page just by adding search shortcode.\n var search = instantsearch({ indexName: \u0026#39;hugo-demo-techdoc\u0026#39;, searchClient: algoliasearch( \u0026#39;7W4SAN4PLK\u0026#39;, \u0026#39;cbf12a63ff72d9c5dc0c10c195cf9128\u0026#39; ), routing: true, }); const renderHits = (renderOptions, isFirstRender) = { const { hits } = renderOptions; document.querySelector(\u0026#39;#hits\u0026#39;).innerHTML = ` ${hits .map( item = `${ item.title }${ dayjs(item.lastmod).format(\u0026#34;YYYY/MM/DD\u0026#34;) } - ${ item.description ? item.description : item.content.length 200 ? item.content.substring( 0, 200 ) + \u0026#39;...\u0026#39; : item.content }\n` ) .join(\u0026#39;\u0026#39;)} `; }; const customHits = instantsearch.connectors.connectHits( renderHits ); search.addWidgets([ instantsearch.widgets.searchBox({ container: \u0026#39;#searchbox\u0026#39;, showReset: false, }), instantsearch.widgets.stats({ container: \u0026#39;#stats\u0026#39;, }), customHits({ container: document.querySelector(\u0026#39;#hits\u0026#39;), }), instantsearch.widgets.pagination({ container: \u0026#39;#pagination\u0026#39;, maxPages: 20, }) ]); search.start(); ","date":1585594146,"description":"","lastmod":"2020-03-30T18:49:06Z","objectID":"2c2f6cf914d6c53452e242ca40b736d8","permalink":"https://jbrette.github.io/archives/sample/search-shortcode/","publishdate":"2020-03-30T18:49:06Z","title":"Search Shortcode"},{"content":"\u0026amp;nbsp;Note The TableOfContents field with true in your content’s front matter will render a table of contents.\nTableOfContents: true Setting the built-in .TableOfContents variables can configure what heading levels you want to include in TOC. See the built-in .TableOfContents variables settings\n Section 1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\nSection 2 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\nSection 3 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\nSection 3 - 1 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu …","date":1508253975,"description":"calling custom Shortcodes into your content files.","lastmod":"2017-10-17T15:26:15Z","objectID":"fd0da61d8baec6f7b41ba4c7ba55eea1","permalink":"https://jbrette.github.io/archives/sample/table-of-contents/","publishdate":"2017-10-17T15:26:15Z","title":"Table of Contents"},{"content":"aaaaaa\nvvvv\naaa\n","date":1508248845,"description":"","lastmod":"2017-10-17T14:00:45Z","objectID":"93670bf9cab42e0169e3ce382c755e59","permalink":"https://jbrette.github.io/blog/hello_world/","publishdate":"2017-10-17T14:00:45Z","title":"Hello_world"},{"content":"aaaaaa\nvvvv\naaa\n","date":1510927245,"description":"","lastmod":"2017-11-17T14:00:45Z","objectID":"31c23d923d63baa3965e3789ebf4b1a3","permalink":"https://jbrette.github.io/blog/hello_world1/","publishdate":"2017-11-17T14:00:45Z","title":"Hello_world1"},{"content":"aaaaaa\nvvvv\naaa\n","date":1513519245,"description":"","lastmod":"2017-12-17T14:00:45Z","objectID":"fa1a6d2f3f583c420f9fbca139058eb5","permalink":"https://jbrette.github.io/blog/hello_world2/","publishdate":"2017-12-17T14:00:45Z","title":"Hello_world2"},{"content":"aaaaaa\nvvvv\naaa\n","date":1508248845,"description":"","lastmod":"2017-10-17T14:00:45Z","objectID":"9a98ee2c3742d5ec977b28f6df756dec","permalink":"https://jbrette.github.io/entry/hello_world/","publishdate":"2017-10-17T14:00:45Z","title":"Hello_world"},{"content":"aaaaaa\nvvvv\naaa\n","date":1510927245,"description":"","lastmod":"2017-11-17T14:00:45Z","objectID":"a8ae0d1b823f41f12d7995f10a5c2dde","permalink":"https://jbrette.github.io/entry/hello_world1/","publishdate":"2017-11-17T14:00:45Z","title":"Hello_world1"},{"content":"aaaaaa\nvvvv\naaa\n","date":1513519245,"description":"","lastmod":"2017-12-17T14:00:45Z","objectID":"8628bf7bda73a7617888d17ad2064262","permalink":"https://jbrette.github.io/entry/hello_world2/","publishdate":"2017-12-17T14:00:45Z","title":"Hello_world2"},{"categories":["wiki","iot"],"content":"Goal HomeAssistant running on Raspberry PI is one of way where you don\u0026amp;rsquo;t have to rely on outside services to orchestrate your IOT. Then comes the issues of high availability of the software if only running on one PI. By dockerizing the software first, this open the doors to leverage a kubernetes cluster to ensure HA of the software\nKey Aspects Use the 3 nodes Raspeberry Cluster Access the WIFI, ZWave and Zigbee network Leverage the Nortek HUSBZB-1 Zwave and Zigbee dongle. Install Home Assistant on node 2 of the cluster What OS Home Assistant haas.io does not support Raspberry 3 B+ yet. haas.io is based on ResinOS. ResinOS is not using docker anymore but balena which does not support kubernetes yet See Issue Continue to use HyperiotOS Install AppArmor and download docker container cat newpgklist apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat software-properties-common for i in `cat newpgklist` do sudo apt-get install -y $i done Download and run the installation script. Will attempt to replace it by Kubernetes/Helm script.\ncurl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install \u0026amp;gt; hassio_install ./hassio_install -m raspberrypi3 Installed Services hassio-apparmor service cat /etc/systemd/system/hassio-apparmor.service [Unit] Description=Hass.io AppArmor Wants=hassio-supervisor.service Before=docker.service hassio-supervisor.service [Service] Type=oneshot RemainAfterExit=true ExecStart=/usr/sbin/hassio-apparmor [Install] WantedBy=multi-user.target cat /usr/sbin/hassio-apparmor #!/bin/sh set -e # Load configs CONFIG_FILE=/etc/hassio.json # Read configs DATA=\u0026amp;quot;$(jq --raw-output \u0026#39;.data // \u0026amp;quot;/usr/share/hassio\u0026amp;quot;\u0026#39; ${CONFIG_FILE})\u0026amp;quot; PROFILES_DIR=${DATA}/apparmor CACHE_DIR=\u0026amp;quot;${PROFILES_DIR}/cache\u0026amp;quot; REMOVE_DIR=\u0026amp;quot;${PROFILES_DIR}/remove\u0026amp;quot; # Exists AppArmor if ! command -v apparmor_parser \u0026amp;gt; /dev/null 2\u0026amp;gt;\u0026amp;amp;1; then echo \u0026amp;quot;[Warning]: …","date":1530662400,"description":"Install HomeAssistant on docker + Raspberry PI3","lastmod":"2018-07-04T00:00:00Z","objectID":"0404a49ccb94501cb2796043f7f0e878","permalink":"https://jbrette.github.io/iot/2018-07-04-a/","publishdate":"2018-07-04T00:00:00Z","tags":["docker","rpi","homeautomation"],"title":"HomeAssistant"},{"categories":["wiki","iot"],"content":"Goal OpenHAB running on Raspberry PI is one of way where you don\u0026amp;rsquo;t have to rely on outside services to orchestrate your IOT. Then comes the issues of high availability of the software if only running on one PI. By dockerizing the software first, this open the doors to leverage a kubernetes cluster to ensure HA of the software\nKey Aspects Use the 3 nodes Raspeberry Cluster Access the WIFI, ZWave and Zigbee network Leverage the Nortek HUSBZB-1 Zwave and Zigbee dongle. Try to install OpenHab on node 3 of the cluster (Picture to be update with Dongle on bottom node). Setup the host operating system Moved the dongle to the third node of the cluster. Check it is present\nlsusb Bus 001 Device 004: ID 10c4:8a2a Cygnal Integrated Products, Inc. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub ~~~ Check the tty. I think (not sure) AMA is irrelevant when using Docker. ~~~ ls -lt /dev/tty* crw-rw---- 1 root dialout 188, 0 Jul 7 08:12 /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 1 Jul 7 08:12 /dev/ttyUSB1 crw--w---- 1 root tty 4, 1 Jul 6 01:24 /dev/tty1 crw-rw---- 1 root dialout 204, 64 Jul 6 01:24 /dev/ttyAMA0 ~~~ Create the directory for OpenHAB data ~~~ mkdir /opt/openhab mkdir -p /opt/openhab/addons mkdir -p /opt/openhab/conf mkdir -p /opt/openhab/userdata ~~~ ## Download and Start OpenHAB Let\u0026#39;s download the OpenHAB image ~~~ docker pull openhab/openhab:2.3.0-armhf-debian ~~~ Multiple things have to be done. - Host networking allows access to the local Wifi network - Adding the /dev/ttyXXX to be let the OpenHAB access the dongle - EXTRACT_JAVA_OPTS to let the internal Java application access the dongle ~~~ docker run -d --name openhab \\ --net=host -v /etc/localtime:/etc/localtime:ro \\ -v /etc/timezone:/etc/timezone:ro \\ -v /opt/openhab/addons:/openhab/addons \\ -v …","date":1530748800,"description":"Install OpenHAB on docker + Raspberry PI3","lastmod":"2018-07-05T00:00:00Z","objectID":"48103dbfef463b76ef38822c78bf3302","permalink":"https://jbrette.github.io/iot/2018-07-05-a/","publishdate":"2018-07-05T00:00:00Z","tags":["docker","rpi","homeautomation"],"title":"OpenHAB"},{"categories":["wiki","iot"],"content":"Goal In order to transforme a PI into a home automation controller, it is necessary to add Zwave and ZigBee capabilities to the the Wifi and Bluetooth capabilities of the PI.\nKey Transform Raspberry-PI + Dongle into a SUC ZWave controller Try to use with OpenHAB or HomeAssistant Testing on the OpenHAB Container The OpenHAB architecture is Java based.\nTesting on the HomeAssistant Container HomeAssistant is Python based and relies on OpenZWave. Some of the data is also saved in SQLite. In both cases developping small Python scripts to investigate the setup seems to be the easiest way.\nCommands HomeAssistant seems to intialize ZWave support through the following code\n/usr/lib/python3.6/site-packages/homeassistant/components/zwave/__init__.py In the docker container itself.\npyozw_check -d /dev/ttyUSB0 ------------------------------------------------------------------------------- Import libs Try to import libopenzwave Try to import libopenzwave.PyLogLevels Try to get options Try to get manager Try to get python_openzwave version 0.4.3 Try to get python_openzwave full version python_openzwave version 0.4.3 (embed-cython / Jul 4 2018 - 18:58:22) Try to get openzwave version 1.4.2926 Try to get default config path /usr/lib/python3.6/site-packages/python_openzwave/ozw_config Try to destroy manager Try to destroy options Try to import openzwave (API) Logs OpenZWave.txt\n2018-07-07 05:11:04.866 Always, OpenZwave Version 1.4.2926 Starting Up 2018-07-07 05:11:20.242 Info, Setting Up Provided Network Key for Secure Communications 2018-07-07 05:11:20.242 Warning, Failed - Network Key Not Set 2018-07-07 05:11:20.243 Info, mgr, Added driver for controller /dev/ttyUSB0 2018-07-07 05:11:20.243 Info, Opening controller /dev/ttyUSB0 2018-07-07 05:11:20.243 Info, Trying to open serial port /dev/ttyUSB0 (attempt 1) 2018-07-07 05:11:20.245 Info, Serial port /dev/ttyUSB0 opened (attempt 1) 2018-07-07 05:11:20.245 Detail, contrlr, Queuing (Command) FUNC_ID_ZW_GET_VERSION: 0x01, 0x03, 0x00, …","date":1530835200,"description":"ZWave/ZigBee network and Linear HUSBZB‑1","lastmod":"2018-07-06T00:00:00Z","objectID":"c6c2f52d8aec5c47a648a634b8e9832f","permalink":"https://jbrette.github.io/iot/2018-07-06-a/","publishdate":"2018-07-06T00:00:00Z","tags":["homeautomation","wifi","zigbee","zwave","rpi"],"title":"ZWave/ZigBee"},{"content":"\u0026amp;nbsp;Note The page has to be updated\n ","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"bc99ab25cd56e1a0960e0272ac87f10a","permalink":"https://jbrette.github.io/iot/","publishdate":"2017-10-17T15:26:15Z","title":"IOT"},{"content":"\u0026amp;nbsp;Note The page has to be updated\n ","date":1508253975,"description":"","lastmod":"2017-10-17T15:26:15Z","objectID":"502bdad9aab5f63d6cd8ee2193901823","permalink":"https://jbrette.github.io/kubernetes/","publishdate":"2017-10-17T15:26:15Z","title":"Kubernetes"},{"categories":["wiki"],"content":"Goal Very often people associated Java to quite bulky and difficult to use in the microservice context, unless you have very large image containing the JRE. But since Java 9, Java did kind of catchup with golang on the subject. Where you can obtain a standalone executable when we running go build, java is now proposing jlink which always you to acheive a very similar result. The goal of this post is to build a container image as small as possible running Java.\nKey Aspects Use SCRATCH has base image to keep size minimum Simple HelloWorld Java 10 web server Create associated HELM chart for Kubernetes deployment Provide deployment for both amd64 and arm32v7 Install Java 10 on dev machine sudo add-apt-repository ppa:linuxuprising/java Oracle Java 10 installer Java binaries are not hosted in this PPA due to licensing. The packages in this PPA download and install Oracle Java 10 (JDK 10), so a working Internet connection is required. PPA for https://www.linuxuprising.com/ For feedback, see https://www.linuxuprising.com/2018/04/install-oracle-java-10-in-ubuntu-or.html More info: https://launchpad.net/~linuxuprising/+archive/ubuntu/java Press [ENTER] to continue or ctrl-c to cancel adding it gpg: keyring `/tmp/tmpf0lejdsg/secring.gpg\u0026#39; created gpg: keyring `/tmp/tmpf0lejdsg/pubring.gpg\u0026#39; created gpg: requesting key 73C3DB2A from hkp server keyserver.ubuntu.com gpg: /tmp/tmpf0lejdsg/trustdb.gpg: trustdb created gpg: key 73C3DB2A: public key \u0026amp;quot;Launchpad PPA for Linux Uprising\u0026amp;quot; imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1) OK sudo apt-get update Hit:1 http://ppa.launchpad.net/gophers/archive/ubuntu xenial InRelease Hit:2 https://download.docker.com/linux/ubuntu xenial InRelease Hit:3 https://deb.nodesource.com/node_10.x xenial InRelease Get:4 http://ppa.launchpad.net/linuxuprising/java/ubuntu xenial InRelease [18.0 kB] Get:6 http://security.ubuntu.com/ubuntu xenial-security InRelease [107 kB] Hit:7 http://us.archive.ubuntu.com/ubuntu xenial …","date":1530144000,"description":"","lastmod":"2018-06-28T00:00:00Z","objectID":"555a53a45a2ffb7264eecd88b4a74e80","permalink":"https://jbrette.github.io/kubernetes/apps/2018-06-28-a/","publishdate":"2018-06-28T00:00:00Z","tags":["java"],"title":"Creating simple Java 10 server container"},{"categories":["wiki"],"content":"Goal Use SCRATCH has base image to keep size minimum Simple HelloWorld GO web server Create associated HELM chart for Kubernetes deployment Provide deployment for both amd64 and arm32v7 Simple GO Server compilation The gohttpserver repo showcases:\n How to compile a GO process How to leverage Travis to compile for amd64 and arm32v7. Branch amd64 is for normal PC and HP server. Branch arm32v7 produces software usable on Raspberry PI 3B+ Kubeplay Github repo The kubeplay repo describes:\n How to compile a GO server and How to create a Helm chart to easily deploy on How to use Travis-CI to compile and publish the image on Docker.io with the proper tags. The amd64 branch is kind of complete The arm32v7 produces software deployable on Raspberry PI 3B+ Usefull Links TBD\n","date":1530230400,"description":"","lastmod":"2018-06-29T00:00:00Z","objectID":"e97980e14cbc794b52202699d100f6a7","permalink":"https://jbrette.github.io/kubernetes/apps/2018-06-29-a/","publishdate":"2018-06-29T00:00:00Z","tags":["golang"],"title":"Creating simple GO server container"},{"categories":["wiki"],"content":"Goal As we did for Go and Java, where is was possible to create an Dockerfile starting from \u0026amp;ldquo;scratch\u0026amp;rdquo;, the goal of this post is to create a python base server container with a minimum about of packages (debian and python) to reduce the security exposure of the container as well as the image size.\nKey Aspects Use SCRATCH has base image to keep size minimum Simple HelloWorld Python web server Create associated HELM chart for Kubernetes deployment Provide deployment for both amd64 and arm32v7 Simple Python Server The pythonhttpserver repo showcases:\n How to create a simple Python3 server How to leverage Travis to compile for amd64 and arm32v7. Branch amd64 is for normal PC and HP server. Branch arm32v7 produces software usable on Raspberry PI 3B+ Usefull Links TBD\n","date":1530403200,"description":"","lastmod":"2018-07-01T00:00:00Z","objectID":"39193ff2b75b9db4efcddedd0b193fab","permalink":"https://jbrette.github.io/kubernetes/apps/2018-07-01-a/","publishdate":"2018-07-01T00:00:00Z","tags":["python"],"title":"Creating simple Python server container"},{"content":"\u0026amp;nbsp;Note Most of those wikis are obsolete and transfered to Kubege\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"c0848cfe9a4d30d7c38309b8ef94ec2c","permalink":"https://jbrette.github.io/kubernetes/apps/","publishdate":"2018-01-01T00:00:00Z","title":"APPS"},{"categories":["wiki"],"content":"Goal A lot of the opensource projects evolvoving around Kubernetes are written in go. It is very usefull to be able to rebuild so projects using go get or go build.\nInstalling the right version of GO If you have strange errors, when running go get \u0026amp;hellip;., chances are that your version of GO is old. On Ubuntu, it is actually quite simple to address the issue.\nIf you are still running Ubuntu 16.04 LTS\nsudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install golang-go How to setup your GOPATH A lot of things seems to work much better if you edit your .bashrc to set GOPATH=$HOME. The advantage of such a setup is that future \u0026amp;ldquo;go get xxx\u0026amp;rdquo; calls, will compile the go file into $HOME/bin which means that new executable will be available without changing your PATH.\nReferences Link1 ","date":1529625600,"description":"","lastmod":"2018-06-22T00:00:00Z","objectID":"45ca647f0b079b93767556a381e48d5f","permalink":"https://jbrette.github.io/kubernetes/devops/2018-06-22-a/","publishdate":"2018-06-22T00:00:00Z","tags":["golang"],"title":"Setup your GOLANG environment"},{"categories":["wiki","wip"],"content":"Goal In orderer to manage your personal GitHub projects or an your compagny projects, it is usefull to be able to conigure your .ssh directory.\nSetup multiple GitHub account TBD\nUsefull Links Link1 ","date":1529712000,"description":"","lastmod":"2018-06-23T00:00:00Z","objectID":"1f8ee0ee590bb64ddf43a6231d7d9ee3","permalink":"https://jbrette.github.io/kubernetes/devops/2018-06-23-a/","publishdate":"2018-06-23T00:00:00Z","tags":["github"],"title":"Setup multiple GitHub account on a single machine"},{"categories":["wiki"],"content":"Goal Wondering why you have a strange error such as \u0026amp;lsquo;from \u0026amp;hellip;\u0026amp;rsquo; when running docker build. The reason is linked to an older version of docker installed.\nRemove the current docker.io You need to remove the current docker.io.\nsudo apt-cache policy docker.io curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \u0026amp;quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\u0026amp;quot; sudo apt-get update sudo apt-cache policy docker-ce sudo apt-get remove docker docker-engine docker.io sudo apt-get install docker-ce Forced to run \u0026amp;ldquo;sudo docker\u0026amp;rdquo; instead of docker Run the following command:\nsudo usermod -a -G docker \u0026amp;lt;yourusername\u0026amp;gt; If you still have issue running docker instead of sudo docker, try to reboot. Worked for me.\nRelated documentation Link1 Link2 ","date":1529798400,"description":"","lastmod":"2018-06-24T00:00:00Z","objectID":"cfdf155631cc44fd7584e10ce7f671c9","permalink":"https://jbrette.github.io/kubernetes/devops/2018-06-24-a/","publishdate":"2018-06-24T00:00:00Z","tags":["docker"],"title":"docker.io versus docker-ce"},{"categories":["wiki","wip"],"content":"Goal This is a post of the small set of notes taken to setup gerrit review behind corporate proxy.\nAccess GitHub/Gerrit from behind a corporate http proxy TBD\nLinks TBD\n","date":1529884800,"description":"","lastmod":"2018-06-25T00:00:00Z","objectID":"7b58766c2d5ad7f8fdbb2e9badc1aa47","permalink":"https://jbrette.github.io/kubernetes/devops/2018-06-25-a/","publishdate":"2018-06-25T00:00:00Z","tags":["github"],"title":"Setup github/gerrit behind a corporate http proxy"},{"categories":["wiki","kubedge"],"content":"Goal In order to be able use Helm charts the \u0026amp;ldquo;normal\u0026amp;rdquo; way, it is need to buid your own helm repository. The goal of this post is to transform a github repo into a helm repo.\nKey Aspects Save the helm charts on github mainly for the RPI Kubernetes cluster Figure out a way to access them Build the chart and upload it to the helm repo For that purpose I used by kubeplay repo where I had helm charts and container ready\ngit clone -b arm32v7 git@github.com:jbrette/kubeplay.git cd kubeplay/ helm package charts/kubeplay-arm32v7/ --app-version 0.1.0 --destination ./helmrepo/ cd helmrepo/ helm repo index . git add . git commit -m \u0026amp;quot;New chart version\u0026amp;quot; git push Use helm repo and chart Let\u0026amp;rsquo;s access the simple helm repo designed for\nhelm repo add kubeplay \u0026#39;https://raw.githubusercontent.com/jbrette/kubeplay/arm32v7/helmrepo/\u0026#39; helm repo list NAME URL stable https://kubernetes-charts.storage.googleapis.com local http://127.0.0.1:8879/charts kubeplay https://raw.githubusercontent.com/jbrette/kubeplay/arm32v7/helmrepo/ helm search kubeplay NAME CHART VERSION APP VERSION DESCRIPTION kubeplay/kubeplay-arm32v7 0.1.0 0.1.0 A Helm chart for Kubernetes Conclusion Still has to find how to get Travis-CI to build the chart automatically Reference Links From hackernoon ","date":1531267200,"description":"","lastmod":"2018-07-11T00:00:00Z","objectID":"5ced7cf65559607563b78be3b9112483","permalink":"https://jbrette.github.io/kubernetes/devops/2018-07-11-a/","publishdate":"2018-07-11T00:00:00Z","tags":["kubedge","github","helm","kubernetes"],"title":"Use github repo as helm chart repository"},{"content":"\u0026amp;nbsp;Note Most of those wikis are obsolete and transfered to Kubege\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"a61a63c1b00f5292c648cfae532b4e62","permalink":"https://jbrette.github.io/kubernetes/devops/","publishdate":"2018-01-01T00:00:00Z","title":"DEVOPS"},{"content":"\u0026amp;nbsp;Note This page has to be updated\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"1f9d353d419739ca0b9cfb07e7938bee","permalink":"https://jbrette.github.io/kubernetes/kustomize/","publishdate":"2018-01-01T00:00:00Z","title":"Kustomize"},{"categories":["wiki","wip"],"content":"Goal OpenStack project are using Zuul for CI/CD process. Zuul itself is based on Ansible to perform the tasks. This post is the collection of notes and tips used during the couple of update I did to some openstack projects.\nUnderstanding Zuul WIP Usefull Links WIP ","date":1529971200,"description":"","lastmod":"2018-06-26T00:00:00Z","objectID":"1d5a0f4e5004469d21c66763f3c3bfd9","permalink":"https://jbrette.github.io/kubernetes/misc/2018-06-26-a/","publishdate":"2018-06-26T00:00:00Z","tags":["zuul"],"title":"Zuul"},{"categories":["wiki"],"content":"Goal Sonobouy, deploys in a Kubernetes cluster and helps to assesse the compliance of that cluster\nKey Aspects Fork Sonobuoy Compile the tools Test it Clone and Compile mkdir -p $HOME/src/github.com/heptio cd $HOME/src/github.com/heptio git clone git@github.com:jbrette/sonobuoy.git export GOPATH=$HOME go version go version go1.10.1 linux/amd64 go get -u -v github.com/heptio/sonobuoy sonobuoy run sonobuoy status kubectl get all -n heptio-sonobuoy NAME READY STATUS RESTARTS AGE pod/sonobuoy 1/1 Running 0 14m pod/sonobuoy-e2e-job-5fff584d11364ca1 2/2 Running 0 12m pod/sonobuoy-systemd-logs-daemon-set-1c53f31cf14246ca-mhztp 2/2 Running 0 12m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/sonobuoy-master ClusterIP 10.99.111.192 \u0026amp;lt;none\u0026amp;gt; 8080/TCP 14m NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/sonobuoy-systemd-logs-daemon-set-1c53f31cf14246ca 1 1 1 1 1 \u0026amp;lt;none\u0026amp;gt; 12m sonobuoy logs see end of the file Usefull Links Link1 SONOBUOY LOGS namespace=\u0026amp;quot;heptio-sonobuoy\u0026amp;quot; pod=\u0026amp;quot;sonobuoy-e2e-job-5fff584d11364ca1\u0026amp;quot; container=\u0026amp;quot;sonobuoy-worker\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:01:55Z\u0026amp;quot; level=info msg=\u0026amp;quot;Waiting for waitfile\u0026amp;quot; waitfile=/tmp/results/done namespace=\u0026amp;quot;heptio-sonobuoy\u0026amp;quot; pod=\u0026amp;quot;sonobuoy\u0026amp;quot; container=\u0026amp;quot;kube-sonobuoy\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:00:23Z\u0026amp;quot; level=info msg=\u0026amp;quot;Scanning plugins in ./plugins.d (pwd: /)\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:00:23Z\u0026amp;quot; level=info msg=\u0026amp;quot;Scanning plugins in /etc/sonobuoy/plugins.d (pwd: /)\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:00:23Z\u0026amp;quot; level=info msg=\u0026amp;quot;Directory (/etc/sonobuoy/plugins.d) does not exist\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:00:23Z\u0026amp;quot; level=info msg=\u0026amp;quot;Scanning plugins in ~/sonobuoy/plugins.d (pwd: /)\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:00:23Z\u0026amp;quot; level=info msg=\u0026amp;quot;Directory (~/sonobuoy/plugins.d) does not exist\u0026amp;quot; time=\u0026amp;quot;2018-07-03T06:00:23Z\u0026amp;quot; level=info msg=\u0026amp;quot;Filtering namespaces based on the …","date":1530489600,"description":"","lastmod":"2018-07-02T00:00:00Z","objectID":"3a85c6b48c51783a37ae8ddfb4ed2c40","permalink":"https://jbrette.github.io/kubernetes/misc/2018-07-02-a/","publishdate":"2018-07-02T00:00:00Z","tags":["kubernetes","sonobuoy","test-infra","testing"],"title":"Compile and Test SONOBUOY"},{"categories":["wiki","wip"],"content":"Goal One of the biggest security risks related to Kubernetes are often linked to the fact that it is really hard to ensure that only \u0026amp;ldquo;approved\u0026amp;rdquo; images are deployed in your Kubernetes cluster. The goal here is to leverage Notary and the a project called \u0026amp;ldquo;Portieris\u0026amp;rdquo; created by IBM.\nKey Aspects Rebuild the Notary Rebuild and Deploy Portieris using Helm Build Notary Clone go get github.com/theupdateframework/notary go install -tags pkcs11 github.com/theupdateframework/notary/cmd/notary Run notary -s https://notary.docker.io -d ~/.docker/trust list docker.io/library/alpine $ notary -s https://notary.docker.io -d ~/.docker/trust list docker.io/library/alpine NAME DIGEST SIZE (BYTES) ROLE ---- ------ ------------ ---- 2.6 9ace551613070689a12857d62c30ef0daa9a376107ec0fff0e34786cedb3399b 528 targets 2.7 9f08005dff552038f0ad2f46b8e65ff3d25641747d3912e3ea8da6785046561a 1374 targets 3.1 2f9dfa6adf602d3d7379f11f3d4fd0b7b4d1c526616ee7c0fd5e553a72e4bf79 433 targets 3.2 4b02d27451aabdf2b6bcd09888deed56b2a3b645aab3b77bc9511cf80d0820a6 433 targets 3.3 37f4d7bb352bde58797d0f0c4e6c4e69a9ed44d4e47a8ab4461888d117d14c6a 433 targets 3.4 c1aa0f93d13258dc8b4e87391f02432dc214736c3f176e2e433629c2afe96aa0 433 targets 3.5 4d3ec631cdde98a03b91477b411a1fb42a9cadd8139c2e78029e44e199e58433 433 targets 3.6 de5701d6a3a36dc6a5db260d21be0422fd30dd2d158c1e048b34263e73205cb6 2029 targets 3.7 56e2f91ef15847a2b02a5a03cbfa483949d67a242c37e33ea178e3e7e01e0dfd 2029 targets 3.8 7043076348bf5040220df6ad703798fd8593a0918d06d3ce30c6c93be117e430 2029 targets edge 8d9872bf7dc946db1b3cd2bf70752f59085ec3c5035ca1d820d30f1d1267d65d 2029 targets integ-test-base 3952dc48dcc4136ccdde37fbef7e250346538a55a0366e3fccc683336377e372 528 targets latest 7043076348bf5040220df6ad703798fd8593a0918d06d3ce30c6c93be117e430 2029 targets $ notary -s https://notary.docker.io -d ~/.docker/trust list docker.io/library/nginx NAME DIGEST SIZE (BYTES) ROLE ---- ------ ------------ ---- 1 …","date":1531872000,"description":"","lastmod":"2018-07-18T00:00:00Z","objectID":"e22dc29c916eafb405fb6f47d8e3979c","permalink":"https://jbrette.github.io/kubernetes/misc/2018-07-18-a/","publishdate":"2018-07-18T00:00:00Z","tags":["kubernetes","security","portieris"],"title":"Compile and Test Portieris"},{"categories":["wiki","wip"],"content":"Goal kustomize seems to help the setup of multiple clusters by removing copy paste accross cluster and still keeping the configuration file has plain yaml instead of the template like it is often the case with t\nKey Aspects Compile and deploy the Kustomize code in Kustomize Deploy WIP Conclusion WIP Reference Links Kustomize Description Official Kustomize Code ","date":1532822400,"description":"","lastmod":"2018-07-29T00:00:00Z","objectID":"edaa250a73cd7f965662b36a5d87ed22","permalink":"https://jbrette.github.io/kubernetes/misc/2018-07-29-a/","publishdate":"2018-07-29T00:00:00Z","tags":["kubernetes","kustomize","rpi"],"title":"Build and Deploy Kubernetes Kustomize"},{"categories":["wiki","wip"],"content":"Goal test-infra seems to somewhat overlap with sonobuoy features. The purpose of this post is to fetch the code, compile and deploy it on a Kubernetes cluster.\nKey Aspects Compile and deploy the test-infra code in test-infra Deploy WIP Conclusion WIP Reference Links Official test-infra Code ","date":1532908800,"description":"","lastmod":"2018-07-30T00:00:00Z","objectID":"d7f205c00e6c6437bc7388627e84fca9","permalink":"https://jbrette.github.io/kubernetes/misc/2018-07-30-a/","publishdate":"2018-07-30T00:00:00Z","tags":["kubernetes","test-infra","sonobuoy","testing","rpi"],"title":"Build and Deploy Kubernetes test-infra"},{"categories":["wiki","wip"],"content":"Goal Istio is aiming at improving security of the containers. One of the key aspects is the end to end encryption of the commnucation, the role of citadel to ensure the management of the certificates, the renewal of the certificates. As always, the goal of this post is to study that new tool and figure out I can leverage it in my day to day work.\nKey Aspects Compile and deploy the istio code in istio Deploy WIP Conclusion WIP Reference Links Official istio Code ","date":1532995200,"description":"","lastmod":"2018-07-31T00:00:00Z","objectID":"01c15f720a09223e75b8818c99fb2d0e","permalink":"https://jbrette.github.io/kubernetes/misc/2018-07-31-a/","publishdate":"2018-07-31T00:00:00Z","tags":["kubernetes","security","istio","rpi"],"title":"Build and Deploy Kubernetes Istio"},{"categories":["wiki","wip"],"content":"Goal Vault is aiming at improving security of the containers by rotating token and credential much more often than usual. Looks like it is especially effectiv to help rotate passwords used to access internal databases.\nKey Aspects Compile and deploy the vault code in vault Deploy WIP Conclusion WIP Reference Links Official HashiCorp Code ","date":1533081600,"description":"","lastmod":"2018-08-01T00:00:00Z","objectID":"8b17ab1250d12472fa70d3d5af4fadda","permalink":"https://jbrette.github.io/kubernetes/misc/2018-08-01-a/","publishdate":"2018-08-01T00:00:00Z","tags":["kubernetes","security","vault","rpi"],"title":"Build and Deploy Kubernetes Hashicorp Vault"},{"content":"\u0026amp;nbsp;Note Most of those wikis are obsolete and transfered to Kubege\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"1ee2b22eaba1241fad0e1186e63ffb3d","permalink":"https://jbrette.github.io/kubernetes/misc/","publishdate":"2018-01-01T00:00:00Z","title":"MISC"},{"content":"\u0026amp;nbsp;Note This page has to be updated\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"d243bf7d7fc720250f2402d761a035d2","permalink":"https://jbrette.github.io/kubernetes/operators/","publishdate":"2018-01-01T00:00:00Z","title":"Kubernetes Operators"},{"categories":["wiki","kubedge"],"content":"Goal During some of the manipulation of the partition table of my SD card, I ended up screwing up both my SD card and my backup Win32DiskImage backup. Moreover if your SD card is 32G, it takes around 30 minute to restore from backup. Hence the idea to come up with a way to build more resiliency in the cluster. Recreating a node from scratch should not take more than 10 mn. The propose procedure is still rather long because I did not push enough yet what the HypriotOS team, aka build a default SD image where cloud-init does 100% of the initialization work.\nBase OS Flash HypriotOS to SD and reboot Pi.\nFlash the SD Card with HypriotOS Connect Pi through LAN (temporary). Look for black-perl machine in DHCP Connect to PI through LAN ssh 192.168.1.xxx -l rpiuser ls -lt docker ps Enable LAN or WLAN. Check the IP address. Depending on PI3B or PI3B+, the WLAN network may be different.\nip a iwconfig sudo ip link set wlan0 up sudo iwlist scan | grep ES sudo iwlist scan | grep ED wpa_passphrase \u0026amp;lt;sommessid\u0026amp;gt; sudo vi sudo vi /etc/network/interfaces.d/wlan0 sudo ifup wlan0 Freeze your configuration Cloud init is perfect for the first boot. Once the node is up, it can be challenging not to preserve the fine tuning done to the OS.\nsudo apt-get remove --purge cloud-init sudo apt-get autoremove Update your Pi name as root\nsudo -i vi /etc/hosts vi /etc/hostname I useally don\u0026amp;rsquo;t touch the file. Domain most likely coming from your Internet router. I actually updated the settings on the router to have consistent naming on my PI networks.\nvi /etc/resolv.conf Install kubeadm Firt access the kubemaster node and regenerate a token:\nkubeadm token create Back on the new node, as root\ncurl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo \u0026amp;quot;deb http://apt.kubernetes.io/ kubernetes-xenial main\u0026amp;quot; \u0026amp;gt; /etc/apt/sources.list.d/kubernetes.list apt-get update apt-get install -y kubeadm kubeadm join 192.168.1.95:6443 --token yyyyyy.xxxxxxxxxxxxxxxx …","date":1529366400,"description":"Add Raspberry PI node to Kubernetes Cluster in 10 min","lastmod":"2018-06-19T00:00:00Z","objectID":"7811408c49d06440e706a04e163de604","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-06-19-a/","publishdate":"2018-06-19T00:00:00Z","tags":["kubedge","kubernetes","rpi"],"title":"Add Raspberry PI node to Kubernetes Cluster in 10 min"},{"categories":["wiki","kubedge"],"content":"Goal I encountered multiple issues trying to repartition my SD on my PI. Because the / directory is mounted, it never really worked safely for me to use fdisk. Morevoer some of the powerfull tools such as gparted need X11 installed, which I don\u0026amp;rsquo;t have by default.\nHopefully the new PI3 B and B+ are able to boot from USB, hence the idea of creating a Rescue Dongle\nConsideration regarding USB boot. It seems that all new PI 3B+ have OTP for USB boot mode setup by default. For the PC 3B, you have to activate using the /boot/config.txt\nmaster-pi is a 3B+, nas-pi and home-pi are 3B:\nLet\u0026amp;rsquo;s check the /boot/config.txt\nansible picluster -i inventory/ -m shell -a \u0026amp;quot;grep program_usb_boot_mode /boot/config.txt\u0026amp;quot; master-pi.kubedge.cloud | FAILED | rc=1 \u0026amp;gt;\u0026amp;gt; nas-pi.kubedge.cloud | SUCCESS | rc=0 \u0026amp;gt;\u0026amp;gt; program_usb_boot_mode=1 home-pi.kubedge.cloud | FAILED | rc=1 \u0026amp;gt;\u0026amp;gt; The flag for OTP USB flag is set on the 3B+ (by default on master-pi) and on the 3B where I did add the entry to the config.txt (nas-pi)\nansible picluster -i inventory/ -m shell -a \u0026amp;quot;vcgencmd otp_dump | grep 17:\u0026amp;quot; master-pi.kubedge.cloud | SUCCESS | rc=0 \u0026amp;gt;\u0026amp;gt; 17:3020000a nas-pi.kubedge.cloud | SUCCESS | rc=0 \u0026amp;gt;\u0026amp;gt; 17:3020000a home-pi.kubedge.cloud | SUCCESS | rc=0 \u0026amp;gt;\u0026amp;gt; 17:1020000a Creation of the Rescue Dongle Flash Raspbian on the Dongle using the normal procedure (Wind32DiskImager,..) Remove the SD card from the PI3. Plug keyboard, mouse, screen \u0026amp;hellip; onto the PI Boot the PI3 on the Dongle by removing the SD card Take the time to setup the Raspbian: Enable VNC Enable SSH Setup default hostname Setup password for Pi account Setup resolution (for VNC later) Install tools such as gparted Shutdown the PI and put back the normal SD card. Usage The idea is to boot a PI from the Dongle and then apply the fixes to the SD card.\n Shutdown the PI. Remove the SD card. Insert the Dongle into USB port of PI Reboot the PI. Connect to the PI using the VNC or SSH. The PI has …","date":1529452800,"description":"","lastmod":"2018-06-20T00:00:00Z","objectID":"6283ec84827543f431fe5200aba9dc2c","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-06-20-a/","publishdate":"2018-06-20T00:00:00Z","tags":["kubedge","rpi"],"title":"Create a Rapsberry PI Rescue Dongle"},{"categories":["wiki","kubedge"],"content":"Goal Also GCE is perfect to learn Kubernetes, building Kubernetes on top of PI Cluster brings another dimension to the learning, from setting up the OS, partitionning the OS, DHCP, NAT, cross compiling for the ARM32V7.\nKey Aspects Build a Raspberry 3B+ Cluster Deploy Kubernetes on that Cluster Hardware Reference Links Video Procedure Kind of followed the video Used a premade rack instead. Adapt to Raspberry 3B+ (1Gb card instead of 100Mb card) Result Cluster 1: 5 nodes cluster Cluster 2: 3 nodes cluster OS Reference Links Video HypriotOS Procedure Use HypriotOS because the quickest to set up. SSH and Docker supported by default Ubuntu Core was not ready for Raspberry 3B + Even if processor is 64bits, OS is still 32bits. (Memory is small anyway). Resion.io OS is not supporting docker anymore but balena instead. It would not work with Kubernetes. Video had a couple of typo in DHCP installation Removed cloud-init once the site was up. TBD Kubernetes Reference Links kubeadm1 kubeadm2 Procedure for Cluster 2 Issue at first with 10.04. Kubelet not starting. Downgraded with Kubernetes 1.9.8 (Cluster 1) Issue had been fixed with Kubernetes 1.11 (Cluster 2) sudo -i curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo \u0026amp;quot;deb http://apt.kubernetes.io/ kubernetes-xenial main\u0026amp;quot; \u0026amp;gt; /etc/apt/sources.list.d/kubernetes.list apt-get update \u0026amp;amp;\u0026amp;amp; apt-get install -y kubeadm # kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address 192.168.1.95 I0706 00:35:34.429323 14024 feature_gate.go:230] feature gates: \u0026amp;amp;{map[]} [init] using Kubernetes version: v1.11.0 [preflight] running pre-flight checks I0706 00:35:34.656171 14024 kernel_validator.go:81] Validating kernel version I0706 00:35:34.657051 14024 kernel_validator.go:96] Validating kernel config [WARNING SystemVerification]: docker version is greater than the most recently validated version. Docker version: 18.05.0-ce. Max validated version: 17.03 …","date":1530576000,"description":"","lastmod":"2018-07-03T00:00:00Z","objectID":"e678c65b0fcf2b98c42e10476e7478eb","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-03-a/","publishdate":"2018-07-03T00:00:00Z","tags":["kubedge","kubernetes","rpi"],"title":"Creating a Raspberry 3 B+ Kubernetes Cluster"},{"categories":["wiki","kubedge"],"content":"Goal Even if the ultimate goal is to manage completly the cluster using Kubernetes, the ability to use Ansible during debug process is very usefull. The goal here is to setup ansible inventory, basic playbooks.\nAnsible Installation on the master node Let\u0026amp;rsquo;s install ansible using apt-get. A lot of python related depedencies are also installed.\nsudo apt-get install ansible Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: ieee-data libyaml-0-2 python-cffi-backend python-crypto python-cryptography python-enum34 python-httplib2 python-idna python-ipaddress python-jinja2 python-kerberos python-markupsafe python-netaddr python-paramiko python-pkg-resources python-pyasn1 python-selinux python-setuptools python-six python-xmltodict python-yaml Suggested packages: cowsay sshpass python-crypto-dbg python-crypto-doc python-cryptography-doc python-cryptography-vectors python-enum34-doc python-jinja2-doc ipython python-netaddr-docs python-gssapi doc-base python-setuptools-doc Recommended packages: python-winrm The following NEW packages will be installed: ansible ieee-data libyaml-0-2 python-cffi-backend python-crypto python-cryptography python-enum34 python-httplib2 python-idna python-ipaddress python-jinja2 python-kerberos python-markupsafe python-netaddr python-paramiko python-pkg-resources python-pyasn1 python-selinux python-setuptools python-six python-xmltodict python-yaml 0 upgraded, 22 newly installed, 0 to remove and 6 not upgraded. Need to get 4,556 kB of archives. After this operation, 28.4 MB of additional disk space will be used. Do you want to continue? [Y/n] y $ ansible --version ansible 2.2.1.0 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides sudo apt-get install sshpass Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: sshpass 0 upgraded, 1 …","date":1530921600,"description":"","lastmod":"2018-07-07T00:00:00Z","objectID":"354003642b86f942a8bee39d13fcd2ac","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-07-a/","publishdate":"2018-07-07T00:00:00Z","tags":["kubedge","ansible","rpi"],"title":"Using Ansible to manage Raspberry PI cluster"},{"categories":["wiki","kubedge","wip"],"content":"Goal In order to install OpenHAB, HomeAssistent or even promoteheus using Kubernetes, we need to first create Persistency Volumes\nProcedures WIP Results Reference Links TBD ","date":1531008000,"description":"","lastmod":"2018-07-08T00:00:00Z","objectID":"8def33a1035ff6f3114fa4ebbf97dc5b","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-08-a/","publishdate":"2018-07-08T00:00:00Z","tags":["kubedge","kubernetes","rpi"],"title":"Add Persistency Volume to PI Clusters"},{"categories":["wiki","kubedge"],"content":"Goal In order to build image for Raspberry PI, it is sometimes usefull to be able to leverate infrastruture from a remote VM. For instance you can cross-build golang executable for ARM32v7 and transfer it to build an image on the remote PI. (used for Tiller docker image)\nGenerating the server certs In the case this Kubernetes cluster, the master is running on master-pi with IP address 192.168.1.95\nas root\nmkdir -p $HOME/dockercerts cd $HOME/dockercerts/ openssl genrsa -aes256 -out ca-key.pem 4096 openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem openssl genrsa -out server-key.pem 4096 export HOST=master-pi openssl req -subj \u0026amp;quot;/CN=$HOST\u0026amp;quot; -sha256 -new -key server-key.pem -out server.csr echo subjectAltName = DNS:$HOST,IP:192.168.1.95,IP:127.0.0.1 \u0026amp;gt;\u0026amp;gt; extfile.cnf echo extendedKeyUsage = serverAuth \u0026amp;gt;\u0026amp;gt; extfile.cnf openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile. rm -v client.csr server.csr chmod -v 0400 ca-key.pem key.pem server-key.pem chmod -v 0444 ca.pem server-cert.pem cert.pem Installing certs and configuring dockerd service cp $HOME/dockercerts/ca.pem /etc/docker cp $HOME/dockercerts/server-cert.pem /etc/docker/ cp $HOME/dockercerts/server-key.pem /etc/docker/ mkdir -p /etc/systemd/system/docker.service.d vi /etc/systemd/system/docker.service.d/10-tls-verify.conf [Service] ExecStart= ExecStart=/usr/bin/dockerd -H fd:// -H tcp://192.168.1.95:2376 --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem Environment=\u0026amp;quot;DOCKER_OPTS=--tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem\u0026amp;quot; Restart the service\nsystemctl daemon-reload systemctl restart docker.service Installing client side on the PI does not have to be root.\ncp /root/dockercerts/ca.pem $HOME/.docker cp /root/dockercerts/key.pem $HOME/.docker/ cp …","date":1531353600,"description":"","lastmod":"2018-07-12T00:00:00Z","objectID":"3a76dc38504311f0034de909d56690f5","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-12-a/","publishdate":"2018-07-12T00:00:00Z","tags":["kubedge","docker"],"title":"Enable docker remote API"},{"categories":["wiki","kubedge"],"content":"Goal The main purpose of this exercise is to be able to use Helm on the Rapsberry PI Cluster.\nKey Aspects The goal is to setup helm and tiller on the Raspberry PI cluster Having the golang, glide\u0026amp;hellip;and related libraries setup in a PI for compilation is kind of complicated. I started but encounter too many issues (even small), had to install too many compilation related packages on my PI system, hence decided to use an Ubuntu VM to compile and prepare the binaries for image for helm and tiller. This will be usefull to setup CI/CD pipeline with Travis-CI. Build Tiller executable and Docker image Cross Compiling from Ubuntu Machine First check the go setup. Fetch the code\nLet\u0026amp;rsquo;s check the go environment. See Setup GOLANG environment\nwhich go /usr/bin/go go version go version go1.10.1 linux/amd64 export GOPATH=$HOME/src mkdir -p src/k8s.io cd src/k8s.io git clone -b release-2.9 git@github.com:kubernetes/helm.git cd $HOME/src/k8s.io/helm make clean bootstrap build-cross dist APP=helm VERSION=2.9 TARGETS=linux/arm ... go build -o bin/protoc-gen-go ./vendor/github.com/golang/protobuf/protoc-gen-go CGO_ENABLED=0 gox -parallel=3 -output=\u0026amp;quot;_dist/{{.OS}}-{{.Arch}}/{{.Dir}}\u0026amp;quot; -osarch=\u0026#39;linux/arm\u0026#39; -tags \u0026#39;\u0026#39; -ldflags \u0026#39;-w -s -X k8s.io/helm/pkg/version.Version=2.9 -X k8s.io/helm/pkg/version.BuildMetadata= -X k8s.io/helm/pkg/version.GitCommit=20adb27c7c5868466912eebdf6664e7390ebe710 -X k8s.io/helm/pkg/version.GitTreeState=clean -extldflags \u0026amp;quot;-static\u0026amp;quot;\u0026#39; k8s.io/helm/cmd/helm Number of parallel builds: 3 --\u0026amp;gt; linux/arm: k8s.io/helm/cmd/helm ( \\ cd _dist \u0026amp;amp;\u0026amp;amp; \\ find * -type d -exec cp ../LICENSE {} \\; \u0026amp;amp;\u0026amp;amp; \\ find * -type d -exec cp ../README.md {} \\; \u0026amp;amp;\u0026amp;amp; \\ find * -type d -exec tar -zcf helm-2.9-{}.tar.gz {} \\; \u0026amp;amp;\u0026amp;amp; \\ find * -type d -exec zip -r helm-2.9-{}.zip {} \\; \\ ) adding: linux-arm/ (stored 0%) adding: linux-arm/LICENSE (deflated 65%) adding: linux-arm/README.md (deflated 59%) adding: linux-arm/helm (deflated 67%) Let\u0026amp;rsquo;s …","date":1531440000,"description":"","lastmod":"2018-07-13T00:00:00Z","objectID":"455347e1cf9b1f881029bc53cf848df6","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-13-a/","publishdate":"2018-07-13T00:00:00Z","tags":["kubedge","kubernetes","helm"],"title":"Deploy Helm and Tiller on Rasberry PI Cluster"},{"categories":["wiki","kubedge"],"content":"Goal In order to get the nodes and pods interface with each other accross the cluster. This post describes how I deployed Flannel acounting with the fact that some of the nodes have multiple interfaces (wlan0 and eth0).\nKey Aspects Flannel seems to deploy ok. Looks like in trouble when multiple interfaces available Calico in not compiled by default for Rapsberry PI Flannel Setup through kubectl $ mkdir -p $HOME/kube-deployments/flannel $ cd $HOME/kube-deployments/flannel $ curl -sSL https://rawgit.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml | sed \u0026amp;#34;s/amd64/arm/g\u0026amp;#34; \u0026amp;gt; flannel.yaml $ kubectl create -f flannel.yaml Note: realized that should be using flannel v0.10.0 instead of v0.9.1\nFlannel Issue 1: flannel.1. Link has incompatible address on master-pi, both the WLAN and LAN interfaces were activated. After unplugging the CAT5, behavior was similar. Moreover this had some impact on the kube-apiserver (see the number of restarts).\n$ kubectl get all --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE default pod/helm-rpi-kubeplay-arm32v7-6cb66496c6-9w97m 1/1 Running 0 4h kube-system pod/coredns-78fcdf6894-cw5p8 1/1 Running 15 10d kube-system pod/coredns-78fcdf6894-czjcj 1/1 Running 15 10d kube-system pod/etcd-master-pi 1/1 Running 11 10d kube-system pod/kube-apiserver-master-pi 1/1 Running 599 10d kube-system pod/kube-controller-manager-master-pi 1/1 Running 38 10d kube-system pod/kube-flannel-ds-bhllh 1/1 Running 13 9d kube-system pod/kube-flannel-ds-q7cp2 0/1 CrashLoopBackOff 401 9d kube-system pod/kube-flannel-ds-wqxsz 1/1 Running 16 9d kube-system pod/kube-proxy-4chwh 1/1 Running 9 9d kube-system pod/kube-proxy-6r5mn 1/1 Running 5 9d kube-system pod/kube-proxy-vvj6j 1/1 Running 11 10d kube-system pod/kube-scheduler-master-pi 1/1 Running 13 10d kube-system pod/kubernetes-dashboard-7d59788d44-rchkk 1/1 Running 20 7d kube-system pod/tiller-deploy-b59fcc885-66l7s 1/1 Running 0 6h $ kubectl logs pod/kube-flannel-ds-q7cp2 -n kube-system I0716 …","date":1531526400,"description":"","lastmod":"2018-07-14T00:00:00Z","objectID":"405559cfac1c71b5125c530eb698b502","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-14-a/","publishdate":"2018-07-14T00:00:00Z","tags":["kubedge","kubernetes","rpi","cni"],"title":"Deploy Flannel in Raspberry PI cluster"},{"categories":["wiki","kubedge"],"content":"Goal During the installation of official Kubernetes 1.11.0 on RPI Cluster 1, encountered a bug on the controller manager preventing the controller-manager from starting. The problem here was to be able to cross compiled the latest version of Kubernetes 1.11.1 before the code was officially released and of course rebuild the images.\nKey Aspects The bug had been fixed by the Kubernetes kube-controller-manager - panic: runtime error: index out of range has been fixed and will be built as part of 1.11.1 The goal is to learn how to recompile Kubernetes from the source to be able to contribute when possible and address problems as soon as possible Build Kubernetes executables for AMD64 and ARM Cross Compiling from Ubuntu Machine First check the go setup. Fetch the code\nLet\u0026amp;rsquo;s check the go environment. See Setup GOLANG environment\n$ which go /usr/bin/go $ go version go version go1.10.1 linux/amd64 Clone the code\n$ export GOPATH=$HOME/src $ mkdir -p src/k8s.io $ cd src/k8s.io $ git clone -b release-1.11 git@github.com:kubernetes/kubernetes.git $ cd kubernertes To save time, I removed platforms I had not use of and only kept amd64 and arm on linux\n$ cat hack/lib/golang.sh # The server platform we are building on. readonly KUBE_SERVER_PLATFORMS=( linux/amd64 linux/arm ) # The node platforms we build for readonly KUBE_NODE_PLATFORMS=( linux/amd64 linux/arm ) # If we update this we should also update the set of platforms whose standard library is precompiled for in build/build-image/cross/Dockerfile readonly KUBE_CLIENT_PLATFORMS=( linux/amd64 linux/arm ) # Which platforms we should compile test targets for. Not all client platforms need these tests readonly KUBE_TEST_PLATFORMS=( linux/amd64 linux/arm ) Double check your Docker setup is correct\n$ docker run hello-world Clean the directory\n$ ./build/make-clean.sh Rebuild the amd64 and arm executable\n$ ./build/run.sh make cross Check the executables transfered from the docker build container to your vm by rsync\n$ cd …","date":1531612800,"description":"","lastmod":"2018-07-15T00:00:00Z","objectID":"72bf67b827dc98c80b21b1a450093d77","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-15-a/","publishdate":"2018-07-15T00:00:00Z","tags":["kubedge","kubernetes","rpi"],"title":"Recompile Kubernetes components for Raspberry PI"},{"categories":["wiki","kubedge","wip"],"content":"Goal This post is to validate that it would be possible if urgency dictates it to rebuild the hyperkube Kubernetes image.\nKey Aspects Rebuild Hyperkube images for amd64 and arm32v7 Rebuild the individual images deployed by kubeadm Build Kubernetes executables for AMD64 and ARM WIP Conclusion WIP Reference Links Kubernetes cross build ","date":1531699200,"description":"","lastmod":"2018-07-16T00:00:00Z","objectID":"b023d596cfa16897ff3b3b020d69570e","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-16-a/","publishdate":"2018-07-16T00:00:00Z","tags":["kubedge","kubernetes"],"title":"Rebuild Hyperkube images"},{"categories":["wiki","kubedge","wip"],"content":"Goal Neither calico nor canal seems to be available for usage yet on ARM32V7 for PI. The attempt here is to cross-compile the calico containers and use them on the PI cluster.\nKey Aspects Rebuild the Calico Build Kubernetes executables for AMD64 and ARM WIP Conclusion WIP Reference Links Kubernetes cross build ","date":1531785600,"description":"","lastmod":"2018-07-17T00:00:00Z","objectID":"2deefb8db78fb19cf2c556f65eba4fa6","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-17-a/","publishdate":"2018-07-17T00:00:00Z","tags":["kubedge","kubernetes","calico","cni"],"title":"Rebuild Calico for AMD64 ad ARM32V7"},{"categories":["wiki","kubedge"],"content":"Goal The main goal is to use statefulset and local persistency volume. The arm32v7 image are not available on kubernetes example repository The arm32v7 images are not available either on the docker hub, probably because Cassandra advises to use 64 bits when PI 3 are still mainly 32 bits OS and that the amount of memory available is limited to 1Gbi. Build Cassandra for PI 3 Cassandra 1 Based on various Cassandra running on RPI projects\n rpi-cassandra docker-rpi-cassandra Docker image adapted to Kubernetes Cassandra 2 This is a fork of Kubernetes example \u0026amp;ldquo;adapted\u0026amp;rdquo; to PI 3.\n Official Kurnetes Example Official Example adpated to PI Build process Since travis cross build is not inplace, let\u0026amp;rsquo;s use a PI to build\n$ git clone git@github.com:jbrette/kube-rpi.git $ cd kube-rpi/images/cassandra1 $ docker build . $ docker image list $ docker tag 6b98a0ccef38 jbrette/cassandra-arm32v7:3.11.1 $ docker push jbrette/cassandra-arm32v7:3.11.1 Deploy The deployment of the services relies on the \u0026amp;ldquo;local-storage\u0026amp;rdquo; class\nThe service description is identical to Kubernetes tutorial\napiVersion: v1 kind: Service metadata: labels: app: cassandra name: cassandra spec: clusterIP: None ports: - port: 9042 selector: app: cassandra The main difference with official examples:\n Memory reduces to 256M. 1Gi is too big for the PI. Use the \u0026amp;ldquo;local-storage\u0026amp;rdquo; class which is accessing local partition on the SD card of the PI. Change the image to previously build images. apiVersion: apps/v1 kind: StatefulSet metadata: name: cassandra labels: app: cassandra spec: serviceName: cassandra replicas: 3 selector: matchLabels: app: cassandra template: metadata: labels: app: cassandra spec: terminationGracePeriodSeconds: 1800 containers: - name: cassandra image: jbrette/cassandra-arm32v7:3.11.1 imagePullPolicy: Always ports: - containerPort: 7000 name: intra-node - containerPort: 7001 name: tls-intra-node - containerPort: 7199 name: jmx - containerPort: 9042 name: cql …","date":1532736000,"description":"","lastmod":"2018-07-28T00:00:00Z","objectID":"5e00e0bc75d9b9547f67358cea684e65","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-07-28-a/","publishdate":"2018-07-28T00:00:00Z","tags":["kubedge","kubernetes","rpi","bigdata"],"title":"Deploy Cassandra on Raspberry-PI 3"},{"categories":["wiki","kubedge","wip"],"content":"Goal The new Kubernetes 1.12 is out. THe goal is to update my two clusters to 1.12 using kubeadm 1.12\nMaster node upgrade using kubeadm # apt-mark unhold kubeadm \u0026amp;amp;\u0026amp;amp; \\ \u0026amp;gt; apt-get update \u0026amp;amp;\u0026amp;amp; apt-get install -y kubeadm \u0026amp;amp;\u0026amp;amp; \\ \u0026amp;gt; apt-mark hold kubeadm kubeadm was already not hold. Hit:2 http://raspbian.raspberrypi.org/raspbian stretch InRelease Hit:3 https://download.docker.com/linux/raspbian stretch InRelease Hit:1 https://packages.cloud.google.com/apt kubernetes-xenial InRelease Hit:5 http://archive.raspberrypi.org/debian stretch InRelease Hit:4 https://packagecloud.io/Hypriot/rpi/debian stretch InRelease Reading package lists... Done Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be upgraded: kubeadm 1 upgraded, 0 newly installed, 0 to remove and 38 not upgraded. Need to get 8,095 kB of archives. After this operation, 3,100 kB disk space will be freed. Get:1 https://packages.cloud.google.com/apt kubernetes-xenial/main armhf kubeadm armhf 1.12.0-00 [8,095 kB] Fetched 8,095 kB in 4s (1,962 kB/s) (Reading database ... 30574 files and directories currently installed.) Preparing to unpack .../kubeadm_1.12.0-00_armhf.deb ... Unpacking kubeadm (1.12.0-00) over (1.11.1-00) ... Setting up kubeadm (1.12.0-00) ... kubeadm set on hold. sudo kubeadm upgrade plan [preflight] Running pre-flight checks. [upgrade] Making sure the cluster is healthy: [upgrade/config] Making sure the configuration is correct: [upgrade/config] Reading configuration from the cluster... [upgrade/config] FYI: You can look at this config file with \u0026amp;#39;kubectl -n kube-system get cm kubeadm-config -oyaml\u0026amp;#39; [upgrade] Fetching available versions to upgrade to [upgrade/versions] Cluster version: v1.11.0 [upgrade/versions] kubeadm version: v1.12.0 [upgrade/versions] Latest stable version: v1.12.0 [upgrade/versions] Latest version in the v1.11 series: v1.11.3 Components that must be upgraded manually after you have …","date":1538179200,"description":"","lastmod":"2018-09-29T00:00:00Z","objectID":"e45cbbe322188c844e30860bbcf4516b","permalink":"https://jbrette.github.io/kubernetes/rpi/2018-09-28-a/","publishdate":"2018-09-29T00:00:00Z","tags":["kubedge","kubernetes","rpi"],"title":"Upgrade RPI Kubernetes cluster to 1.12"},{"content":"\u0026amp;nbsp;Note Most of those wikis are obsolete and transfered to Kubege\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"5cffe4417be1936a442994e4a17fddf4","permalink":"https://jbrette.github.io/kubernetes/rpi/","publishdate":"2018-01-01T00:00:00Z","title":"RASPBERRY PI"},{"categories":["wiki","kubedge"],"content":"Goal Setup simple kubernetes cluster for test purposes.\nAdd Kubernetes APT Repo If you are still running Ubuntu 16.04 LTS\nsudo xxx sudo apt-get update sudo apt-get install kubeadm kubelet kubectl sudo docker version Client: Version: 1.13.1 API version: 1.26 Go version: go1.6.2 Git commit: 092cba3 Built: Thu Nov 2 20:40:23 2017 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Go version: go1.6.2 Git commit: 092cba3 Built: Thu Nov 2 20:40:23 2017 OS/Arch: linux/amd64 Experimental: false sudo kubeadm version kubeadm version: \u0026amp;amp;version.Info{Major:\u0026amp;quot;1\u0026amp;quot;, Minor:\u0026amp;quot;11\u0026amp;quot;, GitVersion:\u0026amp;quot;v1.11.0\u0026amp;quot;, GitCommit:\u0026amp;quot;91e7b4fd31fcd3d5f436da26c980becec37ceefe\u0026amp;quot;, GitTreeState:\u0026amp;quot;clean\u0026amp;quot;, BuildDate:\u0026amp;quot;2018-06-27T20:14:41Z\u0026amp;quot;, GoVersion:\u0026amp;quot;go1.10.2\u0026amp;quot;, Compiler:\u0026amp;quot;gc\u0026amp;quot;, Platform:\u0026amp;quot;linux/amd64\u0026amp;quot;} Run Kubeadm First command needs to use sudo\nsudo kubeadm config images pull sudo kubeadm init Let copy the .kube config into current user home directoru\nmkdir -p $HOME/.kube sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config kubectl get all --all-namespaces From that point don\u0026amp;rsquo;t really need sudo anymore\nAdd Calico At that point most of the node will stay in mode \u0026amp;ldquo;NotReady\u0026amp;rdquo;\nkubectl get nodes NAME STATUS ROLES AGE VERSION allinone NotReady master 1m v1.11.0 To install Calico\nkubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml configmap/calico-config created daemonset.extensions/calico-etcd created service/calico-etcd created daemonset.extensions/calico-node created deployment.extensions/calico-kube-controllers created clusterrolebinding.rbac.authorization.k8s.io/calico-cni-plugin created clusterrole.rbac.authorization.k8s.io/calico-cni-plugin created serviceaccount/calico-cni-plugin created clusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers …","date":1529539200,"description":"","lastmod":"2018-06-21T00:00:00Z","objectID":"c22432a2c8f010c05f000d510afc1d1b","permalink":"https://jbrette.github.io/kubernetes/sdk/2018-06-21-a/","publishdate":"2018-06-21T00:00:00Z","tags":["kubedge","kubernetes","kubeadm"],"title":"Setup SingleNode Kubernetes Cluster using kubeadm"},{"categories":["wiki"],"content":"Goal To create kubernetes multi nodes environments on Windows, one of the option is to create a cluster using CoreOS since the foot print is quite reduced.\nSetup of the cluster TBD\nUpdate of the cluster I found the following link\nsudo bash -c \u0026#39;mkdir -p /etc/systemd/system/docker.service.d/; cat \u0026amp;lt;\u0026amp;lt;EOF \u0026amp;gt; /etc/systemd/system/docker.service.d/50-insecure-registry.conf [Service] Environment=\u0026amp;quot;DOCKER_OPTS=--insecure-registry 10.0.0.0/8 --insecure-registry 172.16.0.0/12 --insecure-registry 192.168.0.0/16\u0026amp;quot; EOF \u0026#39; sudo bash -ec \u0026#39;uname -a \u0026amp;amp;\u0026amp;amp; cat /etc/lsb-release \u0026amp;amp;\u0026amp;amp; \\ echo GROUP=stable \u0026amp;gt; /etc/coreos/update.conf \u0026amp;amp;\u0026amp;amp; \\ systemctl unmask update-engine.service \u0026amp;amp;\u0026amp;amp; \\ systemctl start update-engine.service \u0026amp;amp;\u0026amp;amp; \\ update_engine_client -update \u0026amp;amp;\u0026amp;amp; \\ reboot\u0026#39; sudo journalctl -u update-engine.service | grep \u0026amp;quot;boot flags\u0026amp;quot; sudo bash -ec \u0026#39;systemctl stop update-engine.service \u0026amp;amp;\u0026amp;amp; \\ systemctl mask update-engine.service\u0026#39; Usefull Links TBD\n","date":1530057600,"description":"","lastmod":"2018-06-27T00:00:00Z","objectID":"4743721854f7f863178705e4f5e03667","permalink":"https://jbrette.github.io/kubernetes/sdk/2018-06-27-a/","publishdate":"2018-06-27T00:00:00Z","tags":["coreos"],"title":"Manual Update of CoreOS"},{"categories":["wiki"],"content":"Goal Kubeadm is coming with an upgrade option. The goal of this study is to leverage the option.\nInitial set up Kubernetes 1.10.4 is installed\ncat /etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main sudo dpkg -l kubeadm Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-======================================-========================-========================-================================================================================= ii kubeadm 1.10.4-00 amd64 Kubernetes Cluster Bootstrapping Tool sudo dpkg -l kubelet Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-======================================-========================-========================-================================================================================= ii kubelet 1.10.4-00 amd64 Kubernetes Node Agent sudo dpkg -l kubectl Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-======================================-========================-========================-================================================================================= ii kubectl 1.10.4-00 amd64 Kubernetes Command Line Tool kubectl version Client Version: version.Info{Major:\u0026amp;quot;1\u0026amp;quot;, Minor:\u0026amp;quot;10\u0026amp;quot;, GitVersion:\u0026amp;quot;v1.10.4\u0026amp;quot;, GitCommit:\u0026amp;quot;5ca598b4ba5abb89bb773071ce452e33fb66339d\u0026amp;quot;, GitTreeState:\u0026amp;quot;clean\u0026amp;quot;, BuildDate:\u0026amp;quot;2018-06-06T08:13:03Z\u0026amp;quot;, GoVersion:\u0026amp;quot;go1.9.3\u0026amp;quot;, Compiler:\u0026amp;quot;gc\u0026amp;quot;, …","date":1530316800,"description":"","lastmod":"2018-06-30T00:00:00Z","objectID":"e7189da27431166e6fae55e53a70f422","permalink":"https://jbrette.github.io/kubernetes/sdk/2018-06-30-a/","publishdate":"2018-06-30T00:00:00Z","tags":["kubernetes"],"title":"Update Kubernetes to 1.11 on Ubuntu"},{"content":"\u0026amp;nbsp;Note Most of those wikis are obsolete and transfered to Kubege\n ","date":1514764800,"description":"","lastmod":"2018-01-01T00:00:00Z","objectID":"22978ac57e30b0a93cb4ec3ebccb356f","permalink":"https://jbrette.github.io/kubernetes/sdk/","publishdate":"2018-01-01T00:00:00Z","title":"SDK"},{"categories":["kubedge"],"content":"Blinkt on Kubedge used to demonstrate Kubernetes replicas and the configuration as code.\nKubedge\n","date":1537920000,"description":"Replicas Control on Kubedge using Blinkt","lastmod":"2018-09-26T00:00:00Z","objectID":"00998c390f62a2a7a941e63242362cbc","permalink":"https://jbrette.github.io/post/2018-09-26-a/","publishdate":"2018-09-26T00:00:00Z","tags":["kubedge","blinkt"],"title":"Kubernetes Replicas using Blinkt"},{"categories":["kubedge"],"content":"Blinkt on Kubedge used to demonstrate Kubernetes Rolling Upgrade\nKubedge\n","date":1538092800,"description":"Rolling Upgrade demo on Kubedge using Blinkt","lastmod":"2018-09-28T00:00:00Z","objectID":"09c977c70f526ff59eca5b286a23e990","permalink":"https://jbrette.github.io/post/2018-09-28-a/","publishdate":"2018-09-28T00:00:00Z","tags":["kubedge","blinkt"],"title":"Rolling Upgrade"},{"categories":["kubedge"],"content":"Prometheus deploys on Kubedge using Helm Charts.\nKubedge\n","date":1538524800,"description":"Deploy Prometheus on Kubedge","lastmod":"2018-10-03T00:00:00Z","objectID":"882c2953a1471152d79370a21e58c234","permalink":"https://jbrette.github.io/post/2018-10-03-a/","publishdate":"2018-10-03T00:00:00Z","tags":["kubedge","prometheus"],"title":"Prometheus"},{"content":"aaaaaa\nvvvv\naaa\n","date":1508248845,"description":"","lastmod":"2017-10-17T14:00:45Z","objectID":"f2fa6ea0717050da498e1521b211ff9b","permalink":"https://jbrette.github.io/posts/hello_world/","publishdate":"2017-10-17T14:00:45Z","title":"Hello_world"}]