diff --git a/Gemfile b/Gemfile index 5c41b36a24..d9a2e7ff9b 100644 --- a/Gemfile +++ b/Gemfile @@ -9,9 +9,12 @@ gem "wdm", "~> 0.1.0" if Gem.win_platform? group :jekyll_plugins do gem "jekyll-paginate" gem "jekyll-sitemap" - gem "jekyll-gist" + #gem "jekyll-gist" gem "jekyll-feed" gem "jemoji" gem "jekyll-include-cache" - gem "jekyll-algolia" + #gem "jekyll-algolia" + # Custom + gem "webrick" + gem "jekyll-remote-include" end diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000..5a51e7c2a9 --- /dev/null +++ b/Makefile @@ -0,0 +1,23 @@ +prepare: + touch Gemfile.lock + mkdir docs + chmod a+w Gemfile.lock + chmod a+w _site + +serve: + docker run -e JEKYLL_ENV=production -p 4000:4000 --rm -v=.:/srv/jekyll:Z -it jekyll/builder sh -c 'while :; do jekyll serve; done' + +serve_and_update: + rm Gemfile.lock + touch Gemfile.lock + chmod a+w Gemfile.lock + $(MAKE) serve + +serve_local: + while :; do bundle exec jekyll serve; done + +build: + docker run -e JEKYLL_ENV=production -p 4000:4000 --rm -v=.:/srv/jekyll:Z -it jekyll/builder sh -c 'while ! jekyll build; do echo "Trying again ..."; done' + +build_local: + while ! jekyll build; do echo "Trying again ..."; done diff --git a/_config.yml b/_config.yml index 3da6a50c40..4df0a6fd20 100644 --- a/_config.yml +++ b/_config.yml @@ -13,14 +13,11 @@ # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. # You can create any custom variable you would like, and they will be accessible # in the templates via {{ site.myvariable }}. -title: MM -email: -description: >- # this means to ignore newlines until "baseurl:" - Write an awesome description for your new site here. You can edit this - line in _config.yml. It will appear in your document head meta (for - Google search results) and in your feed.xml site description. -twitter_username: username -github_username: username +title: GitOps +email: josecastillolema@gmail.com +description: "Networks, SDN, NFVi, OpenStack, K8s/OpenShift." +# twitter_username: username +github_username: josecastillolema minimal_mistakes_skin: default search: true @@ -28,7 +25,7 @@ search: true markdown: kramdown remote_theme: mmistakes/minimal-mistakes # Outputting -permalink: /:categories/:title/ +permalink: /:title/ paginate: 5 # amount of posts to show paginate_path: /page:num/ timezone: # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones @@ -58,34 +55,65 @@ plugins: - jekyll-include-cache author: - name : "First Lastname" - avatar : "/assets/images/bio-photo.jpg" - bio : "My awesome biography constrained to a sentence or two goes here." + name : "Jose Castillo Lema" + avatar : "/assets/images/me.jpg" + bio : "Software Engineer @ **RedHat**" + location: "Santiago, Spain" links: - - label: "Website" - icon: "fas fa-fw fa-link" - url: "https://" - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/" - label: "GitHub" icon: "fab fa-fw fa-github" - url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - url: "https://instagram.com/" + url: "https://github.com/josecastillolema" + - label: "LinkedIn" + icon: "fab fa-fw fa-linkedin" + url: "https://www.linkedin.com/in/jose-castillo-lema" + - label: "Acclaim" + icon: "fas fa-fw fa-angle-double-up" + url: "https://www.youracclaim.com/users/jose-castillo-lema" + # - label: "Accredible" + # icon: "fas fa-fw fa-credit-card" + # url: "https://www.credential.net/profile/joscastillolema/wallet" + - label: "StackOverflow" + icon: "fab fa-fw fa-stack-overflow" + url: "https://stackoverflow.com/users/4288758/jos%c3%a9-castillo-lema" + - label: "ResearchGate" + icon: "fab fa-fw fa-researchgate" + url: "https://www.researchgate.net/profile/Jose_Castillo-Lema" + - label: "GoogleScholar" + icon: "fab fa-fw fa-google" + url: "https://scholar.google.com.br/citations?user=_xNpHiwAAAAJ" + #- label: "DockerHub" + # icon: "fab fa-fw fa-docker" + # url: "https://hub.docker.com/u/josecastillolema" + #- label: "Lattes" + # icon: "fas fa-fw fa-university" + # url: "http://lattes.cnpq.br/7955703023492257" + # - label: "Gravatar" + # icon: "fas fa-fw fa-power-off" + # url: "https://en.gravatar.com/josecastillolema" + - label: "ONF" + icon: "fab fa-fw fa-battle-net" + url: "https://www.opennetworking.org/ambassadors/jose-castillo-lema/" + - label: "YouTube" + icon: "fab fa-fw fa-youtube-square" + url: "https://www.youtube.com/channel/UCm5egt_lHxJX-VQdkLPszog/playlists" + - label: "RSS" + icon: "fas fa-fw fa-rss-square" + url: "https://josecastillolema.github.io/feed.xml" + - label: "Email" + icon: "fas fa-fw fa-envelope-square" + url: "mailto:josecastillolema@gmail.com" footer: links: - - label: "Twitter" - icon: "fab fa-fw fa-twitter-square" - url: "https://twitter.com/" - label: "GitHub" icon: "fab fa-fw fa-github" - url: "https://github.com/" - - label: "Instagram" - icon: "fab fa-fw fa-instagram" - url: "https://instagram.com/" + url: "https://github.com/josecastillolema" + - label: "LinkedIn" + icon: "fab fa-fw fa-linkedin" + url: https://www.linkedin.com/in/jose-castillo-lema + - label: "Stack Overflow" + icon: "fab fa-stack-overflow" + url: "https://stackoverflow.com/users/4288758/jos%c3%a9-castillo-lema" defaults: # _posts @@ -113,3 +141,32 @@ category_archive: tag_archive: type: liquid path: /tags/ + +# Custom +analytics: + provider : "google" # false (default), "google", "google-universal", "custom" + google: + tracking_id : "UA-169326084-1" + anonymize_ip : # true, false (default) +baseurl : "" +comments: + provider : "disqus" # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom" + disqus: + shortname : https-josecastillolema-github-io +destination : docs +google_site_verification : googled48a6d8a28aaa375.html +logo : /assets/images/favicon_io/android-chrome-192x192.png +og_image : /assets/images/favicon_io/android-chrome-512x512.png # Open Graph/Twitter default site image +repository : josecastillolema/josecastillolema.github.io +social: + links: # An array of links to social media profiles + - https://www.linkedin.com/in/jose-castillo-lema + - https://github.com/josecastillolema + - https://stackoverflow.com/users/4288758/jos%c3%a9-castillo-lema + - https://www.researchgate.net/profile/Jose_Castillo-Lema + - https://scholar.google.com.br/citations?user=_xNpHiwAAAAJ + - http://lattes.cnpq.br/7955703023492257 + - https://www.opennetworking.org/ambassadors/jose-castillo-lema/ +teaser : /assets/images/favicon_io/android-chrome-512x512.png +url : https://josecastillolema.github.io +words_per_minute : 100 diff --git a/_data/navigation.yml b/_data/navigation.yml index e3af8aecdd..2f05ec0f3f 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -1,9 +1,25 @@ +# main links main: - - title: "Posts" - url: /posts/ - - title: "Categories" - url: /categories/ - - title: "Tags" + #- title: "Quick-Start Guide" + # url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/ + # - title: "Sample Posts" + # url: /year-archive/ + # - title: "Sample Collections" + # url: /collection-archive/ + # - title: "Sitemap" + # url: /sitemap/ + - title: "series" + url: /series/ + - title: "classes" + url: /classes/ + - title: "mini-nfv" + url: /mininfv/ + #- title: "posts" + # url: /posts/ + #- title: "Categories" + # url: /categories/ + - title: "tags" url: /tags/ - - title: "About" - url: /about/ \ No newline at end of file + - title: "about" + url: /about/ + diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 0000000000..cf542244cf --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,26 @@ + + +{% include seo.html %} + +{% unless site.atom_feed.hide %} + +{% endunless %} + + + + + + + + + + + + +{% if site.head_scripts %} + {% for script in site.head_scripts %} + + {% endfor %} +{% endif %} diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 0000000000..996a93f8c0 --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,47 @@ +--- +--- + + + + + + {% include head.html %} + {% include head/custom.html %} + + + + {% include_cached skip-links.html %} + {% include_cached masthead.html %} + + + + +
+ {{ content }} +
+ + {% if site.search == true %} +
+ {% include_cached search/search_form.html %} +
+ {% endif %} + + + + {% include scripts.html %} + + + diff --git a/_pages/404.md b/_pages/404.md index b3025a6053..4adbecc666 100644 --- a/_pages/404.md +++ b/_pages/404.md @@ -5,4 +5,11 @@ sitemap: false permalink: /404.html --- -Sorry, but the page you were trying to view does not exist. +Sorry, but the page you were trying to view does not exist --- perhaps you can try searching for it below. + + + diff --git a/_pages/about.md b/_pages/about.md index 9ba0655cdf..1434cef06d 100644 --- a/_pages/about.md +++ b/_pages/about.md @@ -3,6 +3,18 @@ permalink: /about/ title: "About" --- -Tempor velit sint sunt ipsum tempor enim ad qui ullamco. Est dolore anim ad velit duis dolore minim sunt aliquip amet commodo labore. Ut eu pariatur aute ea aute excepteur laborum. Esse ea esse excepteur minim mollit qui cillum excepteur ex dolore magna. Labore deserunt fugiat incididunt incididunt sint ea. Consequat dolore aute laboris quis proident quis non et est consectetur ex eiusmod sit culpa. -Cupidatat ea do et in excepteur in. Ad nostrud ut est esse eu duis ea sunt eiusmod. Aliquip tempor veniam sint elit fugiat. Velit incididunt laboris amet incididunt labore dolore irure velit excepteur commodo deserunt laborum. Consectetur eu fugiat veniam veniam Lorem labore magna eiusmod. Ea occaecat reprehenderit pariatur consectetur minim labore ut aliquip. \ No newline at end of file +{% remote_include https://raw.githubusercontent.com/josecastillolema/josecastillolema/master/README.md %} + +### Bio + +Currently working as Cloud Consultant, Architect and Technical Lead for NFV-related projects at Red Hat. BE in Computer Engineering from University of A Coruña (Spain) and PhD from Polytechnic School of the University of São Paulo (Brazil). During MsC and PhD studies, worked on QoS routing in SDN and NFV Management and Orchestration. + +Have been designing and implementing IaaS/PaaS solutions, namelly OpenStack and Kubernetes/OpenShift, for the last 7 years, and teaching postgraduate courses for the last 5 years. + +Areas of Expertise + - NFVi + - OpenStack + - K8s/OpenShift + - SDN +{: .text-justify} diff --git a/_pages/classes.md b/_pages/classes.md new file mode 100644 index 0000000000..eaacd9167a --- /dev/null +++ b/_pages/classes.md @@ -0,0 +1,31 @@ +--- +permalink: /classes/ +last_modified_at: 2022-03-21T16:00:58-04:00 +tags: + - aws + - azure + - classes + - es + - fiap + - iffe + - iot + - openstack + - pt + - redhat +toc: true +toc_sticky: true +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/iffe/main/README.md %} + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/README.md %} + + diff --git a/_pages/mininfv.md b/_pages/mininfv.md new file mode 100644 index 0000000000..695b8a9454 --- /dev/null +++ b/_pages/mininfv.md @@ -0,0 +1,21 @@ +--- +permalink: /mininfv/ +last_modified_at: 2020-07-10T16:00:58-04:00 +tags: + - en + - iac + - networks + - nfv + - sdn +toc: true +toc_sticky: true +--- + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/mini-nfv/master/README.md %} + + diff --git a/_pages/series.md b/_pages/series.md new file mode 100644 index 0000000000..772a44ccdd --- /dev/null +++ b/_pages/series.md @@ -0,0 +1,87 @@ +--- +title: "Series" +permalink: /series/ +last_modified_at: 2020-07-10T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - iac + - openstack + - openshift + - redhat + - pt + - series + - terraform +toc: true +toc_sticky: true +--- + + +# AWS + +## Infrastructure as a Service (IaaS) +- AWS I: [Elastic Computing (EC2)](/aws1-ec2) +- AWS II: [Elastic Block Service (EBS)](/aws2-ebs) +- AWS III: [Simple Storage Service (S3)](/aws3-s3) +- AWS IV: [Auto Scaling](/aws4-autoscaling) +- AWS V: [Elastic Container Service (ECS)](/aws5-ecs) +- AWS VI: [CloudFormation](/aws6-cloudformation) + +## Platform as a Service (PaaS) +- AWS VII: [Elastic Beanstalk (EB)](/aws7-eb) +- AWS VIII: [Elastic Beanstalk (EB) com Spring Boot](/aws8-eb-springboot) +- AWS IX: [CodePipeline](/aws9-cp) +- AWS X: [API Gateway](/aws10-apigw) +- AWS XI: [Elastic Kubernetes Service (EKS)](/aws11-eks) + +### Database as a Service (DBaaS) +- AWS XII: [DynamoDB](/aws12-dynamodb) +- AWS XIII: [Relational Database Service (RDS)](/aws13-rds) + +### Big Data as a Service (BDaaS) +- AWS XIV: [Elastic MapReduce (EMR)](/aws14-emr) + +## Function as a Service (FaaS) +- AWS XV: [Lambda](/aws15-lambda) + +# Azure + +## Infrastructure as a Service (IaaS) +- Azure I: [Virtual machines](/azure1-vm) +- Azure II: [Containers](/azure2-container) +- Azure III: [Disks](/azure3-disk) +- Azure IV: [Blob storage](/azure4-blob) + +## Platform as a Service (PaaS) +- Azure V: [App services](/azure5-app) +- Azure VI: [Azure Pipelines](/azure6-pipeline) + +# Containers +- Containers I: [Docker](/containers1-docker) +- Containers II: [Docker - continuação](/containers2-docker2) +- Containers III: [Docker Compose](/containers3-docker-compose) + +## Orquestração +- Containers IV: [Docker Swarm](/containers4-docker-swarm) +- Containers V: [Kubernetes - Instalação](/containers5-k8s-install) +- Containers VI: [Kompose](/containers6-kompose) +- Containers VII: [Kubernetes - Uso](/containers7-k8s-use) + +# OpenStack +- OpenStack I: [Keystone - Identity Manager](/openstack1-keystone) +- OpenStack II: [Glance - Image Service](/openstack2-glance) +- OpenStack III: [Nova - Instance Service](/openstack3-nova) +- OpenStack IV: [Neutron - Network Service](/openstack4-neutron) +- OpenStack V: [Cinder - Block Storage Service](/openstack5-cinder) +- OpenStack VI: [Swift - Object Storage Service](/openstack6-swift) +- OpenStack VII: [Heat - Orquestration Service](/openstack7-heat) +- OpenStack VIII: [Terraform](/openstack8-terraform) + +## Infrastructure as code (IaC) +- [Terraform – IaC – Terraformando no OpenStack](/terraformando-openstack) +- [Terraform no OpenStack II](/openstack8-terraform) +- [Terraform na AWS](/iac-terraform-aws) +- [Heat - Introdução](/heat-introducao) +- [Heat II](/openstack7-heat) +- [Ansible na AWS](/iac-ansible-aws) \ No newline at end of file diff --git a/_posts/2010-01-07-post-modified.md b/_posts/2010-01-07-post-modified.md deleted file mode 100644 index c09d324ae1..0000000000 --- a/_posts/2010-01-07-post-modified.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Post: Modified Date" -last_modified_at: 2016-03-09T16:20:02-05:00 -categories: - - Blog -tags: - - Post Formats - - readability - - standard ---- - -This post has been updated and should show a modified date if used in a layout. - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. \ No newline at end of file diff --git a/_posts/2010-01-07-post-standard.md b/_posts/2010-01-07-post-standard.md deleted file mode 100644 index fc25616d42..0000000000 --- a/_posts/2010-01-07-post-standard.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: "Post: Standard" -excerpt_separator: "" -categories: - - Blog -tags: - - Post Formats - - readability - - standard ---- - -All children, except one, grow up. They soon know that they will grow up, and the way Wendy knew was this. One day when she was two years old she was playing in a garden, and she plucked another flower and ran with it to her mother. I suppose she must have looked rather delightful, for Mrs. Darling put her hand to her heart and cried, "Oh, why can't you remain like this for ever!" This was all that passed between them on the subject, but henceforth Wendy knew that she must grow up. You always know after you are two. Two is the beginning of the end. - -Mrs. Darling first heard of Peter when she was tidying up her children's minds. It is the nightly custom of every good mother after her children are asleep to rummage in their minds and put things straight for next morning, repacking into their proper places the many articles that have wandered during the day. - - - -This post has a manual excerpt `` set after the second paragraph. The following YAML Front Matter has also be applied: - -```yaml -excerpt_separator: "" -``` - -If you could keep awake (but of course you can't) you would see your own mother doing this, and you would find it very interesting to watch her. It is quite like tidying up drawers. You would see her on her knees, I expect, lingering humorously over some of your contents, wondering where on earth you had picked this thing up, making discoveries sweet and not so sweet, pressing this to her cheek as if it were as nice as a kitten, and hurriedly stowing that out of sight. When you wake in the morning, the naughtiness and evil passions with which you went to bed have been folded up small and placed at the bottom of your mind and on the top, beautifully aired, are spread out your prettier thoughts, ready for you to put on. - -I don't know whether you have ever seen a map of a person's mind. Doctors sometimes draw maps of other parts of you, and your own map can become intensely interesting, but catch them trying to draw a map of a child's mind, which is not only confused, but keeps going round all the time. There are zigzag lines on it, just like your temperature on a card, and these are probably roads in the island, for the Neverland is always more or less an island, with astonishing splashes of colour here and there, and coral reefs and rakish-looking craft in the offing, and savages and lonely lairs, and gnomes who are mostly tailors, and caves through which a river runs, and princes with six elder brothers, and a hut fast going to decay, and one very small old lady with a hooked nose. It would be an easy map if that were all, but there is also first day at school, religion, fathers, the round pond, needle-work, murders, hangings, verbs that take the dative, chocolate pudding day, getting into braces, say ninety-nine, three-pence for pulling out your tooth yourself, and so on, and either these are part of the island or they are another map showing through, and it is all rather confusing, especially as nothing will stand still. - -Of course the Neverlands vary a good deal. John's, for instance, had a lagoon with flamingoes flying over it at which John was shooting, while Michael, who was very small, had a flamingo with lagoons flying over it. John lived in a boat turned upside down on the sands, Michael in a wigwam, Wendy in a house of leaves deftly sewn together. John had no friends, Michael had friends at night, Wendy had a pet wolf forsaken by its parents, but on the whole the Neverlands have a family resemblance, and if they stood still in a row you could say of them that they have each other's nose, and so forth. On these magic shores children at play are for ever beaching their coracles [simple boat]. We too have been there; we can still hear the sound of the surf, though we shall land no more. - -Of all delectable islands the Neverland is the snuggest and most compact, not large and sprawly, you know, with tedious distances between one adventure and another, but nicely crammed. When you play at it by day with the chairs and table-cloth, it is not in the least alarming, but in the two minutes before you go to sleep it becomes very real. That is why there are night-lights. - -Occasionally in her travels through her children's minds Mrs. Darling found things she could not understand, and of these quite the most perplexing was the word Peter. She knew of no Peter, and yet he was here and there in John and Michael's minds, while Wendy's began to be scrawled all over with him. The name stood out in bolder letters than any of the other words, and as Mrs. Darling gazed she felt that it had an oddly cocky appearance. \ No newline at end of file diff --git a/_posts/2010-01-08-post-chat.md b/_posts/2010-01-08-post-chat.md deleted file mode 100644 index 9092634192..0000000000 --- a/_posts/2010-01-08-post-chat.md +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: "Post: Chat" -categories: - - Blog -tags: - - chat - - Post Formats ---- - -Abbott: Strange as it may seem, they give ball players nowadays very peculiar names. - -Costello: Funny names? - -Abbott: Nicknames, nicknames. Now, on the St. Louis team we have Who's on first, What's on second, I Don't Know is on third-- - -Costello: That's what I want to find out. I want you to tell me the names of the fellows on the St. Louis team. - -Abbott: I'm telling you. Who's on first, What's on second, I Don't Know is on third-- - -Costello: You know the fellows' names? - -Abbott: Yes. - -Costello: Well, then who's playing first? - -Abbott: Yes. - -Costello: I mean the fellow's name on first base. - -Abbott: Who. - -Costello: The fellow playin' first base. - -Abbott: Who. - -Costello: The guy on first base. - -Abbott: Who is on first. - -Costello: Well, what are you askin' me for? - -Abbott: I'm not asking you--I'm telling you. Who is on first. - -Costello: I'm asking you--who's on first? - -Abbott: That's the man's name. - -Costello: That's who's name? - -Abbott: Yes. - -Costello: When you pay off the first baseman every month, who gets the money? - -Abbott: Every dollar of it. And why not, the man's entitled to it. - -Costello: Who is? - -Abbott: Yes. - -Costello: So who gets it? - -Abbott: Why shouldn't he? Sometimes his wife comes down and collects it. - -Costello: Who's wife? - -Abbott: Yes. After all, the man earns it. - -Costello: Who does? - -Abbott: Absolutely. - -Costello: Well, all I'm trying to find out is what's the guy's name on first base? - -Abbott: Oh, no, no. What is on second base. - -Costello: I'm not asking you who's on second. - -Abbott: Who's on first! - -Costello: St. Louis has a good outfield? - -Abbott: Oh, absolutely. - -Costello: The left fielder's name? - -Abbott: Why. - -Costello: I don't know, I just thought I'd ask. - -Abbott: Well, I just thought I'd tell you. - -Costello: Then tell me who's playing left field? - -Abbott: Who's playing first. - -Costello: Stay out of the infield! The left fielder's name? - -Abbott: Why. - -Costello: Because. - -Abbott: Oh, he's center field. - -Costello: Wait a minute. You got a pitcher on this team? - -Abbott: Wouldn't this be a fine team without a pitcher? - -Costello: Tell me the pitcher's name. - -Abbott: Tomorrow. - -Costello: Now, when the guy at bat bunts the ball--me being a good catcher--I want to throw the guy out at first base, so I pick up the ball and throw it to who? - -Abbott: Now, that's he first thing you've said right. - -Costello: I DON'T EVEN KNOW WHAT I'M TALKING ABOUT! - -Abbott: Don't get excited. Take it easy. - -Costello: I throw the ball to first base, whoever it is grabs the ball, so the guy runs to second. Who picks up the ball and throws it to what. What throws it to I don't know. I don't know throws it back to tomorrow--a triple play. - -Abbott: Yeah, it could be. - -Costello: Another guy gets up and it's a long ball to center. - -Abbott: Because. - -Costello: Why? I don't know. And I don't care. - -Abbott: What was that? - -Costello: I said, I DON'T CARE! - -Abbott: Oh, that's our shortstop! \ No newline at end of file diff --git a/_posts/2010-02-05-post-notice.md b/_posts/2010-02-05-post-notice.md deleted file mode 100644 index 392f2cd52d..0000000000 --- a/_posts/2010-02-05-post-notice.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: "Post: Notice" -categories: - - Blog -tags: - - Post Formats - - notice ---- - -A notice displays information that explains nearby content. Often used to call attention to a particular detail. - -When using Kramdown `{: .notice}` can be added after a sentence to assign the `.notice` to the `

` element. - -**Changes in Service:** We just updated our [privacy policy](#) here to better service our customers. We recommend reviewing the changes. -{: .notice} - -**Primary Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. [Praesent libero](#). Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--primary} - -**Info Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing elit](#). Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--info} - -**Warning Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. [Integer nec odio](#). Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--warning} - -**Danger Notice:** Lorem ipsum dolor sit amet, [consectetur adipiscing](#) elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. -{: .notice--danger} - -**Success Notice:** Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at [nibh elementum](#) imperdiet. -{: .notice--success} - -Want to wrap several paragraphs or other elements in a notice? Using Liquid to capture the content and then filter it with `markdownify` is a good way to go. - -```html -{% raw %}{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %}{% endraw %} - -
{% raw %}{{ notice-2 | markdownify }}{% endraw %}
-``` - -{% capture notice-2 %} -#### New Site Features - -* You can now have cover images on blog pages -* Drafts will now auto-save while writing -{% endcapture %} - -
- {{ notice-2 | markdownify }} -
- -Or you could skip the capture and stick with straight HTML. - -```html -
-

Message

-

A basic message.

-
-``` - -
-

Message

-

A basic message.

-
\ No newline at end of file diff --git a/_posts/2010-02-05-post-quote.md b/_posts/2010-02-05-post-quote.md deleted file mode 100644 index fda06e93db..0000000000 --- a/_posts/2010-02-05-post-quote.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Post: Quote" -categories: - - Blog -tags: - - Post Formats - - quote ---- - -> Only one thing is impossible for God: To find any sense in any copyright law on the planet. - -> Mark Twain \ No newline at end of file diff --git a/_posts/2010-03-07-post-link.md b/_posts/2010-03-07-post-link.md deleted file mode 100644 index 6d9918026a..0000000000 --- a/_posts/2010-03-07-post-link.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Post: Link" -categories: - - Blog -tags: - - link - - Post Formats -link: https://github.com ---- - -This theme supports **link posts**, made famous by John Gruber. To use, just add `link: http://url-you-want-linked` to the post's YAML front matter and you're done. - -> And this is how a quote looks. - -Some [link](#) can also be shown. \ No newline at end of file diff --git a/_posts/2012-07-30-icccn12.md b/_posts/2012-07-30-icccn12.md new file mode 100644 index 0000000000..6e459e79f4 --- /dev/null +++ b/_posts/2012-07-30-icccn12.md @@ -0,0 +1,45 @@ +--- +title: "ICCCN 2012" +last_modified_at: 2012-07-30T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research +toc: true +toc_sticky: true +--- + +**2012 21st International Conference on Computer Communications and Networks (ICCCN)** + +## [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/6287204/proceeding) + +[**Context-Driven Resource Over-Provisioning Approach for Rich Networking**](https://ieeexplore.ieee.org/document/6289251) + +[![DOI:10.1109/ICCCN.2012.6289251](https://zenodo.org/badge/DOI/10.1109/ICCCN.2012.6289251.svg)](https://doi.org/10.1109/ICCCN.2012.6289251) + + - J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain) + - E. Cruz (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) + - A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) + - S. Sargento (Institute of Telecommunications, University of Aveiro, Portugal) + - E. Cerqueira (Computer Engineering, Federal University of Para (UFPA), Belém-PA, Brazil) + +## Cite this + +### Plain text + +J. Castillo, E. Cruz, A. Neto, S. Sargento and E. Cerqueira, "**Context-Driven Resource Over-Provisioning Approach for Rich Networking**", *2012 21st International Conference on Computer Communications and Networks (ICCCN)*, Munich, 2012, pp. 1-5, doi: 10.1109/ICCCN.2012.6289251. + +### BibTeX + +``` +@INPROCEEDINGS {6289251, + author={J. {Castillo} and E. {Cruz} and A. {Neto} and S. {Sargento} and E. {Cerqueira}}, + booktitle={2012 21st International Conference on Computer Communications and Networks (ICCCN)}, + title={Context-Driven Resource Over-Provisioning Approach for Rich Networking}, + year={2012}, + volume={}, + number={}, + pages={1-5}} +``` diff --git a/_posts/2012-10-07-latincom12.md b/_posts/2012-10-07-latincom12.md new file mode 100644 index 0000000000..e1a7984a36 --- /dev/null +++ b/_posts/2012-10-07-latincom12.md @@ -0,0 +1,45 @@ +--- +title: "IEEE LATINCOM 2012" +last_modified_at: 2012-10-07T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research +toc: true +toc_sticky: true +--- + +**2012 IEEE Latin-America Conference on Communications** + +## [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/6495636/proceeding) + +[**Applying advanced network resource provisioning in future internet systems**](https://ieeexplore.ieee.org/document/6506000) + +[![DOI:10.1109/LATINCOM.2012.6506000](https://zenodo.org/badge/DOI/10.1109/LATINCOM.2012.6506000.svg)](https://doi.org/10.1109/LATINCOM.2012.6506000) + + - S. Jardim (Informatics Institute, Federal University of Goiás, Goiânia, Brazil) + - A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) + - J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain) + - E. Cerqueira (Computer Engineering, Federal University of Para (UFPA), Belém, Brazil) + - H. Barros (Federal University of Rio Grande do Norte (UFRN), Natal, Brazil) + +## Cite this + +### Plain text + +S. Jardim, A. Neto, J. Castillo, E. Cerqueira and H. Barros, "**Applying advanced network resource provisioning in future internet systems**", *2012 IEEE Latin-America Conference on Communications*, Cuenca, 2012, pp. 1-6, doi: 10.1109/LATINCOM.2012.6506000. + +### BibTeX + +``` +@INPROCEEDINGS {6506000, + author={S. {Jardim} and A. {Neto} and J. {Castillo} and E. {Cerqueira} and H. {Barros}}, + booktitle={2012 IEEE Latin-America Conference on Communications}, + title={Applying advanced network resource provisioning in future internet systems}, + year={2012}, + volume={}, + number={}, + pages={1-6}} +``` diff --git a/_posts/2012-10-15-networks12.md b/_posts/2012-10-15-networks12.md new file mode 100644 index 0000000000..c7cde45467 --- /dev/null +++ b/_posts/2012-10-15-networks12.md @@ -0,0 +1,45 @@ +--- +title: "NETWORKS 2012" +last_modified_at: 2012-10-15T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research +toc: true +toc_sticky: true +--- + +**2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS)** + +## [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/6365888/proceeding) + +[**Applying over-provisioning centric resource control in context-sensitive networks**](https://ieeexplore.ieee.org/document/6825100) + +[![DOI:10.1109/NETWKS.2012.6381689](https://zenodo.org/badge/DOI/10.1109/NETWKS.2012.6381689.svg)](https://doi.org/10.1109/NETWKS.2012.6381689) + + - J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain) + - E. Cruz (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) + - A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) + - S. Sargento (Institute of Telecommunications, University of Aveiro, Portugal) + - E. Cerqueira (Computer Engineering, Federal University of Para (UFPA), Belém-PA, Brazil) + +## Cite this + +### Plain text + +J. Castillo-Lema, E. Cruz, A. Neto, S. Sargento and E. Cerqueira, "**Applying over-provisioning centric resource control in context-sensitive networks**", *2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS)*, Rome, 2012, pp. 1-6, doi: 10.1109/NETWKS.2012.6381689. + +### BibTeX + +``` +@INPROCEEDINGS {6381689, + author={J. {Castillo-Lema} and E. {Cruz} and A. {Neto} and S. {Sargento} and E. {Cerqueira}}, + booktitle={2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS)}, + title={Applying over-provisioning centric resource control in context-sensitive networks}, + year={2012}, + volume={}, + number={}, + pages={1-6}} +``` diff --git a/_posts/2013-01-28-icnc13.md b/_posts/2013-01-28-icnc13.md new file mode 100644 index 0000000000..feb30f00fd --- /dev/null +++ b/_posts/2013-01-28-icnc13.md @@ -0,0 +1,73 @@ +--- +title: "ICNC 2013" +last_modified_at: 2013-12-09T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research +toc: true +toc_sticky: true +--- + +**2013 International Conference on Computing, Networking and Communications (ICNC)** + +# [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/6495637/proceeding) + +## [Advanced resource provisioning in context-sensitive converged networks](https://ieeexplore.ieee.org/document/6504057) + +[![DOI:10.1109/ICCNC.2013.6504057](https://zenodo.org/badge/DOI/10.1109/ICCNC.2013.6504057.svg)](https://doi.org/10.1109/ICCNC.2013.6504057) + + - Jose Castillo Lema (Universidade da Coruña, Spain) + - Elifanio Cruz (Federal University of Ceará, Brazil) + - Augusto Jose Venancio Neto (Universidade Federal do Rio Grande do Norte, Brazil) + - Eduardo Cerqueira (Federal University of Para, Brazil) + +### Cite this + +#### Plain text + +J. Castillo-Lema, E. Cruz, A. Neto and E. Cerqueira, "**Advanced resource provisioning in context-sensitive converged networks**", *2013 International Conference on Computing, Networking and Communications (ICNC)*, San Diego, CA, 2013, pp. 77-81, doi: 10.1109/ICCNC.2013.6504057. + +#### BibTeX + +``` +@INPROCEEDINGS {6504057, + author={J. {Castillo-Lema} and E. {Cruz} and A. {Neto} and E. {Cerqueira}}, + booktitle={2013 International Conference on Computing, Networking and Communications (ICNC)}, + title={Advanced resource provisioning in context-sensitive converged networks}, + year={2013}, + volume={}, + number={}, + pages={77-81}} +``` + +## [Enhancing dependability in Future Internet systems by applying over-provisioning centric resource allocation control](https://ieeexplore.ieee.org/document/6504252) + +[![DOI:10.1109/ICCNC.2013.6504252](https://zenodo.org/badge/DOI/10.1109/ICCNC.2013.6504252.svg)](https://doi.org/10.1109/ICCNC.2013.6504252) + + - Sandino Jardim (Federal University of Goias, Brazil) + - Augusto Jose Venancio Neto (Universidade Federal do Rio Grande do Norte, Brazil) + - Jose Castillo Lema (Universidade da Coruña, Spain) + - Eduardo Cerqueira (Federal University of Para, Brazil) + - Hugo Barros (Universidade Federal do Rio Grande do Norte, Brazil) + +### Cite this + +#### Plain text + +S. Jardim, A. Neto, J. Castillo, E. Cerqueira and H. Barros, "**Enhancing dependability in Future Internet systems by applying over-provisioning centric resource allocation control**", *2013 International Conference on Computing, Networking and Communications (ICNC)*, San Diego, CA, 2013, pp. 1134-1138, doi: 10.1109/ICCNC.2013.6504252. + +#### BibTeX + +``` +@INPROCEEDINGS {6504252, + author={S. {Jardim} and A. {Neto} and J. {Castillo} and E. {Cerqueira} and H. {Barros}}, + booktitle={2013 International Conference on Computing, Networking and Communications (ICNC)}, + title={Enhancing dependability in Future Internet systems by applying over-provisioning centric resource allocation control}, + year={2013}, + volume={}, + number={}, + pages={1134-1138}} +``` diff --git a/_posts/2013-07-10-iscc13.md b/_posts/2013-07-10-iscc13.md new file mode 100644 index 0000000000..270e2fe7ee --- /dev/null +++ b/_posts/2013-07-10-iscc13.md @@ -0,0 +1,45 @@ +--- +title: "IEEE ISCC 2013" +last_modified_at: 2013-12-09T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research +toc: yes +toc_sticky: true +--- + +**2013 IEEE Symposium on Computers and Communications (ISCC)** + +## [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/6746555/proceeding) + +[**Over-provisioning centric network resource control in Future Internet systems**](https://ieeexplore.ieee.org/document/6754948) + +[![DOI:10.1109/ISCC.2013.6754948](https://zenodo.org/badge/DOI/10.1109/ISCC.2013.6754948.svg)](https://doi.org/10.1109/ISCC.2013.6754948) + + - Sandino Jardim (Federal University of Goias, Brazil) + - Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) + - Jose Castillo Lema (Universidade da Coruña, Spain) + - Eduardo Cerqueira (Federal University of Para & UFPA, Brazil) + - Felipe Silva (Universidade Federal do Rio Grande do Norte, Brazil) + +## Cite this + +### Plain text + +S. Jardim, A. Neto, J. C. Lema, E. Cerqueira and F. Silva, "**Over-provisioning centric network resource control in Future Internet systems**", *2013 IEEE Symposium on Computers and Communications (ISCC)*, Split, 2013, pp. 000213-000218, doi: 10.1109/ISCC.2013.6754948. + +### BibTeX + +``` +@INPROCEEDINGS {6754948, + author={S. {Jardim} and A. {Neto} and J. C. {Lema} and E. {Cerqueira} and F. {Silva}}, + booktitle={2013 IEEE Symposium on Computers and Communications (ISCC)}, + title={Over-provisioning centric network resource control in Future Internet systems}, + year={2013}, + volume={}, + number={}, + pages={000213-000218}} +``` diff --git a/_posts/2013-12-09-globecom13.md b/_posts/2013-12-09-globecom13.md new file mode 100644 index 0000000000..d610873d3d --- /dev/null +++ b/_posts/2013-12-09-globecom13.md @@ -0,0 +1,46 @@ +--- +title: "IEEE GLOBECOM 2013" +last_modified_at: 2013-12-09T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research +toc: yes +toc_sticky: true +--- + +**Globecom 2013 Workshop - Management of Emerging Networks and Services Program** + +## [Program](http://grtc.uha.fr/MENS2013/program.html) + +[**Hybrid Framework for Scalable Resource Control in Multi-ingress Networks**](https://ieeexplore.ieee.org/document/6825100) + +[![DOI:10.1109/GLOCOMW.2013.6825100](https://zenodo.org/badge/DOI/10.1109/GLOCOMW.2013.6825100.svg)](https://doi.org/10.1109/GLOCOMW.2013.6825100) + + - Sandino Jardim (Federal University of Goias, Brazil) + - Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) + - Jose Castillo Lema (Universidade da Coruña, Spain) + - Evariste Logota (University of Aveiro, Instituto de Telecomunicações, Portugal) + - Eduardo Cerqueira (Federal University of Para & UFPA, Brazil) + - Jonathan Rodriguez (Instituto de Telecomunicações, Portugal) + +## Cite this + +### Plain text + +S. Jardim, A. Neto, J. C. Lema, E. Logota, J. Rodriguez and E. Cerqueira, "**Hybrid framework for scalable resource control in multi-ingress networks**", *2013 IEEE Globecom Workshops (GC Wkshps)*, Atlanta, GA, 2013, pp. 879-884, doi: 10.1109/GLOCOMW.2013.6825100. + +### BibTeX + +``` +@INPROCEEDINGS {6825100, + author={S. {Jardim} and A. {Neto} and J. C. {Lema} and E. {Logota} and J. {Rodriguez} and E. {Cerqueira}}, + booktitle={2013 IEEE Globecom Workshops (GC Wkshps)}, + title={Hybrid framework for scalable resource control in multi-ingress networks}, + year={2013}, + volume={}, + number={}, + pages={879-884}} +``` diff --git a/_posts/2014-05-05-sbrc14.md b/_posts/2014-05-05-sbrc14.md new file mode 100644 index 0000000000..ea78bd2d95 --- /dev/null +++ b/_posts/2014-05-05-sbrc14.md @@ -0,0 +1,54 @@ +--- +title: "SBRC/WPEIF 2014" +last_modified_at: 2014-05-05T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro** + +## [Proceedings](http://www.sbrc2014.ufsc.br/?pg=workshops&id=6) + + +[**Quality-oriented Mobility Control Architecture for ETArch Handover Optimization**](https://www.semanticscholar.org/paper/Quality-oriented-Mobility-Control-Architecture-for-Silva-Neto/06330e77484e498f3bb4c8429761902196a213e6) + + - Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) + - José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain) + - Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) + - Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil) + - Pedro Frosi Rosa (Federal University of Uberlândia, Brazil) + - Daniel Corujo (Universidade de Aveiro, Portugal) + - Carlos Guimaraes (Universidade de Aveiro, Portugal) + - Rui Aguiar (Universidade de Aveiro, Brazil) + +## Cite this + +### APA + +Silva, F.S., Neto, A., Silva, F.´., Frosi, P., Corujo, D., Guimar, C.A., & Aguiar, R.L. (2014). Quality-oriented Mobility Control Architecture for ETArch Handover Optimization. + +### BibTeX + +``` +@INPROCEEDINGS {32004, + author={F. Dantas Dantas and A. Neto and J. Castillo-Lema and P. Rosa and F. Silva and D. Corujo and C. Guimarães and R. Aguiar}, + booktitle={SBC WORKSHOP DE PESQUISA EXPERIMENTAL DA INTERNET DO FUTURO WPEIF}, + title={Quality-oriented Mobility Control Architecture for ETArch Handover Optimization}, + year={2014}, + month={May}} +``` + +### Chicago + +Silva, Felipe Sampaio Dantas da, Augusto Neto, Flávio Silva, Pedro Frosi, Daniel Corujo, Carlos A. S. Guimar and Rui L. Aguiar. “Quality-oriented Mobility Control Architecture for ETArch Handover Optimization.” (2014). + +### MLA + +Silva, Felipe Sampaio Dantas da et al. “Quality-oriented Mobility Control Architecture for ETArch Handover Optimization.” (2014). \ No newline at end of file diff --git a/_posts/2014-06-23-iscc14.md b/_posts/2014-06-23-iscc14.md new file mode 100644 index 0000000000..174d057b63 --- /dev/null +++ b/_posts/2014-06-23-iscc14.md @@ -0,0 +1,51 @@ +--- +title: "IEEE ISCC 2014" +last_modified_at: 2014-06-23T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**The nineteenth IEEE Symposium on Computers And Communications** + +## [Program](http://iscc2014.ieee-iscc.org/2014/Program/index.html) + + +[**Entity Title Architecture Extensions Towards Advanced Quality-oriented Mobility Control Capabilities**](https://ieeexplore.ieee.org/document/6912459) + +[![DOI:10.1109/ISCC.2014.6912459](https://zenodo.org/badge/DOI/10.1109/ISCC.2014.6912459.svg)](https://doi.org/10.1109/ISCC.2014.6912459) + + - Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) + - José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain) + - Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) + - Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil) + - Pedro Frosi Rosa (Federal University of Uberlândia, Brazil) + - Daniel Corujo (Instituto de Telecomunicações Aveiro, Portugal) + - Carlos Eduardo Magalhães Guimarães (Instituto de Telecomunicações - Pólo de Aveiro, Portugal) + - Rui L Aguiar (University of Aveiro, Portugal) + +## Cite this + +### Plain text + +F. Silva et al., "**Entity title architecture extensions towards advanced quality-oriented mobility control capabilities**", *2014 IEEE Symposium on Computers and Communications (ISCC)*, Funchal, 2014, pp. 1-6, doi: 10.1109/ISCC.2014.6912459. + +### BibTeX + +``` +@INPROCEEDINGS {6912459, + author={F. {Silva} and J. {Castillo-Lema} and A. {Neto} and F. {Silva} and P. {Rosa} and D. {Corujo} and C. {Guimarães} and R. {Aguiar}}, + booktitle={2014 IEEE Symposium on Computers and Communications (ISCC)}, + title={Entity title architecture extensions towards advanced quality-oriented mobility control capabilities}, + year={2014}, + volume={}, + number={}, + pages={1-6}} +``` + diff --git a/_posts/2014-07-20-aict14.md b/_posts/2014-07-20-aict14.md new file mode 100644 index 0000000000..c5be71d5b6 --- /dev/null +++ b/_posts/2014-07-20-aict14.md @@ -0,0 +1,52 @@ +--- +title: "AITC 2014" +last_modified_at: 2014-07-20T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**The Tenth Advanced International Conference on Telecommunications** + +## [Program](http://www.iaria.org/conferences2014/ProgramAICT14.html) + + +[**Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions**](https://www.semanticscholar.org/paper/Evolving-Future-Internet-Clean-Slate-Entity-Title-Castillo-Silva/eeed2c240ecbb4d68ae40b7d2a79a803c2d45edd) + + - José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain) + - Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) + - Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) + - Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil) + - Pedro Frosi Rosa (Federal University of Uberlândia, Brazil) + - Carlos Eduardo Magalhães Guimarães (Instituto de Telecomunicações - Pólo de Aveiro, Portugal) + - Daniel Corujo (Instituto de Telecomunicações Aveiro, Portugal) + - Rui L Aguiar (University of Aveiro, Portugal) + +## Cite this + +### APA + +Castillo, J., Silva, F.S., Neto, A., Silva, F.O., Frosi, P., Guimarães, C., Corujo, D., & Aguiar, R.L. (2014). Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions. AICT 2014. + +### BibTeX + +``` +@inproceedings {Castillo2014EvolvingFI, + title={Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions}, + author={Jos{\'e} Castillo and Felipe Sampaio Dantas da Silva and Augusto Neto and Fl{\'a}vio Oliveira Silva and Pedro Frosi and Carlos Guimar{\~a}es and Daniel Corujo and Rui L. Aguiar}, + booktitle={IARIA Advanced International Conference on Telecommunications (AICT 2014)}, + year={2014}} +``` + +### Chicago +Castillo, José, Felipe Sampaio Dantas da Silva, Augusto Neto, Flávio Oliveira Silva, Pedro Frosi, Carlos Guimarães, Daniel Corujo and Rui L. Aguiar. “Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions.” AICT 2014 (2014). + +### MLA +Castillo, José et al. “Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions.” AICT 2014 (2014). + diff --git a/_posts/2014-08-05-mdthesis.md b/_posts/2014-08-05-mdthesis.md new file mode 100644 index 0000000000..d7ab949485 --- /dev/null +++ b/_posts/2014-08-05-mdthesis.md @@ -0,0 +1,35 @@ +--- +title: "Evolving Future Internet clean-slate ETArch with QoS control-plane extensions" +last_modified_at: 2014-08-05T16:00:58-04:00 +tags: + - en + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +[**Biblioteca Digital Brasileira de Teses e Dissertações**](http://bdtd.ibict.br/vufind/Record/UFRN_7ccf2b703d54b0fd8cc548ccd747339a) + + +## Cite this + +### APA +Lema, J. C. (2014). **Evolving Future Internet clean-slate Entity Title Architecture with quality-oriented control-plane extensions**. + +### Chicago +Lema, José Castillo. **Evolving Future Internet Clean-slate Entity Title Architecture With Quality-oriented Control-plane Extensions**. 2014. + +### MLA +Lema, José Castillo. **Evolving Future Internet Clean-slate Entity Title Architecture With Quality-oriented Control-plane Extensions**. 2014. + +## Publications + +- [J. Castillo et al., “**Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems**”, *2014 IEEE Globecom Workshops (GC Wkshps)*, Austin, TX, 2014, pp. 172-177, doi: 10.1109/GLOCOMW.2014.7063426.](/globecom14) [![DOI:10.1109/GLOCOMW.2014.7063426](https://zenodo.org/badge/DOI/10.1109/GLOCOMW.2014.7063426.svg)](https://doi.org/10.1109/GLOCOMW.2014.7063426) +- [Castillo, José et al. “**Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions.**” *AICT 2014* (2014).](/aict14) +- [F. Silva et al., “**Entity title architecture extensions towards advanced quality-oriented mobility control capabilities**”, *2014 IEEE Symposium on Computers and Communications (ISCC)*, Funchal, 2014, pp. 1-6, doi: 10.1109/ISCC.2014.6912459.](/iscc14) [![DOI:10.1109/ISCC.2014.6912459](https://zenodo.org/badge/DOI/10.1109/ISCC.2014.6912459.svg)](https://doi.org/10.1109/ISCC.2014.6912459) +- [F. Silva, A. Neto, D. Maciel, J. Castillo-Lema and F. Silva, “**Infrastructured Mobility Management Approach for Future Internet ETArch Networks**”, *2015 World Congress in Computer Science, Computer Engineering and Applied Computing (ICWN)*, Las Vegas, Nevada, USA, 2014, pp. 39-45.](/icwn15) +- [Felipe S. Dantas Silva, Augusto J.V. Neto, Douglas Braz Maciel, Jose Castillo-Lema, Flávio de Oliveira Silva, and Pedro Frosi Rosa. 2015. **SDN Based Control Plane Extensions for Mobility Management Improvement in Next Generation ETArch Networks**. In *Proceedings of the 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (MSWiM ’15)*. Association for Computing Machinery, New York, NY, USA, 189–193. DOI:https://doi.org/10.1145/2811587.2811632](/mswim15) +- [Silva, Felipe Sampaio Dantas da, Augusto Neto, Flávio Silva, Pedro Frosi, Daniel Corujo, Carlos A. S. Guimar and Rui L. Aguiar. “**Quality-oriented Mobility Control Architecture for ETArch Handover Optimization**”. (2014).](/sbrc14) \ No newline at end of file diff --git a/_posts/2014-09-05-smart.md b/_posts/2014-09-05-smart.md new file mode 100644 index 0000000000..23d7ee8158 --- /dev/null +++ b/_posts/2014-09-05-smart.md @@ -0,0 +1,20 @@ +--- +title: "Support of Mobile Sessions with High Transport Network Resource Demand" +last_modified_at: 2014-09-05T16:00:58-04:00 +tags: + - en + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/smart-OF-controller/master/README.md %} + + \ No newline at end of file diff --git a/_posts/2014-10-15-healthcom14.md b/_posts/2014-10-15-healthcom14.md new file mode 100644 index 0000000000..5a9866fac3 --- /dev/null +++ b/_posts/2014-10-15-healthcom14.md @@ -0,0 +1,48 @@ +--- +title: "IEEE HealthCom 2014" +last_modified_at: 2014-06-23T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom)** + +## [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/6992842/proceeding) + + +[**Software defined eHealth networking towards a truly mobile and reliable system**](https://ieeexplore.ieee.org/document/7001903) + +[![DOI:10.1109/HealthCom.2014.7001903](https://zenodo.org/badge/DOI/10.1109/HealthCom.2014.7001903.svg)](https://doi.org/10.1109/HealthCom.2014.7001903) + + - Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) + - José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain) + - Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) + - Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil) + - Pedro Frosi Rosa (Federal University of Uberlândia, Brazil) + +## Cite this + +### Plain text + +F. Silva, J. Castillo-Lema, A. Neto, F. Silva and P. Rosa, "**Software defined eHealth networking towards a truly mobile and reliable system**", *2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom)*, Natal, 2014, pp. 560-564, doi: 10.1109/HealthCom.2014.7001903. + +### BibTeX + +``` +@INPROCEEDINGS {7001903, + author={F. {Silva} and J. {Castillo-Lema} and A. {Neto} and F. {Silva} and P. {Rosa}}, + booktitle={2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom)}, + title={Software defined eHealth networking towards a truly mobile and reliable system}, + year={2014}, + volume={}, + number={}, + pages={560-564}} +``` + diff --git a/_posts/2014-10-26-smartcampus.md b/_posts/2014-10-26-smartcampus.md new file mode 100644 index 0000000000..a185f531c1 --- /dev/null +++ b/_posts/2014-10-26-smartcampus.md @@ -0,0 +1,18 @@ +--- +title: "Smart Campus SP" +last_modified_at: 2014-10-26T16:00:58-04:00 +tags: + - en + - fiware + - iot +toc: true +toc_sticky: true +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/smartcampus-sp/master/README.md %} + + diff --git a/_posts/2014-12-08-globecom14.md b/_posts/2014-12-08-globecom14.md new file mode 100644 index 0000000000..dd66d4958a --- /dev/null +++ b/_posts/2014-12-08-globecom14.md @@ -0,0 +1,49 @@ +--- +title: "IEEE GLOBECOM 2014" +last_modified_at: 2014-12-08T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**Global Communications Conference 2014** + +## [Proceedings](https://ieeexplore.ieee.org/xpl/conhome/7050532/proceeding) + +[**Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems**](https://ieeexplore.ieee.org/document/7063426) + +[![DOI:10.1109/GLOCOMW.2014.7063426](https://zenodo.org/badge/DOI/10.1109/GLOCOMW.2014.7063426.svg)](https://doi.org/10.1109/GLOCOMW.2014.7063426) + + - José Castillo - Federal University of Rio Grande do Norte (UFRN), Brazil + - Augusto Neto - Federal University of Rio Grande do Norte (UFRN), Brazil + - Flavio Silva - Federal University of Uberlândia (UFU), Brazil + - Pedro Frosi - Federal University of Uberlândia (UFU), Brazil + - Rui Aguiar - Instituto de Telecomunicações (IT), Portugal + - Airton Ishimori - Federal University of Pará (UFPA), Brazil + - Fernando Farias - Federal University of Pará (UFPA), Brazil + - Antônio Abelém - Federal University of Pará (UFPA), Brazil + +## Cite this + +### Plain text + +J. Castillo et al., "**Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems**", *2014 IEEE Globecom Workshops (GC Wkshps)*, Austin, TX, 2014, pp. 172-177, doi: 10.1109/GLOCOMW.2014.7063426. + +### BibTeX + +``` +@INPROCEEDINGS {7063426, + author={J. {Castillo} and A. {Neto} and F. {Silva} and P. {Frosi} and R. {Aguiar} and A. {Ishimori} and F. {Farias} and A. {Abelém}}, + booktitle={2014 IEEE Globecom Workshops (GC Wkshps)}, + title={Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems}, + year={2014}, + volume={}, + number={}, + pages={172-177}} +``` diff --git a/_posts/2015-07-27-icwn15.md b/_posts/2015-07-27-icwn15.md new file mode 100644 index 0000000000..56d78975db --- /dev/null +++ b/_posts/2015-07-27-icwn15.md @@ -0,0 +1,46 @@ +--- +title: "ICWN 2015" +last_modified_at: 2015-07-27T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing** + +## [Agenda](https://worldacademyofscience.org/worldcomp15/ws/program/icw29.html) + + +**Infrastructured Mobility Management Approach for Future Internet ETArch Networks** + - Felipe Sampaio Dantas da Silva, *Federal Institute of Education, Science and Technology of Rio Grande do Norte*, Brazil + - Augusto J. Venancio Neto, *Federal University of Rio Grande do Norte*, Brazil + - Douglas Maciel, *Federal University of Rio Grande do Norte*, Brazil + - José Castillo Lema, *Universidade de São Paulo*, Brazil + - Flavio de Oliveira Silva, *Federal University of Uberlândia*, Brazil + + +## Cite this + +### Plain text + +F. Silva, A. Neto, D. Maciel, J. Castillo-Lema and F. Silva, "**Infrastructured Mobility Management Approach for Future Internet ETArch Networks**", *2015 World Congress in Computer Science, Computer Engineering and Applied Computing (ICWN)*, Las Vegas, Nevada, USA, 2014, pp. 39-45. + +### BibTeX + +``` +@INPROCEEDINGS {24637, + author={A. Neto}, + doi={}, + booktitle={International Conference on Wireless Networks ICWN}, + title={Infrastructured Mobility Management Approach for Future Internet ETArch Networks}, + year={2015}, + month={June}, + volume={1}, + pages={39-45}} +``` \ No newline at end of file diff --git a/_posts/2015-10-01-lanoms15.md b/_posts/2015-10-01-lanoms15.md new file mode 100644 index 0000000000..54162dc99d --- /dev/null +++ b/_posts/2015-10-01-lanoms15.md @@ -0,0 +1,26 @@ +--- +title: "LANOMS 2015" +last_modified_at: 2015-10-01T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: false +--- + +**8th Latin American Network Operations and Management Symposium** + +## [Agenda](http://www.lanoms.org/2015/17.html) + + +**SDN-based Control Plane Extensions for Mobility Management Improvement in Future Internet Networks** + - Felipe Sampaio Dantas da Silva, *Federal Institute of Education, Science and Technology of Rio Grande do Norte*, Brazil + - Augusto J. Venancio Neto, *Federal University of Rio Grande do Norte*, Brazil + - Douglas Maciel, *Federal University of Rio Grande do Norte*, Brazil + - José Castillo Lema, *Universidade de São Paulo*, Brazil + - Flavio de Oliveira Silva, *Federal University of Uberlândia*, Brazil + + diff --git a/_posts/2015-11-02-mswim15.md b/_posts/2015-11-02-mswim15.md new file mode 100644 index 0000000000..7fccaa717a --- /dev/null +++ b/_posts/2015-11-02-mswim15.md @@ -0,0 +1,50 @@ +--- +title: "MSWiM 2015" +last_modified_at: 2015-11-02T16:00:58-04:00 +tags: + - en + - events + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +**The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems** + +## [Agenda](http://mswimconf.com/2015/) + + +[**Network-Initiated Quality-oriented Mobility Management Approach for Next Generation ETArch Networks**](https://www.researchgate.net/publication/283718842_Network-Initiated_Quality-oriented_Mobility_Management_Approach_for_Next_Generation_ETArch_Networks) + + - Felipe Sampaio Dantas da Silva, *Federal Institute of Education, Science and Technology of Rio Grande do Norte*, Brazil + - Augusto J. Venancio Neto, *Federal University of Rio Grande do Norte*, Brazil + - Douglas Maciel, *Federal University of Rio Grande do Norte*, Brazil + - José Castillo Lema, *Universidade de São Paulo*, Brazil + - Flavio de Oliveira Silva, *Federal University of Uberlândia*, Brazil + +## Cite this + +### ACM + +Felipe S. Dantas Silva, Augusto J.V. Neto, Douglas Braz Maciel, Jose Castillo-Lema, Flávio de Oliveira Silva, and Pedro Frosi Rosa. 2015. **SDN Based Control Plane Extensions for Mobility Management Improvement in Next Generation ETArch Networks**. In *Proceedings of the 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (MSWiM ’15)*. Association for Computing Machinery, New York, NY, USA, 189–193. + +### BibTeX + +``` +@inproceedings {10.1145/2811587.2811632, + author = {Silva, Felipe S. Dantas and Neto, Augusto J.V. and Maciel, Douglas Braz and Castillo-Lema, Jose and Silva, Fl\'{a}vio de Oliveira and Rosa, Pedro Frosi}, + title = {SDN Based Control Plane Extensions for Mobility Management Improvement in Next Generation ETArch Networks}, + year = {2015}, + isbn = {9781450337625}, + publisher = {Association for Computing Machinery}, + address = {New York, NY, USA}, + booktitle = {Proceedings of the 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems}, + pages = {189–193}, + numpages = {5}, + keywords = {etarch network, quality of service, software defined networking, mobility management, load balancing}, + location = {Cancun, Mexico}, + series = {MSWiM ’15}} +``` diff --git a/_posts/2016-08-04-fiap-scj.md b/_posts/2016-08-04-fiap-scj.md new file mode 100644 index 0000000000..8b13e4dda9 --- /dev/null +++ b/_posts/2016-08-04-fiap-scj.md @@ -0,0 +1,14 @@ +--- +title: "FIAP MBA em Full Stack Developer - Microservices, Cloud e IoT (SCJ)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/scj/README.md %} + diff --git a/_posts/2016-10-09-computer-networks.md b/_posts/2016-10-09-computer-networks.md new file mode 100644 index 0000000000..42ffe75031 --- /dev/null +++ b/_posts/2016-10-09-computer-networks.md @@ -0,0 +1,56 @@ +--- +title: "Computer Networks - Volume 107" +last_modified_at: 2016-10-09T16:00:58-04:00 +tags: + - en + - networks + - papers + - research + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2016-10-09-computer-networks.png)](https://www.journals.elsevier.com/computer-networks) + +[**Volume 107, Part 2, Pages 270-291**](https://www.sciencedirect.com/science/article/abs/pii/S1389128616301177) + +**An innovative software-defined WiNeMO architecture for advanced QoS-guaranteed mobile service transport** + +[![DOI:10.1016/j.comnet.2016.04.019](https://zenodo.org/badge/DOI/10.1016/j.comnet.2016.04.019.svg)](https://doi.org/10.1016/j.comnet.2016.04.019) + + + - Felipe S. Dantas Silva + - Augusto Venâncio Netob + - Douglas Maciel + - José Castillo-Lema + - Flávio Silva + - Pedro Frosi + - Eduardo Cerqueira. + +## Cite this + +### ACM +Felipe S. Dantas Silva, Augusto Venâncio Neto, Douglas Maciel, José Castillo-Lema, Flávio Silva, Pedro Frosi, and Eduardo Cerqueira. 2016. **An innovative software-defined WiNeMO architecture for advanced QoS-guaranteed mobile service transport**. Comput. Netw. 107, P2 (October 2016), 270–291. DOI:https://doi.org/10.1016/j.comnet.2016.04.019 + +### BibTeX + +``` +@article {10.1016/j.comnet.2016.04.019, +author = {Silva, Felipe S. Dantas and Neto, Augusto Ven\^{a}ncio and Maciel, Douglas and Castillo-Lema, Jos\'{e} and Silva, Fl\'{a}vio and Frosi, Pedro and Cerqueira, Eduardo}, +title = {An Innovative Software-Defined WiNeMO Architecture for Advanced QoS-Guaranteed Mobile Service Transport}, +year = {2016}, +issue_date = {October 2016}, +publisher = {Elsevier North-Holland, Inc.}, +address = {USA}, +volume = {107}, +number = {P2}, +issn = {1389-1286}, +url = {https://doi.org/10.1016/j.comnet.2016.04.019}, +doi = {10.1016/j.comnet.2016.04.019}, +journal = {Comput. Netw.}, +month = oct, +pages = {270–291}, +numpages = {22}, +keywords = {Software-defined networking, Mobility management, Load balancing, Quality of experience, Quality of service}} +``` \ No newline at end of file diff --git a/_posts/2016-11-23-fiap-mob.md b/_posts/2016-11-23-fiap-mob.md new file mode 100644 index 0000000000..85db8f5092 --- /dev/null +++ b/_posts/2016-11-23-fiap-mob.md @@ -0,0 +1,14 @@ +--- +title: "FIAP MBA em Mobile Development (MOB)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/mob/README.md %} + diff --git a/_posts/2016-12-12-hntd-01.md b/_posts/2016-12-12-hntd-01.md new file mode 100644 index 0000000000..1aa6ab6679 --- /dev/null +++ b/_posts/2016-12-12-hntd-01.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 1st edition" +last_modified_at: 2016-12-12T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2016-12-12-hntd-01.jpeg) diff --git a/_posts/2017-02-01-fiap-corporate.md b/_posts/2017-02-01-fiap-corporate.md new file mode 100644 index 0000000000..1bcc6e671b --- /dev/null +++ b/_posts/2017-02-01-fiap-corporate.md @@ -0,0 +1,21 @@ +--- +title: "FIAP Corporate" +last_modified_at: 2021-11-26T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - iot + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2017-02-01-fiap-corporate.png)](https://www.fiap.com.br/corporate/) + +- **Citibank**: Internet of Things (2017) +- **Gerdau**: Internet of Things (2017) +- **Ambev**: Computers Networks and Cloud Computing (2018) +- **T-Systems**: Internet of Things (2018) +- **CCR**: Multicloud Architecture (2021) \ No newline at end of file diff --git a/_posts/2017-02-06-hntd-02.md b/_posts/2017-02-06-hntd-02.md new file mode 100644 index 0000000000..0473f77305 --- /dev/null +++ b/_posts/2017-02-06-hntd-02.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 2nd edition" +last_modified_at: 2017-02-06T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-02-06-hntd-02.jpeg) diff --git a/_posts/2017-03-01-puc.md b/_posts/2017-03-01-puc.md new file mode 100644 index 0000000000..5ed9c07c7c --- /dev/null +++ b/_posts/2017-03-01-puc.md @@ -0,0 +1,11 @@ +--- +title: "PUC-SP Cursos de extensão - Internet das Coisas" +last_modified_at: 2017-08-26T16:00:58-04:00 +tags: + - classes + - iot + - pt +toc: false +--- + +![](/assets/images/posts/2017-03-01-puc.jpeg) diff --git a/_posts/2017-03-17-apicon.md b/_posts/2017-03-17-apicon.md new file mode 100644 index 0000000000..73c1b965e7 --- /dev/null +++ b/_posts/2017-03-17-apicon.md @@ -0,0 +1,17 @@ +--- +title: "APICON 2017 - IoT HandsOn Lab" +last_modified_at: 2017-03-17T16:00:58-04:00 +tags: + - events + - iot + - pt +toc: false +--- + +## API Connect Conference 2017 + +![](/assets/images/posts/2017-03-17-apicon/01.png) +![](/assets/images/posts/2017-03-17-apicon/02.jpeg) + +![](/assets/images/posts/2017-03-17-apicon/03.JPG) +![](/assets/images/posts/2017-03-17-apicon/04.JPG) diff --git a/_posts/2017-03-18-hntd-03.md b/_posts/2017-03-18-hntd-03.md new file mode 100644 index 0000000000..5bb25e3bb3 --- /dev/null +++ b/_posts/2017-03-18-hntd-03.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 3rd edition" +last_modified_at: 2017-03-18T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-03-18-hntd-03.jpeg) diff --git a/_posts/2017-03-27-hntd-04.md b/_posts/2017-03-27-hntd-04.md new file mode 100644 index 0000000000..82df37d191 --- /dev/null +++ b/_posts/2017-03-27-hntd-04.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 4th edition" +last_modified_at: 2017-03-27T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-03-27-hntd-04.jpeg) diff --git a/_posts/2017-05-29-hntd-05.md b/_posts/2017-05-29-hntd-05.md new file mode 100644 index 0000000000..0423098991 --- /dev/null +++ b/_posts/2017-05-29-hntd-05.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 5th/6th edition" +last_modified_at: 2017-05-29T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-05-29-hntd-05.jpeg) diff --git a/_posts/2017-08-21-hntd-07.md b/_posts/2017-08-21-hntd-07.md new file mode 100644 index 0000000000..9f0166ed57 --- /dev/null +++ b/_posts/2017-08-21-hntd-07.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 7th edition" +last_modified_at: 2017-08-21T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-08-21-hntd-07.jpeg) diff --git a/_posts/2017-08-26-hntd-08.md b/_posts/2017-08-26-hntd-08.md new file mode 100644 index 0000000000..a51bbe8eb7 --- /dev/null +++ b/_posts/2017-08-26-hntd-08.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 8th edition" +last_modified_at: 2017-08-26T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-08-26-hntd-08.jpeg) diff --git a/_posts/2017-09-26-saint-gobain-ultrachallenge.md b/_posts/2017-09-26-saint-gobain-ultrachallenge.md new file mode 100644 index 0000000000..457e6b3687 --- /dev/null +++ b/_posts/2017-09-26-saint-gobain-ultrachallenge.md @@ -0,0 +1,15 @@ +--- +title: "Ultra Challenge Saint-Gobain" +last_modified_at: 2017-09-26T16:00:58-04:00 +tags: + - events + - hackathon + - iot + - pt + - youtube +toc: false +--- + +[![](/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg)](https://www.saint-gobain.com.br/noticias/primeiro-ultra-challenge-da-america-latina) + + \ No newline at end of file diff --git a/_posts/2017-10-17-hntd-09.md b/_posts/2017-10-17-hntd-09.md new file mode 100644 index 0000000000..e3c131f159 --- /dev/null +++ b/_posts/2017-10-17-hntd-09.md @@ -0,0 +1,15 @@ +--- +title: "HCNA-HNTD Training - 9th edition" +last_modified_at: 2017-10-17T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-10-17-hntd-09/01.jpeg) + +![](/assets/images/posts/2017-10-17-hntd-09/02.JPG) diff --git a/_posts/2017-10-28-futurecom17.md b/_posts/2017-10-28-futurecom17.md new file mode 100644 index 0000000000..1b53947119 --- /dev/null +++ b/_posts/2017-10-28-futurecom17.md @@ -0,0 +1,13 @@ +--- +title: "Futurecom 2017 - Tour IoT" +last_modified_at: 2017-10-28T16:00:58-04:00 +tags: + - events + - iot + - pt +toc: false +--- + +![](/assets/images/posts/2017-10-28-futurecom2017/00.jpeg) +![](/assets/images/posts/2017-10-28-futurecom2017/01.jpg) +![](/assets/images/posts/2017-10-28-futurecom2017/02.jpg) diff --git a/_posts/2017-10-28-hntd-10.md b/_posts/2017-10-28-hntd-10.md new file mode 100644 index 0000000000..999b69f31e --- /dev/null +++ b/_posts/2017-10-28-hntd-10.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 10th edition" +last_modified_at: 2017-10-28T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2017-10-28-hntd-10.png) diff --git a/_posts/2017-11-26-terraformando-openstack.md b/_posts/2017-11-26-terraformando-openstack.md new file mode 100644 index 0000000000..6f0e1c89f4 --- /dev/null +++ b/_posts/2017-11-26-terraformando-openstack.md @@ -0,0 +1,147 @@ +--- +title: "[PT] Terraform – IaC – Terraformando no OpenStack" +last_modified_at: 2017-11-26T16:00:58-04:00 +tags: + - openstack + - iac + - terraform + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +> Originally published at [**Churrops on DevOps**](https://churrops.io/2017/11/26/terraform-iac-terraformando-no-openstack/) on November 26, 2017. + +Olá pessoal, vamos começar uma uma série de artigos sobre OpenStack dando continuidade aos artigos sobre Terraform ([parte 1](https://churrops.io/2017/08/01/terraform-iac-infra-como-codigo-conhecendo/) e [parte 2](https://churrops.io/2017/08/03/terraform-iac-terraformando-na-aws/)) do [Rodrigo Floriano](https://churrops.io/about-authorsrdglinux/), pois é uma ferramenta que vários assíduos do blog já conhecem e usam a diário! + +Hoje vamos mostrar um exemplo prático de uso da ferramenta sobre OpenStack. + +OpenStack é um *software* de código aberto para a instalação, configuração e gerenciamento de nuvens, tanto públicas como privadas. Rackspace e Dreamhost são alguns exemplos de nuvens públicas que funcionam sobre OpenStack, e PayPal e eBay são exemplos de empresas que usam OpenStack nas suas nuvens privadas. + +OpenStack apresenta seus serviços através de APIs compatíveis com os serviços EC2, S3 e CloudFormation da Amazon AWS e, portanto, aplicações escritas para estes serviços do AWS podem ser usados com OpenStack também. Além disso, podemos interagir com OpenStack via CLI, usando o comando `openstack`, ou pelo *dashboard* da plataforma, o Horizon. + +Sem mais, vamos la! + +## Pré requisitos + - Ter o `git` instalado + - Uma conta em alguma nuvem OpenStack, não necessariamente `admin` + - Quota suficiente na nossa conta para instanciar os recursos solicitados + - Ter o Terraform instalado (ver [[Terraform] – IaC – Infra como Código – Conhecendo](https://churrops.io/2017/08/01/terraform-iac-infra-como-codigo-conhecendo/)) + +## Clonando o repósitorio + +``` +$ git clone https://github.com/josecastillolema/churrops.git +``` + +Segue uma breve descrição dos arquivos: + + - **live.tf** + Arquivo principal, é um *template* com as informações do *provider* (neste caso OpenStack) e a topologia dos recursos que vão ser criados. No primeiro bloco definimos as credencias de acesso a nossa nuvem OpenStack: + ``` + provider "openstack" { + user_name = "jose.castillo" + tenant_name = "churrops" + tenant_id = "ddc494sdfc8bc6ba7caf6d3615b" + password = "password" + auth_url = "https://keystone.openstack.com.br:5000/v2.0" + } + ``` + Para conseguir o `tenant_id` do projeto churrops (o *id* do nosso projeto) basta executar `openstack project show churrops` ou `openstack project list | grep churrops` (ou pegar os dados via o *dashboard* de OpenStack, Horizon). + + No segundo bloco definimos alguns valores que vamos usar no projeto, como a imagem (neste caso Ubuntu), a chave (caso precisemos acessar por ssh a instância), o *flavor*, as redes, etc. Este bloco não é obrigatório, mas pode facilitar a nossa vida quando trabalhemos com um número maior de instâncias. Neste exemplo estamos usando o *security group* padrão do OpenStack (a porta 80 precisa estar aberta), mas de forma muito direta poderíamos criar um recurso de tipo *security group* personalizado para o nosso servidor web. O [site da Terraform](https://www.terraform.io/docs/providers/openstack/) mostra todos os recursos que temos disponíveis para OpenStack. + + ``` + variable "defaults" { + description = "Variaveis do projeto" + type = "map" + default { + image_name = "linux-ubuntu-16-64b-base" + az_name = "nova" + region = "SP" + tenant_name = "churrops" + key_pair = "chave" + flavor_name = "g1.micro" + security_group = "default" + network_name = "rede-interna" + } + } + ``` + + No terceiro bloco definimos o nosso servidor web. Na variável `user_data` apontamos para outro arquivo do exemplo, que vai ser executado via **cloud-init** no primeiro *boot* para configurar o servidor web. + ``` + resource "openstack_compute_instance_v2" "web" { + name = "web" + image_name = "${var.defaults["image_name"]}" + flavor_name = "${var.defaults["flavor_name"]}" + availability_zone = "${var.defaults["az_name"]}" + key_pair = "${var.defaults["key_pair"]}" + security_groups = ["${var.defaults["security_group"]}"] + network { + name = "${var.defaults["network_name"]}" + } + user_data = "${file("bootstrapweb.sh")}" + lifecycle { + create_before_destroy = true + } + } + ``` + + Por último, os restantes blocos associam uma IP pública ao nosso servidor web: + ``` + resource "openstack_networking_floatingip_v2" "ip-publica" { + pool = "rede-publica" + } + + resource "openstack_compute_floatingip_associate_v2" "asoc-ip-publica" { + floating_ip = "${openstack_networking_floatingip_v2.ip-publica.address}" + instance_id = "${openstack_compute_instance_v2.web.id}" + } + ``` + + - **output.tf** +Retorna o IP público da instância do nosso servidor web. + + - **bootstrapweb.sh** + +Arquivo de *shell* que vai ser executado via **cloud-init** no primeiro *boot* para configurar o servidor web. Esta versão é para SOs de tipo Debian, mas pode ser fácilmente modificada para funcionar em CentOS e derivados. + +## Fazendo o *deploy* + +``` +$ terraform init +``` + +![](/assets/images/posts/2017-11-26-terraformando-openstack/01.png) + +``` +$ terraform plan +``` +``` +$ terraform apply +``` +![](/assets/images/posts/2017-11-26-terraformando-openstack/02.png) + +Se tudo der certo, veremos a nova VM com a sua IP pública correspondente: + +![](/assets/images/posts/2017-11-26-terraformando-openstack/03.png) + +E conseguimos acessar ao nosso *site*: + +![](/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg) + + +## Outros comandos +O resto dos comandos que foram explicados [no caso da AWS](https://churrops.io/2017/08/03/terraform-iac-terraformando-na-aws/), `terraform graph`, `terraform show` e `terraform destroy` funcionam de forma idêntica em OpenStack. + +## Conclusão +Terraform se integra muito bem com vários provedores de nuvem, incluíndo OpenStack! Neste artigo vimos como é simples integrar OpenStack com a ferramenta, e como a mesma funciona de forma coerente entre várias nuvens. + +Nos [próximos artigos](/heat-introducao) de OpenStack falaremos sobre *heat*, o “terraform” nativo da plataforma, e veremos como é simples também gerenciar o ciclo de vida de *hardware* e *software* usando o orquestrador nativo da nuvem. + +Obrigado a todos e um abraço! + + + diff --git a/_posts/2017-12-20-heat-introducao.md b/_posts/2017-12-20-heat-introducao.md new file mode 100644 index 0000000000..f6a4e098f9 --- /dev/null +++ b/_posts/2017-12-20-heat-introducao.md @@ -0,0 +1,209 @@ +--- +title: "[PT] Heat - Introdução" +last_modified_at: 2017-10-28T16:00:58-04:00 +tags: + - iac + - openstack + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +> Originally published at [**Churrops on DevOps**](https://churrops.io/2017/12/20/heat-introducao/) on December 20, 2017. + +Olá pessoal, vamos começar uma série de artigos sobre Heat, o “terraform” nativo do OpenStack, ou para quem vem do mundo da AWS, o CloudFormation do OpenStack (inclusive parcialmente compatível). Neste primeiro artigo introdutório vamos aprender a criar as nossas próprias pilhas (ou *stacks*) e recriar a instância do servidor web que criamos no [post passado](/terraformando-openstack) usando o Terraform. + +O objetivo principal de Heat é criar um serviço para gerenciar todo o ciclo de vida de infra e aplicativos dentro do OpenStack. Ele implementa um mecanismo de orquestração com base em *templates* na forma de arquivos de texto (em formato `.yaml`) que podem ser tratados como código. O formato dos `templates` está evoluindo a cada versão do OpenStack, mas o Heat se esforça para fornecer compatibilidade com o formato do modelo AWS CloudFormation, de modo que muitos modelos CloudFormation existentes podem ser iniciados no OpenStack (inclusive permitindo, por exemplo, escalar do OpenStack para dentro da AWS). Para quem tiver interesse, existe também um esforço da comunidade para suportar templates TOSCA, chamado [Heat Translator](https://wiki.openstack.org/wiki/Heat-Translator). + +O Heat fornece uma API REST nativa do OpenStack e uma API de consulta compatível com o CloudFormation, além de interface gráfica via Horizon (o *dashboard* de OpenStack) e um cliente para a linha de comandos (antigamente `heat`, nas versões mais novas de OpenStack foi integrado no próprio comando `openstack`). + +Uma característica importante do Heat é que ele gerencia todo o ciclo de vida do aplicativo, e não só a criação. Quando precisar alterar a infra, simplesmente modifique o modelo e use o Heat para atualizar sua pilha existente. Heat sabe como fazer as mudanças necessárias. Ele irá excluir todos os recursos quando você terminar o aplicativo também (tipo `terraform destroy`). + +Os recursos de infra que podem ser descritos incluem: instâncias, IPs públicos, volumes, grupos de segurança, usuários, roteadores, etc. Os modelos também podem especificar as relações entre recursos (por exemplo, este volume está conectado a este servidor). Isso permite que o Heat invoque as APIs do OpenStack para criar toda sua infra virtual na ordem correta para iniciar completamente sua aplicação. + +O Heat também se integra com o Ceilometer, o módulo de telemetria do OpenStack, permitindo definir políticas de uso de *autoscaling* em função do uso dos recursos (chegaremos lá nos próximos artigos!). + +O Heat gerencia principalmente a infra virtual, mas os modelos se integram bem com ferramentas de gerenciamento de configuração de *software*, como Puppet e Chef, e a equipe do Heat está trabalhando para fornecer uma integração ainda melhor entre infraestrutura e *software*. Existem várias opções para configurar o software que é executado nos servidores do *stack*: + - Criar uma imagem personalizada (de preferência usando [**diskimager-builder**](https://git.openstack.org/cgit/openstack/diskimage-builder)) + - Via [**cloud-init**](https://cloud-init.io/), um script que é executado durante o primeiro boot. Esta será a forma que usaremos ao longo dos artigos. + - Um recurso do heat, de tipo ***software deployment***. + +Sem mais, vamos criar o nosso primeiro *stack* e recriar o nosso servidor web. + +## Pré requisitos + + - Uma conta em alguma nuvem OpenStack, não necessariamente `admin` + - Quota suficiente na nossa conta para instanciar os recursos solicitados + +No repositório [https://github.com/josecastillolema/churrops.git](https://github.com/josecastillolema/churrops.git) podem fazer *download* do arquivo heat.yaml, o *template* que usaremos durante este artigo. + +## Descrição do *template* +As duas primeras linhas mostram a versão em uso do formato do template e uma descrição do conteúdo do mesmo: +```yaml +heat_template_version: 2016-04-08 +description: Servidor web para churrops! +``` + +A seguir, o primeiro bloco do *template*, `parameters`, define uma série de parâmetros que serão usados durante o *deployment* da infra (de forma análoga ao bloco `variable` no caso do Terraform). Podemos definir neste bloco imagem, *flavor*, redes, chaves para acessar aos nossos servidores, etc. Para cada parâmetro definido podemos adicionar uma descrição e um valor padrão. +```yaml +parameters: + flavor: + type: string + description: Flavor para o servidor web + constraints: + - custom_constraint: nova.flavor + default: g1.micro + image: + type: string + description: Imagem para o servidor web + constraints: + - custom_constraint: glance.image + default: linux-ubuntu-16-64b-base + private_network: + type: string + description: Rede interna + constraints: + - custom_constraint: neutron.network + default: net-int1 + private_ip: + type: string + description: IP interna do servidor + default: 10.0.0.200 + key_name: + type: string + description: A chave ssh para acessar a nossa vm + constraints: + - custom_constraint: nova.keypair + default: devel + public_network: + type: string + description: Rede publica + constraints: + - custom_constraint: neutron.network + texto: + type: string + description: Texto exibido no site + default: "Churrops rules" +``` +No segundo bloco, `resources`, é a onde vamos definir os recursos da nossa infra. Neste caso vamos definir o nosso servidor web. Podem consultar uma lista de todos os recursos disponíveis [aqui](https://docs.openstack.org/heat/pike/template_guide/openstack.html). O servidor web é configurado via **cloud-init** no primeiro *boot*. Vejam que é possível passar parâmetros para os recursos, como neste caso o parâmetro `TEXTO`. +```yaml +resources: + sec_group: + type: OS::Neutron::SecurityGroup + properties: + rules: + - remote_ip_prefix: 0.0.0.0/0 + protocol: icmp + - remote_ip_prefix: 0.0.0.0/0 + protocol: tcp + port_range_min: 80 + port_range_max: 80 + - remote_ip_prefix: 0.0.0.0/0 + protocol: tcp + port_range_min: 22 + port_range_max: 22 + + serverweb_port: + type: OS::Neutron::Port + properties: + network_id: { get_param: private_network } + security_groups: [{ get_resource: sec_group }] + + serverweb: + type: OS::Nova::Server + properties: + image: { get_param: image } + flavor: { get_param: flavor } + networks: + - port: { get_resource: serverweb_port } + user_data_format: RAW + key_name: { get_param: key_name } + user_data: + str_replace: + template: | + #!/bin/bash + sudo -i + apt-get update + apt-get install -y apache2 + cat < /var/www/html/index.html + Churrops!!! o/ + hostname: $(hostname) + parametro: TEXTO + EOF + params: + TEXTO: { get_param: texto } + + floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: public_network } + port_id: { get_resource: serverweb_port } +``` +O terceiro e ultimo bloco, `outputs`, tem uma função análoga ao arquivo `output.tf` do Terraform. Ele define uma saída que será mostrada ao usuário ao terminar a criação da infra. +```yaml +outputs: + lburl: + description: URL do servidor web + value: + str_replace: + template: http://IP_ADDRESS + params: + IP_ADDRESS: { get_attr: [ floating_ip, floating_ip_address ] } + description: > + Esta URL e a URL "externa" que pode ser usada para acessar o servidor WEB. +``` + +## Execução do *template* + +### Via Horizon +Primeiro, na aba `Orquestration - Stacks` criamos o nosso *stack* e setamos os parâmetros opcionais que foram definidos no template. +![](/assets/images/posts/2017-12-20-heat-introducao/01.png) + +A continuação podemos ver a topologia diversos recursos sendo criados (os recursos em verde já estão disponíveis). +![](/assets/images/posts/2017-12-20-heat-introducao/02.png) + +Um *overview* da nossa pilha, com o *output* que definimos no *template*. +![](/assets/images/posts/2017-12-20-heat-introducao/03.png) + +Os recursos que estão sendo criados. +![](/assets/images/posts/2017-12-20-heat-introducao/04.png) + +E por último todos os eventos relacionados com esses recursos (criação, atualização, modificação, deleção, etc.). +![](/assets/images/posts/2017-12-20-heat-introducao/05.png) + +### Via CLI + - Criação: + ``` + openstack stack create churrops-stack -t heat.yaml + openstack stack create churrops-stack -t heat.yaml + ``` + + - Para acompanhar a criação: + ``` + watch openstack stack event list churrops-stack + + ``` + +### Via API REST +Como falamos na introdução, o Heat fornece uma API REST nativa do OpenStack e uma API de consulta compatível com o CloudFormation. Neste caso usaremos a API REST nativa. + +![](/assets/images/posts/2017-12-20-heat-introducao/06.png) + + +## Resultado da execução + +Independentemente do método escolhido (Horizon, CLI ou API REST), uma vez que o *stack* transicione ao estado `created` (não deveria demorar muito mais de 2 minutos) poderemos ver a infra instanciada. +![](/assets/images/posts/2017-12-20-heat-introducao/07.png) + +Em alguns minutos (enquanto **cloud-init** instala e configura o servidor web Apache), poderemos acessar ao nosso servidor pela IP pública. +![](/assets/images/posts/2017-12-20-heat-introducao/07.png) + + +## Conclusão +Neste artigo introduzimos o Heat, o orquestrador do OpenStack. Vimos como mantém todas as funcionalidades de outros IaCs, como Terraform, mas é integrado de uma forma mais nativa no OpenStack e podemos accesá-lo via *dashboard* , linha de comandos ou API REST (compatível com a AWS CloudFormation). + +Nos próximos artigos veremos como criar via Heat um balanceador de carga em alta disponibilidade usando `haproxy` e VRRP. + +Um abraço! diff --git a/_posts/2018-02-17-hntd-11.md b/_posts/2018-02-17-hntd-11.md new file mode 100644 index 0000000000..752a5cdf4a --- /dev/null +++ b/_posts/2018-02-17-hntd-11.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 11th edition" +last_modified_at: 2018-02-17T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2018-02-17-hntd-11.jpeg) diff --git a/_posts/2018-03-08-fiap-cld.md b/_posts/2018-03-08-fiap-cld.md new file mode 100644 index 0000000000..84b71a7a5e --- /dev/null +++ b/_posts/2018-03-08-fiap-cld.md @@ -0,0 +1,13 @@ +--- +title: "FIAP MBA em Cloud Computing (CLD)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - classes + - fiap + - openstack + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/README.md %} + diff --git a/_posts/2018-03-14-hntd-12.md b/_posts/2018-03-14-hntd-12.md new file mode 100644 index 0000000000..a951e628b8 --- /dev/null +++ b/_posts/2018-03-14-hntd-12.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 12th edition" +last_modified_at: 2018-03-14T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2018-03-14-hntd-12.jpeg) diff --git a/_posts/2018-03-18-openstack1-keystone.md b/_posts/2018-03-18-openstack1-keystone.md new file mode 100644 index 0000000000..cf2a393d03 --- /dev/null +++ b/_posts/2018-03-18-openstack1-keystone.md @@ -0,0 +1,24 @@ +--- +title: "OpenStack series I: Keystone - Identity Manager" +last_modified_at: 2018-03-18T16:00:58-04:00 +tags: + - classes + - fiap + - openstack + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab01-keystone.md %} + + \ No newline at end of file diff --git a/_posts/2018-03-20-openstack2-glance.md b/_posts/2018-03-20-openstack2-glance.md new file mode 100644 index 0000000000..0c41cb331d --- /dev/null +++ b/_posts/2018-03-20-openstack2-glance.md @@ -0,0 +1,24 @@ +--- +title: "OpenStack series II: Glance - Image Service" +last_modified_at: 2018-03-20T16:00:58-04:00 +tags: + - classes + - fiap + - openstack + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab02-glance.md %} + + \ No newline at end of file diff --git a/_posts/2018-03-22-openstack3-nova.md b/_posts/2018-03-22-openstack3-nova.md new file mode 100644 index 0000000000..c50f7d6794 --- /dev/null +++ b/_posts/2018-03-22-openstack3-nova.md @@ -0,0 +1,24 @@ +--- +title: "OpenStack series III: Nova - Compute Service" +last_modified_at: 2018-03-22T16:00:58-04:00 +tags: + - classes + - fiap + - openstack + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab03-nova.md %} + + \ No newline at end of file diff --git a/_posts/2018-03-24-hntd-13.md b/_posts/2018-03-24-hntd-13.md new file mode 100644 index 0000000000..36205ecced --- /dev/null +++ b/_posts/2018-03-24-hntd-13.md @@ -0,0 +1,13 @@ +--- +title: "HCNA-HNTD Training - 13th edition" +last_modified_at: 2018-03-24T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +![](/assets/images/posts/2018-03-24-hntd-13.jpeg) diff --git a/_posts/2018-04-01-redhat-academy.md b/_posts/2018-04-01-redhat-academy.md new file mode 100644 index 0000000000..2056dd92be --- /dev/null +++ b/_posts/2018-04-01-redhat-academy.md @@ -0,0 +1,44 @@ +--- +title: "Red Hat Academy" +last_modified_at: 2020-06-06T16:00:58-04:00 +tags: + - cert + - classes + - fiap + - openshift + - openstack + - pt + - redhat +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg)](https://www.redhat.com/pt-br/services/training/red-hat-academy) + +## Benefícios +- Aproveite os descontos (**voucher 50% *off***) nos exames de certificação. +- Escolha o estilo de aprendizado ideal para você dentre os nossos vários formatos de material didático. +- Adquiria uma experiência valiosa com os ambientes de laboratório *hands-on*. +- Conecte-se com outros estudantes e os instrutores da Red Hat que fazem parte da [**Red Hat Learning Community**](https://learn.redhat.com/). + +## Cursos +### ![](/assets/images/posts/2018-04-01-redhat-academy/icon1.png) Administração de sistemas básica + * Red Hat System Administration I ([RH124](https://www.redhat.com/pt-br/services/training/rh124-red-hat-system-administration-i)) + * Red Hat System Administration II ([RH134](https://www.redhat.com/pt-br/services/training/rh134-red-hat-system-administration-ii)) + * Red Hat System Administration III ([RH254](https://www.redhat.com/pt-br/services/training/rh254-red-hat-system-administration-iii)) + +### ![](/assets/images/posts/2018-04-01-redhat-academy/icon2.png) Desenvolvimento de middleware + * Red Hat Application Development I: Programming in Java EE ([AD183](https://www.redhat.com/pt-br/services/training/ad183-red-hat-application-development-i-programming-java-ee)) + * Red Hat Application Development II: Implementing Microservice Architecture ([DO283](https://www.redhat.com/pt-br/services/training/do283-red-hat-application-development-ii-implementing-microservice-architectures)) + +### ![](/assets/images/posts/2018-04-01-redhat-academy/icon3.png) Cloud Computing + * Red Hat OpenStack Administration I ([CL110](https://www.redhat.com/pt-br/services/training/cl110-red-hat-openstack-administration-i-core-operations-cloud-operators)) + * Introduction to Containers, Kubernetes and Red Hat OpenShift ([DO180](https://www.redhat.com/pt-br/services/training/do180-introduction-containers-kubernetes-red-hat-openshift)) + +## ![](/assets/images/posts/2018-04-01-redhat-academy/icon4.png) Exames de certificação +- Red Hat Certified System Administrator ([EX200](https://www.redhat.com/pt-br/services/training/ex200-red-hat-certified-system-administrator-rhcsa-exam)) +- Red Hat Certified Engineer ([EX300](https://www.redhat.com/pt-br/services/training/ex300-red-hat-certified-engineer-rhce-exam)) +- Red Hat Certified Enterprise Application Developer ([EX183](https://www.redhat.com/pt-br/services/training/ex183-red-hat-certified-enterprise-application-developer-exam)) +- Red Hat Certified Enterprise Microservices Developer ([EX283](https://www.redhat.com/pt-br/services/training/ex283-red-hat-certified-enterprise-microservices-developer-exam)) +- Preliminary Exam in Containers, Kubernetes, and OpenShift ([PE180](https://www.redhat.com/pt-br/services/training/pe180-preliminary-exam-containers-kubernetes-openshift)) +- Preliminary Exam in System Administration ([PE124](https://www.redhat.com/pt-br/services/training/pe124-preliminary-exam-red-hat-system-administration-I)) \ No newline at end of file diff --git a/_posts/2018-04-25-openstack4-neutron.md b/_posts/2018-04-25-openstack4-neutron.md new file mode 100644 index 0000000000..7bbbb0ea81 --- /dev/null +++ b/_posts/2018-04-25-openstack4-neutron.md @@ -0,0 +1,26 @@ +--- +title: "OpenStack series IV: Neutron - Network Service" +last_modified_at: 2018-04-25T16:00:58-04:00 +tags: + - classes + - fiap + - networks + - openstack + - pt + - redhat + - sdn + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab04-neutron.md %} + + \ No newline at end of file diff --git a/_posts/2018-04-27-openstack5-cinder.md b/_posts/2018-04-27-openstack5-cinder.md new file mode 100644 index 0000000000..07eb76368a --- /dev/null +++ b/_posts/2018-04-27-openstack5-cinder.md @@ -0,0 +1,25 @@ +--- +title: "OpenStack series V: Cinder - Block Storage Service" +last_modified_at: 2018-04-27T16:00:58-04:00 +tags: + - classes + - fiap + - openstack + - pt + - redhat + - sds + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab05-cinder.md %} + + \ No newline at end of file diff --git a/_posts/2018-04-29-openstack6-swift.md b/_posts/2018-04-29-openstack6-swift.md new file mode 100644 index 0000000000..2dc1ce31c2 --- /dev/null +++ b/_posts/2018-04-29-openstack6-swift.md @@ -0,0 +1,25 @@ +--- +title: "OpenStack series VI: Swift - Object Storage Service" +last_modified_at: 2018-04-29T16:00:58-04:00 +tags: + - classes + - fiap + - openstack + - pt + - redhat + - sds + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab06-swift.md %} + + \ No newline at end of file diff --git a/_posts/2018-05-02-openstack7-heat.md b/_posts/2018-05-02-openstack7-heat.md new file mode 100644 index 0000000000..3608b8679e --- /dev/null +++ b/_posts/2018-05-02-openstack7-heat.md @@ -0,0 +1,25 @@ +--- +title: "OpenStack series VII: Heat - Orchestration Service" +last_modified_at: 2018-05-02T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openstack + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab07-heat.md %} + + \ No newline at end of file diff --git a/_posts/2018-05-04-openstack8-terraform.md b/_posts/2018-05-04-openstack8-terraform.md new file mode 100644 index 0000000000..4f66aeaaaa --- /dev/null +++ b/_posts/2018-05-04-openstack8-terraform.md @@ -0,0 +1,26 @@ +--- +title: "OpenStack series VIII: Terraform" +last_modified_at: 2018-05-04T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openstack + - pt + - redhat + - series + - terraform +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#openstack) sobre OpenStack. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/openstack/lab08-terraform.md %} + + \ No newline at end of file diff --git a/_posts/2018-07-28-openstackday.md b/_posts/2018-07-28-openstackday.md new file mode 100644 index 0000000000..d1f6fe08f2 --- /dev/null +++ b/_posts/2018-07-28-openstackday.md @@ -0,0 +1,19 @@ +--- +title: "OpenStack Day SP 2018" +last_modified_at: 2018-07-28T16:00:58-04:00 +tags: + - events + - openstack + - pt + - youtube +toc: false +--- + +IPv6 no OpenStack + +[![](/assets/images/posts/2018-07-28-openstackday.jpeg)](https://openstackbr.com.br/) + + + +![YouTube Video Views](https://img.shields.io/youtube/views/z-hQnrt2_88?style=social) +![YouTube Video Likes](https://img.shields.io/youtube/likes/z-hQnrt2_88?style=social) \ No newline at end of file diff --git a/_posts/2018-08-20-mandic-webinar.md b/_posts/2018-08-20-mandic-webinar.md new file mode 100644 index 0000000000..942ee678d4 --- /dev/null +++ b/_posts/2018-08-20-mandic-webinar.md @@ -0,0 +1,12 @@ +--- +title: "Webinar Mandic Cloud - IPv6 no OpenStack" +last_modified_at: 2018-03-14T16:00:58-04:00 +tags: + - events + - pt + - webinar +toc: false +--- + +[![](/assets/images/posts/2018-08-20-mandic-webinar.jpeg)](https://labs.mandic.com.br/webinars/ipv6-openstack) + diff --git a/_posts/2018-09-11-ict-competition.md b/_posts/2018-09-11-ict-competition.md new file mode 100644 index 0000000000..f8c7dcf2a8 --- /dev/null +++ b/_posts/2018-09-11-ict-competition.md @@ -0,0 +1,39 @@ +--- +title: "Huawei ICT Competition Brazil 2018-2019" +last_modified_at: 2018-09-11T16:00:58-04:00 +tags: + - classes + - huawei + - networks + - pt +toc: true +toc_sticky: true +--- + +![](/assets/images/posts/2018-09-11-ict-competition.jpg) + +A Huawei University promove pela primeira vez no Brasil o ICT Competition, um campeonato mundial promovido anualmente pela companhia para estudantes de TIC – Tecnologia da Informação e Comunicação . Com a participação de mais de 50 países, o programa deve receber mais de 80 mil alunos de cerca de mil instituições de ensino em sua primeira fase, que acontece por meio de uma prova online. + +Os estudantes aprovados na primeira fase (top 50) competirão em uma seletiva nacional, que determinará quem serão os representantes do Brasil na fase regional no Mexico (top 6), e posteriarmente na fase final, que acontecerá na China em 2019. Os finalistas também poderão conhecer os laboratórios de Pesquisa e Desenvolvimento da sede global da companhia, além de receber certificados de acordo com sua colocação e concorrer a smartphones Huawei. + + +## Tracks + +### Network +- Routing & Switching +- WLAN +- Security + +### Cloud +- Cloud +- Big Data +- Storage + +## Etapas + +- A primeira é o self-learning a onde serão disponibilizados diversos materiais/labs/treinamentos para se preparar para os testes; +- A segunda etapa é um teste online que irá classificar os melhores candidatos para a próxima fase (top 50); +- A terceira etapa é a semi-final, na qual serão escolhidos os vencedores de cada track (top 6). Os vencedores da semi-final de cada país participarão da final regional na Cidade do México, México. + +Os participantes do top 50 ganham um voucher de 200$ para realizar as provas HCIA de qualquer track da Huawei, e os vencedores poderão participar da etapa mundial em Shenzhen, China. + diff --git a/_posts/2018-12-16-etsi2tosca.md b/_posts/2018-12-16-etsi2tosca.md new file mode 100644 index 0000000000..77126157ed --- /dev/null +++ b/_posts/2018-12-16-etsi2tosca.md @@ -0,0 +1,18 @@ +--- +title: "Converting ETSI NFV templates into TOSCA profile" +last_modified_at: 2018-12-16T16:00:58-04:00 +tags: + - en + - networks + - nfv +toc: true +toc_sticky: true +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/etsi2tosca/master/README.md %} + + diff --git a/_posts/2019-01-23-fiap-aso.md b/_posts/2019-01-23-fiap-aso.md new file mode 100644 index 0000000000..16c30350ce --- /dev/null +++ b/_posts/2019-01-23-fiap-aso.md @@ -0,0 +1,15 @@ +--- +title: "FIAP MBA em Arquitetura de Soluções (ASO)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - openshift + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/aso/README.md %} + diff --git a/_posts/2019-01-25-containers1-docker.md b/_posts/2019-01-25-containers1-docker.md new file mode 100644 index 0000000000..90857342ce --- /dev/null +++ b/_posts/2019-01-25-containers1-docker.md @@ -0,0 +1,25 @@ +--- +title: "Containers series I: Docker" +last_modified_at: 2019-01-25T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab01-docker.md %} + + \ No newline at end of file diff --git a/_posts/2019-01-27-containers2-docker2.md b/_posts/2019-01-27-containers2-docker2.md new file mode 100644 index 0000000000..28ef9180c9 --- /dev/null +++ b/_posts/2019-01-27-containers2-docker2.md @@ -0,0 +1,25 @@ +--- +title: "Containers series II: Docker - continuação" +last_modified_at: 2019-01-27T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab02-docker-2.md %} + + \ No newline at end of file diff --git a/_posts/2019-01-29-containers3-docker-compose.md b/_posts/2019-01-29-containers3-docker-compose.md new file mode 100644 index 0000000000..ef34845c0e --- /dev/null +++ b/_posts/2019-01-29-containers3-docker-compose.md @@ -0,0 +1,25 @@ +--- +title: "Containers series III: Docker Compose" +last_modified_at: 2019-01-29T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab03-docker-compose.md %} + + \ No newline at end of file diff --git a/_posts/2019-02-02-containers4-docker-swarm.md b/_posts/2019-02-02-containers4-docker-swarm.md new file mode 100644 index 0000000000..841696cc4c --- /dev/null +++ b/_posts/2019-02-02-containers4-docker-swarm.md @@ -0,0 +1,25 @@ +--- +title: "Containers series IV: Docker Swarm" +last_modified_at: 2019-02-02T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab04-docker-swarm.md %} + + \ No newline at end of file diff --git a/_posts/2019-02-04-containers5-k8s-install.md b/_posts/2019-02-04-containers5-k8s-install.md new file mode 100644 index 0000000000..81efe48348 --- /dev/null +++ b/_posts/2019-02-04-containers5-k8s-install.md @@ -0,0 +1,25 @@ +--- +title: "Containers series V: Kubernetes - Instalação" +last_modified_at: 2019-02-04T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab05-kubernetes-install.md %} + + \ No newline at end of file diff --git a/_posts/2019-02-06-containers6-kompose.md b/_posts/2019-02-06-containers6-kompose.md new file mode 100644 index 0000000000..ed0b88a980 --- /dev/null +++ b/_posts/2019-02-06-containers6-kompose.md @@ -0,0 +1,25 @@ +--- +title: "Containers series VI: Kompose" +last_modified_at: 2019-02-06T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab06-kompose.md %} + + \ No newline at end of file diff --git a/_posts/2019-02-08-containers7-k8s-use.md b/_posts/2019-02-08-containers7-k8s-use.md new file mode 100644 index 0000000000..b265c7cea6 --- /dev/null +++ b/_posts/2019-02-08-containers7-k8s-use.md @@ -0,0 +1,25 @@ +--- +title: "Containers series VII: Kubernetes - Uso" +last_modified_at: 2019-02-08T16:00:58-04:00 +tags: + - classes + - fiap + - iac + - openshift + - pt + - redhat + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#containers) sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/microservices/lab07-kubernetes-use.md %} + + \ No newline at end of file diff --git a/_posts/2019-03-10-locust-ccnclient.md b/_posts/2019-03-10-locust-ccnclient.md new file mode 100644 index 0000000000..3fd8fa4f01 --- /dev/null +++ b/_posts/2019-03-10-locust-ccnclient.md @@ -0,0 +1,17 @@ +--- +title: "Locust CCN client" +last_modified_at: 2019-03-10T16:00:58-04:00 +tags: + - ccn + - en + - networks +toc: false +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/locust-ccnclient/master/README.md %} + + \ No newline at end of file diff --git a/_posts/2019-03-21-fiap-net.md b/_posts/2019-03-21-fiap-net.md new file mode 100644 index 0000000000..663f81fb01 --- /dev/null +++ b/_posts/2019-03-21-fiap-net.md @@ -0,0 +1,13 @@ +--- +title: "FIAP MBA em Arquitetura e Desenvolvimento na Plataforma .NET (NET)" +last_modified_at: 2019-03-21T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/README.md %} + diff --git a/_posts/2019-04-18-welcome-to-jekyll.md b/_posts/2019-04-18-welcome-to-jekyll.md deleted file mode 100644 index 30fdbf3746..0000000000 --- a/_posts/2019-04-18-welcome-to-jekyll.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Welcome to Jekyll!" -date: 2019-04-18T15:34:30-04:00 -categories: - - blog -tags: - - Jekyll - - update ---- - -You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated. - -To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works. - -Jekyll also offers powerful support for code snippets: - -```ruby -def print_hi(name) - puts "Hi, #{name}" -end -print_hi('Tom') -#=> prints 'Hi, Tom' to STDOUT. -``` - -Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk]. - -[jekyll-docs]: https://jekyllrb.com/docs/home -[jekyll-gh]: https://github.com/jekyll/jekyll -[jekyll-talk]: https://talk.jekyllrb.com/ diff --git a/_posts/2019-04-23-fiap-bdt.md b/_posts/2019-04-23-fiap-bdt.md new file mode 100644 index 0000000000..f747c9a601 --- /dev/null +++ b/_posts/2019-04-23-fiap-bdt.md @@ -0,0 +1,15 @@ +--- +title: "FIAP MBA em Big Data (Data Science) (BDT)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - iot + - openshift + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/bdt/README.md %} + diff --git a/_posts/2019-04-25-zabbix-openstack.md b/_posts/2019-04-25-zabbix-openstack.md new file mode 100644 index 0000000000..b4209e7051 --- /dev/null +++ b/_posts/2019-04-25-zabbix-openstack.md @@ -0,0 +1,20 @@ +--- +title: "Zabbix templates for OpenStack" +last_modified_at: 2019-04-25T16:00:58-04:00 +tags: + - ansible + - monitoring + - openstack + - pt + - redhat +toc: true +toc_sticky: true +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/zabbix-for-openstack/master/README.md %} + + \ No newline at end of file diff --git a/_posts/2019-04-30-aws-educate.md b/_posts/2019-04-30-aws-educate.md new file mode 100644 index 0000000000..de0407c7c9 --- /dev/null +++ b/_posts/2019-04-30-aws-educate.md @@ -0,0 +1,69 @@ +--- +title: "AWS Educate" +last_modified_at: 2021-07-25T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: yes +--- + +[![](/assets/images/posts/2019-04-30-aws-educate/0.png)](https://aws.amazon.com/pt/education/awseducate/) + + +## Recursos e benefícios +- Acesso ao [**AWS Educate Student Portal**](https://aws.amazon.com/pt/education/awseducate/). +- Accesso ao **console AWS com 50$ de créditos** e labs online. +- [**Cloud Career Pathways**](https://aws.amazon.com/pt/education/awseducate/pathways-and-badges/): Explore trajetórias profissionais na nuvem para saber mais sobre as principais competências de nuvem nas carreiras de tecnologia mais procuradas. Desde Cientista de machine learning até Desenvolvedor de aplicativos, cada trajetória alinha-se a uma função específica e inclui mais de 25 horas de conteúdo autoguiado acompanhado de testes de conhecimento. Ganhe distintivos pelas trajetórias concluídas e compartilhe com potenciais empregadores no AWS Educate Job Board. +- [**AWS Educate Badges**](https://aws.amazon.com/pt/education/awseducate/pathways-and-badges/): Desbloqueie um distintivo do AWS Educate em uma das áreas de interesse de maior crescimento do setor, incluindo Alexa, jogos e Internet das Coisas (IoT). Cada distintivo apresenta 10-15 horas de conteúdo individualizado para expandir seu conjunto de habilidades na nuvem. +- [**Salas de aula do AWS Educate**](https://aws.amazon.com/pt/education/awseducate/classrooms/): Uma sala de aula virtual para os estudantes aprenderem sobre a nuvem em um ambiente prático. Cada sala de aula utiliza um conjunto distinto de serviços que são ideais para o aprendizado de vários tópicos sobre a nuvem, como Big Data ou machine learning. +- **Desenvolvimento profissional**: Expanda suas competências de nuvem por meio de cursos do AWS Educate ou de programas AWS Training and Certification. Outros recursos incluem vídeos instrutivos e laboratórios autoguiados. Descontos podem estar disponíveis para alguns treinamentos. +- [**AWS Educate Job Board**](https://aws.amazon.com/pt/education/awseducate/aws-educate-job-board/): Acesse milhares de empregos e estágios na nuvem da Amazon e outras empresas no mundo inteiro no AWS Educate Job Board. Personalize seu portfólio online com credenciais de trajetórias e ganhe distintivos para atrair recrutadores ou empresas em busca de alguém. + + +## [Cloud Career Pathways](https://aws.amazon.com/pt/education/awseducate/pathways-and-badges/) +- Introdução à computação na nuvem +- Machine learning +- Cientista de dados +- Desenvolvedor de aplicativos +- Desenvolvimento na Web +- Engenheiro de software +- Especialista em segurança cibernética +- Engenheiro de DevOps +- Arquiteto de soluções +- Associado de suporte à nuvem +- Engenheiro de suporte à nuvem +- Integração de dados + +## [AWS Educate Badges](https://aws.amazon.com/pt/education/awseducate/pathways-and-badges/) +- ![](/assets/images/posts/2019-04-30-aws-educate/badge0.png) AWS DeepLens +- ![](/assets/images/posts/2019-04-30-aws-educate/badge1.png) Jogos +- ![](/assets/images/posts/2019-04-30-aws-educate/badge2.png) AWS DeepRacer +- ![](/assets/images/posts/2019-04-30-aws-educate/badge3.png) Datapalooza +- ![](/assets/images/posts/2019-04-30-aws-educate/badge4.png) Amazon Sumerian +- ![](/assets/images/posts/2019-04-30-aws-educate/badge5.png) AWS RoboMaker +- ![](/assets/images/posts/2019-04-30-aws-educate/badge6.png) Internet das Coisas +- ![](/assets/images/posts/2019-04-30-aws-educate/badge7.png) Alexa +- ![](/assets/images/posts/2019-04-30-aws-educate/badge8.png) Startups da AWS + + +## Cadastro na plataforma + +1. Acessar [www.awseducate.com](https://www.awseducate.com/) + +2. Seleccionar **Join AWS Educate** + +3. Selecionar o rol de estudante + +4. Preencher o formulario, usando o mail da FIAP (RMxyzw@fiap.com.br) e **colocando uma data de término do curso/graduação no futuro**. + +5. Aguardar o mail de confirmação + +## Cadastro na plataforma via convite do instrutor + +Seguir os passos descritos em [AWS Educate: Cadastro na plataforma](/aws-educate-login) + +![](/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg) +![](/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg) \ No newline at end of file diff --git a/_posts/2019-05-10-sbrc19.md b/_posts/2019-05-10-sbrc19.md new file mode 100644 index 0000000000..fd137b8ae5 --- /dev/null +++ b/_posts/2019-05-10-sbrc19.md @@ -0,0 +1,64 @@ +--- +title: "SBRC/WPEIF 2019" +last_modified_at: 2019-05-10T16:00:58-04:00 +tags: + - ccn + - en + - events + - networks + - nfv + - research + - papers +toc: true +toc_sticky: true +--- + +**XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro** + +## [Proceedings](http://sbrc2019.sbc.org.br/wp-content/uploads/2019/05/wpeif2019.pdf) + +[**Network Function Virtualization in Content-Centric Networks**](https://sol.sbc.org.br/index.php/wpeif/article/view/7696) + +[![DOI:10.5753/wpeif.2019.7696](https://zenodo.org/badge/DOI/10.5753/wpeif.2019.7696.svg)](https://doi.org/10.5753/wpeif.2019.7696) + + - José Castillo Lema, *Universidade de São Paulo*, Brazil + - Augusto J. Venancio Neto, *Federal University of Rio Grande do Norte*, Brazil + - Flavio de Oliveira Silva, *Federal University of Uberlândia*, Brazil + - Sergio Kofuji, *Universidade de São Paulo*, Brazil + +## Cite this + +### ABNT +CASTILLO-LEMA, José ; NETO, Augusto José Venâncio; SILVA, Flavio de Oliveira; KOFUJI, Sergio Takeo. **Network Function Virtualization in Content-Centric Networks**. In: WORKSHOP DE PESQUISA EXPERIMENTAL DA INTERNET DO FUTURO (WPEIF), 10. , 2019, Gramado. *Anais do X Workshop de Pesquisa Experimental da Internet do Futuro. Porto Alegre: Sociedade Brasileira de Computação*, sep. 2019 . p. 31-37. ISSN 2595-2692. + +### APA +Castillo-Lema, J., Neto, A., Silva, F., & Kofuji, S. (2019). **Network Function Virtualization in Content-Centric Networks**. In *Anais do X Workshop de Pesquisa Experimental da Internet do Futuro*, (pp. 31-37). Porto Alegre: SBC. + +### BibTeX +``` +@inproceedings {wpeif, + author = {José Castillo-Lema and Augusto Neto and Flavio Silva and Sergio Kofuji}, + title = {Network Function Virtualization in Content-Centric Networks}, + booktitle = {Anais do X Workshop de Pesquisa Experimental da Internet do Futuro}, + location = {Gramado}, + year = {2019}, + keywords = {}, + issn = {2595-2692}, + pages = {31--37}, + publisher = {SBC}, + address = {Porto Alegre, RS, Brasil}, + url = {https://sol.sbc.org.br/index.php/wpeif/article/view/7696}} +``` + +### MLA +Castillo-Lema, José, Augusto José Venâncio Neto, Flavio de Oliveira Silva, and Sergio Takeo Kofuji. "**Network Function Virtualization in Content-Centric Networks**". *Anais do X Workshop de Pesquisa Experimental da Internet do Futuro*, Gramado, 2019. SBC, 2019, pp.31-37. + +### RefWorks +``` +@article { {wpeif} {}, + author = { Castillo-Lema, J., Neto, A., Silva, F., Kofuji, S.}, + title = {Network Function Virtualization in Content-Centric Networks}, + journal = {Anais do Workshop de Pesquisa Experimental da Internet do Futuro (WPEIF)}, + year = {2019}, + url = {https://sol.sbc.org.br/index.php/wpeif/article/view/7696}} +``` \ No newline at end of file diff --git a/_posts/2019-05-21-sumare.md b/_posts/2019-05-21-sumare.md new file mode 100644 index 0000000000..653895349f --- /dev/null +++ b/_posts/2019-05-21-sumare.md @@ -0,0 +1,14 @@ +--- +title: "11a Semana de TI da Sumaré" +last_modified_at: 2019-05-21T16:00:58-04:00 +tags: + - events + - pt +toc: false +--- + +## [Agenda](https://blog.sumare.edu.br/blog/index.php/2019/05/17/11a-semana-de-t-i-sumare/) + +[![](/assets/images/posts/2019-05-21-sumare/01.jpg)](https://blog.sumare.edu.br/blog/index.php/2019/05/17/11a-semana-de-t-i-sumare/) + +![](/assets/images/posts/2019-05-21-sumare/02.jpeg) diff --git a/_posts/2019-05-23-fiap-blc.md b/_posts/2019-05-23-fiap-blc.md new file mode 100644 index 0000000000..782d445bad --- /dev/null +++ b/_posts/2019-05-23-fiap-blc.md @@ -0,0 +1,14 @@ +--- +title: "FIAP MBA em Blockchain Development & Technologies (BLC)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/blc/README.md %} + diff --git a/_posts/2019-06-28-netsoft19.md b/_posts/2019-06-28-netsoft19.md new file mode 100644 index 0000000000..c4544dd509 --- /dev/null +++ b/_posts/2019-06-28-netsoft19.md @@ -0,0 +1,44 @@ +--- +title: "IEEE NetSoft/S4SI 2019" +last_modified_at: 2019-06-28T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - papers + - research + - sdn +toc: yes +toc_sticky: true +--- + +**IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures** + +## [Agenda](https://intrig.dca.fee.unicamp.br/s4si2019/agenda.html) + +[**Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping**](https://ieeexplore.ieee.org/document/8806686) + +[![DOI:10.1109/NETSOFT.2019.8806686](https://zenodo.org/badge/DOI/10.1109/NETSOFT.2019.8806686.svg)](https://doi.org/10.1109/NETSOFT.2019.8806686) + + - José Castillo Lema, *Universidade de São Paulo*, Brazil + - Augusto J. Venancio Neto, *Federal University of Rio Grande do Norte*, Brazil + - Flavio de Oliveira Silva, *Federal University of Uberlândia*, Brazil + - Sergio Kofuji, *Universidade de São Paulo*, Brazil + +## Cite this + +### Plain text +J. Castillo-Lema, A. Venâncio Neto, F. de Oliveira and S. Takeo Kofuji, "**Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping**", *2019 IEEE Conference on Network Softwarization (NetSoft)*, Paris, France, 2019, pp. 506-512, doi: 10.1109/NETSOFT.2019.8806686. + +### BibTeX +``` +@INPROCEEDINGS{8806686, + author={J. {Castillo-Lema} and A. {Venâncio Neto} and F. {de Oliveira} and S. {Takeo Kofuji}}, + booktitle={2019 IEEE Conference on Network Softwarization (NetSoft)}, + title={Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping}, + year={2019}, + volume={}, + number={}, + pages={506-512}} +``` diff --git a/_posts/2019-08-03-fiap-aojo.md b/_posts/2019-08-03-fiap-aojo.md new file mode 100644 index 0000000000..adb76a6f50 --- /dev/null +++ b/_posts/2019-08-03-fiap-aojo.md @@ -0,0 +1,14 @@ +--- +title: "FIAP MBA em Engenharia de Software - Online (AOJO)" +last_modified_at: 2019-08-03T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/aojo/README.md %} + diff --git a/_posts/2019-08-05-thesis.md b/_posts/2019-08-05-thesis.md new file mode 100644 index 0000000000..57b93926aa --- /dev/null +++ b/_posts/2019-08-05-thesis.md @@ -0,0 +1,45 @@ +--- +title: "A generic NFV MANO for Content-Centric Networks" +last_modified_at: 2019-08-05T16:00:58-04:00 +tags: + - ccn + - en + - networks + - nfv + - papers + - research +toc: true +toc_sticky: true +--- + +[**Biblioteca Digital de Teses e Dissertações da USP**](https://teses.usp.br/teses/disponiveis/3/3142/tde-23102019-120559) + +[![DOI:10.11606/T.3.2019.tde-23102019-120559](https://zenodo.org/badge/DOI/10.11606/T.3.2019.tde-23102019-120559.svg)](https://doi.org/10.11606/T.3.2019.tde-23102019-120559) + +## Cite this + +### ISO + +CASTILLO LEMA, José. **A generic network function virtualization manager and orchestrator for content-centric networks** [doi:10.11606/T.3.2019.tde-23102019-120559]. São Paulo : Escola Politécnica, Universidade de São Paulo, 2019. Tese de Doutorado em Sistemas Eletrônicos. [acesso 2020-06-01]. + + +### ABNT + +CASTILLO LEMA, José. **A generic network function virtualization manager and orchestrator for content-centric networks**. 2019. Tese (Doutorado em Sistemas Eletrônicos) - Escola Politécnica, Universidade de São Paulo, São Paulo, 2019. doi:10.11606/T.3.2019.tde-23102019-120559. Acesso em: 2020-06-01. + + +### APA + +Castillo Lema, J. (2019). **A generic network function virtualization manager and orchestrator for content-centric networks**. Tese de Doutorado, Escola Politécnica, Universidade de São Paulo, São Paulo. doi:10.11606/T.3.2019.tde-23102019-120559. Recuperado em 2020-06-01, de www.teses.usp.br + + +### Vancouver + +Castillo Lema, José. **A generic network function virtualization manager and orchestrator for content-centric networks** [tese]. São Paulo: Escola Politécnica; 2019 [citado 2020-06-01]. doi:10.11606/T.3.2019.tde-23102019-120559. + +## Publications + +- [J. Castillo-Lema, A. Venâncio Neto, F. de Oliveira and S. Takeo Kofuji, "**Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping**", *2019 IEEE Conference on Network Softwarization (NetSoft)*, Paris, France, 2019, pp. 506-512, doi: 10.1109/NETSOFT.2019.8806686.](/netsoft19) [![DOI:10.1109/NETSOFT.2019.8806686](https://zenodo.org/badge/DOI/10.1109/NETSOFT.2019.8806686.svg)](https://doi.org/10.1109/NETSOFT.2019.8806686) +- [CASTILLO-LEMA, José ; NETO, Augusto José Venâncio; SILVA, Flavio de Oliveira; KOFUJI, Sergio Takeo. **Network Function Virtualization in Content-Centric Networks**. In: WORKSHOP DE PESQUISA EXPERIMENTAL DA INTERNET DO FUTURO (WPEIF), 10. , 2019, Gramado. *Anais do X Workshop de Pesquisa Experimental da Internet do Futuro. Porto Alegre: Sociedade Brasileira de Computação*, sep. 2019 . p. 31-37. ISSN 2595-2692.](/sbrc19) [![DOI:10.5753/wpeif.2019.7696](https://zenodo.org/badge/DOI/10.5753/wpeif.2019.7696.svg)](https://doi.org/10.5753/wpeif.2019.7696) + + diff --git a/_posts/2019-08-06-kuryr.md b/_posts/2019-08-06-kuryr.md new file mode 100644 index 0000000000..d9b138c52b --- /dev/null +++ b/_posts/2019-08-06-kuryr.md @@ -0,0 +1,48 @@ +--- +title: "Kuryr on OpenStack" +last_modified_at: 2019-08-06T16:00:58-04:00 +tags: + - en + - networks + - openshift + - openstack + - redhat +toc: false +--- + +![](/assets/images/posts/2019-08-06-kuryr.png) + +[Kuryr](https://github.com/openstack/kuryr) is Kubernetes Container Network Interface (CNI) for OpenStack, supported from OpenStack side from Red Hat OpenStack 13, for OpenShift 3.11 and for OpenShift 4.2 and above. + +If you are interested on checking the performance impact, check the post [Accelerate your OpenShift Network Performance on OpenStack with Kuryr](https://www.openshift.com/blog/accelerate-your-openshift-network-performance-on-openstack-with-kuryr) from the [official openshift blog](https://www.openshift.com/blog). + +Kuryr code lives in Kubernetes/OpenShift space, however there are some prerequisites from OpenStack side in order to properly work: + - [Octavia](https://wiki.openstack.org/wiki/Octavia), OpenStack`s load balancer as a service + - Open vSwitch as Neutron firewall driver + - The trunk extension to be enabled at Neutron + + The following TripleO/Director Heat template satisfies these prerequisites: + ``` + resource_registry: + OS::TripleO::Services::OctaviaApi: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-api.yaml + OS::TripleO::Services::OctaviaHousekeeping: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-housekeeping.yaml + OS::TripleO::Services::OctaviaHealthManager: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-health-manager.yaml + OS::TripleO::Services::OctaviaWorker: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-worker.yaml + OS::TripleO::Services::OctaviaDeploymentConfig: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia/octavia-deployment-config.yaml + +parameter_defaults: + # This flag enables internal generation of certificates for communication + # with amphorae. Use OctaviaCaCert, OctaviaCaKey, OctaviaCaKeyPassphrase + # and OctaviaClient cert to configure secure production environments. + OctaviaGenerateCerts: true + + # As an Octavia Load Balancer is used to access the OpenShift API, there is a need to increase their listeners + # default timeouts for the connections. The default timeout is 50 seconds. Increase the timeout to 20 minutes + OctaviaTimeoutClientData: 1200000 + OctaviaTimeoutMemberData: 1200000 + + NeutronOVSFirewallDriver: 'openvswitch' + + # In RHOSP 13, the trunk extension is enabled by default at Neutron, if that is not the case, make sure + # to add trunk the comma separated list of service plugin entrypoints defined in NeutronServicePlugins + ``` \ No newline at end of file diff --git a/_posts/2019-09-03-fiap-ia.md b/_posts/2019-09-03-fiap-ia.md new file mode 100644 index 0000000000..6f82fe4af1 --- /dev/null +++ b/_posts/2019-09-03-fiap-ia.md @@ -0,0 +1,13 @@ +--- +title: "FIAP MBA em Artificial Intelligence & Machine Learning (IA)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - classes + - fiap + - iot + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/ia/README.md %} + diff --git a/_posts/2019-10-10-fiapon-live-1aso.md b/_posts/2019-10-10-fiapon-live-1aso.md new file mode 100644 index 0000000000..98873badbc --- /dev/null +++ b/_posts/2019-10-10-fiapon-live-1aso.md @@ -0,0 +1,16 @@ +--- +title: "FIAP MBA ON Live - 1ASO - Fase 3 - Cloud" +last_modified_at: 2019-10-10T16:00:58-04:00 +tags: + - events + - fiap + - pt + - webinar +toc: false +--- + + + +![YouTube Video Views](https://img.shields.io/youtube/views/iYChd1SVEzc?style=social) +![YouTube Video Likes](https://img.shields.io/youtube/likes/iYChd1SVEzc?style=social) +![YouTube Video Votes](https://img.shields.io/youtube/likes/iYChd1SVEzc?style=social&withDislikes) \ No newline at end of file diff --git a/_posts/2020-01-06-computehcisriov-role.md b/_posts/2020-01-06-computehcisriov-role.md new file mode 100644 index 0000000000..52369f6717 --- /dev/null +++ b/_posts/2020-01-06-computehcisriov-role.md @@ -0,0 +1,85 @@ +--- +title: "ComputeHCISriov role for Director/TripleO" +last_modified_at: 2020-01-06T16:00:58-04:00 +tags: + - en + - nfv + - openstack + - redhat +toc: false +--- + + +Hyper-converged SR-IOV role for compute nodes. + +Change `700887` proposed and merged upstream: [https://review.opendev.org/#/c/700887/](https://review.opendev.org/#/c/700887/) + +``` +############################################################################### +# Role: ComputeHCISriov # +############################################################################### +- name: ComputeHCISriov + description: | + Compute Node with SR-IOV role hosting Ceph OSD too + networks: + - InternalApi + - Tenant + - Storage + - StorageMgmt + - Management + default_route_networks: ['Management'] + disable_upgrade_deployment: True + RoleParametersDefault: + TunedProfileName: "cpu-partitioning" + # CephOSD present so serial has to be 1 + update_serial: 1 + ServicesDefault: + - OS::TripleO::Services::Aide + - OS::TripleO::Services::AuditD + - OS::TripleO::Services::BootParams + - OS::TripleO::Services::CACerts + - OS::TripleO::Services::CephClient + - OS::TripleO::Services::CephExternal + - OS::TripleO::Services::CephOSD + - OS::TripleO::Services::CertmongerUser + - OS::TripleO::Services::Collectd + - OS::TripleO::Services::ComputeCeilometerAgent + - OS::TripleO::Services::ComputeNeutronCorePlugin + - OS::TripleO::Services::ComputeNeutronL3Agent + - OS::TripleO::Services::ComputeNeutronMetadataAgent + - OS::TripleO::Services::ComputeNeutronOvsAgent + - OS::TripleO::Services::Docker + - OS::TripleO::Services::Fluentd + - OS::TripleO::Services::IpaClient + - OS::TripleO::Services::Ipsec + - OS::TripleO::Services::Iscsid + - OS::TripleO::Services::Kernel + - OS::TripleO::Services::LoginDefs + - OS::TripleO::Services::MetricsQdr + - OS::TripleO::Services::MySQLClient + - OS::TripleO::Services::NeutronBgpVpnBagpipe + - OS::TripleO::Services::NeutronSriovAgent + - OS::TripleO::Services::NeutronSriovHostConfig + - OS::TripleO::Services::NeutronVppAgent + - OS::TripleO::Services::NovaCompute + - OS::TripleO::Services::NovaLibvirt + - OS::TripleO::Services::NovaLibvirtGuests + - OS::TripleO::Services::NovaMigrationTarget + - OS::TripleO::Services::Ntp + - OS::TripleO::Services::ContainersLogrotateCrond + - OS::TripleO::Services::OpenDaylightOvs + - OS::TripleO::Services::Rhsm + - OS::TripleO::Services::RsyslogSidecar + - OS::TripleO::Services::Securetty + - OS::TripleO::Services::SensuClient + - OS::TripleO::Services::SkydiveAgent + - OS::TripleO::Services::Snmp + - OS::TripleO::Services::Sshd + - OS::TripleO::Services::Timezone + - OS::TripleO::Services::TripleoFirewall + - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Vpp + - OS::TripleO::Services::OVNController + - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp +``` \ No newline at end of file diff --git a/_posts/2020-04-04-onf.md b/_posts/2020-04-04-onf.md new file mode 100644 index 0000000000..5c827ef2c0 --- /dev/null +++ b/_posts/2020-04-04-onf.md @@ -0,0 +1,55 @@ +--- +title: "Open Networking Foundation" +last_modified_at: 2021-04-17T16:00:58-04:00 +tags: + - en + - networks + - nfv + - onf + - sdn +toc: true +toc_sticky: true +--- + + +## Open Networking Foundation +![](/assets/images/posts/2020-04-30-onf/0.jpg) + +The [Open Networking Foundation (ONF)](https://opennetworking.org/) is a non-profit operator led consortium driving transformation of network infrastructure and carrier business models. + +We are an open, collaborative, community of communities. The ONF serves as the umbrella for a number of projects building solutions by leveraging network disaggregation, white box economics, open source software and software defined standards to revolutionize the carrier industry, including among others: + +- [**Stratum**](https://opennetworking.org/stratum/): thin switch implementing next generation SDN interfaces. + - [**Trellis**](https://opennetworking.org/trellis/): multi-purpose leaf-spine fabric supporting distributed access networks, NFV and edge cloud applications. + - [**ODTN**](https://opennetworking.org/odtn/): open and disaggregated source data center interconnect solution. + - [**SEBA**](https://opennetworking.org/seba/): lightweight platform that supports a multitude of virtualized access technologies at the edge of the carrier network, including PON, G.Fast and eventually DOCSIS and more. + - [**SD-RAN**](https://opennetworking.org/sd-ran/): Complementary to the O-RAN architecture, it includes a near-real-time RIC (nRT-RIC) and a set of exemplar xApps for controlling the RAN. + - [**Aether**](https://opennetworking.org/aether/): the first open source 5G Connected Edge platform for enabling enterprise digital transformation. + +## ONF Ambassador Program +![](/assets/images/posts/2020-04-30-onf/1.png) + +The [ONF Ambassador Program](https://www.opennetworking.org/ambassadors/) empowers anyone knowledgeable and passionate about ONF projects and initiatives to promote these in their part of the world. The program provides a simple framework and tools to help organize or attend events, recruit and mentor new contributors, and support a local developer community.If you feel that you want to represent and promote ONF, its mission, and projects in your region, and inspire, recruit, and support new contributors, please [apply here](https://forms.gle/PfkunXncognheAad8) to become an ONF Ambassador. + +## LATAM/CALA Community + +The ONF LATAM/CALA Ambassador team have been delivering spanish and portuguese webinars to talk about ONF and its related open source projects and how you can participate in the community: + +![](/assets/images/posts/2021-04-17-onf-webinar-21.png) + +- [Working with ONF to transform mobile and broadband networks in LATAM 2020](/onf-webinar) +- [Working with ONF to transform mobile and broadband networks in LATAM 2021](/onf-webinar-21) + +### CALA Ambassador Members + + - [Fernando Cerioni](https://opennetworking.org/ambassadors/fernando-cerioni/) + - [Amanda Espindola](https://opennetworking.org/ambassadors/amanda-espindola/) + - [Jose Lema](https://opennetworking.org/ambassadors/jose-castillo-lema/) + - [Andres Madero](https://opennetworking.org/ambassadors/andres-madero/) + - [Rony Pedroso](https://opennetworking.org/ambassadors/rony-a-spada-pedroso/) + - [Ricardo Tombi](https://opennetworking.org/ambassadors/ricardo-tombi/) + - [Freddy Turriaf](https://opennetworking.org/ambassadors/freddy-turriaf/) + - [Daniel Lazkani Feferman](https://opennetworking.org/ambassadors/daniel-lazkani-feferman/) + +## Profile +[![](/assets/images/posts/2020-04-30-onf/3.png)](https://www.opennetworking.org/ambassadors/jose-castillo-lema/) diff --git a/_posts/2020-04-25-aws1-ec2.md b/_posts/2020-04-25-aws1-ec2.md new file mode 100644 index 0000000000..c06545b048 --- /dev/null +++ b/_posts/2020-04-25-aws1-ec2.md @@ -0,0 +1,23 @@ +--- +title: "AWS series I: Elastic Computing (EC2)" +last_modified_at: 2020-04-25T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab01-iaas-ec2.md %} + + \ No newline at end of file diff --git a/_posts/2020-04-26-ocp43-on-rhosp13.md b/_posts/2020-04-26-ocp43-on-rhosp13.md new file mode 100644 index 0000000000..e0bf760909 --- /dev/null +++ b/_posts/2020-04-26-ocp43-on-rhosp13.md @@ -0,0 +1,232 @@ +--- +title: "OpenShift 4.3 on RHOSP 13: Installation and Integrations" +last_modified_at: 2020-04-26T16:00:58-04:00 +tags: + - en + - openstack + - openshift + - redhat +toc: true +toc_sticky: true +--- + +I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octavia TBD). + +## Prerequisites + - This was not a disconnected environment. Note that virtual machines have to be born with proper DNS configuration for OpenShift to download proper CoreOS images (`NeutronDhcpAgentDnsmasqDnsServer` parameter from Director). + - On Ceph RGW, the account in url option must be enabled (`rgw_swift_account_in_url: true` parameter from Director). + +## Installation +Following official documentation: [https://access.redhat.com/documentation/en-us/openshift_container_platform/4.3/html-single/installing_on_openstack/index](https://access.redhat.com/documentation/en-us/openshift_container_platform/4.3/html-single/installing_on_openstack/index) + +Prepared a bastion server within the OpenShift project for convenience, downloaded into it the OpenStack credentials file and added the password into it. +``` +[cloud-user@bastion ~]$ ./openshift-install create install-config --dir=installationDoc +? SSH Public Key /home/cloud-user/.ssh/id_rsa.pub +? Platform openstack +? Cloud openstack +? ExternalNetwork public +? APIFloatingIPAddress 192.168.226.42 +? FlavorName openshift +? Base Domain openshift.com.br +? Cluster Name lab01 +? Pull Secret [? for help] ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +The resulting configuration: +```yaml +[cloud-user@bastion ~]$ cat installationDoc/install-config.yaml +apiVersion: v1 +baseDomain: openshift.com.br +compute: +- hyperthreading: Enabled +  name: worker +  platform: {} +  replicas: 1 +controlPlane: +  hyperthreading: Enabled +  name: master +  platform: {} +  replicas: 1 +metadata: +  creationTimestamp: null +  name: lab01 +networking: +  clusterNetwork: +  - cidr: 10.128.0.0/14 +    hostPrefix: 23 +  machineCIDR: 10.0.0.0/16 +  networkType: OpenShiftSDN +  serviceNetwork: +  - 172.30.0.0/16 +platform: +  openstack: +    cloud: openstack +    computeFlavor: openshift +    externalDNS: null +    externalNetwork: public +    lbFloatingIP: 192.168.226.42 +    octaviaSupport: "0" +    region: "" +    trunkSupport: "1" +publish: External +pullSecret: '{"auths":{"cloud.openshift.com":{"auth”:”abc==","email":"jlema@redhat.com"},"quay.io":{"auth”:”abc==","email":"jlema@redhat.com"},"registry.connect.redhat.com":{"auth”:”abc==”,”email":"jlema@redhat.com"},"registry.redhat.io":{"auth”:”abc==,”,”email":"jlema@redhat.com"}}}' +sshKey: | +  ssh-rsa abc== cloud-user@bastion‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +As opposed to what the documentation says regarding the number of replicas (a positive integer greater than or equal to 3 for control nodes and greater to 2 for worker nodes), the installation actually works with 1 control node and 1 worker. + +Proceed with the actual installation: +``` +[cloud-user@bastion ~]$ ./openshift-install create cluster --dir=installationDoc --log-level=debug ‍‍‍‍‍‍‍ +First try we got this error: +... +INFO Creating infrastructure resources... +... + +INFO Waiting up to 30m0s for the Kubernetes API at https://api.lab01.openshift.oss.timbrasil.com.br:6443... +ERROR Attempted to gather ClusterOperator status after installation failure: listing +INFO Pulling debug logs from the bootstrap machine +ERROR Attempted to gather debug logs after installation failure: failed to create SSH client, ensure the proper ssh key is in your keyring or specify with --key: dial tcp 192.168.226.40:22: connect: connection refused +FATAL Bootstrap failed to complete: waiting for Kubernetes API: context deadline exceeded +``` + +It was a [MTU issue](https://bugzilla.redhat.com/show_bug.cgi?id=1799078), as our environment has jumbo frames as its default. Actually, there is no way to set MTU in IPI installations, and it was decided to wait to a future feature where you will be able to create your networking in OpenStack and then instruct the installer to use the existing networking resources while still installing with the IPI workflow (something like bring your own network). + +The (not very elegant) solution was to wait for the network creation, and manually configure the MTU, before the virtual machines are created: +``` +[cloud-user@bastion ~]$ watch -n 10 openstack network list +[cloud-user@bastion ~]$ openstack network set --mtu 1400 lab01-n67mh-openshift‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +Another issue we found at this point it is that for some reason the openshift-installer does not use soft anti-affinity policies (different from AWS and from [OpenStack UPI installation](https://github.com/openshift/installer/blob/master/docs/user/openstack/install_upi.md)), and may create all the masters/workers in the same server. The only option to accomplish this would be to define different regions for the nodes, which is not supported from RHOSP side. + +Finally, installation completed: +![](/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png) + +## Cinder Integration +Worked out of the box: +```yaml +[cloud-user@bastion ~]$ oc get storageClass +NAME                 TYPE +standard (default)   kubernetes.io/cinder‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ + +[cloud-user@bastion ~]$ oc describe storageClass standard +Name:           standard +IsDefaultClass: Yes +Annotations:    storageclass.kubernetes.io/is-default-class=true +Provisioner:    kubernetes.io/cinder +Parameters:     +Events:         ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ + +[cloud-user@bastion ~]$ oc get -o yaml storageClass standard +allowVolumeExpansion: true +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: +  annotations: +    storageclass.kubernetes.io/is-default-class: "true" +  creationTimestamp: 2020-03-24T18:17:11Z +  name: standard +  ownerReferences: +  - apiVersion: v1 +    kind: clusteroperator +    name: storage +    uid: 82643882-1e38-4fdd-98c2-fb19636ad003 +  resourceVersion: "10307" +  selfLink: /apis/storage.k8s.io/v1/storageclasses/standard +  uid: 7bb9919c-2ea7-4f1d-aedf-111b6c16e68c +provisioner: kubernetes.io/cinder +reclaimPolicy: Delete +volumeBindingMode: WaitForFirstConsumer‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +Create a persistent volume claim from this template: +```yaml +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: vol-teste-vai +spec: + accessModes: +  - ReadWriteOnce + resources: +   requests: +     storage: 10Gi + storageClassName: standard‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +As the `volumeBindingMode` is set to `WaitForFirstConsumer`, we had to actually attach the PV to a deployment in order to the Cinder volume to be created. For that, we used OpenShift GUI: +![](/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png) + + +From OpenShift side: +``` +[cloud-user@bastion ~]$ oc get pv +NAME                                       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM                   STORAGECLASS   REASON    AGE +pvc-691a2bbb-0d5a-4d2f-94e2-f50708085c7d   10Gi       RWO           Delete          Bound     default/vol-teste-vai   standard                 55s‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +From OpenStack side, the actual Cinder volume created dynamically by OpenShift: +``` +(overcloudrc) [cloud-user@bastion ~]$ openstack volume list ++--------------------------------------+--------------------------------------------------------------+-----------+------+-------------+ +| ID                                   | Name                                                         | Status    | Size | Attached to | ++--------------------------------------+--------------------------------------------------------------+-----------+------+-------------+ +| b75c57b4-ea8f-4d73-b0d6-28ab02458842 | lab01-9v54g-dynamic-pvc-691a2bbb-0d5a-4d2f-94e2-f50708085c7d | available |   10 |             | ++--------------------------------------+--------------------------------------------------------------+-----------+------+-------------+‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` + +## Swift Integration +Worked out of the box. + +From OpenStack side: +``` +(overcloud) [stack@manager ~]$ openstack container list ++----------------------------------------------------------------+ +| Name                                                           | ++----------------------------------------------------------------+ +| lab01-9v54g-image-registry-phbhqxrotxhvfkunvehpebfyeyajvoiirer | ++----------------------------------------------------------------+‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ +``` +We can see the docker registry images inside the container: +``` +(overcloud) [stack@manager ~]$ swift list lab01-9v54g-image-registry-phbhqxrotxhvfkunvehpebfyeyajvoiirer | grep registry +files/docker/registry/v2/blobs/sha256/02/02c05272c8dd4f99d68e12066db506412bef3c460dbb4a587a7cafc8af593e35/data +files/docker/registry/v2/blobs/sha256/45/455ea8ab06218495bbbcb14b750a0d644897b24f8c5dcf9e8698e27882583412/data +files/docker/registry/v2/blobs/sha256/46/46fc24a071a44b29a3ba49c94f75a47514a56470d539c9204f3e7688973fc93a/data +files/docker/registry/v2/blobs/sha256/4a/4abfcf58ff10724f3886be18423f80a481e90c4b258fbecad6ea06917a266003/data +files/docker/registry/v2/blobs/sha256/56/566b3d0a5bcd5903e86174ab1551a402b1c0dade2aa918d86895516bd2d0dd43/data +files/docker/registry/v2/blobs/sha256/6d/6d3329d5faa944944d54166b52dd7d11fcb99e6467950b5679095a44346c1cc8/data +files/docker/registry/v2/blobs/sha256/81/8170b35922ece1799b004d6fe41e253808d47da894197d3c7fe2b49614336fa7/data +files/docker/registry/v2/blobs/sha256/84/84e620d0abe585d05a7bed55144af0bc5efe083aed05eac1e88922034ddf1ed2/data +files/docker/registry/v2/blobs/sha256/b5/b57725894ce17afd25fefcef7fdb2467837e85834bf482759b9ca67b261a3724/data +files/docker/registry/v2/blobs/sha256/bb/bb13d92caffa705f32b8a7f9f661e07ddede310c6ccfa78fb53a49539740e29b/data +files/docker/registry/v2/repositories/openshift/python/_layers/sha256/455ea8ab06218495bbbcb14b750a0d644897b24f8c5dcf9e8698e27882583412/link +files/docker/registry/v2/repositories/openshift/python/_layers/sha256/46fc24a071a44b29a3ba49c94f75a47514a56470d539c9204f3e7688973fc93a/link +files/docker/registry/v2/repositories/openshift/python/_layers/sha256/4abfcf58ff10724f3886be18423f80a481e90c4b258fbecad6ea06917a266003/link +files/docker/registry/v2/repositories/openshift/python/_layers/sha256/8170b35922ece1799b004d6fe41e253808d47da894197d3c7fe2b49614336fa7/link +files/docker/registry/v2/repositories/openshift/python/_layers/sha256/84e620d0abe585d05a7bed55144af0bc5efe083aed05eac1e88922034ddf1ed2/link +files/docker/registry/v2/repositories/openshift/python/_layers/sha256/bb13d92caffa705f32b8a7f9f661e07ddede310c6ccfa78fb53a49539740e29b/link +files/docker/registry/v2/repositories/openshift/python/_manifests/revisions/sha256/566b3d0a5bcd5903e86174ab1551a402b1c0dade2aa918d86895516bd2d0dd4/‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍link +``` + +## Keystone Integration +Tricky when using self-signed certificates from OpenStack side. [Openshift Keystone Identity Provider](https://docs.openshift.com/container-platform/4.3/authentication/identity_providers/configuring-keystone-identity-provider.html) only works with https keystone endpoints. + +From the other side, there are several issues for deploying OpenShift on top endpoints with self-signed certificates: + - [[OSP] allow retrieval of ignition files from behind an encrypted endpoint which uses a self-signed certificate](https://bugzilla.redhat.com/show_bug.cgi?id=1735192) / target release 4.4.0 + - [[IPI][OSP] Machine-api cannot create workers on osp envs installed with self-signed certs](https://bugzilla.redhat.com/show_bug.cgi?id=1769879) / target release 4.4.0 + - [[OSP] allow retrieval of ignition files from behind an encrypted endpoint which uses a self-signed certificate](https://bugzilla.redhat.com/show_bug.cgi?id=1796822) / target release 4.3.z + - [[IPI][OSP] Machine-api cannot create workers on osp envs installed with self-signed certs](https://bugzilla.redhat.com/show_bug.cgi?id=1788072) / target release 4.3.z + +TBD + +## Neutron/Octavia Integration (Kuryr) +TBD + +## References + - [Red Hat OpenShift 4.2 IPI on OpenStack 13: All-in-one setup](https://developers.redhat.com/blog/2020/02/06/red-hat-openshift-4-2-ipi-on-openstack-13-all-in-one-setup/) + - [Automated Infrastructure in the On-Premise Datacenter – OpenShift 4.2 on OpenStack 15 (Stein)](https://keithtenzer.com/2019/10/29/automated-infrastructure-in-the-on-premise-datacenter-openshift-4-2-on-openstack-15-stein/) + - [OpenShift 4.2 on Red Hat OpenStack Platform 13](https://kdjlab.com/openshift-4-2-on-red-hat-openstack-platform-13/) diff --git a/_posts/2020-05-11-ussuri.md b/_posts/2020-05-11-ussuri.md new file mode 100644 index 0000000000..5862126666 --- /dev/null +++ b/_posts/2020-05-11-ussuri.md @@ -0,0 +1,18 @@ +--- +title: "OpenStack Ussuri Contributor List" +last_modified_at: 2020-05-11T16:00:58-04:00 +tags: + - en + - nfv + - openstack + - redhat +toc: false +--- + +![](/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg) + +Thanks to the more than 1,000 contributors from more than 50 countries and 188 organizations that contributed to the OpenStack Ussuri release. + +[https://www.openstack.org/software/ussuri/](https://www.openstack.org/software/ussuri/) + +![](/assets/images/posts/2020-05-11-ussuri/1.png) diff --git a/_posts/2020-05-25-aodh2sensu.md b/_posts/2020-05-25-aodh2sensu.md new file mode 100644 index 0000000000..2a7cc02198 --- /dev/null +++ b/_posts/2020-05-25-aodh2sensu.md @@ -0,0 +1,20 @@ +--- +title: "Importing alarms from OpenStack Aodh into Sensu Core" +last_modified_at: 2020-04-26T16:00:58-04:00 +tags: + - en + - openstack + - monitoring + - redhat +toc: true +toc_sticky: true +--- + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/aodh2sensu/master/README.md %} + + \ No newline at end of file diff --git a/_posts/2020-05-25-aws2-ebs.md b/_posts/2020-05-25-aws2-ebs.md new file mode 100644 index 0000000000..1e14e685bf --- /dev/null +++ b/_posts/2020-05-25-aws2-ebs.md @@ -0,0 +1,23 @@ +--- +title: "AWS series II: Elastic Block Service (EBS)" +last_modified_at: 2020-05-25T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab04-iaas-ebs.md %} + + \ No newline at end of file diff --git a/_posts/2020-06-25-aws3-s3.md b/_posts/2020-06-25-aws3-s3.md new file mode 100644 index 0000000000..0dee9d079f --- /dev/null +++ b/_posts/2020-06-25-aws3-s3.md @@ -0,0 +1,23 @@ +--- +title: "AWS series III: Simple Storage Service (S3)" +last_modified_at: 2020-06-25T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab05-iaas-s3.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-07-haina-brazil.md b/_posts/2020-07-07-haina-brazil.md new file mode 100644 index 0000000000..426e474ccd --- /dev/null +++ b/_posts/2020-07-07-haina-brazil.md @@ -0,0 +1,20 @@ +--- +title: "Huawei Certificate Training Program" +last_modified_at: 2020-07-07T16:00:58-04:00 +tags: + - cert + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2020-07-07-haina-brazil/0.jpg)](https://e.huawei.com/en/talent/#/news/details?consultationId=749) + +A Huawei está oferecendo **treinamentos digitais gratuitos**, trazendo para o Brasil o [Huawei Certificate Training Program](https://e.huawei.com/en/talent/#/news/details?consultationId=749), um programa de treinamentos para realizar os cursos preparatórios das certificações nível Associate, testes de qualificação e solicitar um **voucher para realizar a prova sem custo** (que normalmente tem um valor de $200). + +São 500 vouchers para realização da prova, que pode ser realizada remotamente pelos centros da [Person VUE](https://home.pearsonvue.com/Clients/Huawei.aspx). + +![](/assets/images/posts/2020-07-07-haina-brazil/1.png) + + diff --git a/_posts/2020-07-08-aws4-autoscaling.md b/_posts/2020-07-08-aws4-autoscaling.md new file mode 100644 index 0000000000..6f522852d6 --- /dev/null +++ b/_posts/2020-07-08-aws4-autoscaling.md @@ -0,0 +1,23 @@ +--- +title: "AWS series IV: Auto Scaling" +last_modified_at: 2020-07-08T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab09-iaas-autoscaling.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-10-aws5-ecs.md b/_posts/2020-07-10-aws5-ecs.md new file mode 100644 index 0000000000..7356553781 --- /dev/null +++ b/_posts/2020-07-10-aws5-ecs.md @@ -0,0 +1,23 @@ +--- +title: "AWS series V: Elastic Container Service (ECS)" +last_modified_at: 2020-07-10T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab03-iaas-ecs.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-12-aws7-eb.md b/_posts/2020-07-12-aws7-eb.md new file mode 100644 index 0000000000..93b91c038c --- /dev/null +++ b/_posts/2020-07-12-aws7-eb.md @@ -0,0 +1,23 @@ +--- +title: "AWS series VII: Elastic Beanstalk (EB)" +last_modified_at: 2020-07-12T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab06-paas-eb.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-13-aws-academy.md b/_posts/2020-07-13-aws-academy.md new file mode 100644 index 0000000000..3e7a5d8bfc --- /dev/null +++ b/_posts/2020-07-13-aws-academy.md @@ -0,0 +1,158 @@ +--- +title: "AWS Academy" +last_modified_at: 2022-11-07T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-07-09-aws-academy/01.png)](https://aws.amazon.com/pt/training/awsacademy/) + +## Benefícios do programa +- Acesso ao currículo criado pela AWS: O currículo pronto para ensino permite que as instituições membro incorporem a instrução em seu catálogo de cursos. As atualizações regulares da AWS refletem o ritmo da inovação e as melhores práticas da computação em nuvem. +- Crie habilidades alinhadas à AWS Certification: os alunos adquirem habilidades de computação na Nuvem AWS por meio de experiência prática e podem se preparar para a AWS Certification com simulados gratuitos e **descontos de 50% para os exames completos**. +- Aumente a força de trabalho da Nuvem AWS: Com o currículo da AWS Academy, os alunos obtêm experiência prática trabalhando em ambientes ao vivo, o que os ajuda a ganhar a experiência do mundo real necessária para conseguir emprego no setor. + +## Cursos + +### Cloud Foundations + +#### AWS Academy Cloud Foundations (ACF) + +O curso é introdutório e oferece uma visão geral detalhada dos seguintes tópicos: +* conceitos da nuvem +* principais serviços da AWS +* segurança +* arquitetura +* definição de preço +* suporte + +O curso possui **20 horas** de conteúdo e prepara os alunos para conseguir a [**certificação AWS Certified Cloud Practitioner (CLF-C01)**](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/). + +Na FIAP ofertamos este curso ([1ª edição](/shift-aws-foundations), [2ª edição](/shift-aws-foundations-2), [3ª edição](/shift-aws-foundations-3), [4ª edição](/shift-aws-foundations-4), [5ª edição](/shift-aws-foundations-5), [6ª edição](/shift-aws-foundations-6), [7ª edição](/shift-aws-foundations-7), [8ª edição](/shift-aws-foundations-8) e [9ª edição](/shift-aws-foundations-9)) na modalidade [SHIFT](https://www.fiap.com.br/shift). + +![](/assets/images/posts/2020-07-09-aws-academy/05.png) + +
+ +#### AWS Academy Introduction to Cloud + +##### Semester 1 (AICS1) + +Neste curso, os alunos irão estudar serviços de computação em nuvem, aplicativos e +casos de uso. Você vai mergulhar nas melhores práticas de computação em nuvem e aprender como +a computação em nuvem ajuda os usuários a desenvolver uma infraestrutura global para apoiar +para usar casos em escala, enquanto desenvolve e inventa tecnologias inovadoras, a través de **60 horas** de conteúdo. + +
+ +##### Semester 2 (AICS2) + +Neste curso, os alunos exploram serviços, aplicativos e casos de uso de computação em nuvem. Os alunos mergulham nas melhores práticas de computação em nuvem e aprendem como a computação em nuvem ajuda os usuários a desenvolver uma infraestrutura global para oferecer suporte a casos de uso em escala, ao mesmo tempo que desenvolve e inventa tecnologias inovadoras. + +Este curso é uma extensão do *AWS Academy Introduction to Cloud: Semester 1*. O curso fornece aos alunos instrução em sala de aula que apresenta as habilidades de computação em nuvem e acelera os alunos em direção às próximas etapas em sua jornada educacional. + +![](/assets/images/posts/2020-07-09-aws-academy/11.png) + +
+ +### Desenvolvimento + +#### AWS Academy Cloud Developing (ACD) + +Esse curso de nível intermediário ajudará os estudantes a ganharem experiência técnica em desenvolvimento com tecnologia de nuvens. Ele também os ajudará a se preparar para o exame de certificação [**AWS Certified Developer - Associate (DVA-C01)**](https://aws.amazon.com/pt/certification/certified-developer-associate/). Ao completar, os alunos estarão aptos a desenvolver com AWS SDK e identificar as melhores práticas para construir e implantar aplicativos na nuvem AWS. Esse curso tem aproximadamente **40 horas** de conteúdo fornecido por meio de palestras e laboratórios práticos. + +Recomendamos que os alunos cursem o [AWS Academy Cloud Foundations](#aws-academy-cloud-foundations-acf) ou equivalente, antes de iniciar este curso. + +Na FIAP ofertamos este curso ([1ª edição](/shift-aws-dev), [2ª edição](/shift-aws-dev-2), [3ª edição](/shift-aws-dev-3), [4ª edição](/shift-aws-dev-4), [5ª edição](/shift-aws-dev-5) e [6ª edição](/shift-aws-dev-6)) na modalidade [SHIFT](https://www.fiap.com.br/shift). + +![](/assets/images/posts/2020-07-09-aws-academy/06.png) + +
+ +### Arquitetura + +#### AWS Academy Cloud Architecting (ACA) + +O curso de nível intermediário cobre os fundamentos na construção da infraestrutura de TI na AWS e ajuda os estudantes a desenvolverem habilidades que eles precisam para obter a certificação [**AWS Certified Solutions Architect – Associate (SAA-C02)**](https://aws.amazon.com/certification/certified-solutions-architect-associate/). Este curso tem aproximadamente **40 horas** de conteúdo entregue por meio de palestras, laboratórios práticos e trabalho em projetos. + +Recomendamos que os alunos cursem o [AWS Academy Cloud Foundations](#aws-academy-cloud-foundations-acf) ou equivalente, antes de iniciar este curso. + +![](/assets/images/posts/2020-07-09-aws-academy/10.png) + +
+ +### Operações + +#### AWS Academy Cloud Operations (ACO) + +Esse curso de nível intermediário preparará os alunos para buscar DevOps sob demanda, suporte e papéis de operações nas nuvens no nível de entrada. Ele também os irá ajudar a se preparar para exame de certificação [**AWS Certified SysOps Administrator – Associate**](https://aws.amazon.com/certification/certified-sysops-admin-associate/). Por meio de estudos de casos, demonstrações e atividades de laboratório, os alunos aprenderão como resolver problemas em cenários diversos e automatizar a implantação de redes e sistemas na AWS. Este curso tem aproximadamente **40** horas de conteúdo fornecido por meio de palestras e laboratórios práticos. + +Recomendamos que os alunos cursem o [AWS Academy Cloud Foundations](#aws-academy-cloud-foundations-acf) ou equivalente, antes de iniciar este curso. + +![](/assets/images/posts/2020-07-09-aws-academy/09.png) + +
+ +### Machine learning + +#### AWS Academy Machine Learning Foundation (AML) + +Este curso introdutório apresenta aos alunos os conceitos e a terminologia de inteligência artificial (IA) e *machine learning* (ML). Ao final deste curso, os alunos poderão selecionar e aplicar serviços de ML para resolver problemas de negócios. Eles também poderão rotular, criar, treinar e implantar um modelo de ML personalizado. Este curso tem aproximadamente **20 horas** de conteúdo entregue por meio de palestras, laboratórios práticos e trabalho em projetos. + +![](/assets/images/posts/2020-07-09-aws-academy/07.png) + +
+ +### Análise de dados + +#### AWS Academy Data Analytics (ADA) + +Estes exercícios de laboratório ensinam os alunos a conduzir a análise de Big Data com exemplos práticos do mundo real. Os laboratórios e os recursos de aprendizado foram projetados para complementar os cursos de análise de dados existentes em uma instituição e fornecer aos alunos uma experiência prática ao trabalhar com dados em escala. Voltado para estudantes interessados em seguir carreiras em análise de dados, o AWS Academy Data Analytics requer uma base sólida em conceitos e habilidades de TI e contém **7.5 horas** de conteúdo. + +Na FIAP ofertamos este curso aos alunos do [MBA em Engenharia de dados](/fiap-abd). + +![](/assets/images/posts/2020-07-09-aws-academy/08.png) + +
+ +### Datacenters + +#### AWS Academy Engineering Operations Technicians (AEOT) + +Este curso fornece uma visão geral dos conceitos e habilidades fundamentais necessários para a função de técnico em operações de engenharia em um ambiente de datacenter. Os alunos aprenderão sobre tópicos como noções básicas de datacenter, infraestrutura física de data center, fundamentos elétricos e baterias e geradores de datacenter. + +![](/assets/images/posts/2020-07-09-aws-academy/12.png) + +
+ +#### AWS Academy Data Center Technician (DCT) + +Este curso foi desenvolvido para ajudar os alunos a desenvolver conhecimentos técnicos em operações de datacenter. Embora este seja um curso fundamental, os alunos devem ter conhecimento geral dos conceitos de engenharia mecânica e elétrica. + +![](/assets/images/posts/2020-07-09-aws-academy/13.png) + +
+ +### AWS Academy Learner Labs + +Ambientes com laboratórios práticos de longa duração onde os educadores podem inserir suas próprias atividades e convidar seus alunos para ganharem experiência usando produtos da AWS selecionados. + +#### Foundation (LLFS) + + - Disponível para todos os educadores AWS Academy que concluírem nosso curso de Orientação do educador + - Acesso a mais de 40 produtos da AWS + +#### Associate + - Disponível para todos os educadores credenciados + - Os educadores devem ser credenciados para ensinar pelo menos um curso do nível Associate da AWS Academy para criar um Learner Lab no nível Associate da AWS Academy + - Inclui acesso a mais de 100 produtos da AWS + + + +
\ No newline at end of file diff --git a/_posts/2020-07-14-aws8-eb-springboot.md b/_posts/2020-07-14-aws8-eb-springboot.md new file mode 100644 index 0000000000..cd03056bf8 --- /dev/null +++ b/_posts/2020-07-14-aws8-eb-springboot.md @@ -0,0 +1,23 @@ +--- +title: "AWS series VIII: Elastic Beanstalk (EB) com Spring Boot" +last_modified_at: 2020-07-14T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab10-paas-eb-springboot.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-16-aws12-dynamodb.md b/_posts/2020-07-16-aws12-dynamodb.md new file mode 100644 index 0000000000..3d32c23239 --- /dev/null +++ b/_posts/2020-07-16-aws12-dynamodb.md @@ -0,0 +1,23 @@ +--- +title: "AWS series XII: DynamoDB" +last_modified_at: 2020-07-16T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab08-paas-dynamo.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-16-aws9-cp.md b/_posts/2020-07-16-aws9-cp.md new file mode 100644 index 0000000000..1f17334cea --- /dev/null +++ b/_posts/2020-07-16-aws9-cp.md @@ -0,0 +1,23 @@ +--- +title: "AWS series IX: CodePipeline" +last_modified_at: 2020-07-16T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab07-paas-cp.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-17-haina.md b/_posts/2020-07-17-haina.md new file mode 100644 index 0000000000..3d416cb72f --- /dev/null +++ b/_posts/2020-07-17-haina.md @@ -0,0 +1,67 @@ +--- +title: "Huawei ICT Academy" +last_modified_at: 2020-10-25T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-07-17-haina/0.png)](https://www.huaweiacad.com) + +A Huawei ICT Academy é um programa de parceria sem fins lucrativos que autoriza universidades e faculdades a oferecer cursos de Certificação Huawei para estudantes. Este programa atua como uma ponte entre empresas e academia para construir um ecossistema de talentos para as indústrias de TIC. + +Desde sua afiliação no programa em 2016, a **Escola Politécnica da USP** oferece treinamento de certificação técnica para estudantes de instituições de ensino superior, formando com sucesso mais de 200 estudantes nos cursos certificados pela HCIA. + +![](/assets/images/posts/2020-07-17-haina/1.png) + +- [16a edição treinamento HCIA-R&S](/hcia-16) +- [15a edição](/hcia-15) +- [14a edição](/hcia-14) +- [Huawei ICT Competition Brazil 2018-2019](/ict-competition) +- [13a edição treinamento HCNA-HNTD](/hntd-13) +- [12a edição](/hntd-12) +- [11a edição](/hntd-11) +- [10a edição](/hntd-10) +- [9a edição](/hntd-09) +- [8a edição](/hntd-08) +- [7a edição](/hntd-07) +- [5a/6a edições](/hntd-05) +- [4a edição](/hntd-04) +- [3a edição](/hntd-03) +- [2a edição](/hntd-02) +- [1a edição](/hntd-01) + + +## Benefícios do programa +- Participação na Huawei ICT Competition +- Vochers para fazer os exames de certificação sem custo +- Acesso ao [portal da Huawei ICT Academy](https://www.huaweiacad.com), permitindo o aprendizado a qualquer hora, em qualquer lugar + +## Certificação Huawei + +A Huawei criou um sistema de certificação de três níveis: +- Huawei Certified ICT Associate (**HCIA**) +- Huawei Certified ICT Professional (**HCIP**) +- Huawei Certified ICT Expert (**HCIE**) + +![](/assets/images/posts/2020-07-17-haina/2.png) + + +Cada curso inclui: +- Materiais de e-Learning +- Exercícios práticos de laboratório baseados em cenários reais +- Vídeos que abrangem conhecimentos mais detalhados em áreas chave + +## Plataforma on-line +A plataforma on-line da Huawei ICT Academy fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e aprendizado móvel. + +Os alunos podem adquirir materiais de aprendizagem, concluir tarefas, consultar resultados e interagir com professores e outros aprendizados a qualquer hora e em qualquer lugar. + +Para se registrar na plataforma de aprendizado on-line gratuitamente e obter os materiais mais recentes: [https://www.huaweiacad.com](https://www.huaweiacad.com) + +![](/assets/images/posts/2020-07-17-haina/3.png) diff --git a/_posts/2020-07-18-aws14-emr.md b/_posts/2020-07-18-aws14-emr.md new file mode 100644 index 0000000000..68cd2c1a10 --- /dev/null +++ b/_posts/2020-07-18-aws14-emr.md @@ -0,0 +1,23 @@ +--- +title: "AWS series XIV: Elastic MapReduce (EMR)" +last_modified_at: 2020-07-18T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab12-paas-emr.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-20-aws10-apigw.md b/_posts/2020-07-20-aws10-apigw.md new file mode 100644 index 0000000000..a09e573473 --- /dev/null +++ b/_posts/2020-07-20-aws10-apigw.md @@ -0,0 +1,23 @@ +--- +title: "AWS series X: API Gateway" +last_modified_at: 2020-07-20T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab11-paas-api-gateway.md %} + + \ No newline at end of file diff --git a/_posts/2020-07-22-aws15-lambda.md b/_posts/2020-07-22-aws15-lambda.md new file mode 100644 index 0000000000..86af135685 --- /dev/null +++ b/_posts/2020-07-22-aws15-lambda.md @@ -0,0 +1,23 @@ +--- +title: "AWS series XV: Lambda" +last_modified_at: 2020-07-20T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab13-faas-lambda.md %} + + \ No newline at end of file diff --git a/_posts/2020-08-30-shift-aws-foundations.md b/_posts/2020-08-30-shift-aws-foundations.md new file mode 100644 index 0000000000..552e3ca69e --- /dev/null +++ b/_posts/2020-08-30-shift-aws-foundations.md @@ -0,0 +1,44 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations" +last_modified_at: 2020-08-30T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-08-30-shift-aws-foundations.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 15/10 e 19/11, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2020-09-05-shift-multicloud.md b/_posts/2020-09-05-shift-multicloud.md new file mode 100644 index 0000000000..9c727af615 --- /dev/null +++ b/_posts/2020-09-05-shift-multicloud.md @@ -0,0 +1,54 @@ +--- +title: "FIAP SHIFT: Multicloud Architecture" +last_modified_at: 2020-09-05T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-09-05-shift-multicloud.png)](https://www.fiap.com.br/shift/curso/tecnologia/multicloud-architecture-development-solutions-service-online) + +A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. + +Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS). + +## Para quem? +Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Benefício Amazon + +Cada aluno vai receber US$ 50 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso. + +## Shift remoto +Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + * Virtualização + * Modelos de serviço + * Segurança em nuvem / Modelo de responsabilidade compartilhada + * Modelos de implementação + * Multicloud + * Economia e faturamento da nuvem + * Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem + - Módulo 2: Infraestrutura como serviço (IaaS) + * Instanciação de máquinas virtuais + * Autoscaling + * Infraestrutura de armazenamento: block/object/file storage + * Containers + * Orquestração de containers + * Arquitetura de microserviços + - Módulo 3: Plataforma como serviço (PaaS) + * Automação e entrega contínua (CI/CD) + * Pipeline DevOps + * DBaaS SQL/NoSQL + * Function as a Service + * Arquiteturas serverless \ No newline at end of file diff --git a/_posts/2020-09-30-mycodeisopen.md b/_posts/2020-09-30-mycodeisopen.md new file mode 100644 index 0000000000..e5b5413977 --- /dev/null +++ b/_posts/2020-09-30-mycodeisopen.md @@ -0,0 +1,11 @@ +--- +title: "My code is open" +last_modified_at: 2020-09-30T16:00:58-04:00 +tags: + - redhat +toc: false +--- + +![](/assets/images/posts/2020-09-30-mycodeisopen/0.jpg) + +![](/assets/images/posts/2020-09-30-mycodeisopen/1.jpg) \ No newline at end of file diff --git a/_posts/2020-10-01-onf-webinar.md b/_posts/2020-10-01-onf-webinar.md new file mode 100644 index 0000000000..15c40b2db6 --- /dev/null +++ b/_posts/2020-10-01-onf-webinar.md @@ -0,0 +1,25 @@ +--- +title: "Webinar: Working with ONF to transform mobile and broadband networks in LATAM 2020" +last_modified_at: 2020-10-11T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - onf + - sdn + - webinar +toc: false +--- + +[![](/assets/images/posts/2020-10-01-onf-webinar/0.jpeg)](https://onf.zoom.us/webinar/register/WN_pJWEXMWASSqIPmDyZ9H9AQ) + +Don't miss this virtual event sponsored by the ONF LATAM Ambassador team. In this webinar you will learn about the [Open Networking Foundation (ONF)](https://opennetworking.org/), a non-profit, operator-led consortium that is focused on driving transformation of network infrastructure and carrier business models around the world. The ONF serves as the umbrella for a number of projects building solutions for mobile and broadband operators by leveraging network disaggregation, white box economics and open source software to revolutionize the carrier industry. + +With a robust community of operators, vendors and system integrators, ONF member companies have the opportunity to add their innovations and use cases to solutions that can be inserted into operator PoCs and trials, and be deployed into production networks. + +Join us to learn about the exciting organization, its open source projects and how you can join and participate in the community. + +This webinar will be delivered in Portuguese, Oct 23, 2020 10:00AM BRT. Register [here](https://onf.zoom.us/webinar/register/WN_pJWEXMWASSqIPmDyZ9H9AQ). + +![](/assets/images/posts/2020-10-01-onf-webinar/1.png) \ No newline at end of file diff --git a/_posts/2020-10-12-aws-cert-challenge.md b/_posts/2020-10-12-aws-cert-challenge.md new file mode 100644 index 0000000000..74bc0b77ba --- /dev/null +++ b/_posts/2020-10-12-aws-cert-challenge.md @@ -0,0 +1,18 @@ +--- +title: "AWS Global Certification Challenge" +last_modified_at: 2020-10-12T16:00:58-04:00 +tags: + - aws + - cert + - pt +toc: false +--- + +[![](/assets/images/posts/2020-10-12-aws-cert-challenge.jpg)](https://aws.amazon.com/blogs/training-and-certification/coming-to-twitch-aws-power-hour-cloud-practitioner/) + +A AWS está oferecendo de forma gratuita a **certificação AWS Cloud Practitioner**, que normalmente tem um valor de $200, como parte da iniciativa AWS re:Invent 2020 durante os meses de outubro e novembro de este ano. + +Segue o [link para a solicitação do voucher](https://pages.awscloud.com/AWS_Global_Certification_Challenge_Practice_Exam_Voucher.html), que demora até 3 dias úteis, e o [blog do AWS Training com todas as informações sobre o programa](https://aws.amazon.com/blogs/training-and-certification/coming-to-twitch-aws-power-hour-cloud-practitioner/). + + + diff --git a/_posts/2020-10-25-hcia-14.md b/_posts/2020-10-25-hcia-14.md new file mode 100644 index 0000000000..2bd4b8ac75 --- /dev/null +++ b/_posts/2020-10-25-hcia-14.md @@ -0,0 +1,15 @@ +--- +title: "HCIA-Routing & Switching - 14th edition" +last_modified_at: 2020-11-15T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2020-10-25-hcia-14.jpeg)](https://www.sympla.com.br/treinamento-de-redes--14-edicao__1020859) + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). \ No newline at end of file diff --git a/_posts/2020-10-26-totvs-talks.md b/_posts/2020-10-26-totvs-talks.md new file mode 100644 index 0000000000..7acf7b64ea --- /dev/null +++ b/_posts/2020-10-26-totvs-talks.md @@ -0,0 +1,24 @@ +--- +title: "TOTVS TALKS #09 - A computação em nuvem no Brasil" +last_modified_at: 2020-10-26T16:00:58-04:00 +tags: + - events + - podcast + - pt +toc: false +--- + +[![](/assets/images/posts/2020-10-26-totvs-talks/0.jpeg)](https://bandnewsfm.band.uol.com.br/totvs-talks/) + +O [TOTVS TALKS Podcast](https://bandnewsfm.band.uol.com.br/totvs-talks/) é uma parceria entre a BandNews FM e a TOTVS. Aqui, você ouve conversas sobre tecnologia – ferramentas, soluções e caminhos; cada mês, um novo assunto. Os episódios novos saem sempre no dia 20 e você encontra o programa no site da BandNews FM e no Spotify. + + + +[![](/assets/images/posts/2020-10-26-totvs-talks/1.jpeg)](https://open.spotify.com/episode/3tjjbSBQOjnOj7JNwWiNK6?si=YMFflZtASiOwbFLZQPMx2w) + +[![](/assets/images/posts/2020-10-26-totvs-talks/2.png)](https://open.spotify.com/episode/3tjjbSBQOjnOj7JNwWiNK6?si=YMFflZtASiOwbFLZQPMx2w) + +Neste [nono episódio](https://open.spotify.com/episode/3tjjbSBQOjnOj7JNwWiNK6?si=YMFflZtASiOwbFLZQPMx2w), o podcast de tecnologia para o mundo dos negócios fala sobre o panorama atual da computação em nuvem no Brasil. A digitalização dos negócios continua parte do debate. Não só porque o mercado vem reconhecendo ano após ano a importância da tecnologia para manter as empresas competitivas, mas também porque o cenário imposto pela pandemia do coronavírus exigiu que as empresas se reinventassem apoiadas na tecnologia. E hoje já é praticamente impossível falar de tecnologia sem falar de Cloud Computing, a computação em nuvem. + +Para entender como as soluções atuais têm englobado a tecnologia da nuvem e como a pandemia impactou este mercado, estão na mesa do TOTVS TALKS o diretor de Cloud da TOTVS, Vinicius Mendes, e o doutor em engenharia elétrica, nas áreas de telecomunicações, redes e internet das coisas, José Castillo Lema, consultor de Cloud para América Latina na Red Hat e professor no MBA da FIAP. + diff --git a/_posts/2020-10-31-caio-youtube.md b/_posts/2020-10-31-caio-youtube.md new file mode 100644 index 0000000000..62cf20143b --- /dev/null +++ b/_posts/2020-10-31-caio-youtube.md @@ -0,0 +1,22 @@ +--- +title: "Caio Ferreira - canal de YouTube" +last_modified_at: 2020-10-31T16:00:58-04:00 +tags: + - aws + - networks + - pt + - youtube +toc: false +--- + +[![](/assets/images/posts/2020-10-31-caio-youtube.png)](https://www.youtube.com/channel/UCbDgBA7vpWsB7AwiPPmhfXA/videos) + +Gostaria de recomendar o [canal de YouTube](https://www.youtube.com/channel/UCbDgBA7vpWsB7AwiPPmhfXA/videos) do meu amigo [**Caio Ferreria**](https://www.linkedin.com/in/caiocf/). + +No canal podem encontrar videos sobre: + - AWS + - Fluxos de pagamento + - Restcomm/Mobicents + +Parabéns pelo canal Caio! + diff --git a/_posts/2020-11-09-fiap-asoo.md b/_posts/2020-11-09-fiap-asoo.md new file mode 100644 index 0000000000..1b7c77642a --- /dev/null +++ b/_posts/2020-11-09-fiap-asoo.md @@ -0,0 +1,14 @@ +--- +title: "FIAP MBA em Arquitetura de Soluções - Online (ASOO)" +last_modified_at: 2020-11-09T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/asoo/README.md %} + diff --git a/_posts/2020-11-13-haina-talent.md b/_posts/2020-11-13-haina-talent.md new file mode 100644 index 0000000000..7579547eb7 --- /dev/null +++ b/_posts/2020-11-13-haina-talent.md @@ -0,0 +1,64 @@ +--- +title: "Huawei Talent: Cadastro na plataforma" +last_modified_at: 2020-11-13T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-11-13-haina-talent/logo.jpg)](https://e.huawei.com/en/talent) + +Para acompanhar os cursos [HCIA Routing & Switching](/hcia-14), uma vez aprovado no processo seletivo é necessária a criação de uma conta na plataforma [Huawei Talent Online](https://e.huawei.com/en/talent). + +A plataforma on-line da Huawei ICT Academy fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e aprendizado móvel. + +Os alunos podem adquirir materiais de aprendizagem, concluir tarefas, consultar resultados e interagir com professores e outros aprendizados a qualquer hora e em qualquer lugar. + +# Criação da conta + +1. Acessar o [site da plataforma](https://e.huawei.com/en/talent) + +2. Caso não tiver conta, na plataforma, **registrar** um novo usuário: +![](/assets/images/posts/2020-11-13-haina-talent/0.png) + +3. Preencher as informações requisitadas. O dominio do endereço de mail não é relevante. Um SMS será enviado para confirmar a identidade: +![](/assets/images/posts/2020-11-13-haina-talent/1.png) + +4. Aguardar pelo mail de ativação (normalmente chega em minutos): +![](/assets/images/posts/2020-11-13-haina-talent/2.png) + +# Ativação da conta + +5. Uma vez recebido o mail de ativação, abrir o enlace para ativar o e-mail previamente cadastrado: +![](/assets/images/posts/2020-11-13-haina-talent/3.png) + +6. Fazer login no [site](https://e.huawei.com/en/talent): +![](/assets/images/posts/2020-11-13-haina-talent/4.png) + +# Associação da conta com a instituição + +7. Navegar até o ***User Center*** -> ***My information*** +![](/assets/images/posts/2020-11-13-haina-talent/5.png) + +8. Solicitar a associação da conta com a instituição **Escola Politécnica da USP - USP**: +![](/assets/images/posts/2020-11-13-haina-talent/6.png) +![](/assets/images/posts/2020-11-13-haina-talent/7.png) + +9. Confirmar a solicitação e aguardar pelo mail de aprovação. A aprovação é manual, e não inmediata: +![](/assets/images/posts/2020-11-13-haina-talent/8.png) + +10. Aguardar o mail de aprovação: +![](/assets/images/posts/2020-11-13-haina-talent/9.png) + +# Acesso ao curso + +11. Logar novamente na plataforma e confirmar que o curso é mostrado na aba **My course**: +![](/assets/images/posts/2020-11-13-haina-talent/10.png) + +12. Nos detalhes do curso, confirmar o estado de registro: +![](/assets/images/posts/2020-11-13-haina-talent/11.png) diff --git a/_posts/2020-11-17-shift-aws-foundations-2.md b/_posts/2020-11-17-shift-aws-foundations-2.md new file mode 100644 index 0000000000..b4ba6d6c4e --- /dev/null +++ b/_posts/2020-11-17-shift-aws-foundations-2.md @@ -0,0 +1,44 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 2nd edition" +last_modified_at: 2020-11-17T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-11-17-shift-aws-foundations-2.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **11/01** e **15/02**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2020-12-20-intel-network-builders.md b/_posts/2020-12-20-intel-network-builders.md new file mode 100644 index 0000000000..85e8279998 --- /dev/null +++ b/_posts/2020-12-20-intel-network-builders.md @@ -0,0 +1,78 @@ +--- +title: "Intel Network Builders University" +last_modified_at: 2020-12-20T16:00:58-04:00 +tags: + - en + - networks + - nfv + - openstack + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg)](https://networkbuilders.intel.com/university) + +[Intel® Network Builders University](https://networkbuilders.intel.com/university) is a comprehensive network functions virtualization (NFV) and software defined networking (SDN) training program. The university includes a broad collection of online content training to help technical professionals in the network industry to improve their knowledge of key Intel® technologies, industry trends, and technical aspects of NFV deployments. + +I would like to recomend its courses to everyone who is interested in learning more about OpenStack, 4G, DPDK and Open vSwitch. + +Intel proposes three learning paths: + +![](/assets/images/posts/2020-12-20-intel-network-builders/paths.png) + +# Foundational Learning Pathway +- Software Defined Infrastructure (SDI) – A World Where the Application Defines the System +- Network Transformation +- NFV Technologies +- NFV/SDN Essentials Series – Network Virtualization +- NFV/SDN Essentials Series – Virtualization Concepts +- NFV/SDN Essentials Series – Network Functions Virtualization +- NFV/SDN Essentials Series – Cloud IaaS with OpenStack +- NFV/SDN Essentials Series – Software-Defined Networking +- NFV/SDN Essentials Series – Deployment Use Cases +- The Intel® Xeon® Scalable Processor: Foundations for Communications Service Providers +- Server Ingredients: Virtualization 101 +- Server Ingredients: Virtualization 102 +- Cloud 101 +- Open Source and NFV +- DPDK 101 + +# Intermediate Learning Pathway +- VNF re-architecting +- NFVI Hardware Configurations +- Hyperscan Overview +- Intel ® Xeon ® Scalable Platform Technical Deep Dive +- DPDK 201 +- DPDK Intro +- DPDK Open vSwitch: Accelerating the Path to the Guest +- Intel’s NFV Technologies Management & Orchestration +- Intel® QuickAssist Technology Overview – NDA Content +- Extend Cloud and Data Center Capacity with Intel® QuickAssist Technology +- OpenStack* Enhanced Platform Awareness 101 +- OpenStack* Enhanced Platform Awareness 102 +- Virtual Enterprise Customer Premises Equipment (vE-CPE) Overview +- Gi-LAN Overview +- Virtual IP Multimedia Subsystem (vIMS) Overview + +# Advanced Learning Pathway +- How to Maximize Performance of NFV on Intel® Architecture +- Setting Up DPDK on Different Operating Systems +- Open vSwitch with DPDK Architectural Deep Dive +- VSPERF Deep Dive: Virtual Switch performance in OPNFV +- Using DPDK and OvS to Accelerate Virtual Switching +- Container Orchestration with Kubernetes* +- Integration of OpenDaylight Service Function Chaining and Vector Packet Processing +- Introduction to SDN Controller and VIM Integration – OpenStack* and OpenDaylight* Integration +- NetVirt* Features and Their Use Cases +- Virtual Enterprise Customer Premises Equipment (vE-CPE) Reference Architecture +- Virtual Enterprise Customer Premises Equipment (vE-CPE) Use Cases +- Virtual Enterprise Customer Premises Equipment (vE-CPE) Operations +- Gi-LAN Deep Dive +- vGi-LAN Architecture +- Service Function Chaining +- IP Multimedia Subsystem (IMS) Architecture +- Virtual IP Multimedia Subsystem (vIMS) Architecture +- Virtual IP Multimedia Subsystem (vIMS) Additional Benefits + + diff --git a/_posts/2020-12-22-colab.md b/_posts/2020-12-22-colab.md new file mode 100644 index 0000000000..efbabe5ecc --- /dev/null +++ b/_posts/2020-12-22-colab.md @@ -0,0 +1,30 @@ +--- +title: "Red Hat Co.Lab: Open Source Stories" +last_modified_at: 2020-12-22T16:00:58-04:00 +tags: + - iot + - pt + - redhat +toc: false +comments: true +--- + +[![](/assets/images/posts/2020-12-22-co.lab.jpg)](https://www.redhat.com/pt-br/colab-repo) + +Na Red Hat, acreditamos no potencial da tecnologia para educar, ensinar, evoluir e transformar o mundo. + +Foi com esse propósito que a Red Hat, em parceria com a prefeitura de Boston, junto à organização Sociedad Latina, iniciou o projeto [Co.Lab](https://www.redhat.com/pt-br/colab-repo) com um objetivo: ensinar às crianças e jovens os fundamentos da codificação e a importância da criatividade e da colaboração. + +Agora, o Co.Lab chega ao Brasil! + +O Co.Lab apresenta às crianças e jovens os princípios do código aberto, inspirando-os no seu dia a dia. + +Em uma plataforma digital, você terá acesso a muitos conteúdos referentes à tecnologia *open source*, *workshops* e experimentos para crianças e jovens de todas as idades. + +Com hardware e metodologias abertas, pretendemos ensinar os jovens porque a cultura *open* é a melhor maneira de trabalhar e resolver desafios. Nesta plataforma você encontrará experimentos, palestras e workshops. Frequentemente um novo conteúdo será disponibilizado na plataforma para que você se atualize. + +Convidamos você a explorar o universo das tecnologias abertas e compartilhar muitos aprendizados com seus amigos, filhos e toda a família. + +Essa é a nossa contribuição para um mundo mais conectado, mais aberto e mais inclusivo. + + diff --git a/_posts/2021-01-01-newyear.md b/_posts/2021-01-01-newyear.md new file mode 100644 index 0000000000..6f1e868d98 --- /dev/null +++ b/_posts/2021-01-01-newyear.md @@ -0,0 +1,16 @@ +--- +title: "Happy new year!" +last_modified_at: 2021-01-01T16:00:58-04:00 +tags: + - en + - es + - redhat + - pt +toc: false +--- + +![](/assets/images/posts/2020-12-31-newyear/1.png) + +![](/assets/images/posts/2020-12-31-newyear/2.png) + +![](/assets/images/posts/2020-12-31-newyear/3.png) \ No newline at end of file diff --git a/_posts/2021-01-05-calico.md b/_posts/2021-01-05-calico.md new file mode 100644 index 0000000000..d5afe5acd7 --- /dev/null +++ b/_posts/2021-01-05-calico.md @@ -0,0 +1,47 @@ +--- +title: "Certified Calico Operator" +last_modified_at: 2021-01-05T16:00:58-04:00 +tags: + - cert + - en + - iac + - networks + - nfv + - openshift + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-01-05-calico/1.png)](https://www.projectcalico.org/) + +I would like to strongly recomend the [Certified Calico Operator: Level 1](https://academy.tigera.io/course/certified-calico-operator-level-1/) course for everyone interested in Kubernetes networking. + +This free and self-paced course will arm you with the knowledge you need to understand how Kubernetes networking works, how to configure and manage a Calico network, and how to secure your cluster following today’s best practices, with the confidence you need to run mission critical workloads in production. + + +# What the Course Covers +- Introduction to Kubernetes Networking +- Installing Calico +- Everything you need to know about Network Policy, including: + * Introduction to Network Policy + * Best Practices for Network Policy + * Managing Trust Across Teams + * Network Policy for Hosts and NodePorts +- Everything you need to know about network connectivity, including: + * Pod Connectivity Fundamentals + * Calico’s Next Generation eBPF Dataplane + * Encrypting Data in Transit + * Fun with IP Address Management + * Peering with BGP +- Everything you need to know about Kubernetes Services, including: + * Introduction to Kubernetes Services + * Understanding Kube-Proxy Service Handling + * Understanding Calico Native Service Handling + * Advertising Services + +# Free certification + +At the end of the course, you can earn a certificate by passing a final exam. + +[![](/assets/images/posts/2021-01-05-calico/2.png)](https://courses.academy.tigera.io/certificates/90b9e57cdec7460b8243401246da2e67) diff --git a/_posts/2021-01-09-shift-multicloud-2.md b/_posts/2021-01-09-shift-multicloud-2.md new file mode 100644 index 0000000000..2ed2ecffd0 --- /dev/null +++ b/_posts/2021-01-09-shift-multicloud-2.md @@ -0,0 +1,56 @@ +--- +title: "FIAP SHIFT: Multicloud Architecture - 2nd edition" +last_modified_at: 2021-01-09T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-01-09-shift-multicloud-2.png)](https://www.fiap.com.br/shift/curso/tecnologia/multicloud-architecture-development-solutions-service-online) + +A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. + +Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS). + +## Para quem? +Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Benefício Amazon + +Cada aluno vai receber US$ 50 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso. + +## Shift remoto +Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + * Virtualização + * Modelos de serviço + * Segurança em nuvem / Modelo de responsabilidade compartilhada + * Modelos de implementação + * Multicloud + * Economia e faturamento da nuvem + * Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem + - Módulo 2: Infraestrutura como serviço (IaaS) + * Instanciação de máquinas virtuais + * Autoscaling + * Infraestrutura de armazenamento: block/object/file storage + * Containers + * Orquestração de containers + * Arquitetura de microserviços + - Módulo 3: Plataforma como serviço (PaaS) + * Automação e entrega contínua (CI/CD) + * Pipeline DevOps + * DBaaS SQL/NoSQL + * Function as a Service + * Arquiteturas serverless \ No newline at end of file diff --git a/_posts/2021-02-05-aviatrix.md b/_posts/2021-02-05-aviatrix.md new file mode 100644 index 0000000000..54dcbd0096 --- /dev/null +++ b/_posts/2021-02-05-aviatrix.md @@ -0,0 +1,62 @@ +--- +title: "Aviatrix Certified Engineer - Multicloud" +last_modified_at: 2021-08-16T16:00:58-04:00 +tags: + - aws + - azure + - cert + - en + - iac + - networks + - sdn + - terraform +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-02-05-aviatrix/1.png)](https://aviatrix.com/) + +I would like to strongly recomend the [Aviatrix Certified Engineer - Multi-Cloud Network Associate Course](https://aviatrix.com/ace-multicloud-networking-training/) for anyone interested in public cloud networking (in AWS, Azure, GCP and OCI) and multicloud arquitecture. + +Training and exam are free using code **ACEHOLIDAY** through February 28th. + +**UPDATE 1**: Training and exam are free using code **ACEMULTICLOUD** through September 30th. + + +# What the Course Covers + - Introduction + * Introductory Survey + * About ACE Associate Training + * About Aviatrix + - Public Cloud Networking + * Networking Principles in the Cloud + * AWS Networking 101 + * Azure Networking 101 + * GCP Networking 101 + * OCI Networking 101 + - Multi-Cloud Network Architecture + * What is the MCNA? + - Aviatrix Platform + * Feature Overview - Part 1 + * Feature Overview - Part 2 + - Operations, Visibility, and Troubleshooting + * Day 2 Operations + * CoPilot Demo + * Aviatrix Controller Deployment + - Customer Case Study + * Real Aviatrix Customer Walk-Through - Single Region + * Real Aviatrix Customer Walk-Through - Multi-Region Multi-Cloud + - Conclusion + * Course Feedback Survey + * How to take the Exam + * Scheduling the Exam + +# Free certification + +At the end of the course, you can earn a certificate by scheduling and passing a final exam. + +![](/assets/images/posts/2021-02-05-aviatrix/2.png) + +![](/assets/images/posts/2021-02-05-aviatrix/3.png) + +
\ No newline at end of file diff --git a/_posts/2021-02-09-hcia-5g.md b/_posts/2021-02-09-hcia-5g.md new file mode 100644 index 0000000000..a4b995c30e --- /dev/null +++ b/_posts/2021-02-09-hcia-5g.md @@ -0,0 +1,44 @@ +--- +title: "HCIA 5G - 1st edition" +last_modified_at: 2021-02-09T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - iot + - networks + - nfv + - pt + - sdn +toc: false +--- + +[![](/assets/images/posts/2021-02-09-hcia-5g/1.png)](https://www.imd.ufrn.br/portal/visualizar/252) + +## PROCESSO SELETIVO PARA CURSO DE FORMAÇÃO HCIA 5G - Turma 01/2021 + +Oportunidade ímpar à comunidade: formação GRATUITA para certificação em redes 5G. A Coordenação do projeto [Instituto Metrópole Digital](https://www.imd.ufrn.br/) - [UFRN](https://www.ufrn.br/) – **5G Training RN** abre inscrições para o processo seletivo para participação na primeira turma do curso de formação HCIA 5G, promovido em parceria entre o [IMD](https://www.imd.ufrn.br/) e a [Huawei Technologies Co. LTD](https://www.huawei.com/br/). + +Período do Processo: **09/02/2021 - 01/03/2021** + +Link do edital: [https://www.imd.ufrn.br/portal/visualizar/252](https://www.imd.ufrn.br/portal/visualizar/252) + +## IMD abre 100 vagas para curso online sobre redes celulares 5G + +Assunto amplamente discutido em todo o mundo, as redes celulares de quinta geração (5G) é o tema do mais novo curso de formação do Instituto Metrópole Digital (IMD/UFRN). Fruto de parceria internacional com a gigante tecnológica Huawei, o projeto, intitulado de “5G Training RN”, está com 100 vagas abertas, mais cadastro reserva, para aulas online e gratuitas. + +Com inscrições abertas até o dia 21 deste mês, disponíveis por meio do link, o processo seletivo é aberto a qualquer pessoa, desde que esta tenha cursado, pelo menos, mais de uma disciplina relacionada a redes de computadores ou telecomunicações em cursos técnicos ou de graduação. + +O projeto oferecerá aulas com o intuito de capacitar os alunos para a prova de certificação HCIA 5G da Huawei – exame cuja aprovação qualifica profissionais em diferentes áreas e garante a estes certificados emitidos pela própria multinacional chinesa. + +Para se inscrever no processo, não é necessário estar matriculado em instituição de ensino específica e as vagas, dado o ensino remoto, podem ser preenchidas por candidatos oriundos de qualquer lugar do Brasil. O curso também tem como alvo profissionais da área de redes e telecomunicações e terá duração de dois meses e meio, indo de março até maio deste ano. + +[![](/assets/images/posts/2021-02-09-hcia-5g/3.jpg)](https://www.imd.ufrn.br/portal/visualizar/252) + +## Seleção + +Regido pelo [Edital nº 008/2021](https://imd.ufrn.br/portal/visualizar/252), o processo de seleção consistirá em avaliação de documentação comprobatória. Dentre os quesitos a serem avaliados, encontram-se experiência de atuação profissional, formação acadêmica e certificações diversas em tecnologia. + +O resultado final será divulgado no dia 27 deste mês, por meio do portal do IMD, na aba “Editais”. As matrículas estão previstas para acontecer até o dia 05 de março. + +![](/assets/images/posts/2021-02-09-hcia-5g/2.jpeg) \ No newline at end of file diff --git a/_posts/2021-02-18-azure1-vm.md b/_posts/2021-02-18-azure1-vm.md new file mode 100644 index 0000000000..56c82532b4 --- /dev/null +++ b/_posts/2021-02-18-azure1-vm.md @@ -0,0 +1,23 @@ +--- +title: "Azure series I: Virtual machines" +last_modified_at: 2021-02-18T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#azure) sobre Microsoft Azure. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/devops/lab01-iaas-vm.md %} + + \ No newline at end of file diff --git a/_posts/2021-02-20-azure2-container.md b/_posts/2021-02-20-azure2-container.md new file mode 100644 index 0000000000..5546bf2753 --- /dev/null +++ b/_posts/2021-02-20-azure2-container.md @@ -0,0 +1,23 @@ +--- +title: "Azure series II: Containers" +last_modified_at: 2021-02-20T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#azure) sobre Microsoft Azure. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/devops/lab02-iaas-container.md %} + + \ No newline at end of file diff --git a/_posts/2021-02-22-azure3-disk.md b/_posts/2021-02-22-azure3-disk.md new file mode 100644 index 0000000000..33776162b2 --- /dev/null +++ b/_posts/2021-02-22-azure3-disk.md @@ -0,0 +1,23 @@ +--- +title: "Azure series III: Disks" +last_modified_at: 2021-02-22T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#azure) sobre Microsoft Azure. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/devops/lab03-iaas-disk.md %} + + \ No newline at end of file diff --git a/_posts/2021-02-25-fiap-abd.md b/_posts/2021-02-25-fiap-abd.md new file mode 100644 index 0000000000..1a0bec7cb7 --- /dev/null +++ b/_posts/2021-02-25-fiap-abd.md @@ -0,0 +1,14 @@ +--- +title: "FIAP MBA em Engenharia de Dados (ABD)" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - aws + - azure + - classes + - fiap + - pt +toc: false +--- + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/abd/README.md %} + diff --git a/_posts/2021-02-26-aws13-rds.md b/_posts/2021-02-26-aws13-rds.md new file mode 100644 index 0000000000..f62064f896 --- /dev/null +++ b/_posts/2021-02-26-aws13-rds.md @@ -0,0 +1,23 @@ +--- +title: "AWS series XIII: Relational Database Service (RDS)" +last_modified_at: 2021-02-26T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/abd/dbaas/lab05-paas-rds.md %} + + \ No newline at end of file diff --git a/_posts/2021-03-02-azure4-blob.md b/_posts/2021-03-02-azure4-blob.md new file mode 100644 index 0000000000..f3a7206412 --- /dev/null +++ b/_posts/2021-03-02-azure4-blob.md @@ -0,0 +1,23 @@ +--- +title: "Azure series IV: Blob storage" +last_modified_at: 2021-03-02T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#azure) sobre Microsoft Azure. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/devops/lab04-iaas-blob.md %} + + \ No newline at end of file diff --git a/_posts/2021-03-09-azure5-app.md b/_posts/2021-03-09-azure5-app.md new file mode 100644 index 0000000000..11fa3af13a --- /dev/null +++ b/_posts/2021-03-09-azure5-app.md @@ -0,0 +1,23 @@ +--- +title: "Azure series V: App services" +last_modified_at: 2021-03-09T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#azure) sobre Microsoft Azure. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/devops/lab05-paas-app.md %} + + \ No newline at end of file diff --git a/_posts/2021-03-10-shift-aws-foundations-3.md b/_posts/2021-03-10-shift-aws-foundations-3.md new file mode 100644 index 0000000000..5250c0b0b5 --- /dev/null +++ b/_posts/2021-03-10-shift-aws-foundations-3.md @@ -0,0 +1,47 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 3rd edition" +last_modified_at: 2021-03-10T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-03-10-shift-aws-foundations-3.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **04/05** e **08/06**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2021-03-20-aws6-cloudformation.md b/_posts/2021-03-20-aws6-cloudformation.md new file mode 100644 index 0000000000..af6dbb195e --- /dev/null +++ b/_posts/2021-03-20-aws6-cloudformation.md @@ -0,0 +1,23 @@ +--- +title: "AWS series VI: CloudFormation" +last_modified_at: 2021-03-20T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab14-iaas-cloudformation.md %} + + \ No newline at end of file diff --git a/_posts/2021-03-22-hcia-5g-2.md b/_posts/2021-03-22-hcia-5g-2.md new file mode 100644 index 0000000000..aac8bf4e32 --- /dev/null +++ b/_posts/2021-03-22-hcia-5g-2.md @@ -0,0 +1,30 @@ +--- +title: "HCIA 5G - 2nd edition" +last_modified_at: 2021-03-22T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - iot + - networks + - nfv + - pt + - sdn +toc: false +--- + +[![](/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg)](https://imd.ufrn.br/portal/visualizar/260) + +A Coordenação do projeto **IMD/UFRN – 5G Training RN** abre inscrições para o processo seletivo para participação na segunda turma do curso de formação HCIA 5G, promovido em parceria entre o [IMD](https://www.imd.ufrn.br/) e a [Huawei Technologies Co. LTD](https://www.huawei.com/br/). São 100 vagas disponíveis, gratuito e a distância. + +Venha obter formação gratuita em 5G, a tecnologia que irá revolucionar o mundo, e se posicionar fortemente no mercado a partir da certificação Huawei HCIA. + +Edital de seleção em: [https://lnkd.in/esyWARY](https://lnkd.in/esyWARY) + +![](/assets/images/posts/2021-03-22-hcia-5g-2/1.png) + +As inscrições terão início no dia 23 de março e se estenderão até 12 de abril, podendo ser realizadas através do preenchimento de [formulário online](https://docs.google.com/forms/d/e/1FAIpQLScV2K23q24iJfHiK-wdSkFKxEtPauetcOHeWH_xWyxKDc5YRw/viewform), juntamente com envio dos anexos solicitados no edital. O curso é aberto a qualquer pessoa que tenha conhecimento comprovado em Redes de Comunicação e/ou telecomunicações. Os critérios para tal comprovação são detalhados no [edital do processo seletivo (nº 015/2021)](https://imd.ufrn.br/portal/visualizar/260). + +A seleção consistirá em avaliação de documentação comprobatória. Dentre os quesitos a serem analisados, encontram-se experiência de atuação profissional, formação acadêmica e certificações diversas em tecnologia. O resultado final será divulgado a partir do dia 16 de abril, por meio do portal do IMD, na aba “Editais”. As matrículas estão previstas para acontecer até 23 de abril. + +![](/assets/images/posts/2021-02-09-hcia-5g/2.jpeg) \ No newline at end of file diff --git a/_posts/2021-03-23-azure6-pipeline.md b/_posts/2021-03-23-azure6-pipeline.md new file mode 100644 index 0000000000..74c1871f7e --- /dev/null +++ b/_posts/2021-03-23-azure6-pipeline.md @@ -0,0 +1,23 @@ +--- +title: "Azure series VI: Azure Pipeline" +last_modified_at: 2021-03-23T16:00:58-04:00 +tags: + - azure + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#azure) sobre Microsoft Azure. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/net/devops/lab06-paas-pipeline.md %} + + \ No newline at end of file diff --git a/_posts/2021-03-25-rh-summit21.md b/_posts/2021-03-25-rh-summit21.md new file mode 100644 index 0000000000..f4d6c95b13 --- /dev/null +++ b/_posts/2021-03-25-rh-summit21.md @@ -0,0 +1,15 @@ +--- +title: "Red Hat Summit 2021" +last_modified_at: 2021-03-25T16:00:58-04:00 +tags: + - ansible + - events + - openshift + - pt + - redhat +toc: false +--- + +[![](/assets/images/posts/2021-03-25-rh-summit21.jpeg)](https://red.ht/3vyU5Wv) + +Chegou o **Red Hat Summit 2021**, agora em série. Registre-se agora sem custo e aproveite as oportunidades de inovação, colaboração e aprendizagem que só o principal evento de código aberto do mundo pode oferecer. Inscreva-se já: [https://red.ht/3vyU5Wv](https://red.ht/3vyU5Wv) #RHSummit \ No newline at end of file diff --git a/_posts/2021-03-26-hcia-15.md b/_posts/2021-03-26-hcia-15.md new file mode 100644 index 0000000000..ef325b09e6 --- /dev/null +++ b/_posts/2021-03-26-hcia-15.md @@ -0,0 +1,29 @@ +--- +title: "HCIA-Routing & Switching - 15th edition" +last_modified_at: 2021-03-26T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2021-03-26-hcia-15/1.png)](https://www.sympla.com.br/15-treinamento-em-tecnologia-da-informacao-e-comunicacao---conv-usp---huawei---hcia__1157952) + +Informamos que estão abertas as inscrições do **15.º Treinamento em Tecnologia de Informação e Comunicação** convênio USP e **HUAWEI – HCIA – Routing & Switching V2.5** até o dia 26/11/2020 às 12h, totalmente gratuito e virtual. + +As inscrições podem ser realizadas por este [link](https://www.sympla.com.br/15-treinamento-em-tecnologia-da-informacao-e-comunicacao---conv-usp---huawei---hcia__1157952). + +O curso ocorrerá dos dias 27/03/21 à 17/04/21, das 9h00 as 17h00 sempre aos sábados. + +Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos. + +O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP ([Inova.USP](https://inova.usp.br/)) – Huawei, totalmente na modalidade on-line. + +Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área. + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). + +[![](/assets/images/posts/2021-03-26-hcia-15/2.png)](https://inova.usp.br/) \ No newline at end of file diff --git a/_posts/2021-04-08-azure-fundamentals.md b/_posts/2021-04-08-azure-fundamentals.md new file mode 100644 index 0000000000..f716166e35 --- /dev/null +++ b/_posts/2021-04-08-azure-fundamentals.md @@ -0,0 +1,94 @@ +--- +title: "Microsoft Azure Virtual Training Days" +last_modified_at: 2021-11-26T16:00:58-04:00 +tags: + - azure + - cert + - en +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-04-08-azure-fundamentals/1.png)](https://www.microsoft.com/en-us/trainingdays) + +By participating in any of the following [Microsoft Virtual Training Days](https://www.microsoft.com/en-us/trainingdays): + - Microsoft Azure Virtual Training Day: **Fundamentals** + - Microsoft Azure Virtual Training Day: **Data Fundamentals** + - Microsoft Azure Virtual Training Day: **AI Fundamentals** + +You’ll be eligible to take the following certifications exam at no cost: + - [Microsoft Azure Fundamentals (AZ-900)](https://docs.microsoft.com/en-us/learn/certifications/exams/az-900) + - [Microsoft Azure Data Fundamentals (DP-900)](https://docs.microsoft.com/en-us/learn/certifications/exams/dp-900) + - [Microsoft Azure AI Fundamentals (AI-900)](https://docs.microsoft.com/en-us/learn/certifications/exams/ai-900) + +![](/assets/images/posts/2021-04-08-azure-fundamentals/2.png) + +# Azure Fundamentals + +In this introductory course you will learn about cloud-computing concepts, models, and services, covering topics such as public, private, and hybrid cloud as well as infrastructure as a service, platform as a service, and software as a service. + +## Course Objectives + - Get started with Azure + - Integrate Azure with your existing networks + - Better understand key cloud concepts and core services, including pricing, support, and cloud security + +## Content + - Introduction + - Azure Cloud Concepts + - Core Azure Services + - Azure Solutions and Management Tools + - Azure Security and Network Security + - Identity, governance, privacy and compliance + - Azure Pricing and Lifestyle + - Closing Q&A + +# Data Fundamentals + +Learn the fundamentals of core database concepts in a cloud environment. Join us at Microsoft Azure Virtual Training Day: Data Fundamentals to build your foundational knowledge of cloud data services. Explore relational and non-relational data offerings as well as big data and modern data warehouse analytics solutions in Azure. + +## Course Objectives + - Learn the roles, tasks, and responsibilities involved in managing data in a cloud environment. + - Gain basic skills for working with relational and non-relational cloud data services in Azure, including provisioning and deploying relational and non-relational databases. + - Explore processing options for building data analytics solutions, including Azure Synapse Analytics, Azure Databricks, and Azure HDInsight. + +## Content + - Introduction + - Explore Core Data Concepts + - Explore Relational Data in Azure + - Explore Non-relational Data in Azure + - Explore modern data warehouse analytics in Azure + - Closing Q&A + +# AI Fundamentals + +Discover the solutions it’s possible to create with AI and the Azure services that can help you build those solutions. Join the free Microsoft Azure Virtual Training Day: AI Fundamentals to explore fundamental AI concepts and learn how to get started with AI on Azure. + +## Course Objectives + - Get an overview of basic AI concepts and applications. + - Create no-code predictive models with Azure Machine Learning. + - Learn more about conversational AI, natural language processing, and computer vision in Microsoft Azure. + +## Content + - Introduction + - Introduction to AI + - Machine Learning + - Computer Vision + - Natural Language Processing + - Conversational AI + - Closing Q&A + +# Free certification + +After completing this free trainings you’ll be eligible to take the certifications exam at no cost. + +![](/assets/images/posts/2021-04-08-azure-fundamentals/3.png) + +
+ +![](/assets/images/posts/2021-04-08-azure-fundamentals/4.png) + +
+ +![](/assets/images/posts/2021-04-08-azure-fundamentals/5.png) + +
\ No newline at end of file diff --git a/_posts/2021-04-13-kafka.md b/_posts/2021-04-13-kafka.md new file mode 100644 index 0000000000..097263fda5 --- /dev/null +++ b/_posts/2021-04-13-kafka.md @@ -0,0 +1,87 @@ +--- +title: "Confluent Fundamentals Accreditation - Apache Kafka" +last_modified_at: 2021-04-13T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift + - redhat +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-04-13-kafka/1.png)](https://www.confluent.io/) + +I would like to strongly recomend the [Confluent Fundamentals for Apache Kafka®](https://cloud.contentraven.com/confluent/self-userpackage) course and [Confluent Fundamentals Accreditation](https://cloud.contentraven.com/confluent/self-userpackage) certification for anyone interested learning more about the [Apache Kafka project](https://kafka.apache.org/). + +Training and exam certification are free. + + +# Course Objectives + + - Gain an understanding of Apache Kafka® and the Confluent Platform + - Explore use cases + - Receive an overview of Kafka’s core concepts that enable it to power a highly scalable, highly available and resilient real-time event streaming platform + - Be introduced to the Confluent Platform, offering an enterprise-ready, real-time event streaming platform powered by Apache Kafka® + - Begin preparation to attend Apache Kafka® Administration by Confluent and/or the Confluent Developer Skills for Building Apache Kafka® training courses. + +# Content + + - Motivation and Customer Use Cases + - Motivation for a paradigm change to “Event-driven” + - How Kafka is the backbone of real-time event streaming + - How other major players in the market use Kafka + - Customer Use Cases + - Microservices, IoT and Edge Computing + - Core Banking, payments engine and fraud detection + - Cyber Data Collection and Dissemination + - ESB Replacement + - Data Pipelining + - eCommerce and Customer 360 + - Mainframe offloading + - Apache Kafka® Fundamentals + - Architecture + - ZooKeeper’s role + - Topics, Partitions and Segments + - The commit log and streams + - Brokers and Broker replication + - Producers Basics + - Consumers, Consumer groups and Offsets + - How Kafka Works + - High-level code overview for a basic producer and a basic consumer + - High Availability through Replication + - Data Retention Policies + - Producer Design and Producer Guarantees + - Delivery Guarantees, including Exactly Once Semantic + - Partition strategies + - Consumer group rebalances + - Compacted Topics + - Troubleshooting strategies + - Security overview + - Integrating Kafka into your Environment + - Get streams of data into and out of Kafka with Kafka Connect and REST Proxy + - Maintain data formats and ensure compatibility with Schema Registry and Avro + - Build real-time streaming applications with Confluent ksqlDB & Kafka Streams + - The Confluent Platform + - The Streaming Platform as the Central Nervous System + - Deployment Models — on premise versus SaaS + - The Confluent Control Center + - Role Based Access Control (RBAC) + - The Confluent CLI + - Confluent Operator + - The Confluent Hub for Certified Connectors + +# Free certification + +At the end of the course, you can earn a badge by passing a final exam. + +![](/assets/images/posts/2021-04-13-kafka/2.png) + + \ No newline at end of file diff --git a/_posts/2021-04-17-onf-webinar-21.md b/_posts/2021-04-17-onf-webinar-21.md new file mode 100644 index 0000000000..9fc9b6ff82 --- /dev/null +++ b/_posts/2021-04-17-onf-webinar-21.md @@ -0,0 +1,53 @@ +--- +title: "Webinar: Working with ONF to transform mobile and broadband networks in LATAM 2021" +last_modified_at: 2021-04-17T16:00:58-04:00 +tags: + - en + - es + - events + - networks + - nfv + - onf + - pt + - sdn + - webinar +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-04-17-onf-webinar-21.png)](https://opennetworking.org/events/working-with-onf-to-transform-mobile-and-broadband-networks-in-latam-2/) + +Don’t miss this virtual event sponsored by the ONF CALA Ambassador team. In this webinar you will learn about the [Open Networking Foundation (ONF)](https://opennetworking.org/), a non-profit, operator-led consortium that is focused on driving transformation of network infrastructure and carrier business models around the world. The ONF serves as the umbrella for a number of projects building solutions for mobile and broadband operators by leveraging network disaggregation, white box economics and open source software to revolutionize the carrier industry. + +## Agenda + + - Introduction + - Who is ONF + - ONF CALA Team + - ONF Open Source Project Ecosystem + - [**Stratum**](https://opennetworking.org/stratum/): thin switch implementing next generation SDN interfaces. + - [**Trellis**](https://opennetworking.org/trellis/): multi-purpose leaf-spine fabric supporting distributed access networks, NFV and edge cloud applications. + - [**ODTN**](https://opennetworking.org/odtn/): open and disaggregated source data center interconnect solution. + - [**SEBA**](https://opennetworking.org/seba/): lightweight platform that supports a multitude of virtualized access technologies at the edge of the carrier network, including PON, G.Fast and eventually DOCSIS and more. + - [**SD-RAN**](https://opennetworking.org/sd-ran/): Complementary to the O-RAN architecture, it includes a near-real-time RIC (nRT-RIC) and a set of exemplar xApps for controlling the RAN. + - [**Aether**](https://opennetworking.org/aether/): the first open source 5G Connected Edge platform for enabling enterprise digital transformation. + - Q&As + +Join us to learn about ONF and these open source projects and how you can participate in the community. Note that the information covered in both of these webinars will be the same – one will be in Spanish and the other Portuguese. + +## Sign-up Now for Live Webinar + +May 11, 11:00am (GMT-5) – in Spanish – [REGISTER NOW](https://onf.zoom.us/webinar/register/WN_xpGZAVp4QDGzWK68wiDDtw) + +May 13, 11:00am (GMT-3) – in Portuguese – [REGISTER NOW](https://onf.zoom.us/webinar/register/WN_qndVbNQFTe6BvmScb7LhDg) + +## CALA Ambassador Speakers + + - [Fernando Cerioni](https://opennetworking.org/ambassadors/fernando-cerioni/) + - [Amanda Espindola](https://opennetworking.org/ambassadors/amanda-espindola/) + - [Jose Lema](https://opennetworking.org/ambassadors/jose-castillo-lema/) + - [Andres Madero](https://opennetworking.org/ambassadors/andres-madero/) + - [Rony Pedroso](https://opennetworking.org/ambassadors/rony-a-spada-pedroso/) + - [Ricardo Tombi](https://opennetworking.org/ambassadors/ricardo-tombi/) + - [Freddy Turriaf](https://opennetworking.org/ambassadors/freddy-turriaf/) + diff --git a/_posts/2021-04-23-gitlab.md b/_posts/2021-04-23-gitlab.md new file mode 100644 index 0000000000..7821169890 --- /dev/null +++ b/_posts/2021-04-23-gitlab.md @@ -0,0 +1,54 @@ +--- +title: "GitLab Certified Associate" +last_modified_at: 2021-08-01T16:00:58-04:00 +tags: + - cert + - en + - iac +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-04-23-gitlab.png)](https://gitlab.com/) + +Usually priced at USD $650 it's available for free until April 30, 2021. + +Steps required: + + 1. Create account on the [GitLab Learn platform](https://gitlab.edcast.com/) + 1.1 purple login button + 1.2 purple signup button + 2. Add the [associate test pathway](https://gitlab.edcast.com/pathways/cy-test-pathway-associate-study-exam/) to the basket + 3. In Payment step apply discount code `E6B8A234458AE3D795` + +Once signed up you have one year time for completion. + +More info [here](https://about.gitlab.com/blog/2021/04/20/everyone-can-get-certified/). + +# Course contents + +## Section 1 - Introduction to GitLab + + - GitLab Overview + - GitLab Comparison + - GitLab Components and Navigation + - Demos and Hands On Excercises + +## Section 2 - Self Study using GIT and GitLab + + - Git Basics + - Code Creation in GitLab + - GitLabs CI/CD features + - GitLabs Package and Release Functions + - GitLab Security Scanning + +## Section 3 - Certification Assesments + + - Knowledge Exam + - Hands On Exam + +# Certification + + + +
\ No newline at end of file diff --git a/_posts/2021-04-27-power-fundamentals.md b/_posts/2021-04-27-power-fundamentals.md new file mode 100644 index 0000000000..4084eb204c --- /dev/null +++ b/_posts/2021-04-27-power-fundamentals.md @@ -0,0 +1,44 @@ +--- +title: "Microsoft Power Platform Virtual Training Day" +last_modified_at: 2022-04-14T16:00:58-04:00 +tags: + - azure + - cert + - en +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-04-08-azure-fundamentals/1.png)](https://www.microsoft.com/en-us/trainingdays) + +By participating in the following [Microsoft Virtual Training Days](https://www.microsoft.com/en-us/trainingdays): + - Microsoft Power Platform Virtual Training Day: Fundamentals + +You’ll be eligible to take the following certification exam at no cost: + - [Microsoft Certified: Power Platform Fundamentals (PL-900)](https://docs.microsoft.com/en-us/learn/certifications/exams/pl-900) + + +# Power Platform Fundamentals + +Microsoft Power Platform Virtual Training Day: Fundamentals will cover everything you need to know about building and managing innovative business solutions so your organisation is ready for whatever comes next. You’ll discover how to connect your data to analyse real-time business performance, act on data and insights with custom-built apps, and automate workflows to improve how people work, both remotely and in the office. This training will teach you how to create innovative, future-proof solutions for an evolving business environment. + +## Course Objectives + - Prepare for the Microsoft Power Platform Fundamentals certification exam + - Build and manage innovative business solutions with Power Platform + - Easily connect all your data to analyse business performance with custom-built apps + - Automate workflows to improve daily processes, regardless of your technical expertise + +## Content + - Introduction + - Introduction to Microsoft Power Platform + - Introduction to Microsoft Power Apps and Common Data Services + - Build simple Power Apps + - Leverage Microsoft Power Automate + - Leverage Microsoft Power BI + - Closing Q&A + +# Free certification + +After completing this free training you’ll be eligible to take the certifications exam at no cost. + +
\ No newline at end of file diff --git a/_posts/2021-05-10-hcia-ia-notes.md b/_posts/2021-05-10-hcia-ia-notes.md new file mode 100644 index 0000000000..012b4ad568 --- /dev/null +++ b/_posts/2021-05-10-hcia-ia-notes.md @@ -0,0 +1,40 @@ +--- +title: "Notes for HCIA-IA" +last_modified_at: 2021-05-10T16:00:58-04:00 +tags: + - cert + - en + - huawei +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-05-10-hcia-ia-notes/0.png)](https://e.huawei.com/en/talent/#/cert/product-details?certifiedProductId=345&authenticationLevel=CTYPE_CARE_HCIA&technicalField=PSC&version=3.0) + +Some of the notes I prepared studying for the [Huawei Certified ICT Associate - Artificial Intelligence (HCIA-IA)](https://e.huawei.com/en/talent/#/cert/product-details?certifiedProductId=345&authenticationLevel=CTYPE_CARE_HCIA&technicalField=PSC&version=3.0) exam. + +# Notes + +## Deep learning + +I used the [Coggle platform](https://coggle.it), a collaborative mind maps & flow charts tool. + +![](/assets/images/posts/2021-05-10-hcia-ia-notes/1.png) + +## Huawei Cloud Enterprise Intelligent (EI) Services + +These were made by my studying collegues using [Miro](https://miro.com/), an online visual collaboration platform for teamwork. + +![](/assets/images/posts/2021-05-10-hcia-ia-notes/2.png) + +![](/assets/images/posts/2021-05-10-hcia-ia-notes/3.png) + +## Huawei Open AI (HiAI) Platform for Smart Devices + +![](/assets/images/posts/2021-05-10-hcia-ia-notes/4.png) + +# Certification + +![](/assets/images/posts/2021-05-10-hcia-ia-notes/5.png) + +![](/assets/images/posts/2021-05-10-hcia-ia-notes/6.png) diff --git a/_posts/2021-05-11-shift-multicloud-3.md b/_posts/2021-05-11-shift-multicloud-3.md new file mode 100644 index 0000000000..4e4e9feffe --- /dev/null +++ b/_posts/2021-05-11-shift-multicloud-3.md @@ -0,0 +1,54 @@ +--- +title: "FIAP SHIFT: Multicloud Architecture - 3rd edition" +last_modified_at: 2021-05-11T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-05-11-shift-multicloud-3.png)](https://www.fiap.com.br/shift/curso/tecnologia/multicloud-architecture-development-solutions-service-online) + +A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. + +Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS). + +## Para quem? +Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Benefício Amazon + +Cada aluno vai receber US$ 50 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso. + +## Shift remoto +Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + * Virtualização + * Modelos de serviço + * Segurança em nuvem / Modelo de responsabilidade compartilhada + * Modelos de implementação + * Multicloud + * Economia e faturamento da nuvem + * Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem + - Módulo 2: Infraestrutura como serviço (IaaS) + * Instanciação de máquinas virtuais + * Autoscaling + * Infraestrutura de armazenamento: block/object/file storage + * Containers + * Orquestração de containers + * Arquitetura de microserviços + - Módulo 3: Plataforma como serviço (PaaS) + * Automação e entrega contínua (CI/CD) + * Pipeline DevOps + * DBaaS SQL/NoSQL + * Function as a Service + * Arquiteturas serverless \ No newline at end of file diff --git a/_posts/2021-05-14-hcia-16.md b/_posts/2021-05-14-hcia-16.md new file mode 100644 index 0000000000..da82bfa84f --- /dev/null +++ b/_posts/2021-05-14-hcia-16.md @@ -0,0 +1,27 @@ +--- +title: "HCIA-Routing & Switching - 16th edition" +last_modified_at: 2021-07-09T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2021-05-14-hcia-16.jpeg)](https://www.sympla.com.br/16-treinamento-em-tecnologia-da-informacao-e-comunicacao---conv-usp---huawei---hcia__1215160) + +Informamos que estão abertas as inscrições do **16º Treinamento em Tecnologia de Informação e Comunicação** convênio USP e **HUAWEI – HCIA – Routing & Switching V2.5**, totalmente gratuito e virtual. + +As inscrições podem ser realizadas por este [link](https://www.sympla.com.br/16-treinamento-em-tecnologia-da-informacao-e-comunicacao---conv-usp---huawei---hcia__1215160). + +Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos. + +O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP ([Inova.USP](https://inova.usp.br/)) – Huawei, totalmente na modalidade on-line. + +Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área. + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). + +[![](/assets/images/posts/2021-03-26-hcia-15/2.png)](https://inova.usp.br/) \ No newline at end of file diff --git a/_posts/2021-05-15-aws-community-builder.md b/_posts/2021-05-15-aws-community-builder.md new file mode 100644 index 0000000000..fad2b046c4 --- /dev/null +++ b/_posts/2021-05-15-aws-community-builder.md @@ -0,0 +1,30 @@ +--- +title: "AWS Community Builder" +last_modified_at: 2021-05-15T16:00:58-04:00 +tags: + - aws + - en +toc: true +toc_sticky: true +--- + + +## AWS Community Builders program +[![](/assets/images/posts/2021-05-15-aws-community-builder.png)](https://aws.amazon.com/developer/community/community-builders/) + +I am glad to be part of the [AWS Community Builders program](https://aws.amazon.com/developer/community/community-builders/). The program offers technical resources, mentorship, and networking opportunities to AWS enthusiasts and emerging thought leaders who are passionate about sharing knowledge and connecting with the technical community. + +Throughout the program, subject matter experts will provide mentorship and share insights, including information about the latest services, as well as best practices for creating technical content, increasing reach, and sharing AWS knowledge across online and in-person communities. The program will accept a limited number of members per year. All AWS builders are welcome and encouraged to apply. + +Program members are expected to participate in mentorship opportunities, continue to share or produce educational and technical content, actively engage with and help build the AWS community, and demonstrate continued interest in learning more about AWS. + +The AWS Community Builders Directory can be found [here](https://aws.amazon.com/developer/community/community-builders/community-builders-directory/?cb-cards.sort-by=item.additionalFields.cbName&cb-cards.sort-order=asc&awsf.builder-category=cb-type%23containers&awsf.location=location%23latam&awsf.year=*all). + +## Benefits of joining the program + + - Access to AWS product teams and information about new services and features + - Mentorship from AWS subject matter experts on a variety of topics + - AWS Promotional Credits and other helpful resources to support content creation + - Opportunities to connect with and learn from like-minded developers + + diff --git a/_posts/2021-05-18-gitops-summit-21.md b/_posts/2021-05-18-gitops-summit-21.md new file mode 100644 index 0000000000..54bb497efa --- /dev/null +++ b/_posts/2021-05-18-gitops-summit-21.md @@ -0,0 +1,45 @@ +--- +title: "GitOps Summit 2021" +last_modified_at: 2021-05-18T16:00:58-04:00 +tags: + - en + - events +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-05-18-gitops-summit-21.png)](https://events.linuxfoundation.org/gitops-summit/) + +## Virtual Experience + +**June 22, 2021** + +**#GitOpsSummit** + +Cloud native technologies enable organizations to scale rapidly and deliver software faster than ever before. GitOps, operation by pull request, is a powerful developer workflow that enables organizations to unlock the promise of cloud native continuous delivery. The GitOps Summit brings together topflight talent to give you a greater understanding of GitOps, share insights into the evolving tools landscape and help you figure out the best approach for adopting GitOps. + +Scaling from 2 deployments a day to 200, rapid cluster recovery, complete audit trails – these are some of the benefits shared by teams who adopt a GitOps approach. An emerging paradigm, GitOps teams also need to understand secrets management, scaling challenges and how to tackle adopting best practices. Join us at the GitOps Summit to learn more in this 1-day deep dive. + +The GitOps Summit is hosted by the [Continuous Delivery Foundation (CDF)](https://cd.foundation/) and the [Cloud Native Computing Foundation (CNCF)](https://www.cncf.io/) and will be co-located with [cdCon](https://events.linuxfoundation.org/cdcon/). + +## Agenda + + - Best Practices for Secret Management with GitOps - Kara de la Marck, CloudBees + - Combining Progressive Delivery With GitOps And Continuous Delivery - Viktor Farcic, Codefresh + - GitOps: Yea or Nay? - Ricardo Castro, DefinedCrowd + - Level Unlocked: GitOps to the Edge and Infrastructure Provisioning - Katie Gamanji, The Linux Foundation + - Keynote Panel: Why GitOps? - Tracy Ragan, DeployHub; Dan Garfield, Codefresh; Cornelia Davis, Weaveworks; Moderated by Dan Lorenc, Google + - ReleaseOps: GitOps for the People - Lian Li, Container Solutions + - Managing Storage via GitOps - Christian Hernandez, Red Hat + - The SAME Project: A GitOps Approach to Reproducible Machine Learning with Flux and Kubeflow - David Aronchick, Azure, Microsoft + - Progressive Delivery at Intuit, the Next Chapter in a GitOps Journey. - Henrik Blixt & Jesse Suen, Intuit + - Self Healing GitOps: Continuous, Secure GitOps using Flux, Helm and OPA - Om Moolchandani, Accurics + - Policy-driven Operations: Put the Ops in GitOps - Rosalind Benoit, Themist +4:45pm EDT + - GitOps Summit Happy Hour Sponsored by CNCF + +## Registration + +[Register now](https://www.cvent.com/d/b7qylh/4W?ct=50221cf5-5496-4c34-9ec0-3b52b1bf1204&_ga=2.213519767.2069174923.1621350275-2006967682.1618230804) + +[View the Schedule](https://events.linuxfoundation.org/gitops-summit/program/schedule/) \ No newline at end of file diff --git a/_posts/2021-05-31-fiap-meetup.md b/_posts/2021-05-31-fiap-meetup.md new file mode 100644 index 0000000000..7778b94d14 --- /dev/null +++ b/_posts/2021-05-31-fiap-meetup.md @@ -0,0 +1,61 @@ +--- +title: "FIAP Meetup #9 - Kubernetes & Service Mesh" +last_modified_at: 2021-07-08T16:00:58-04:00 +tags: + - events + - fiap + - iac + - openshift + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-05-31-fiap-meetup/0.png)](https://www.meetup.com/pt-BR/fiapmeetups/events/278576296) + +## Descrição do evento + +De acordo com o Gartner, mais de 85% das organizações executarão aplicativos em contêineres no Kubernetes até 2025. Por isso alguns profissionais definem que o Kubernetes será o “sistema operacional” da nuvem durante a transformação de aplicações para a Arquitetura de Microsserviços. + +Práticas DevOps estão sendo adotadas, porém essa não é apenas uma mudança cultural, pois requer ótimas ferramentas para ser concretizada. Nessa jornada aparecem ferramentas populares de código aberto que apoiam a utilização de uma arquitetura nativa em nuvem. Seu uso permite desde construções de contêineres à orquestração, envolvendo a resiliência de microsserviços e automação de CI / CD. + +Será um encontro técnico e hands-on, ao longo do qual serão discutidos diversos cenários inspirados nos ambientes de startups e grandes empresas. Vamos pensar juntos quais são os principais desafios enfrentados e suas possíveis soluções. + +## Dados de acesso + +**QUANDO** +10 de junho de 2021 + +**HORÁRIO** +18h às 19:30h + +**LOCAL** +On-line via Zoom (dados de acesso no dia do evento) + +Esperamos por você. + +[Inscrição gratuita.](https://www.meetup.com/pt-BR/fiapmeetups/events/278576296) + +FIAP & LuizaLabs & RedHat + +## Material + + - [Slides](https://github.com/tonanuvem/k8s-exemplos/blob/master/TALK_MEETUP_v3.pdf) + - [Gravação](https://zoom.us/rec/share/8vzivOe-MtaDXOOGw3Ohnqa3bEXpw9Jh4TbnyZbL5VM--h7e53ter1qaeqYSJSTq.MLAt8caSC9QICm1q) (senha: `s=2c90K.`) + +## Participantes + +![](/assets/images/posts/2021-05-31-fiap-meetup/1.png) + +**André Pontes Sampaio** + +Mestre em Engenharia de Telecomunicações, MBA em Gerenciamento de Projetos e formado em Ciência da Computação. Mais de 15 anos de experiência no mercado de TI. Experiência profissional como Diretor de Operações e Infraestrutura, além de ter atuado como Líder e Consultor técnico em instituição do Governo do Estado de SP e empresas do setor Financeiro e Telecomunicações. Professor de cursos de MBA da FIAP. + +**Cláudio Eduardo de Oliveira** + +Sr Software Engineer na Luiza Labs. Trabalha com APIs, microservices e aplicativos centrados em nuvem e containers. Com mais de dez anos de experiência em desenvolvimento de software com linguagens Java e outras linguagens para JVM, é palestrante em alguns dos eventos mais importantes no Brasil sobre Arquitetura e Desenvolvimento de Software. Autor do Livro Spring 5.0 By Example, publicado pela editora Packt em Fevereiro de 2018. + +**José Castillo Lema** + +Consultor de infraestrutura cloud na Red Hat, tem trabalhado como arquiteto de plataformas de infraestrutura de nuvem pública e privada, práticas DevOps e temas de automação. Atua em provedores de Cloud e fornecedores de software de infraestrutura e plataforma. É mestre e doutor em engenharia elétrica, nas áreas de redes e telecomunicações. Professor de cursos de MBA da FIAP desde 2016. + diff --git a/_posts/2021-06-03-edx-magma.md b/_posts/2021-06-03-edx-magma.md new file mode 100644 index 0000000000..5d51c61282 --- /dev/null +++ b/_posts/2021-06-03-edx-magma.md @@ -0,0 +1,76 @@ +--- +title: "edX: Introduction to Magma" +last_modified_at: 2021-06-03T16:00:58-04:00 +tags: + - en + - networks + - nfv + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-06-03-edx-magma/1.png)](https://www.magmacore.org/) + +## Introduction to Magma: Cloud Native Wireless Networking + +Learn about the [Magma project](https://www.magmacore.org/), an open source implementation of a mobile network core. Magma supports diverse radio technologies, including LTE, 5G and WiFi, and is particularly relevant for extending network access into remote, sparsely populated areas. + +**DURATION** +10 weeks + +**DEDICATION** +1-2 hours per week + +**COST** +Free (there is the possibility to add a paying certificate for $149) + +**INSTITUTION** +[Linux Foundation](https://linuxfoundation.org/) + + +## About + +Magma leverages open source software and commodity hardware to help operators manage their networks efficiently. It provides a high level of automation, high reliability, and the ability to deliver new network services quickly. It is agnostic to the radio access network technology, supporting any cellular “generation” from 2G to 5G, as well as WiFi and CBRS for unlicensed spectrum. Magma can be federated with existing cellular networks to allow networks to be cost-effectively extended into remote areas. + +This course is designed for technology strategists or decision makers at telcos looking to understand the applicability of Magma to their environment. This course is also aimed at rural ISP operators, systems integrators, and anyone looking to set up a lab environment to experiment with Magma or deploy it in production. + +This course will help you gain an understanding of the overall Magma architecture and how it fits into the bigger picture of cellular network architectures, particularly 4G/LTE and 5G. You will learn to recognize and understand the main functions of a mobile wireless network, understand the key use cases and value proposition of Magma, the overall architecture of Magma at a functional block level, and the functions performed by each of the main Magma components (Access Gateway, Federation Gateway, and Orchestrator). The course will also provide resources to learn more to deploy Magma on standard hardware. + +This course prepares you to fully explore the Magma project. It provides the necessary background to help you determine if Magma is appropriate for your setting, and equips you to start installing and experimenting with the system. + +## Objectives + + - Recognize and understand the main functions of a mobile wireless network + + - Understand the key use cases and value proposition of Magma + + - Describe the overall architecture of Magma at a functional block level + + - Understand the functions performed by each of the following main components: Access Gateway, Federation Gateway, Orchestrator + + - Know how to learn more to deploy Magma on standard hardware + +## Curriculum + + - Ch 1. Introduction to Mobile Cellular Networking + + - Ch 2. Introduction to the Magma Architecture + + - Ch 3. The Orchestrator + + - Ch 4. The Access Gateway (AGW) + + - Ch 5. The Federation Gateway + + - Ch 6. The Network Management System (NMS) + + - Ch 7. Summary + + - Final Exam (verified track only) + +## Registration + +[Register now](https://www.edx.org/es/course/introduction-to-magma-cloud-native-wireless-networking) + +![](/assets/images/posts/2021-06-03-edx-magma/2.png) \ No newline at end of file diff --git a/_posts/2021-06-21-shift-aws-foundations-4.md b/_posts/2021-06-21-shift-aws-foundations-4.md new file mode 100644 index 0000000000..50a0406e25 --- /dev/null +++ b/_posts/2021-06-21-shift-aws-foundations-4.md @@ -0,0 +1,44 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 4rd edition" +last_modified_at: 2021-06-21T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-06-21-shift-aws-foundations-4.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **13/07** e **17/07**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2021-06-22-shift-aws-dev.md b/_posts/2021-06-22-shift-aws-dev.md new file mode 100644 index 0000000000..a72a120e2e --- /dev/null +++ b/_posts/2021-06-22-shift-aws-dev.md @@ -0,0 +1,105 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Developing" +last_modified_at: 2021-06-22T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-06-22-shift-aws-dev.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) + +Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação **[AWS Certified Developer - Associate (DVA-C01)](https://aws.amazon.com/pt/certification/certified-developer-associate/)**. Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos. + +## Para quem? +Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS. + +## Pré-requisito +Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso. + +## SHIFT remoto + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy). Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Benefício FIAP +Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner). + + +## Conteúdo + + - Módulo 1: INTRODUCTION TO DEVELOPING ON AWS + * Recognize the systems development life cycle, and describe how to start to developing on AWS. + * Indicate how to work with AWS SDKs. + * Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools. + * Develop and run a simple program in AWS Cloud9. + - Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) + * Recognize the shared responsibility model. + * Explain how IAM helps secure access to AWS resources. + * Describe IAM user authentication. + * Identify how to authorize an IAM user, group, or role. + - Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 + * Describe how Amazon S3 can be used as a storage solution. + * Identify Amazon S3 features and components. + * Describe two ways to protect data with Amazon S3. + * Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE). + * Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs. +- Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB + * Identify Amazon DynamoDB features. + * Describe Amazon DynamoDB components. + * Explain how Amazon DynamoDB uses partitions. + * Indicate how indexes are used with Amazon DynamoDB. + * Describe how Amazon DynamoDB keeps data consistent. + * Recognize when streaming and global tables are used. + * Explain the backup and restoration process. + * Develop flexible NoSQL solutions with Amazon DynamoDB. +- Módulo 5: CACHING INFORMATION FOR SALABILITY + * Explain when caching is used. + * Describe caching with Amazon CloudFront. + * Describe caching with Amazon ElastiCache Apply caching strategies. +- Módulo 6: INTRODUCTION TO CONTAINERS + * Describe the history, technology, and terminology behind containers. + * Differentiate containers from bare-metal servers and virtual machines. + * Identify the characteristics of a microservices architecture. + * Recognize the drivers for using container-based workloads. + * Host a basic website by using Docker containers. +- Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS + * Recall how message queues works. + * Describe Amazon SQS. + * Send messages to an SQS queue. + * Describe Amazon SNS. + * Explain Amazon SNS concepts. + * Describe Amazon MQ. +- Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA + * Explain serverless computing. + * Describe how AWS Lambda works. + * Recognize AWS Lambda execution models. + * Identify how to use AWS IAM to grant Lambda permissions. + * Indicate the steps to author and configure a Lambda functions. + * Explain how to deploy serverless applications. + * Develop event-driven solutions with AWS Lambda. +- Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY + * Recognize application programming interfaces. + * Describe Amazon API Gateway. + * Indicate the steps for developing RESTful APIs with Amazon API Gateway. +- Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS + * Recognize the dynamics of workflow coordination in distributed applications. + * Describe AWS Step Functions. + * Identify state types. + * Indicate common use cases for AWS Step Functions. + * Recall AWS Step Functions APIs. +- Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS + * Identity how to secure applications. + * Describe how to manage your application’s secrets. + * Recall how to authenticate with AWS Security Token Service. + * Describe how Amazon Cognito is used to build secure applications. +- Módulo 12: DEPLOYING APPLICATIONS ON AWS + * Describe DevOps + * Recognize AWS code services for CI/CD + * Summarize deployment strategies + * Describe how AWS Elastic Beanstalk is used to deploy applications + * Describe how AWS CloudFormation is used to deploy applications + * Describe how AWS SAM is used to deploy serverless applications. \ No newline at end of file diff --git a/_posts/2021-06-28-cognitive-class.md b/_posts/2021-06-28-cognitive-class.md new file mode 100644 index 0000000000..bcd6f72474 --- /dev/null +++ b/_posts/2021-06-28-cognitive-class.md @@ -0,0 +1,96 @@ +--- +title: "Cognitive Class @ai" +last_modified_at: 2022-05-06T16:00:58-04:00 +tags: + - cert + - en + - iot + - networks + - openshift +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-06-28-cognitive-class.png)](https://cognitiveclass.ai/) + +[Cognitive Class @ai](https://cognitiveclass.ai/) is a platform for learning leading-edge technologies: blockchain, data science, AI, Cloud, Serverless, Docker, Kubernetes and more ... + + - Earn certificates and badges + - Free + +# Learning paths +- Big data fundamentals +- Data science fundamentals +- Scala programming for data science +- Deep learning +- Hadoop fundamentals +- Spark fundamentals +- Containers, k8s and Istio on IBM Cloud +- Reactive architecture foundations +- Lightbend reactive architecture: advanced +- Data science with Python +- Blockchain for developers + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
\ No newline at end of file diff --git a/_posts/2021-07-04-frr-k8s.md b/_posts/2021-07-04-frr-k8s.md new file mode 100644 index 0000000000..559780c57f --- /dev/null +++ b/_posts/2021-07-04-frr-k8s.md @@ -0,0 +1,214 @@ +--- +title: "Running FRR in K8s/OpenShift" +last_modified_at: 2021-07-04T16:00:58-04:00 +tags: + - en + - networks + - openshift + - redhat +toc: true +toc_sticky: true +--- + +[FRR](http://docs.frrouting.org/en/stable-7.5/) is a fully featured, high performance, free software IP routing suite [included in RHEL 8](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/setting-your-routing-protocols_configuring-and-managing-networking). + +We will be using [this FRR image](https://quay.io/repository/fpaoline/ovnkbfdtest) for establishing Bidirectional Forwarding Detection (BFD) sessions. + +First, let's define the proper config map: +```yaml +apiVersion: v1 +data: + daemons: | + bgpd=no + ospfd=no + ospf6d=no + ripd=no + ripngd=no + isisd=no + pimd=no + ldpd=no + nhrpd=no + eigrpd=no + babeld=no + sharpd=no + pbrd=no + bfdd=yes + fabricd=no + vrrpd=no + vtysh_enable=yes + zebra_options=" -A 127.0.0.1 -s 90000000" + bgpd_options=" -A 127.0.0.1" + ospfd_options=" -A 127.0.0.1" + ospf6d_options=" -A ::1" + ripd_options=" -A 127.0.0.1" + ripngd_options=" -A ::1" + isisd_options=" -A 127.0.0.1" + pimd_options=" -A 127.0.0.1" + ldpd_options=" -A 127.0.0.1" + nhrpd_options=" -A 127.0.0.1" + eigrpd_options=" -A 127.0.0.1" + babeld_options=" -A 127.0.0.1" + sharpd_options=" -A 127.0.0.1" + pbrd_options=" -A 127.0.0.1" + staticd_options="-A 127.0.0.1" + bfdd_options=" -A 127.0.0.1" + fabricd_options="-A 127.0.0.1" + vrrpd_options=" -A 127.0.0.1" + frr.conf: | + password zebra + enable password zebra + bfd + peer 192.168.216.14 interface net1 + no shutdown + debug bfd network + debug bfd peer + debug bfd zebra + ! + ! + bfd + peer 192.168.216.15 interface net1 + no shutdown + debug bfd network + debug bfd peer + debug bfd zebra + ! + ! + log file /var/log/frr/frr.log debugging +kind: ConfigMap +metadata: + name: frr +``` + +Peer entries must point to the peer(s) BFD endpoint(s) (we assume they are already configured). I am using `net1` as the pod will be created with two interfaces (the second one for establishing the L2 BFD connection). + +Now let's define the pod: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: frr-bfd + annotations: + k8s.v1.cni.cncf.io/networks: '[{ "name": "sriov-net", "ips": [ "192.168.216.50/24" ]}]' +spec: + containers: + - name: bfd + image: quay.io/fpaoline/ovnkbfdtest:0.2 + command: ["/bin/sh","-c"] + args: ["/usr/lib/frr/frrinit.sh start && tail -f /var/log/frr/frr.log"] + ports: + - containerPort: 3784 + protocol: UDP + securityContext: + privileged: true + volumeMounts: + - name: config-volume + mountPath: /etc/frr + volumes: + - name: config-volume + configMap: + name: frr +``` + +Once the pod gets created, let's take a look to the logs: + +``` +$ oc logs frr-bfd +Started watchfrr +2021/07/04 21:14:17 ZEBRA: client 15 says hello and bids fair to announce only static routes vrf=0 +2021/07/04 21:14:17 ZEBRA: client 32 says hello and bids fair to announce only bfd routes vrf=0 +2021/07/04 21:14:18 BFD: zclient: add local address fe80::b0c5:acff:fe58:4c29/64 +2021/07/04 21:14:19 BFD: peer 192.168.216.15 found, but loc-addr 192.168.217.1 ignored +2021/07/04 21:14:20 BFD: state-change: [mhop:no peer:192.168.216.15 local:0.0.0.0 vrf:default ifname:net1] init -> up +``` + +From the last line, we can see the BFD session was properly established. Let's do some tshooting from inside the container: + +``` +$ oc rsh frr-bfd +sh-5.0# sudo yum install -y telnet +sh-5.0# telnet localhost 2617 +Trying ::1... +telnet: connect to address ::1: Connection refused +Trying 127.0.0.1... +Connected to localhost. +Escape character is '^]'. + +Hello, this is FRRouting (version 7.5). +Copyright 1996-2005 Kunihiro Ishiguro, et al. + +User Access Verification +Password: zebra + +frr-bfd> enable +Password: zebra + +frr-bfd# show bfd peers +BFD Peers: + peer 192.168.216.14 vrf default interface net1 + ID: 3380487267 + Remote ID: 0 + Active mode + Status: down + Downtime: 31 minute(s), 53 second(s) + Diagnostics: ok + Remote diagnostics: ok + Peer Type: configured + Local timers: + Detect-multiplier: 3 + Receive interval: 300ms + Transmission interval: 300ms + Echo transmission interval: 50ms + Remote timers: + Detect-multiplier: 3 + Receive interval: 1000ms + Transmission interval: 1000ms + Echo transmission interval: 0ms + + peer 192.168.216.15 vrf default interface net1 + ID: 1945828781 + Remote ID: 3129413095 + Active mode + Status: up + Uptime: 31 minute(s), 50 second(s) + Diagnostics: ok + Remote diagnostics: ok + Peer Type: configured + Local timers: + Detect-multiplier: 3 + Receive interval: 300ms + Transmission interval: 300ms + Echo transmission interval: 50ms + Remote timers: + Detect-multiplier: 5 + Receive interval: 1000ms + Transmission interval: 1000ms + Echo transmission interval: 0ms + +frr-bfd# show bfd peers brief +Session count: 2 +SessionId LocalAddress PeerAddress Status +========= ============ =========== ====== +3380487267 unknown 192.168.216.14 down +1945828781 192.168.216.50 192.168.216.15 up + +frr-bfd# show bfd peers counters +BFD Peers: + peer 192.168.216.14 vrf default interface net1 + Control packet input: 0 packets + Control packet output: 2232 packets + Echo packet input: 0 packets + Echo packet output: 0 packets + Session up events: 0 + Session down events: 0 + Zebra notifications: 0 + + peer 192.168.216.15 vrf default interface net1 + Control packet input: 2229 packets + Control packet output: 2234 packets + Echo packet input: 0 packets + Echo packet output: 0 packets + Session up events: 1 + Session down events: 0 + Zebra notifications: 1 +``` \ No newline at end of file diff --git a/_posts/2021-07-25-aws-educate-login.md b/_posts/2021-07-25-aws-educate-login.md new file mode 100644 index 0000000000..a85cc4d4b6 --- /dev/null +++ b/_posts/2021-07-25-aws-educate-login.md @@ -0,0 +1,69 @@ +--- +title: "AWS Educate: Cadastro na plataforma" +last_modified_at: 2021-07-25T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2019-04-30-aws-educate/0.png)](https://aws.amazon.com/pt/education/awseducate/) + +Para acompanhar alguns cursos da FIAP, uma vez aprovado no processo seletivo é necessária a criação de uma conta na plataforma [AWS Educate](/aws-educate). + +A plataforma on-line do AWS Educate fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e acesso ao **console AWS com 50$ de créditos** e labs online. + +O passo mais critico é o **2**. É fundamental preencher uma data de término de graduação futura, **caso contrario a AWS entende que o curso já concluiu e a aplicação será reprovada**. + + +# Cadastro na plataforma + +1. O instrutor envia o convite do curso: +![](/assets/images/posts/2021-07-25-aws-educate-login/01.png) + +2. No cadastro, **colocar uma data de término de graduação futura** (caso contrário, a aplicação será reprovada): +![](/assets/images/posts/2021-07-25-aws-educate-login/02.png) + +3. Aceitar os termos do programa: +![](/assets/images/posts/2021-07-25-aws-educate-login/03.png) + +# Confirmação do email + +4. Concluir o cadastro e aguardar pelo email de verificação de email: +![](/assets/images/posts/2021-07-25-aws-educate-login/04.png) + +5. Verificar o endereço de email no seguinte link e aguardar pela aprovação da conta: +![](/assets/images/posts/2021-07-25-aws-educate-login/05.png) +![](/assets/images/posts/2021-07-25-aws-educate-login/06.png) + +# Ativação da conta + +6. A aprovação da conta será notificada por email: +![](/assets/images/posts/2021-07-25-aws-educate-login/07.png) + +7. Criar uma senha para o seu usuário: +![](/assets/images/posts/2021-07-25-aws-educate-login/08.png) + +# Acesso a plataforma + +8. Após a definição da senha, acessar o portal da plataforma: +![](/assets/images/posts/2021-07-25-aws-educate-login/09.png) + +# Acesso ao console AWS + +9. Navegar ate *My Classrooms*: +![](/assets/images/posts/2021-07-25-aws-educate-login/10.png) + +10. Aceitar os termos de uso dos laboratórios e da plataforma [Vocareum](https://www.vocareum.com/): +![](/assets/images/posts/2021-07-25-aws-educate-login/11.png) +![](/assets/images/posts/2021-07-25-aws-educate-login/12.png) + +11. Conferir os créditos restantes e acessar o console AWS: +![](/assets/images/posts/2021-07-25-aws-educate-login/13.png) + +12. Console da AWS: +![](/assets/images/posts/2021-07-25-aws-educate-login/14.png) + diff --git a/_posts/2021-08-18-hcia-17.md b/_posts/2021-08-18-hcia-17.md new file mode 100644 index 0000000000..3e63fa857f --- /dev/null +++ b/_posts/2021-08-18-hcia-17.md @@ -0,0 +1,28 @@ +--- +title: "HCIA-Routing & Switching - 17th edition" +last_modified_at: 2021-08-18T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +toc_sticky: true +--- + +[![](/assets/images/posts/2021-08-18-hcia-17.jpeg)](https://www.sympla.com.br/treinamento-de-redes---17-edicao__1313536) + +Informamos que estão abertas as inscrições do **17º Treinamento em Tecnologia de Informação e Comunicação** convênio USP e **HUAWEI – HCIA – Routing & Switching V2.5**, totalmente gratuito e virtual. + +As inscrições podem ser realizadas por este [link](https://www.sympla.com.br/treinamento-de-redes---17-edicao__1313536). + +Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos. + +O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP ([Inova.USP](https://inova.usp.br/)) – Huawei, totalmente na modalidade on-line. + +Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área. + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). + +[![](/assets/images/posts/2021-03-26-hcia-15/2.png)](https://inova.usp.br/) \ No newline at end of file diff --git a/_posts/2021-08-30-shift-aws-foundations-5.md b/_posts/2021-08-30-shift-aws-foundations-5.md new file mode 100644 index 0000000000..cd8a6260cb --- /dev/null +++ b/_posts/2021-08-30-shift-aws-foundations-5.md @@ -0,0 +1,47 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 5th edition" +last_modified_at: 2021-08-30T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-08-30-shift-aws-foundations-5.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **21/09** e **26/10**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2021-09-03-lf-courses.md b/_posts/2021-09-03-lf-courses.md new file mode 100644 index 0000000000..e9faf2515b --- /dev/null +++ b/_posts/2021-09-03-lf-courses.md @@ -0,0 +1,44 @@ +--- +title: "Linux Foundation Training & Certification courses" +last_modified_at: 2022-05-19T16:00:58-04:00 +tags: + - cert + - en +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-09-03-lf-courses.png)](https://training.linuxfoundation.org/) + +[Linux Foundation Training & Certification](https://training.linuxfoundation.org/) provides free online-learning courses on a range of open source topics from Linux to blockchain, networking to cloud, and everything in between. + + - Earn certificates and badges + - Free + +# Learning path + +1. Inclusive Speaker Orientation (LFC101) +2. Inclusive Open Source Community Orientation (LFC102) +3. A Beginner’s Guide to Open Source Software Development (LFD102) +4. Secure Software Development: Requirements, Design, and Reuse (LFD104x) +5. Secure Software Development: Implementation (LFD105x) +6. Secure Software Development: Verification and More Specialized Topics (LFD106x) +7. Open Source Licensing Basics for Software Developers (LFC191) +8. Generating a Software Bill of Materials (LFC192) +9. Fundamentals of Professional Open Source Management (LFC110) +10. Open Source Management & Strategy +11. Introduction to GitOps (LFS169) + +
+ +
+ +
+ +
+ +
+ +
+ +
\ No newline at end of file diff --git a/_posts/2021-09-15-perfcon21.md b/_posts/2021-09-15-perfcon21.md new file mode 100644 index 0000000000..ed58be6fc5 --- /dev/null +++ b/_posts/2021-09-15-perfcon21.md @@ -0,0 +1,35 @@ +--- +title: "PerfConf Fall 2021" +last_modified_at: 2021-09-15T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - openshift + - redhat + - sdn +toc: yes +toc_sticky: true +--- + +## [Proceedings](https://perfconfall2021.sched.com/) + +[**ICNI2 OVN Telco 5G perf/scale**](https://perfconfall2021.sched.com/event/nBpH/icni2-ovn-telco-5g-perfscale) + +There has been an effort in the past months to test OVN Intelligent Container Network Interface 2 (ICNI2) implementations at scale. As part of the testing, [FRRouting](http://docs.frrouting.org/en/stable-8.0/) was used to simulate comercial load balancers and to establish BFD sessions with OVN. The ideia is to show how this was achieved and some control/data plane results of the experiments. + +Monday September 20, 2021 2:15pm - 3:00pm GMT-03 + +Track 1: Telco, Networking, System Performance and Tuning + +Google Meet ID: [https://meet.google.com/vgv-dnoo-yne](https://meet.google.com/vgv-dnoo-yne) + +## Moderators + - [Jaison/Ashish](https://perfconfall2021.sched.com/moderator/jaisonashish.7huo2c3) + +## Speakers + - [Jose Castillo Lema](https://perfconfall2021.sched.com/speaker/jlema) - Software Engineer at **Red Hat** + - [Murali Krishnasamy](https://perfconfall2021.sched.com/speaker/murali_krishna.22ykq7wp) - Software Engineer at **Red Hat** + + diff --git a/_posts/2021-09-16-soloio-istio.md b/_posts/2021-09-16-soloio-istio.md new file mode 100644 index 0000000000..dfcf49f6c8 --- /dev/null +++ b/_posts/2021-09-16-soloio-istio.md @@ -0,0 +1,32 @@ +--- +title: "Essentials for Istio by Solo.io" +last_modified_at: 2021-09-16T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-09-16-soloio-istio.png)](https://www.solo.io/) + +# Get certified + +Istio is the most popular service mesh deployed into production across the cloud-native ecosystem, and for good reason. It’s feature rich, open-source, and most importantly, battle proven. Istio provides the foundational pieces to implement zero-trust networking, get deeper observability into a distributed system, and smart routing control for safer software releases. + +This certification is for those looking to learn more about how Istio works and how to operationalize it for their organization. You will learn the basics of routing, observability, and security, and then expand into leveraging Istio for a devops/gitops CI/CD flow, zero-downtime upgrades of Istio control plane, plugging in with existing PKI, and running Istio on VMs and across multiple clusters. + +The [Essentials for Istio certification](https://www.solo.io/blog/get-certified-on-the-essentials-for-istio/) is based on a hands-on, instructor-led workshop focused on how to deploy Istio into production. You will have access to your own Linux virtual machine with a Kubernetes cluster and Istio to complete the exercises. + +This credential, offered for free by Solo.io with [Credly](https://www.credly.com/), certifies that you possess the essential skills to deploy, configure, debug, secure, and operationalize Istio for your organization. + +# Earning criteria + + - You must complete the live Deploy Istio for Production workshop. Sign up [here](https://www.solo.io/blog/get-certified-on-the-essentials-for-istio/#:~:text=for%20Production%20workshop.-,Sign%20up%20now!%C2%A0,-You%20must%20complete) + - You must complete and score 80% or higher on an assessment upon completion of the workshop. + +# Certification + +
\ No newline at end of file diff --git a/_posts/2021-10-02-shift-aws-dev-2.md b/_posts/2021-10-02-shift-aws-dev-2.md new file mode 100644 index 0000000000..3297dc3a7b --- /dev/null +++ b/_posts/2021-10-02-shift-aws-dev-2.md @@ -0,0 +1,105 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Developing - 2nd edition" +last_modified_at: 2021-10-02T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-10-02-shift-aws-dev-2.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) + +Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação **[AWS Certified Developer - Associate (DVA-C01)](https://aws.amazon.com/pt/certification/certified-developer-associate/)**. Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos. + +## Para quem? +Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS. + +## Pré-requisito +Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso. + +## SHIFT remoto + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy). Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Benefício FIAP +Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner). + + +## Conteúdo + + - Módulo 1: INTRODUCTION TO DEVELOPING ON AWS + * Recognize the systems development life cycle, and describe how to start to developing on AWS. + * Indicate how to work with AWS SDKs. + * Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools. + * Develop and run a simple program in AWS Cloud9. + - Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) + * Recognize the shared responsibility model. + * Explain how IAM helps secure access to AWS resources. + * Describe IAM user authentication. + * Identify how to authorize an IAM user, group, or role. + - Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 + * Describe how Amazon S3 can be used as a storage solution. + * Identify Amazon S3 features and components. + * Describe two ways to protect data with Amazon S3. + * Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE). + * Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs. +- Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB + * Identify Amazon DynamoDB features. + * Describe Amazon DynamoDB components. + * Explain how Amazon DynamoDB uses partitions. + * Indicate how indexes are used with Amazon DynamoDB. + * Describe how Amazon DynamoDB keeps data consistent. + * Recognize when streaming and global tables are used. + * Explain the backup and restoration process. + * Develop flexible NoSQL solutions with Amazon DynamoDB. +- Módulo 5: CACHING INFORMATION FOR SALABILITY + * Explain when caching is used. + * Describe caching with Amazon CloudFront. + * Describe caching with Amazon ElastiCache Apply caching strategies. +- Módulo 6: INTRODUCTION TO CONTAINERS + * Describe the history, technology, and terminology behind containers. + * Differentiate containers from bare-metal servers and virtual machines. + * Identify the characteristics of a microservices architecture. + * Recognize the drivers for using container-based workloads. + * Host a basic website by using Docker containers. +- Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS + * Recall how message queues works. + * Describe Amazon SQS. + * Send messages to an SQS queue. + * Describe Amazon SNS. + * Explain Amazon SNS concepts. + * Describe Amazon MQ. +- Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA + * Explain serverless computing. + * Describe how AWS Lambda works. + * Recognize AWS Lambda execution models. + * Identify how to use AWS IAM to grant Lambda permissions. + * Indicate the steps to author and configure a Lambda functions. + * Explain how to deploy serverless applications. + * Develop event-driven solutions with AWS Lambda. +- Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY + * Recognize application programming interfaces. + * Describe Amazon API Gateway. + * Indicate the steps for developing RESTful APIs with Amazon API Gateway. +- Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS + * Recognize the dynamics of workflow coordination in distributed applications. + * Describe AWS Step Functions. + * Identify state types. + * Indicate common use cases for AWS Step Functions. + * Recall AWS Step Functions APIs. +- Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS + * Identity how to secure applications. + * Describe how to manage your application’s secrets. + * Recall how to authenticate with AWS Security Token Service. + * Describe how Amazon Cognito is used to build secure applications. +- Módulo 12: DEPLOYING APPLICATIONS ON AWS + * Describe DevOps + * Recognize AWS code services for CI/CD + * Summarize deployment strategies + * Describe how AWS Elastic Beanstalk is used to deploy applications + * Describe how AWS CloudFormation is used to deploy applications + * Describe how AWS SAM is used to deploy serverless applications. \ No newline at end of file diff --git a/_posts/2021-10-12-tendencias-tic.md b/_posts/2021-10-12-tendencias-tic.md new file mode 100644 index 0000000000..206f2f8922 --- /dev/null +++ b/_posts/2021-10-12-tendencias-tic.md @@ -0,0 +1,15 @@ +--- +title: "Tendências de mercado na área de TIC" +last_modified_at: 2021-10-12T16:00:58-04:00 +tags: + - cert + - classes + - events + - huawei + - pt + - webinar +toc: false +--- + +[![](/assets/images/posts/2021-10-12-tendencias-tic.png)](https://meet.google.com/rpj-krxj-oeq) + diff --git a/_posts/2021-10-14-seminf21.md b/_posts/2021-10-14-seminf21.md new file mode 100644 index 0000000000..b2d1e78a7d --- /dev/null +++ b/_posts/2021-10-14-seminf21.md @@ -0,0 +1,57 @@ +--- +title: "SEMINF 2021: 5G e os impactos na atuação do profisional de TI" +last_modified_at: 2021-10-14T16:00:58-04:00 +tags: + - events + - networks + - pt + - webinar +toc: true +toc_sticky: true +--- + +# II SEMANA ACADÊMICA DE INFORMÁTICA - SEMINF 2021 + +## 5G E OS IMPACTOS NA ATUAÇÃO DO PROFISSIONAL DE TI + +[![](/assets/images/posts/2021-10-14-seminf21/0.png)](https://seminf.github.io/seminf2021/) + +A [II Semana Acadêmica de Informática - SEMINF 2021](https://seminf.github.io/seminf2021/) acontecerá nos dias 18 de outubro a 22 de outubro de 2021, na modalidade virtual, tendo como tema: 5G e os Impactos na Atuação do Profissional de TI. + +Organizada pela Coordenações dos cursos de informática do IFTO Campus Palmas, com participação de professores e acadêmicos, o evento possui na sua programação, palestras, minicursos, mesas-redondas, desafio de programação e gincana de jogos eletrônicos. + +A semana acadêmica é um evento que possibilita a integração entre pessoas. A troca de informações promovidas pelo evento através da participação de profissionais técnicos, docentes e discentes da área de informática, favorecem de forma significativa a formação do futuro profissional de informática. Acredita-se que por meio de várias perspectivas adquiridas pela experiências dos participantes, é possível que haja um enriquecimento complementar na formação escolar do discente da área de informática. + +**Objetivo Geral** + +O principal objetivo da semana acadêmica é proporcionar um ambiente de aprendizado complementar contribuindo na formação dos discentes. + +**Objetivos Específicos** + + - Promover a integração entre os discentes; + - Possibilitar a reciclagem e adição de novos conhecimentos; + - Disseminar os cursos de informática oferecidos pelo IFTO campus Palmas. + +## PROGRAMAÇÃO + +Teremos uma semana totalmente dedicada ao evento, com programação nos três turnos. + + - Oferta de palestras com temas atuais e relevantes; + - Uso de mesa-redonda para promoção de debates; + - Oferta de minicursos visando o complemento/atualização de currículo; + - Desafios de programação e momentos de jogos promovendo a integração escolar. + + +![](/assets/images/posts/2021-10-14-seminf21/1.jpeg) + +## INSCRIÇÕES + +Período de inscrições: 13/10/2021 a 17/10/2021. + +Faça sua inscrição [AQUI](https://si.ifto.edu.br/evento/inscricao/1092/). + +## CERTIFICADO + +Os certificados estarão disponíveis a partir do dia 26/10/2021 [AQUI](https://si.ifto.edu.br/evento/certificados/). + +![](/assets/images/posts/2021-10-14-seminf21/2.png) diff --git a/_posts/2021-10-23-shift-multicloud-4.md b/_posts/2021-10-23-shift-multicloud-4.md new file mode 100644 index 0000000000..66022870e2 --- /dev/null +++ b/_posts/2021-10-23-shift-multicloud-4.md @@ -0,0 +1,56 @@ +--- +title: "FIAP SHIFT: Multicloud Architecture - 4th edition" +last_modified_at: 2021-10-23T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-10-23-shift-multicloud-4.png)](https://www.fiap.com.br/shift/curso/tecnologia/multicloud-architecture-development-solutions-service-online) + +A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. + +Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS). + +## Para quem? +Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Benefício Amazon + +Cada aluno vai receber US$ 100 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso. + +## Shift remoto +Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + * Virtualização + * Modelos de serviço + * Segurança em nuvem / Modelo de responsabilidade compartilhada + * Modelos de implementação + * Multicloud + * Economia e faturamento da nuvem + * Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem + - Módulo 2: Infraestrutura como serviço (IaaS) + * Instanciação de máquinas virtuais + * Autoscaling + * Infraestrutura de armazenamento: block/object/file storage + * Containers + * Orquestração de containers + * Arquitetura de microserviços + - Módulo 3: Plataforma como serviço (PaaS) + * Automação e entrega contínua (CI/CD) + * Pipeline DevOps + * DBaaS SQL/NoSQL + * Function as a Service + * Arquiteturas serverless \ No newline at end of file diff --git a/_posts/2021-11-03-aws-community-day-21.md b/_posts/2021-11-03-aws-community-day-21.md new file mode 100644 index 0000000000..fa626a64a0 --- /dev/null +++ b/_posts/2021-11-03-aws-community-day-21.md @@ -0,0 +1,20 @@ +--- +title: "AWS Community Day Brasil 2021" +last_modified_at: 2021-11-03T16:00:58-04:00 +tags: + - aws + - events + - pt + - webinar +toc: false +--- + + + +Contagem regressiva para o **AWS Community Day Brasil 2021**, o maior encontro de grupos de usuários AWS do Brasil! + +06/11/2021 às 13hs! + +As inscrições ainda podem ser feitas [aquí](https://lnkd.in/dPWdTJHy). diff --git a/_posts/2021-11-04-microsoft-ignite.md b/_posts/2021-11-04-microsoft-ignite.md new file mode 100644 index 0000000000..3802a53ba5 --- /dev/null +++ b/_posts/2021-11-04-microsoft-ignite.md @@ -0,0 +1,61 @@ +--- +title: "Microsoft Ignite Cloud Skills Challenge" +last_modified_at: 2022-03-17T16:00:58-04:00 +tags: + - azure + - cert + - en + - events +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-11-04-microsoft-ignite/0.png)](https://csc.docs.microsoft.com/ignite/registration/fall2021) + +Complete one challenge and earn a free Microsoft Certification exam. + +Select one challenge that’s right for you – there are 12 challenges to choose from. Once you complete that challenge you will earn a free Microsoft Certification exam which will get delivered on December 7th, 2021. + +The challenge ends on November 30, 2021 at 4:00 PM (16:00) UTC. Make sure all modules in your challenge are complete before time runs out. + +## Challenges + + - Teams Admin Challenge + - Teams Voice Engineer Challenge + - Desktop and Device Management Challenge + - Dynamics 365 Sales Consultant Challenge + - Power Platform Developer Challenge + - **Azure Admin Challenge** + - Azure Developer Challenge + - Azure Database Admin Challenge + - Windows Server Hybrid Admin Challenge + - Dynamics 365 Supply Chain Mgmt Challenge + - Security Operations Analyst Challenge + - Identity + Information Protection Challenge + +![](/assets/images/posts/2021-11-04-microsoft-ignite/1.png) + +## Eligible exams + + - Azure + * **AZ-104: Microsoft Azure Administrator** + * AZ-204: Developing Solutions for Microsoft Azure + * DP-300: Administering Relational Databases on Microsoft Azure + * AZ-800: Administering Windows Server Hybrid Core Infrastructure + * AZ-801: Configuring Windows Server Hybrid Advanced Services + - Dynamics 365 + * MB-210: Microsoft Dynamics 365 Sales + * MB-330: Microsoft Dynamics 365 Supply Chain Management + - Microsoft 365 + * MD-100: Windows 10 + * MD-101: Managing Modern Desktops + * MS-700: Managing Microsoft Teams + * MS-720: Microsoft Teams Voice Engineer + - Power Platform + * PL-400: Microsoft Power Platform Developer + - Security, Compliance, and Identity + * SC-200: Microsoft Security Operations Analyst + * SC-300: Microsoft Identity and Access Administrator + * SC-400: Microsoft Information Protection Administrator + +
\ No newline at end of file diff --git a/_posts/2021-11-05-huawey-academy-workshop.md b/_posts/2021-11-05-huawey-academy-workshop.md new file mode 100644 index 0000000000..661864e586 --- /dev/null +++ b/_posts/2021-11-05-huawey-academy-workshop.md @@ -0,0 +1,18 @@ +--- +title: "Huawei ICT Academy Instructor Workshop Brazil 2021" +last_modified_at: 2022-03-18T16:00:58-04:00 +tags: + - cert + - classes + - events + - huawei + - pt + - webinar +toc: false +--- + +[![](/assets/images/posts/2021-11-05-huawey-academy-workshop.png)](http://www.huawei.com/audience/answer.do?u=2675759) + +No dia 09 de Novembro, será realizado um Worshop ao vivo sobre o programa **Huawei ICT Academy**, com apresentação de alguns casos de universidades parceiras. Participe e aprenda um pouco mais sobre como podemos trabalhar juntos. + + \ No newline at end of file diff --git a/_posts/2021-11-15-aws11-eks.md b/_posts/2021-11-15-aws11-eks.md new file mode 100644 index 0000000000..6bfd99f102 --- /dev/null +++ b/_posts/2021-11-15-aws11-eks.md @@ -0,0 +1,23 @@ +--- +title: "AWS series XI: Elastic Kubernetes Service (EKS)" +last_modified_at: 2021-11-15T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#aws) sobre Amazon Web Services. + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/shift/multicloud/lab15-paas-eks.md %} + + \ No newline at end of file diff --git a/_posts/2021-11-20-physics.md b/_posts/2021-11-20-physics.md new file mode 100644 index 0000000000..54707ba7b8 --- /dev/null +++ b/_posts/2021-11-20-physics.md @@ -0,0 +1,48 @@ +--- +title: "PHYSICS EU project" +last_modified_at: 2021-11-20T16:00:58-04:00 +tags: + - en + - networks + - redhat +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-09-20-physics-ga4/1.png)](https://physics-faas.eu/) + +## The project + +[**PHYSICS**](https://physics-faas.eu/) (**oPtimized HYbrid Space-time servIce Continuum in faaS**) is a research project funded by the European Union’s Horizon 2020 research and innovation program under grant agreement No. 101017047. The project began in January 2021 with 14 international partners and is scheduled to end in December 2023. Partners include Red Hat, Atos, RYAX, the Polytechnic University of Madrid (Spain), and Harokopio University (Greece). + +The project’s goal is to enable application developers to design, implement, and deploy advanced function-as-a-service (FaaS) applications in the scope of advanced cloud application design environments by leveraging proven design patterns and existing libraries of cloud/FaaS components. + +Red Hat engineers lead the work package **Extended Infrastructure Services with Adaptable Algorithms**, where they leverage several community projects to support PHYSICS’s multi-cluster orchestration and connectivity requirements. Some of the projects modified for PHYSICS’ purposes are [Submariner](https://github.com/submariner-io/submariner) and [MicroShift](https://github.com/openshift/microshift). Other projects used include Node-RED and Apache OpenWhisk. + +## Features + +- Global Deployment and Orchestration Optimization +- Visual environments and Cloud design patterns +- Function as a Service Frameworks as a whole +- Semantic Descriptions +- Scaling, Controlling and Performance Logic +- Application adaptation to FaaS + +## Consortium + +- GFT +- Atos +- Fujitsu +- Hewlett Packward Enterprise (HPE) +- Red Hat +- Ryax +- Innov-Acts (Innov) +- InQBit +- Byte +- Innovation Sprint (ISPRINT) +- CybeleTech +- Universidad Politécnica de Madrid +- Harokopio University +- German Research Center for Artificial Intelligence (DKFI) + +To learn more about the PHYSICS project, visit the [PHYSICS project page](https://physics-faas.eu/). Read more about it in the [Red Hat Research blog](https://research.redhat.com/blog/research_project/physics-optimized-hybrid-space-time-service-continuum-in-faas/). \ No newline at end of file diff --git a/_posts/2021-11-22-hcia-18.md b/_posts/2021-11-22-hcia-18.md new file mode 100644 index 0000000000..8c69cfac10 --- /dev/null +++ b/_posts/2021-11-22-hcia-18.md @@ -0,0 +1,27 @@ +--- +title: "HCIA-Routing & Switching - 18th edition" +last_modified_at: 2021-11-22T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2021-11-22-hcia-18.jpeg)](https://www.sympla.com.br/treinamento-de-redes---18-edicao__1420453) + +Informamos que estão abertas as inscrições do **18º Treinamento em Tecnologia de Informação e Comunicação** convênio USP e **HUAWEI – HCIA – Routing & Switching V2.5**, totalmente gratuito e virtual. + +As inscrições podem ser realizadas por este [link](https://www.sympla.com.br/treinamento-de-redes---18-edicao__1420453). + +Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos. + +O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP ([Inova.USP](https://inova.usp.br/)) – Huawei, totalmente na modalidade on-line. + +Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área. + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). + +[![](/assets/images/posts/2021-03-26-hcia-15/2.png)](https://inova.usp.br/) \ No newline at end of file diff --git a/_posts/2021-11-24-huawey-job-fair-21.md b/_posts/2021-11-24-huawey-job-fair-21.md new file mode 100644 index 0000000000..dbda3155bc --- /dev/null +++ b/_posts/2021-11-24-huawey-job-fair-21.md @@ -0,0 +1,13 @@ +--- +title: "Huawei ICT Job Fair Brazil 2021" +last_modified_at: 2021-11-24T16:00:58-04:00 +tags: + - cert + - classes + - events + - huawei + - pt +toc: false +--- + +[![](/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg)](https://app.huawei.com/web/Brazil_External/#/job_platform) \ No newline at end of file diff --git a/_posts/2021-11-28-gremlin-caos.md b/_posts/2021-11-28-gremlin-caos.md new file mode 100644 index 0000000000..453ee9f589 --- /dev/null +++ b/_posts/2021-11-28-gremlin-caos.md @@ -0,0 +1,31 @@ +--- +title: "Gremlin Certified Chaos Engineering Practitioner (GCCEP)" +last_modified_at: 2021-11-28T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift + - redhat +toc: false +--- + +[![](/assets/images/posts/2021-11-28-gremlin-caos/1.png)](https://www.gremlin.com/) + +Chaos Engineering continues to grow in popularity and is rapidly becoming a job requirement. To help Engineering and Testing teams meet the need, take a look at **Gremlin Chaos Engineering Practitioner Certificate Program**! The Certificate Program is now the easiest way to demonstrate your Chaos Engineering expertise and increase your visibility. + +Learn more at [gremlin.com/certification](https://www.gremlin.com/certification/). + +# Free certification + +At the end of the course, you can earn a badge by passing a final exam. + +![](/assets/images/posts/2021-11-28-gremlin-caos/2.png) + + \ No newline at end of file diff --git a/_posts/2021-12-05-ovn21.md b/_posts/2021-12-05-ovn21.md new file mode 100644 index 0000000000..ca500d58df --- /dev/null +++ b/_posts/2021-12-05-ovn21.md @@ -0,0 +1,26 @@ +--- +title: "Open vSwitch and OVN 2021 Fall Conference" +last_modified_at: 2021-12-05T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - openshift + - openstack + - redhat + - sdn +toc: false +--- + +[![](/assets/images/posts/2021-12-05-ovn21.png)](https://www.openvswitch.org/support/ovscon2021/) + +The **Open vSwitch and OVN 2021 Fall Conference** will be held online Dec. 7 and 8. Talks will be pre-recorded and played back during the conference. It will be used an online system that allows for text-based discussion and Q&A while the talk is being played. It will also be allowed a few minutes after each talk for further discussion via both text and over video and audio with the presenters. Each talk will be given once. + +This year the following companies have offered their support for the conference: + - [Canonical Ltd.](https://canonical.com/) + - [Intel Corporation](https://intel.com/) + - [NVIDIA Corporation](https://www.nvidia.com/) + - [Red Hat, Inc.](https://redhat.com/) + +Registration is requested to attend. A registration form is available via [Event Brite](https://www.eventbrite.com/e/ovsovn-21-conference-registration-217640256867). The session recordings are available [here](https://www.youtube.com/playlist?list=PLaJlRa-xItwARDGAUp7lXviOgOhcRxSU-). \ No newline at end of file diff --git a/_posts/2021-12-09-calico-ebpf.md b/_posts/2021-12-09-calico-ebpf.md new file mode 100644 index 0000000000..beb3b606e1 --- /dev/null +++ b/_posts/2021-12-09-calico-ebpf.md @@ -0,0 +1,50 @@ +--- +title: "Certified Calico Operator: eBPF" +last_modified_at: 2021-12-09T16:00:58-04:00 +tags: + - cert + - en + - iac + - networks + - nfv + - openshift + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-01-05-calico/1.png)](https://www.projectcalico.org/) + +I would like to strongly recomend the [Certified Calico Operator: eBPF](https://academy.tigera.io/course/certified-calico-operator-ebpf/) course for everyone interested in eBPF networking. + +The new **CCO-L2-EBPF** (Certified Calico Operator: eBPF) course specifically addresses the strengths of eBPF and when it is, or is not, the right choice. It will also help you see how easy it is to deploy the Calico eBPF data plane if you have made the choice that it is right for you and your cluster. + +This is a level 2 course, which means that you should probably complete the [existing level 1 course](/calico) first, unless you’re very familiar with Calico and Kubernetes already. + +# What the Course Covers + +- Week 1 + * Get Started with eBPF + * Lab Setup + * Writing an eBPF program + * Writing a Kernel Probe for Tracing + * Understanding the Tools + * eBPF in Kubernetes +- Week 2 + * GCP Lab Setup + * Deploying Calico with eBPF on Upstream Kubernetes + * Key Benefits of the Calico eBPF Data Plane +- Week 3 + * Deploying Calico with eBPF on OpenShift + * Understanding Calico eBPF and CNI Choice + * Deploying a Rancher RKE Cluster with eBPF, and connecting to a Rancher Server +- Week 4 + * Calico eBPF and WireGuard + * Monitoring and Troubleshooting the Calico eBPF Data Plane + * Advanced Topics + +# Free certification + +At the end of the course, you can earn a certificate by passing a final exam. + +[![](/assets/images/posts/2021-12-09-calico-ebpf.png)](https://courses.academy.tigera.io/certificates/5b2d3af1a265456f85c8e41dbef83598) diff --git a/_posts/2021-12-13-gitops-fundamentals.md b/_posts/2021-12-13-gitops-fundamentals.md new file mode 100644 index 0000000000..fdb25b168f --- /dev/null +++ b/_posts/2021-12-13-gitops-fundamentals.md @@ -0,0 +1,35 @@ +--- +title: "GitOps certified for Argo" +last_modified_at: 2021-12-13T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-12-13-gitops-fundamentals/0.png)](https://codefresh.io/) + +I would like to strongly recomend the [GitOps Fundamentals](https://codefresh.learnworlds.com/course/gitops-with-argo) course for everyone interested in GitOps best practices. + +After you finish this course you will know the fundamentals of GitOps and have practical knowledge of Argo CD. + +# What the Course Covers + +- What is GitOps and why you should adopt it +- Benefits and common pitfalls of GitOps +- How Argo CD works +- How to manage applications with Argo CD +- Sync strategies, secrets, and template customization +- Declarative setup for applications +- What is Progressive Delivery and how it can level up your deployments +- Using Argo Rollouts for blue/green and canary deployments + + +# Free certification + +At the end of the course, you can earn a certificate by passing a final exam. + +![](/assets/images/posts/2021-12-13-gitops-fundamentals/1.png) diff --git a/_posts/2021-12-19-istio-fundamentals.md b/_posts/2021-12-19-istio-fundamentals.md new file mode 100644 index 0000000000..f31e484532 --- /dev/null +++ b/_posts/2021-12-19-istio-fundamentals.md @@ -0,0 +1,50 @@ +--- +title: "Istio and Envoy Fundamentals by Tetrate" +last_modified_at: 2022-01-12T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-12-19-istio-fundamentals/0.png)](https://www.tetrate.io/) + +I would like to strongly recomend the [Istio Fundamentals](https://academy.tetrate.io/courses/istio-fundamentals) and [Envoy Fundamentals](https://academy.tetrate.io/courses/envoy-fundamentals) courses from the [Tetrate Academy](https://academy.tetrate.io/) for everyone interested in service mesh arquitectures. + +# Istio Fundamentals + +A course that enables users to learn Istio easily with concept text, labs, and quizzes. Istio is an open-source service mesh platform that helps microservices communicate with each other easily. + +## What the Course Covers + +- Service Mesh and Istio Overview +- Installing Istio +- Observability: Telemetry and Logs +- Traffic Management +- Security +- Advanced Features +- Troubleshooting +- Real World Examples + +# Envoy Fundamentals + +Envoy is an open-source edge and service proxy that is a key part of modern, cloud-native applications.This free course provides a comprehensive, five-part tour of Envoy with concept text, labs, and quizzes. + +## What the Course Covers + +- Introduction +- HTTP Connection Manager (HCM) +- Clusters +- Dynamic Configuration +- Listener Subsystem + +# Free certification + +At the end of the course, you can earn one certificate per course by passing a final exam. + +[![](/assets/images/posts/2021-12-19-istio-fundamentals/1.png)](https://academy.tetrate.io/certificates/em1ijnibkx) + +[![](/assets/images/posts/2021-12-19-istio-fundamentals/2.png)](https://tetrate-academy.thinkific.com/certificates/g0qtgjk4ix) diff --git a/_posts/2022-01-01-newyear22.md b/_posts/2022-01-01-newyear22.md new file mode 100644 index 0000000000..e144b4f865 --- /dev/null +++ b/_posts/2022-01-01-newyear22.md @@ -0,0 +1,16 @@ +--- +title: "Happy new year!" +last_modified_at: 2022-01-01T16:00:58-04:00 +tags: + - en + - es + - redhat + - pt +toc: false +--- + +![](/assets/images/posts/2022-01-01-newyear22/1.png) + +![](/assets/images/posts/2022-01-01-newyear22/2.png) + +![](/assets/images/posts/2022-01-01-newyear22/3.png) \ No newline at end of file diff --git a/_posts/2022-01-02-skillbuilder.md b/_posts/2022-01-02-skillbuilder.md new file mode 100644 index 0000000000..b7f2580388 --- /dev/null +++ b/_posts/2022-01-02-skillbuilder.md @@ -0,0 +1,30 @@ +--- +title: "AWS Skill Builder" +last_modified_at: 2022-02-02T16:00:58-04:00 +tags: + - aws + - cert + - en +toc: false +--- + +[![](/assets/images/posts/2022-01-02-skillbuilder.png)](https://explore.skillbuilder.aws/) + +Since October 19th, former [aws.training site](https://www.aws.training/) has moved to AWS Training and Certification’s new learning center, [AWS Skill Builder](https://explore.skillbuilder.aws/). + +Besides lots of great material and courses, they offer free **AWS Certification Official Practice Question Sets**. + +AWS Certification Official Practice Question Sets feature 20 questions developed by AWS to demonstrate the style of our certification exams. You can experience these exam-style questions, which offer detailed feedback and recommended resources to help fill gaps. + +The 20-question sets available in English, Portuguese, Spanish, German, French, Indonesian, Japansese, Korean and Chinese are: + + - AWS Certified Cloud Practitioner Official Practice Question Set + - AWS Certified Developer - Associate Official Practice Question Set + - AWS Certified Solutions Architect - Associate Practice Question Set + - AWS Certified SysOps Administrator - Associate Official Practice Question Set + - AWS Certified Solutions Architect - Professional Official Practice Question Set + - AWS Certified DevOps Engineer - Professional Official Practice Question Set + - AWS Certified Data Analytics - Specialty Official Practice Question Set + - AWS Certified Database - Specialty Practice Question Set + - AWS Certified Machine Learning - Specialty Official Practice Question Set + - AWS Certified Security - Specialty Official Practice Question Set \ No newline at end of file diff --git a/_posts/2022-01-03-kasten.md b/_posts/2022-01-03-kasten.md new file mode 100644 index 0000000000..efaa70965d --- /dev/null +++ b/_posts/2022-01-03-kasten.md @@ -0,0 +1,55 @@ +--- +title: "Kasten - Kubernetes data protection" +last_modified_at: 2022-01-03T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-01-03-kasten/0.png)](https://www.kasten.io/) + +I would like to strongly recomend the [Kasten](https://www.kasten.io/) courses from the [Learning.kaste.io platform](https://learning.kasten.io/) to everyone interested in Kubernetes data protection. + +# Labs + +## Introductory + +- KubeCon + CloudNativeCon Special Edition Lab + * Deploy K10 + * Backup a data service + * Delete data + * Recover K10 + +## Module #1 + +- Build your first Kubernetes Cluster + * Learn Kubernetes Structure + * Understand abstractions + * Create your own cluster + +- Build a Kubernetes Application + * Build container images + * Run applications + * Manage manifests for deployment + * Discover [Kubestr](https://kubestr.io/) + +- Back-up your Kubernetes Application + * Learn unique Kubernetes requirements + * Understand step-by-step backup procedures + * Learn Kasten K10 – #1 backup and DR for Kubernetes + +## Module #2 + +- Application Consistency + * Learn how Kubernetes-native application backup and recovery works using Kasten K10 and Kanister + * Learn application-level data management + +# Free badges + +At the end of the course, you can earn badges by completing the labs and avaliations. + +![](/assets/images/posts/2022-01-03-kasten/1.png) diff --git a/_posts/2022-01-04-examtopics.md b/_posts/2022-01-04-examtopics.md new file mode 100644 index 0000000000..cc03ae0766 --- /dev/null +++ b/_posts/2022-01-04-examtopics.md @@ -0,0 +1,26 @@ +--- +title: "Kudos to ExamTopics" +last_modified_at: 2022-01-04T16:00:58-04:00 +tags: + - cert + - en +toc: false +--- + +[![](/assets/images/posts/2022-01-04-examtopics.jpg)](https://www.examtopics.com/) + +I have been using the mocks from [ExamTopics](https://www.examtopics.com/) latelly to prepare to several certification exams and I have to say I found them the best material around. + +I personally prefer them over exam reviews/practice tests from paid platforms, for the following reasons: + - the community around + - free + - comments for questions: I learn a lot reading the discussion forum for each question + - updated: I found the questions from ExamTopics to be always relevant and updated, as you can infere from the comments + +At the moment of this writing, they have: + - 109 certification providers + - 1292 exams + - 126 average daily updates + - 2089 online users + +I believe in certification as a tool to make a positive change, and I hope the ExamTopics community stays relevant and grows over time. \ No newline at end of file diff --git a/_posts/2022-01-05-cert-roadmap.md b/_posts/2022-01-05-cert-roadmap.md new file mode 100644 index 0000000000..86498932ad --- /dev/null +++ b/_posts/2022-01-05-cert-roadmap.md @@ -0,0 +1,68 @@ +--- +title: "Certification preparation roadmap" +last_modified_at: 2022-02-05T16:00:58-04:00 +tags: + - aws + - azure + - cert + - en + - huawei + - redhat +toc: true +toc_sticky: true +--- + +I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) practice exams. For the practice exams I heavily rely on [ExamTopics](/examtopics). + +# AWS + + 1. Do the corresponding [AWS Academy](/aws-academy) course + 2. Do the corresponding practice exam in the [AWS Skill Builder platform](/skillbuilder) + 3. Reviews/practice the corresponding tests from [ExamTopics](/examtopics), carefully reading the discussion forum for each question + +--- +**NOTE** + +With [AWS Academy](/aws-academy) courses you earn 50% discount for all AWS certifications + +--- + +# Azure/Microsoft + + 1. Do the corresponding [Microsoft Learn](https://docs.microsoft.com/en-us/learn/) course + 2. Reviews/practice the corresponding tests from [ExamTopics](/examtopics), carefully reading the discussion forum for each question + +--- +**NOTE** + +Lots of opportunities for doing Azure exams for free: + - [Microsoft Virtual Training Days](/azure-fundamentals) + - [Microsoft Ignite Cloud Skills Challenge](/microsoft-ignite) + +--- + +# Huawei + + 1. Do the corresponding [Huawei Talent](/haina-talent) course + 2. Reviews/practice the corresponding tests from the [Huawei Talent](/haina-talent) platform itself + 3. As a complement, reviews/practice the corresponding tests from [ExamTopics](/examtopics), carefully reading the discussion forum for each question + +--- +**NOTE** + +Lots of opportunities from the [Huawei ICT Academy program](/haina) for doing Huawei exams for free + +--- + +# Red Hat + + 1. Do the corresponding [Red Hat Learning Subscription](https://www.redhat.com/en/services/training/learning-subscription) course + +As all Red Hat exams are hands-on, and the [Red Hat Learning Subscription](https://www.redhat.com/en/services/training/learning-subscription) course includes lots of labs, there is no need for additional material. + +--- +**NOTE** + +With [Red Hat Academy](/redhat-academy) courses you earn 50% discount for all Red Hat certifications + +--- diff --git a/_posts/2022-01-06-maua-sdn.md b/_posts/2022-01-06-maua-sdn.md new file mode 100644 index 0000000000..61ae0d4255 --- /dev/null +++ b/_posts/2022-01-06-maua-sdn.md @@ -0,0 +1,15 @@ +--- +title: "Curso de Especialização - Tecnologias Habilitadoras para Internet do Futuro" +last_modified_at: 2022-01-06T16:00:58-04:00 +tags: + - aws + - classes + - networks + - pt + - sdn +toc: false +--- + +[![](/assets/images/posts/2022-01-06-maua-sdn/0.png)](https://maua.br/pos-graduacao/especializacao-360h/tecnologias-habilitadoras-para-internet-do-futuro) + +[![](/assets/images/posts/2022-01-06-maua-sdn/1.png)](https://maua.br/pos-graduacao/especializacao-360h/tecnologias-habilitadoras-para-internet-do-futuro) diff --git a/_posts/2022-01-07-shift-aws-foundations-6.md b/_posts/2022-01-07-shift-aws-foundations-6.md new file mode 100644 index 0000000000..9908a41e6d --- /dev/null +++ b/_posts/2022-01-07-shift-aws-foundations-6.md @@ -0,0 +1,49 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 6th edition" +last_modified_at: 2022-01-07T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **18/01** e **22/02**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento + + [![](/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) \ No newline at end of file diff --git a/_posts/2022-01-21-shift-aws-dev-3.md b/_posts/2022-01-21-shift-aws-dev-3.md new file mode 100644 index 0000000000..dce68c0209 --- /dev/null +++ b/_posts/2022-01-21-shift-aws-dev-3.md @@ -0,0 +1,108 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Developing - 3rd edition" +last_modified_at: 2022-01-21T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) + +Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação **[AWS Certified Developer - Associate (DVA-C01)](https://aws.amazon.com/pt/certification/certified-developer-associate/)**. Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos. + +## Para quem? +Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS. + +## Pré-requisito +Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso. + +## SHIFT remoto + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy). Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Benefício FIAP +Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner). + + +## Conteúdo + + - Módulo 1: INTRODUCTION TO DEVELOPING ON AWS + * Recognize the systems development life cycle, and describe how to start to developing on AWS. + * Indicate how to work with AWS SDKs. + * Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools. + * Develop and run a simple program in AWS Cloud9. + - Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) + * Recognize the shared responsibility model. + * Explain how IAM helps secure access to AWS resources. + * Describe IAM user authentication. + * Identify how to authorize an IAM user, group, or role. + - Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 + * Describe how Amazon S3 can be used as a storage solution. + * Identify Amazon S3 features and components. + * Describe two ways to protect data with Amazon S3. + * Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE). + * Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs. +- Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB + * Identify Amazon DynamoDB features. + * Describe Amazon DynamoDB components. + * Explain how Amazon DynamoDB uses partitions. + * Indicate how indexes are used with Amazon DynamoDB. + * Describe how Amazon DynamoDB keeps data consistent. + * Recognize when streaming and global tables are used. + * Explain the backup and restoration process. + * Develop flexible NoSQL solutions with Amazon DynamoDB. +- Módulo 5: CACHING INFORMATION FOR SALABILITY + * Explain when caching is used. + * Describe caching with Amazon CloudFront. + * Describe caching with Amazon ElastiCache Apply caching strategies. +- Módulo 6: INTRODUCTION TO CONTAINERS + * Describe the history, technology, and terminology behind containers. + * Differentiate containers from bare-metal servers and virtual machines. + * Identify the characteristics of a microservices architecture. + * Recognize the drivers for using container-based workloads. + * Host a basic website by using Docker containers. +- Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS + * Recall how message queues works. + * Describe Amazon SQS. + * Send messages to an SQS queue. + * Describe Amazon SNS. + * Explain Amazon SNS concepts. + * Describe Amazon MQ. +- Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA + * Explain serverless computing. + * Describe how AWS Lambda works. + * Recognize AWS Lambda execution models. + * Identify how to use AWS IAM to grant Lambda permissions. + * Indicate the steps to author and configure a Lambda functions. + * Explain how to deploy serverless applications. + * Develop event-driven solutions with AWS Lambda. +- Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY + * Recognize application programming interfaces. + * Describe Amazon API Gateway. + * Indicate the steps for developing RESTful APIs with Amazon API Gateway. +- Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS + * Recognize the dynamics of workflow coordination in distributed applications. + * Describe AWS Step Functions. + * Identify state types. + * Indicate common use cases for AWS Step Functions. + * Recall AWS Step Functions APIs. +- Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS + * Identity how to secure applications. + * Describe how to manage your application’s secrets. + * Recall how to authenticate with AWS Security Token Service. + * Describe how Amazon Cognito is used to build secure applications. +- Módulo 12: DEPLOYING APPLICATIONS ON AWS + * Describe DevOps + * Recognize AWS code services for CI/CD + * Summarize deployment strategies + * Describe how AWS Elastic Beanstalk is used to deploy applications + * Describe how AWS CloudFormation is used to deploy applications + * Describe how AWS SAM is used to deploy serverless applications. + + + [![](/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) \ No newline at end of file diff --git a/_posts/2022-01-26-magma-cert.md b/_posts/2022-01-26-magma-cert.md new file mode 100644 index 0000000000..9eaadedd3c --- /dev/null +++ b/_posts/2022-01-26-magma-cert.md @@ -0,0 +1,28 @@ +--- +title: "MT101x: Magma Technical Certification Exam" +last_modified_at: 2022-01-26T16:00:58-04:00 +tags: + - cert + - en + - networks + - nfv + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-01-26-magma-cert/0.png)](https://magma.edunext.io/) + +The purpose of the Magma certification test is to evaluate the technical abilities of engineers to deploy and operate [Magma](https://www.magmacore.org/). The test will consist of 25 questions that will test your knowledge of the three main Magma components: the access gateway, the Orc8r, and the network management system. During this test, you will be free to use all resources available to you. A score of 80% or higher is required to pass the test. + +Prior to taking the test, you should have previously reviewed all documentation on the [Magma Docusaurus website](https://docs.magmacore.org/docs/next/basics/introduction.html) and the [Github repository](https://github.com/magma/magma). This includes reviewing the [Access Gateway Overview](https://magma.github.io/magma/docs/next/lte/architecture_overview) and Orc8r Overview subpages to understand the major services involved with Magma. These documents will be the primary sources for the information on the tests. Additionally, you should have installed an end to end test setup of Magma within your lab or working environment. + +## Registration + +[Register now](https://magma.edunext.io/) + +## Free certification + +At the end of the course, you can earn a certificate by passing a final exam. + +[![](/assets/images/posts/2022-01-26-magma-cert/1.png)](https://magma.edunext.io/certificates/dec605887c0547308253fd01a0972cef) diff --git a/_posts/2022-02-03-kyverno-fundamentals.md b/_posts/2022-02-03-kyverno-fundamentals.md new file mode 100644 index 0000000000..37781b5d50 --- /dev/null +++ b/_posts/2022-02-03-kyverno-fundamentals.md @@ -0,0 +1,34 @@ +--- +title: "Kyverno Fundamentals Certification" +last_modified_at: 2022-02-03T16:00:58-04:00 +tags: + - cert + - en + - iac + - openshift +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png)](https://nirmata.com) + +I would like to strongly recomend the [Kyverno Fundamentals Certification](https://learn.nirmata.com/courses/kyverno-fundamentals-certification) course for everyone interested in Kubernetes security. + +[Kyverno](https://kyverno.io/) is a policy engine designed for Kubernetes. With Kyverno, policies are managed as Kubernetes resources and no new language is required to write policies. This allows using familiar tools such as kubectl, git, and kustomize to manage policies. Kyverno policies can validate, mutate, and generate Kubernetes resources. The Kyverno CLI can be used to test policies and validate resources as part of a CI/CD pipeline. + +This Kyverno Fundamentals Certification will test you the basic concepts of Kyverno, along with installation, policy definitions, results, and security. + +# What the Course Covers + +- About Kyverno +- Basic Concepts +- Installation +- Policy Definitions +- Quiz + + +# Free certification + +At the end of the course, you can earn a certificate by passing a final exam. + +
\ No newline at end of file diff --git a/_posts/2022-02-10-ipt-cloud.md b/_posts/2022-02-10-ipt-cloud.md new file mode 100644 index 0000000000..06bd122923 --- /dev/null +++ b/_posts/2022-02-10-ipt-cloud.md @@ -0,0 +1,41 @@ +--- +title: "IPT curta duração - Cloud Computing" +last_modified_at: 2022-03-15T16:00:58-04:00 +tags: + - aws + - azure + - classes + - pt +toc: false +--- + +[![](/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg)](https://bit.ly/CloudComputing-IPT) + +Curso: ***CLOUD COMPUTING*** + +[IPT – USP](https://www.ipt.br/) | CURSOS DE ESPECIALIZAÇÃO + +Carga horária: 40 horas + - Fundamentos de Computação em Nuvem + - Microsoft Azure, Amazon AWS e outros *players* + - IaaS - Infra como Serviço + - *Storage* como Serviço + - Redes em Nuvem + - Alocação de Recursos + - Manutenção e Operação + +-- Abordagem Hands-on -- + +-- Aulas Síncronas -- + +[Instituto de Pesquisas Tecnológicas do Estado de São Paulo – IPT](https://www.ipt.br/) + +Av. Prof. Almeida Prado, 532, Prédio 56, Cidade Universitária, São Paulo + +[Informações e inscrições](https://bit.ly/CloudComputing-IPT) + +Andréa Valero – E-mail: cursos@ipt.br – fone: (11) 3767-4226 + +Faça [aqui](https://sapiens.ipt.br/Anexos/22.02.07.CloudComputing.V2.pdf?v=20220208181031) o *download* do folheto + +[![](/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg)](https://bit.ly/CloudComputing-IPT) diff --git a/_posts/2022-02-17-loki.md b/_posts/2022-02-17-loki.md new file mode 100644 index 0000000000..aa371fae76 --- /dev/null +++ b/_posts/2022-02-17-loki.md @@ -0,0 +1,13 @@ +--- +title: "LOKI" +last_modified_at: 2022-02-17T16:00:58-04:00 +tags: + - es + - openshift + - openstack + - redhat +toc: false +--- + +![](/assets/images/posts/2022-02-17-loki.jpeg) + diff --git a/_posts/2022-03-11-huawey-rs-vs-datacom.md b/_posts/2022-03-11-huawey-rs-vs-datacom.md new file mode 100644 index 0000000000..970729c074 --- /dev/null +++ b/_posts/2022-03-11-huawey-rs-vs-datacom.md @@ -0,0 +1,18 @@ +--- +title: "Huawei Routing & Switching vs Datacom" +last_modified_at: 2022-03-18T16:00:58-04:00 +tags: + - cert + - classes + - events + - huawei + - pt + - webinar +toc: false +--- + +[![](/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png)](https://isurvey.huawei.com/survey/#/privacy-page?surveyId=36063&customerId=0&placementId=0&channel=0) + +Nesta apresentação serão mostradas as diferenças entre a antiga trilha de certificação **Routing & Swithing** e sua substituta, **Datacom**. Será um evento online de uma hora de duração e quem realizar a inscrição pelo [link](https://isurvey.huawei.com/survey/#/privacy-page?surveyId=36063&customerId=0&placementId=0&channel=0) receberá um certificado de participação no evento. + + \ No newline at end of file diff --git a/_posts/2022-03-17-mct.md b/_posts/2022-03-17-mct.md new file mode 100644 index 0000000000..a23e1b1c8c --- /dev/null +++ b/_posts/2022-03-17-mct.md @@ -0,0 +1,96 @@ +--- +title: "Microsoft Certified Trainer (MCT) program" +last_modified_at: 2022-03-17T16:00:58-04:00 +tags: + - azure + - cert + - en +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-03-17-mct.png)](https://csc.docs.microsoft.com/ignite/registration/fall2021) + +## Become a Microsoft Certified Trainer + +Microsoft Certified Trainers (MCTs) are the premier technical and instructional experts in Microsoft technologies. Join this exclusive group of worldwide Microsoft technical training professionals and reap the benefits of MCT training certification and membership. + +You will get exclusive benefits as an MCT including access to the complete library of official Microsoft training and certification products, substantial discounts on exams, books, and Microsoft products. In addition, you will be able to use Microsoft readiness resources to help you enhance your training career and engage with other MCT members in an online community forum. You will also receive invitations to exclusive Microsoft and local MCT community events. + +As a Microsoft Certified Trainer, you need to earn a Microsoft Certification, validating your experience and knowledge in using Microsoft products and solutions for each course you deliver. + +The Microsoft Certified Trainer program is an annual membership program. You must meet program requirements, complete an online application, and pay an annual fee to renew your training certification for the coming year. + +## Program Benefits + +As a Microsoft Certified Trainer, you will gain access to a personalized dashboard, where you can find a wide variety of useful MCT resources, download your MCT certificate, and view discounts available to you! + +In addition, you will have access to [MCT Central](https://www.microsoft.com/en-us/learning/mct-central.aspx), which helps MCTs stay up-to-date on the latest news, find jobs, connect with other MCTs around the world, and reach out to your MCT Regional Lead. + +[Explore all the benefits available to MCTs.](https://query.prod.cms.rt.microsoft.com/cms/api/am/binary/RE23o0Z) + +## MCT program entry requirements + + - Possess a current Microsoft Certification or qualification eligible for the MCT program + * Microsoft Certified: Azure Administrator Associate + * Microsoft Certified: Azure Developer Associate + * Microsoft Certified: Azure Security Engineer Associate + * Microsoft Certified: Azure DevOps Engineer Expert + * Microsoft Certified: Azure Solutions Architect Expert + * Microsoft Certified: Azure AI Engineer Associate + * Microsoft Certified: Azure Data Scientist Associate + * Microsoft Certified: Azure Data Engineer Associate + * Microsoft Certified: Azure Database Administrator Associate + * Microsoft Certified: Azure Stack Hub Operator Associate + * Microsoft Certified: Azure Network Engineer Associate + * Microsoft Certified: Windows Server Hybrid Administrator Associate + * Microsoft 365 Certified: Enterprise Administrator Expert + * Microsoft 365 Certified: Modern Desktop Administrator Associate + * Microsoft 365 Certified: Security Administrator Associate + * Microsoft 365 Certified: Messaging Administrator Associate + * Microsoft 365 Certified: Developer Associate + * Microsoft 365 Certified: Teams Administrator Associate + * Microsoft 365 Certified: Teams Voice Engineer Expert + * Microsoft Certified: Power BI Data Analyst Associate + * Microsoft Certified: Power Platform Functional Consultant Associate + * Microsoft Certified: Power Platform App Maker Associate + * Microsoft Certified: Power Platform Developer Associate + * Microsoft Certified: Power Platform Solution Architect Expert + * Microsoft Certified: Dynamics 365 Business Central Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Sales Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Customer Service Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Marketing Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Field Service Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Finance Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Supply Chain Management, Manufacturing Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Supply Chain Management Functional Consultant Associate + * Microsoft Certified: Dynamics 365 Commerce Functional Consultant Associate + * Microsoft Certified: Dynamics 365: Finance and Operations Apps Developer Associate + * Microsoft Certified: Dynamics 365: Finance and Operations Apps Solution Architect Expert + * Microsoft Certified: Security Operations Analyst Associate + * Microsoft Certified: Identity and Access Administrator Associate + * Microsoft Certified: Information Protection Administrator Associate + * Microsoft Office Specialist (MOS): Master 2016, Master 2013, Expert Excel 2016, Expert Excel 2013, Expert Word 2016, Expert Word 2013, Word Associate (Word and Word 2019), Excel Associate (Excel and Excel 2019), PowerPoint Associate (PowerPoint and PowerPoint 2019), Outlook Associate (Outlook and Outlook 2019), Microsoft Office Specialist: Associate (Office 365 and Office 2019), Word Expert (Word and Word 2019), Excel Expert (Excel and Excel 2019), Access Expert (Access and Access 2019) or Microsoft Office Specialist: Expert (Office 365 and Office 2019) + + - Demonstrate instructional skills verified by one of the following Instructional Skills Certification + * CompTIA CTT+. + * Essential Educate Trainer (internal Microsoft - certification). + * Fourth Dimension Technologies, Inc. + * Friesen Kaye and Associates. + * Global Knowledge Instructional Skills Certification. + * IAMCT Approved Technical Trainer (IAMCT ATT). + * IPM (Institut für Personalberatung und Managemententwicklung). + * Learning and Performance Institute Trainer Performance Monitoring and Assessment (TPMA). + * Learning Tree Train the Trainer Program. + * Marcom Deli. + * Microsoft Certified Trainer Instructional Skills Certification (MCT-ISC). + * Microsoft Customer Service & Support (CSS) Trainer Certification. + * Microsoft Core Training Skills. + * New Horizons Instructional Skills Certification. + * PrepMasters USA. + * Modern Classroom Certified Trainer (MCCT®) [For college staff or professors only]. + * Certified Virtual Educator [For college staff or professors only]. + * Sinerji Egitim +- OR provide reference supporting at least one year of instructional experience. + +
\ No newline at end of file diff --git a/_posts/2022-03-21-iac-ansible-aws.md b/_posts/2022-03-21-iac-ansible-aws.md new file mode 100644 index 0000000000..d7237d263f --- /dev/null +++ b/_posts/2022-03-21-iac-ansible-aws.md @@ -0,0 +1,25 @@ +--- +title: "IaC series: Ansible na AWS" +last_modified_at: 2022-03-21T16:00:58-04:00 +tags: + - ansible + - aws + - classes + - fiap + - iac + - pt + - series +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#infrastructure-as-code-iac) sobre Infraestructure as a Code (IaC). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/multicloud/lab15-ansible.md %} + + \ No newline at end of file diff --git a/_posts/2022-03-21-iac-terraform-aws.md b/_posts/2022-03-21-iac-terraform-aws.md new file mode 100644 index 0000000000..86a7e2c5a0 --- /dev/null +++ b/_posts/2022-03-21-iac-terraform-aws.md @@ -0,0 +1,25 @@ +--- +title: "IaC series: Terraform na AWS" +last_modified_at: 2022-03-21T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - iac + - pt + - series + - terraform +toc: true +toc_sticky: true +--- + +[Serie de artigos](/series/#infrastructure-as-code-iac) sobre Infraestructure as a Code (IaC). + + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/fiap/master/cld/multicloud/lab14-iaas-terraform.md %} + + \ No newline at end of file diff --git a/_posts/2022-03-21-mie.md b/_posts/2022-03-21-mie.md new file mode 100644 index 0000000000..83b9f33e54 --- /dev/null +++ b/_posts/2022-03-21-mie.md @@ -0,0 +1,27 @@ +--- +title: "Microsoft Innovative Educator (MIE) programs" +last_modified_at: 2022-03-21T16:00:58-04:00 +tags: + - azure + - cert + - classes + - en +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-03-21-mie/1.jpeg)](https://education.microsoft.com/en-us/resource/18485a7b) + +## About the Microsoft Innovative Educator Programs + +The [Microsoft Innovative Educator (MIE)](https://education.microsoft.com/en-us/resource/18485a7b) programs recognize global educator visionaries who are using technology to pave the way for their peers for better learning and student outcomes. These are a variety of programs to help both educators who are just beginning this journey, as well as programs for educators who are leaders in innovative education. + +## Microsoft Innovative Educator + +Start your journey by becoming a Microsoft Innovative Educator. MIEs use Microsoft tools in the classroom and have learned the fundamentals of some of these tools. This is the first step on a journey of joining a professional learning network of enthusiastic educators who come together to learn, share, and grow. + +Requirements: + - Join the [Microsoft Educator Center](https://education.microsoft.com/) + - Complete 2 hours of training + + ![](/assets/images/posts/2022-03-21-mie/2.png) \ No newline at end of file diff --git a/_posts/2022-03-24-riab.md b/_posts/2022-03-24-riab.md new file mode 100644 index 0000000000..eb272da88c --- /dev/null +++ b/_posts/2022-03-24-riab.md @@ -0,0 +1,325 @@ +--- +title: "SDRAN-in-a-Box" +last_modified_at: 2022-03-24T16:00:58-04:00 +tags: + - ansible + - aws + - en + - networks + - nfv + - onf + - sdn +toc: true +toc_sticky: true +--- + +[SDRAN-in-a-Box (RiaB)](https://docs.sd-ran.org/master/riab_install_index.html) is an [ONF](/onf) project that consists in a [SD-RAN cluster](https://docs.sd-ran.org/sdran-1.1/) which is able to operate within a single host machine . It provides a development/test environment for developers/users in ONF SD-RAN community. + +RiaB deploys the complete SD-RAN infrastructure over Kubernetes: + - the EPC (OMEC) + - an emulated RAN (CU/DU/UE) + - the ONOS RAN Intelligent Controller (ONOS RIC) + +[![](/assets/images/posts/2022-03-24-riab.png)](https://docs.sd-ran.org/sdran-1.1/) + +## Features + - Installs Kubernetes and Helm + - Provides one of three choices to emulate/simulate Radio Access Networks (RANs) + * RAN-Simulator + * OMEC / CU-CP / OAI nFAPI emulator for DU/UE + * OMEC / CU-CP / OAI DU and UE with USRP hardware and/or LTE smartphones + - Support End-to-End (E2E) connectivity test + * User plane E2E tests + * SD-RAN control plane E2E tests + + +## Prerequisites + +In order to run RiaB, we should prepare at least a single machine (any baremetal server or on premises/cloud VM) with the following minimum requirements: + - CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores + - OS: Ubuntu 18.04 + - RAM: At least 16GB + - Storage: At least 50GB (recommendation: 100GB) + +For this testing it was used a Ubuntu 18.04 `t2.xlarge` (4 vCPUs / 16 GB) instance on AWS. + +## Installation + +Clone the [RiaB repository](https://github.com/onosproject/sdran-in-a-box): +``` +$ git clone https://github.com/onosproject/sdran-in-a-box +``` + +Install the required dependencies: +``` +$ sudo apt install -y make +``` + +Start the deployment procedure: +``` +$ cd /path/to/sdran-in-a-box +$ make riab OPT=oai VER=stable +``` + +After a few minutes and if we don’t see any error or failure messages, check that everything is up and running: +``` +$ kubectl get pods -A +NAMESPACE NAME READY STATUS RESTARTS AGE +default router 1/1 Running 0 30m +kube-system atomix-controller-99f978c7d-7dngl 1/1 Running 0 30m +kube-system atomix-raft-storage-controller-75979cfff8-n2g7b 1/1 Running 0 29m +kube-system calico-kube-controllers-7f9675c8b8-xgx4b 1/1 Running 0 31m +kube-system calico-node-qfl9t 1/1 Running 0 31m +kube-system coredns-dff8fc7d-x7927 1/1 Running 0 31m +kube-system dns-autoscaler-5d74bb9b8f-lwbxb 1/1 Running 0 31m +kube-system kube-apiserver-node1 1/1 Running 0 32m +kube-system kube-controller-manager-node1 1/1 Running 0 32m +kube-system kube-multus-ds-amd64-fj22t 1/1 Running 0 31m +kube-system kube-proxy-jr2c8 1/1 Running 0 32m +kube-system kube-scheduler-node1 1/1 Running 1 32m +kube-system kubernetes-dashboard-667c4c65f8-v8tgk 1/1 Running 0 31m +kube-system kubernetes-metrics-scraper-54fbb4d595-s7v8z 1/1 Running 0 31m +kube-system nodelocaldns-2np2q 1/1 Running 0 31m +kube-system onos-operator-app-676674b79c-nl9gl 1/1 Running 0 29m +kube-system onos-operator-topo-7698956594-2krs5 1/1 Running 0 29m +riab cassandra-0 1/1 Running 0 29m +riab hss-0 1/1 Running 0 29m +riab mme-0 4/4 Running 0 29m +riab oai-enb-cu-0 1/1 Running 0 26m +riab oai-enb-du-0 1/1 Running 0 24m +riab oai-ue-0 1/1 Running 0 23m +riab onos-a1t-84db77df99-4zpsd 2/2 Running 0 27m +riab onos-cli-6b746874c8-njgn8 1/1 Running 0 27m +riab onos-config-7bd4b6f7f6-nb6c8 4/4 Running 0 27m +riab onos-consensus-store-0 1/1 Running 0 27m +riab onos-e2t-58b4cd867-f4xbb 3/3 Running 0 27m +riab onos-kpimon-966bdf77f-4ss4q 2/2 Running 0 27m +riab onos-rsm-86df4894bd-h49d9 2/2 Running 0 27m +riab onos-topo-7cc9d754d7-nbh9w 3/3 Running 0 27m +riab onos-uenib-779cb5dbd6-wsqzl 3/3 Running 0 27m +riab pcrf-0 1/1 Running 0 29m +riab spgwc-0 2/2 Running 0 29m +riab upf-0 4/4 Running 0 27m +``` + +## Resource usage + +For this particular `t2.xlarge` instance: + - Load + ``` + $ uptime + 17:16:22 up 56 min, 2 users, load average: 4.27, 5.60, 5.49 + ``` + + - Memory + ``` + $ free -h + total used free shared buff/cache available + Mem: 15G 3.0G 228M 836M 12G 11G + Swap: 0B 0B 0B + ``` + + - Disk + ``` + $ df -h + Filesystem Size Used Avail Use% Mounted on + udev 7.9G 0 7.9G 0% /dev + tmpfs 1.6G 4.7M 1.6G 1% /run + /dev/xvda1 97G 15G 82G 16% / + tmpfs 7.9G 0 7.9G 0% /dev/shm + tmpfs 5.0M 0 5.0M 0% /run/lock + tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup + /dev/loop0 43M 43M 0 100% /snap/snapd/14066 + /dev/loop1 56M 56M 0 100% /snap/core18/2253 + /dev/loop2 25M 25M 0 100% /snap/amazon-ssm-agent/4046 + tmpfs 1.6G 0 1.6G 0% /run/user/1000 + ``` + +## End-to-End (E2E) tests for verification + +In order to check whether everything is running, we should conduct some E2E tests and check their results. It is possible to do E2E tests on the user plane and SD-RAN control plane. + +### User plane + +Type `make test-user-plane` on the prompt for the user plane verification. If the ping is working without any loss, the user plane is working well. + +``` +$ make test-user-plane +Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml +HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces +HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) +*** T1: Internal network test: ping 192.168.250.1 (Internal router IP) *** +PING 192.168.250.1 (192.168.250.1) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data. +64 bytes from 192.168.250.1: icmp_seq=1 ttl=64 time=38.9 ms +64 bytes from 192.168.250.1: icmp_seq=2 ttl=64 time=46.9 ms +64 bytes from 192.168.250.1: icmp_seq=3 ttl=64 time=33.1 ms + +--- 192.168.250.1 ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2001ms +rtt min/avg/max/mdev = 33.168/39.706/46.976/5.660 ms +*** T2: Internet connectivity test: ping to 8.8.8.8 *** +PING 8.8.8.8 (8.8.8.8) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data. +64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=41.4 ms +64 bytes from 8.8.8.8: icmp_seq=2 ttl=50 time=41.0 ms +64 bytes from 8.8.8.8: icmp_seq=3 ttl=50 time=49.0 ms + +--- 8.8.8.8 ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2002ms +rtt min/avg/max/mdev = 41.047/43.850/49.062/3.688 ms +*** T3: DNS test: ping to google.com *** +PING google.com (172.253.115.139) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data. +64 bytes from bg-in-f139.1e100.net (172.253.115.139): icmp_seq=1 ttl=99 time=34.4 ms +64 bytes from bg-in-f139.1e100.net (172.253.115.139): icmp_seq=2 ttl=99 time=43.0 ms +64 bytes from bg-in-f139.1e100.net (172.253.115.139): icmp_seq=3 ttl=99 time=42.4 ms + +--- google.com ping statistics --- +3 packets transmitted, 3 received, 0% packet loss, time 2001ms +rtt min/avg/max/mdev = 34.461/39.955/43.000/3.892 ms +``` + +### SD-RAN control plane + +In order to verify the SD-RAN control plane: + + - `make test-kpimon`: to see the number of active UEs + ``` + $ make test-kpimon + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + *** Get KPIMON result through CLI *** + Node ID Cell Object ID Cell Global ID Time RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum + e2:4/e00/2/64 1 e0000 17:03:42.0 1 1 1 1 0 + ``` + - `make test-e2-subscription`: to see e2 connection and subscription + ``` + $ make test-e2-subscription + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + *** Get E2 subscriptions through CLI *** + Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State + 9a8f85fa67a6ef913ef4c0fa8f8fdee4:e2:4/e00/2/64 67 oran-e2sm-kpm:v2 e2:4/e00/2/64 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE + 43aa0af7ce9a05142e5235c7a8efbd9b:e2:4/e00/2/64 73 oran-e2sm-rsm:v1 e2:4/e00/2/64 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE + ``` + - `make test-rnib` and `make test-uenib`: to check information in R-NIB and UE-NIB + + ``` + $ make test-rnib + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + *** Get R-NIB result through CLI *** + ID: e2:4/e00/3/c8 + Kind ID: e2node + Labels: + Source Id's: + Target Id's: uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07 + Aspects: + - onos.topo.MastershipState={"term":"1","nodeId":"uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07"} + - onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}],"ranFunctionIDs":[1]}}} + + ID: e2:4/e00/2/64/e0000 + Kind ID: e2cell + Labels: + Source Id's: + Target Id's: uuid:74c614b5-8666-67e9-d1a5-97d95ae83dcd + Aspects: + - onos.topo.E2Cell={"cellObjectId":"1","cellGlobalId":{"value":"e0000","type":"ECGI"},"kpiReports":{"RRC.ConnEstabAtt.sum":1,"RRC.ConnEstabSucc.sum":1,"RRC.ConnMax":1,"RRC.ConnMean":1,"RRC.ConnReEstabAtt.sum":0}} + + ID: gnmi:onos-config-7bd4b6f7f6-nb6c8 + Kind ID: onos-config + Labels: + Source Id's: + Target Id's: + Aspects: + - onos.topo.Lease={"expiration":"2022-03-24T17:04:21.115061844Z"} + + ID: e2:4/e00/2/64 + Kind ID: e2node + Labels: + Source Id's: uuid:74c614b5-8666-67e9-d1a5-97d95ae83dcd + Target Id's: uuid:077dca9f-a558-4728-8b6e-6160301a12be + Aspects: + - onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{"slicingConfigType":"E2_SM_RSM_COMMAND_EVENT_TRIGGERS"}]}]}],"ranFunctionIDs":[2]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"O-CU-UP Measurement Container for the EPC connected deployment","type":6,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.sum"},{"id":"value:4","name":"RRC.ConnMean"},{"id":"value:5","name":"RRC.ConnMax"}]}]}],"ranFunctionIDs":[1]}}} + - onos.topo.MastershipState={"term":"1","nodeId":"uuid:077dca9f-a558-4728-8b6e-6160301a12be"} + + ID: a1:onos-a1t-84db77df99-4zpsd + Kind ID: a1t + Labels: + Source Id's: + Target Id's: + Aspects: + - onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.22","port":9639}]} + + ID: e2:onos-e2t-58b4cd867-f4xbb + Kind ID: e2t + Labels: + Source Id's: uuid:077dca9f-a558-4728-8b6e-6160301a12be, uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07 + Target Id's: + Aspects: + - onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.23","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.23","port":5150}]} + - onos.topo.Lease={"expiration":"2022-03-24T17:04:21.582768229Z"} + + $ make test-uenib + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + *** Get UE-NIB result through CLI *** + ID: ac303794-2745-4159-b86e-cc203aa3f6b1 + Aspects: + - onos.uenib.RsmUeInfo={"globalUeId":"ac303794-2745-4159-b86e-cc203aa3f6b1","ueIdList":{"duUeF1apId":{"value":"9594"},"cuUeF1apId":{"value":"9594"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"} e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\" len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[]} + ``` + + - Run `make test-kpimon` before and after detaching the UE to check if the number of active UEs changes. `RRC.ConnMean` shows the number of active UEs changing from 1 to 0, since an emulated UE is detached. + ``` + $ make test-kpimon + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + *** Get KPIMON result through CLI *** + Node ID Cell Object ID Cell Global ID Time RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum + e2:4/e00/2/64 1 e0000 17:04:24.0 1 1 1 1 0 + + $ make detach-ue + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + echo -en "AT+CPIN=0000\r" | nc -u -w 1 localhost 10000 + + OK + echo -en "AT+CGATT=0\r" | nc -u -w 1 localhost 10000 + + OK + + $ make test-kpimon + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105) + *** Get KPIMON result through CLI *** + Node ID Cell Object ID Cell Global ID Time RRC.ConnEstabAtt.sum RRC.ConnEstabSucc.sum RRC.ConnMax RRC.ConnMean RRC.ConnReEstabAtt.sum + e2:4/e00/2/64 1 e0000 17:04:35.0 1 1 1 0 0 + ``` + +## Radio Spectrum Management (RSM) tests + +Create a slice: + +``` +$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 30 --sliceType DL +``` + +Check `onos-topo` result: +``` +$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v + +ID: e2:4/e00/3/c8 +Kind ID: e2node +Labels: +Source Id's: +Target Id's: uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07 +Aspects: +- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}],"ranFunctionIDs":[1]}}} +- onos.topo.MastershipState={"term":"1","nodeId":"uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07"} +- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":30},"ueIdList":[]}]} +``` \ No newline at end of file diff --git a/_posts/2022-03-25-aiab.md b/_posts/2022-03-25-aiab.md new file mode 100644 index 0000000000..17223a8421 --- /dev/null +++ b/_posts/2022-03-25-aiab.md @@ -0,0 +1,206 @@ +--- +title: "Aether-in-a-Box" +last_modified_at: 2022-03-25T16:00:58-04:00 +tags: + - ansible + - aws + - en + - networks + - nfv + - onf + - sdn +toc: true +toc_sticky: true +--- + +[Aether-in-a-Box (AiaB)](https://docs.aetherproject.org/master/developer/aiab.html) is an [ONF](/onf) project that provides an easy way to deploy [Aether’s SD-CORE and Runtime Operational Control (ROC) components](https://docs.aetherproject.org/master/index.html), and then run basic tests to validate the installation. + +AiaB can be set up with a 4G or 5G SD-CORE. In either case, SD-CORE configuration can be done with or without the ROC. The ROC provides an interactive GUI for examining and changing the configuration, and is used to manage the production Aether; it can be deployed to test the integration between ROC and SD-CORE. If the ROC is not deployed, a simple tool called [SimApp](https://docs.sd-core.opennetworking.org/master/configuration/config_simapp.html) is used to configure the required state in SD-CORE for testing core functionality. + +Helm charts are the primary method of installing the SD-CORE and ROC resources. AiaB offers a great deal of flexibility regarding which Helm chart versions to install: + - Local definitions of charts (for testing Helm chart changes) + - Latest published charts (for deploying a development version of Aether) + - Specified versions of charts (for deploying a specific Aether release) + +[![](/assets/images/posts/2022-03-25-aiab/0.png)](https://opennetworking.org/aether/) + +## Prerequisites + +In order to run AiaB, we should prepare at least a single machine (any baremetal server or on premises/cloud VM) with the following minimum requirements: + - CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores + - OS: Ubuntu 18.04 with Kernel 4.15 or later + - RAM: At least 12GB + - Storage: At least 50GB + +For this testing it was used a Ubuntu 18.04 `t2.xlarge` (4 vCPUs / 16 GB) instance on AWS (with port 31194 opened in the corresponding security group). + +## Installation + +Clone the [AiaB repository](https://gerrit.opencord.org/): +``` +$ git clone https://gerrit.opencord.org/aether-in-a-box +``` + +Clone these additional repositories: +``` +$ mkdir -p ~/cord +$ cd ~/cord +$ git clone "https://gerrit.opencord.org/sdcore-helm-charts" +$ git clone "https://gerrit.opencord.org/roc-helm-charts" +``` + +Install the ROC (in this case to configure the 5G SD-CORE): +``` +$ cd /path/to/aether-in-a-box +$ make roc-5g-models +... +until kubectl -n aether-roc exec pod/onos-cli-5d448ff6c4-b7j9p -- \ + curl -s -f -L -X PATCH "http://aether-roc-api:8181/aether-roc-api" \ + --header 'Content-Type: application/json' \ + --data-raw "$(cat /home/ubuntu/aether-in-a-box//roc-5g-models.json)"; do sleep 5; done +"uuid:a58bd6b9-d8cc-411d-ac14-17cec7153221" +``` + +To deploy the 5G SD-CORE and run a test with gNBSim that performs Registration + UE-initiated PDU Session Establishment + sends User Data packets: +``` +$ make 5g-test +... +2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbUpUe][3858759684] Handling: QUIT-EVENT +2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbUpUe][3858759684] Gnb User-plane UE Context terminated +2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbCpUe][3858759684] gNB Control-Plane UE context terminated +2022-03-25T15:15:45Z [DEBU][GNBSIM][RealUe][PduSession][imsi-208930100007496][10] Received last downlink data packet +2022-03-25T15:15:45Z [INFO][GNBSIM][RealUe][PduSession][imsi-208930100007496][10] Pdu Session terminated +2022-03-25T15:15:45Z [INFO][GNBSIM][RealUe][imsi-208930100007496] Real UE terminated +2022-03-25T15:15:45Z [INFO][GNBSIM][SimUe][imsi-208930100007496] Sim UE terminated +2022-03-25T15:15:45Z [INFO][GNBSIM][SimUe][imsi-208930100007496] SIM UE go routine complete +2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Profile Name: profile2 , Profile Type: pdusessest +2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Ue's Passed: 5 , Ue's Failed: 0 +2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Simulation Result: PASS +``` + +Check that everything is up and running: +``` +$ kubectl get po -A +NAMESPACE NAME READY STATUS RESTARTS AGE +aether-roc aether-roc-api-8788d4cf6-dhsd9 1/1 Running 0 6m19s +aether-roc aether-roc-gui-v2-6d674fd446-jgngs 1/1 Running 0 6m19s +aether-roc aether-roc-umbrella-grafana-74b4c6bcf6-vwkh7 2/2 Running 0 6m19s +aether-roc aether-roc-umbrella-kube-state-metrics-6c57fdcdcc-vt6vl 1/1 Running 0 6m19s +aether-roc aether-roc-umbrella-prometheus-acc-alertmanager-55ddf7468542std 2/2 Running 0 6m19s +aether-roc aether-roc-umbrella-prometheus-acc-server-6df774dc96-nncgk 2/2 Running 0 6m19s +aether-roc aether-roc-umbrella-prometheus-ace-server-7d8c6d4578-k7p6x 2/2 Running 0 6m19s +aether-roc aether-roc-umbrella-prometheus-amp-server-67cc457fc7-hdslj 2/2 Running 0 6m18s +aether-roc aether-roc-websocket-855d64549b-zjnbh 1/1 Running 0 6m19s +aether-roc demo-exporter-f97895d8f-2cjl9 1/1 Running 0 6m19s +aether-roc onos-cli-5d448ff6c4-b7j9p 1/1 Running 0 6m19s +aether-roc onos-config-7886676d5b-vtkrb 6/6 Running 0 6m18s +aether-roc onos-consensus-store-0 1/1 Running 0 6m19s +aether-roc onos-topo-585c7c8976-jtg5t 3/3 Running 0 6m19s +aether-roc prom-label-proxy-acc-58dbc89fb8-s595b 1/1 Running 0 6m19s +aether-roc prom-label-proxy-amp-5d54b6d445-55wqv 1/1 Running 0 6m19s +aether-roc sdcore-adapter-v2-5646d455b9-ljjpc 1/1 Running 0 6m18s +aether-roc subscriber-proxy-7d989c6b5d-kkdbn 1/1 Running 0 6m19s +default router 1/1 Running 0 3m46s +kube-system atomix-controller-6989fbdbf-qdp48 1/1 Running 0 7m19s +kube-system atomix-raft-storage-controller-9b4678b97-vrrrq 1/1 Running 0 6m56s +kube-system calico-kube-controllers-dbfbbc4cb-7m8t4 1/1 Running 0 8m33s +kube-system calico-node-cxlfs 1/1 Running 0 8m42s +kube-system coredns-bbb7d66cd-4k86p 1/1 Running 0 8m20s +kube-system dns-autoscaler-7cdcfcf64f-s8hdf 1/1 Running 0 8m17s +kube-system kube-apiserver-node1 1/1 Running 0 9m26s +kube-system kube-controller-manager-node1 1/1 Running 0 9m26s +kube-system kube-multus-ds-amd64-z5jp6 1/1 Running 0 8m36s +kube-system kube-proxy-9b5h5 1/1 Running 0 8m42s +kube-system kube-scheduler-node1 1/1 Running 0 9m26s +kube-system nodelocaldns-52bkt 1/1 Running 0 8m16s +kube-system onos-operator-app-6b98cbf864-64vwv 1/1 Running 0 6m43s +kube-system onos-operator-topo-6ddd5875ff-5rqd7 1/1 Running 0 6m44s +omec amf-7465456d9f-5mbzx 1/1 Running 0 3m25s +omec ausf-654bbdd6b-7bd55 1/1 Running 0 3m25s +omec gnbsim-0 1/1 Running 0 3m25s +omec mongodb-5fcdcff994-bqnpm 1/1 Running 0 3m25s +omec nrf-5db5789644-65wmd 1/1 Running 0 3m25s +omec nssf-775fdfbbb4-mbs4t 1/1 Running 0 3m25s +omec pcf-756b565d85-h8p2w 1/1 Running 0 3m25s +omec simapp-65dc44b9d-gj9fh 1/1 Running 0 3m25s +omec smf-9bbcf84bc-5xdbq 1/1 Running 0 3m25s +omec udm-5ff558bc69-pfpxh 1/1 Running 0 3m25s +omec udr-cc4654c64-x5pfr 1/1 Running 0 3m25s +omec upf-0 5/5 Running 0 3m25s +omec webui-6db4cfdc55-2wlp7 1/1 Running 0 3m25s +``` + +## Resource usage + +For this particular `t2.xlarge` instance: + - Load + ``` + $ uptime + 15:16:13 up 45 min, 2 users, load average: 1.81, 3.32, 2.17 + ``` + + - Memory + ``` + $ free -h + total used free shared buff/cache available + Mem: 15G 2.7G 1.4G 825M 11G 12G + Swap: 0B 0B 0B + ``` + + - Disk + ``` + $ $ df -h | egrep -v 'overlay|shm' + Filesystem Size Used Avail Use% Mounted on + udev 7.9G 0 7.9G 0% /dev + tmpfs 1.6G 8.8M 1.6G 1% /run + /dev/xvda1 97G 12G 86G 12% / + tmpfs 5.0M 0 5.0M 0% /run/lock + tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup + /dev/loop0 43M 43M 0 100% /snap/snapd/14066 + /dev/loop1 56M 56M 0 100% /snap/core18/2253 + /dev/loop2 25M 25M 0 100% /snap/amazon-ssm-agent/4046 + tmpfs 1.6G 0 1.6G 0% /run/user/1000 + ``` + +## ROC GUI + +The ROC GUI is available on port 31194 on the host running AiaB. + + - Dashboard + ![](/assets/images/posts/2022-03-25-aiab/01.png) + + - Alert view + ![](/assets/images/posts/2022-03-25-aiab/02.png) + + - Slice view + ![](/assets/images/posts/2022-03-25-aiab/03.png) + + - User plane function view + ![](/assets/images/posts/2022-03-25-aiab/04.png) + + - Device groups view + ![](/assets/images/posts/2022-03-25-aiab/05.png) + + - Devices view + ![](/assets/images/posts/2022-03-25-aiab/06.png) + + - SIM cards view + ![](/assets/images/posts/2022-03-25-aiab/07.png) + + - Sites view + ![](/assets/images/posts/2022-03-25-aiab/08.png) + + - Small cells view + ![](/assets/images/posts/2022-03-25-aiab/09.png) + + - Traffic classes view + ![](/assets/images/posts/2022-03-25-aiab/10.png) + + - IP domains view + ![](/assets/images/posts/2022-03-25-aiab/11.png) + + - Enterprises view + ![](/assets/images/posts/2022-03-25-aiab/12.png) + + - Connectivity services view + ![](/assets/images/posts/2022-03-25-aiab/13.png) diff --git a/_posts/2022-04-01-shift-aws-foundations-7.md b/_posts/2022-04-01-shift-aws-foundations-7.md new file mode 100644 index 0000000000..5f2cf9bdea --- /dev/null +++ b/_posts/2022-04-01-shift-aws-foundations-7.md @@ -0,0 +1,47 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 7th edition" +last_modified_at: 2022-04-01T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **05/04** e **10/05**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2022-04-08-hcia-19.md b/_posts/2022-04-08-hcia-19.md new file mode 100644 index 0000000000..caae75a21d --- /dev/null +++ b/_posts/2022-04-08-hcia-19.md @@ -0,0 +1,27 @@ +--- +title: "HCIA Datacom - 19th edition" +last_modified_at: 2022-04-08T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2022-04-08-hcia-19.jpeg)](https://www.sympla.com.br/treinamento-em-redes---19-edicao-copia__1543152) + +Informamos que estão abertas as inscrições do **19º Treinamento em Tecnologia de Informação e Comunicação** convênio USP e **HUAWEI – HCIA – Datacom V1.0**, totalmente gratuito e virtual. + +As inscrições podem ser realizadas por este [link](https://www.sympla.com.br/treinamento-em-redes---19-edicao-copia__1543152). + +Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos. + +O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP ([Inova.USP](https://inova.usp.br/)) – Huawei, totalmente na modalidade on-line. + +Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área. + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). + +[![](/assets/images/posts/2021-03-26-hcia-15/2.png)](https://inova.usp.br/) \ No newline at end of file diff --git a/_posts/2022-04-12-aws-certs-desconto.md b/_posts/2022-04-12-aws-certs-desconto.md new file mode 100644 index 0000000000..27a139aaf5 --- /dev/null +++ b/_posts/2022-04-12-aws-certs-desconto.md @@ -0,0 +1,21 @@ +--- +title: "Exames de Certificação AWS com desconto" +last_modified_at: 2022-04-12T17:00:58-04:00 +tags: + - aws + - cert + - pt +toc: false +--- + +[![](/assets/images/posts/2022-04-12-aws-certs-desconto/1.png)](https://pages.awscloud.com/LATAM-launch-STR-aws-certification-disc-br-2022-interest.html) + +A AWS está com descontos de 50% a 85% nas certificações: + - AWS Certified Cloud Practitioner - 85% de desconto + - AWS Certified Developer Associate - 50% de desconto + - AWS Certified Solutions Architect Associate - 50% de desconto + +Mais informações no seguinte [link](https://pages.awscloud.com/LATAM-launch-STR-aws-certification-disc-br-2022-interest.html). + +Passo a passo de como obter o desconto: +![](/assets/images/posts/2022-04-12-aws-certs-desconto/2.png) \ No newline at end of file diff --git a/_posts/2022-04-12-shift-aws-dev-4.md b/_posts/2022-04-12-shift-aws-dev-4.md new file mode 100644 index 0000000000..f5d046d9ce --- /dev/null +++ b/_posts/2022-04-12-shift-aws-dev-4.md @@ -0,0 +1,108 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Developing - 4th edition" +last_modified_at: 2022-04-12T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) + +Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação **[AWS Certified Developer - Associate (DVA-C01)](https://aws.amazon.com/pt/certification/certified-developer-associate/)**. Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos. + +## Para quem? +Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS. + +## Pré-requisito +Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso. + +## SHIFT remoto + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy). Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Benefício FIAP +Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner). + + +## Conteúdo + + - Módulo 1: INTRODUCTION TO DEVELOPING ON AWS + * Recognize the systems development life cycle, and describe how to start to developing on AWS. + * Indicate how to work with AWS SDKs. + * Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools. + * Develop and run a simple program in AWS Cloud9. + - Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) + * Recognize the shared responsibility model. + * Explain how IAM helps secure access to AWS resources. + * Describe IAM user authentication. + * Identify how to authorize an IAM user, group, or role. + - Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 + * Describe how Amazon S3 can be used as a storage solution. + * Identify Amazon S3 features and components. + * Describe two ways to protect data with Amazon S3. + * Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE). + * Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs. +- Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB + * Identify Amazon DynamoDB features. + * Describe Amazon DynamoDB components. + * Explain how Amazon DynamoDB uses partitions. + * Indicate how indexes are used with Amazon DynamoDB. + * Describe how Amazon DynamoDB keeps data consistent. + * Recognize when streaming and global tables are used. + * Explain the backup and restoration process. + * Develop flexible NoSQL solutions with Amazon DynamoDB. +- Módulo 5: CACHING INFORMATION FOR SALABILITY + * Explain when caching is used. + * Describe caching with Amazon CloudFront. + * Describe caching with Amazon ElastiCache Apply caching strategies. +- Módulo 6: INTRODUCTION TO CONTAINERS + * Describe the history, technology, and terminology behind containers. + * Differentiate containers from bare-metal servers and virtual machines. + * Identify the characteristics of a microservices architecture. + * Recognize the drivers for using container-based workloads. + * Host a basic website by using Docker containers. +- Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS + * Recall how message queues works. + * Describe Amazon SQS. + * Send messages to an SQS queue. + * Describe Amazon SNS. + * Explain Amazon SNS concepts. + * Describe Amazon MQ. +- Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA + * Explain serverless computing. + * Describe how AWS Lambda works. + * Recognize AWS Lambda execution models. + * Identify how to use AWS IAM to grant Lambda permissions. + * Indicate the steps to author and configure a Lambda functions. + * Explain how to deploy serverless applications. + * Develop event-driven solutions with AWS Lambda. +- Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY + * Recognize application programming interfaces. + * Describe Amazon API Gateway. + * Indicate the steps for developing RESTful APIs with Amazon API Gateway. +- Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS + * Recognize the dynamics of workflow coordination in distributed applications. + * Describe AWS Step Functions. + * Identify state types. + * Indicate common use cases for AWS Step Functions. + * Recall AWS Step Functions APIs. +- Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS + * Identity how to secure applications. + * Describe how to manage your application’s secrets. + * Recall how to authenticate with AWS Security Token Service. + * Describe how Amazon Cognito is used to build secure applications. +- Módulo 12: DEPLOYING APPLICATIONS ON AWS + * Describe DevOps + * Recognize AWS code services for CI/CD + * Summarize deployment strategies + * Describe how AWS Elastic Beanstalk is used to deploy applications + * Describe how AWS CloudFormation is used to deploy applications + * Describe how AWS SAM is used to deploy serverless applications. + + + [![](/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) \ No newline at end of file diff --git a/_posts/2022-04-14-aws-learning-badges.md b/_posts/2022-04-14-aws-learning-badges.md new file mode 100644 index 0000000000..8d8df4d3ea --- /dev/null +++ b/_posts/2022-04-14-aws-learning-badges.md @@ -0,0 +1,28 @@ +--- +title: "AWS Learning Badges" +last_modified_at: 2022-04-14T16:00:58-04:00 +tags: + - aws + - cert + - en +toc: false +--- + +## What is an AWS Learning Badge? + +AWS Learning badges are credentials that offer these benefits: + - AWS digital badges demonstrate your knowledge and skills for specific AWS cloud topics, such as Object Storage + - AWS digital badges are shareable on social networks to help you stand out to recruiters and prospective hiring managers + - AWS digital badges are free to earn and share + +## What types of AWS Learning Badges are available? + +AWS Learning badges are aligned to select [AWS Skill Builder](/skillbuilder) learning plans, such as: + + - [Storage Learning Plan - Object](https://explore.skillbuilder.aws/learn/public/learning_plan/view/51/storage-learning-plan-object-storage) + - [Storage Learning Plan - Block](https://explore.skillbuilder.aws/learn/public/learning_plan/view/93/storage-learning-plan-block-storage) + +More AWS digital badges will be made available over time. + +
+
\ No newline at end of file diff --git a/_posts/2022-04-20-rh-creddly.md b/_posts/2022-04-20-rh-creddly.md new file mode 100644 index 0000000000..d945a7fd40 --- /dev/null +++ b/_posts/2022-04-20-rh-creddly.md @@ -0,0 +1,39 @@ +--- +title: "Digital credentials for Red Hat Certified Professionals" +last_modified_at: 2022-05-02T16:00:58-04:00 +tags: + - ansible + - cert + - en + - openshift + - openstack + - redhat + - sds +toc: false +--- + +[Red Hat Digital Credentials](https://www.redhat.com/en/about/digital-credential-program) recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat technologies and to support customer success. A digital credential is earned upon meeting defined criteria, and Red Hat digital credentials can represent many types of achievements. A Red Hat digital badge is a sharable, verified, portable, data-rich form of that record. + +After successfully passing a Red Hat Certification exam and updating your Red Hat account profile page to request a Red Hat Certification digital credential, you will receive an email notification directly from [Credly](https://www.youracclaim.com/organizations/red-hat-inc/badges) with instructions on how to accept and begin sharing your Red Hat digital badge. The acceptance of the Red Hat Certification digital badge is completely optional. + +If your Red Hat Certification is current, Red Hat will retroactively issue a digital badge via Credly, which will be available and valid until the certification expires. If your Red Hat Certification expires, the digital badge will be updated to reflect this information. + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
\ No newline at end of file diff --git a/_posts/2022-04-24-security-fundamentals.md b/_posts/2022-04-24-security-fundamentals.md new file mode 100644 index 0000000000..6684cc4b82 --- /dev/null +++ b/_posts/2022-04-24-security-fundamentals.md @@ -0,0 +1,40 @@ +--- +title: "Microsoft Security Virtual Training Day" +last_modified_at: 2022-04-24T16:00:58-04:00 +tags: + - azure + - cert + - en +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2021-04-08-azure-fundamentals/1.png)](https://www.microsoft.com/en-us/trainingdays) + +By participating in the following [Microsoft Virtual Training Days](https://www.microsoft.com/en-us/trainingdays): + - Microsoft Security Virtual Training Day: Security, Compliance, and Identity Fundamentals + +You’ll be eligible to take the following certification exam at no cost: + - [Microsoft Security, Compliance, and Identity Fundamentals (SC-900)](https://docs.microsoft.com/en-us/learn/certifications/exams/sc-900) + + +# Security Fundamentals + +Learn the basic concepts of security, compliance and identity at Microsoft Security Training Day: Security, Compliance, and Identity Fundamentals. Learn the compliance management capabilities in Microsoft, the capabilities of Microsoft Identity and access management solutions and Microsoft Security solutions. + +## Course Objectives + - Understand the fundamentals of security, compliance and identity (SCI) across cloud-based and related Microsoft Services. + - Learn to apply your knowledge across cloud-based and related Microsoft Services + - After completing this free training, you'll be eligible to take the Microsoft Security, Compliance and Identity Fundamentals certification exam at no cost + +## Content + - Zero Trust methodology, guiding principles and 6 foundation elements used in the Zero Trust Model + - Common security threats and ways to protect through the defence in-depth security model + - Insider risk, eDiscovery and audit capabilities in Microsoft 365 + - Compliance management capabilities in Microsoft, including the Service Trust portal, Microsoft 365 compliance centre, Microsoft privacy principles + +# Free certification + +After completing this free training you’ll be eligible to take the certifications exam at no cost. + +
\ No newline at end of file diff --git a/_posts/2022-04-25-rh-summit22.md b/_posts/2022-04-25-rh-summit22.md new file mode 100644 index 0000000000..05db6599a8 --- /dev/null +++ b/_posts/2022-04-25-rh-summit22.md @@ -0,0 +1,17 @@ +--- +title: "Red Hat Summit 2022" +last_modified_at: 2022-04-25T16:00:58-04:00 +tags: + - ansible + - en + - events + - openshift + - redhat +toc: false +--- + +[![](/assets/images/posts/2022-04-25-rh-summit22/1.png)](https://reg.experiences.redhat.com/flow/redhat/sum22/registration2022virtual/login) + +When you join IT leaders and peers at our no-cost virtual event, you can chart your hybrid cloud strategy and our open source future. Check out the [available sessions](https://events.experiences.redhat.com/widget/redhat/sum22/SessionCatalog22) to explore ways you can participate in the Red Hat® Summit experience taking place May 10-11. Virtual registration is [live](https://reg.experiences.redhat.com/flow/redhat/sum22/registration2022virtual/login). + +![](/assets/images/posts/2022-04-25-rh-summit22/2.png) \ No newline at end of file diff --git a/_posts/2022-04-25-wifi6.md b/_posts/2022-04-25-wifi6.md new file mode 100644 index 0000000000..83cf71ec21 --- /dev/null +++ b/_posts/2022-04-25-wifi6.md @@ -0,0 +1,18 @@ +--- +title: "Evolução tecnológica do Wi-Fi 6" +last_modified_at: 2022-04-26T16:00:58-04:00 +tags: + - events + - huawei + - pt + - webinar +toc: false +--- + +[![](/assets/images/posts/2022-04-25-wifi6.png)](https://isurvey.huawei.com/survey/#/privacy-page?surveyId=54035&customerId=0&placementId=0&channel=0&uuid=0fa4c819686e46ac93ce2ec1ac8ea502) + +Evento on-line promovido pela Huawei e FiberX, onde será apresentado o seguinte tema: **Evolução Tecnológica do Wi-fi 6**. O evento ocorrerá em 26/04/2022 às 16h. + +Será um evento online de uma hora de duração e quem realizar a inscrição pelo [link](https://isurvey.huawei.com/survey/#/privacy-page?surveyId=54035&customerId=0&placementId=0&channel=0&uuid=0fa4c819686e46ac93ce2ec1ac8ea502) receberá um certificado de participação no evento. + +{% include video id="Njef2q7Yx7s" provider="youtube" %} diff --git a/_posts/2022-04-27-eu-capacito.md b/_posts/2022-04-27-eu-capacito.md new file mode 100644 index 0000000000..b25fd5f8f2 --- /dev/null +++ b/_posts/2022-04-27-eu-capacito.md @@ -0,0 +1,36 @@ +--- +title: "Programa EU CAPACITO" +last_modified_at: 2022-04-27T16:00:58-04:00 +tags: + - classes + - fiap + - pt +toc: false +--- + +[![](/assets/images/posts/2022-04-27-eu-capacito.png)](https://www.institutoitmidia.com.br/eu-capacito/) + +Em conjunto com o [EU CAPACITO](https://www.institutoitmidia.com.br/eu-capacito/), programa liderado pelo [Instituto IT Mídia](https://www.institutoitmidia.com.br/), a FIAP oferece 20 Nano Courses gratuitos. São cursos de 40 a 160 horas nas áreas de Tecnologia, Inovação e Negócios. + +[Cadastre-se](https://on.fiap.com.br/local/programaeucapacito/) e escolha os seus. + +- Blockchain Advanced (100 horas) +- Business Intelligence (40 horas) +- Customer Experience Management (40 horas) +- Design Thinking (40 horas) +- DevOps & Agile Culture (60 horas) +- Inteligência Artificial e Computacional (80 horas) +- Mobile Marketing (60 horas) +- Python (40 horas) +- Soluções Tecnológicas Emergentes (40 horas) +- User Experience (60 horas) +- Gestão de Infraestrutura de TI (40 horas) +- Leadership Communication (60 horas) +- Big Data & Analytics (120 horas) +- Linux Fundamentos (40 horas) +- Cloud Computing & Data Science (160 horas) +- Java Fundamentos (80 horas) +- Cybersecurity (120 horas) +- Design Gráfico (120 horas) +- Gestão Financeira de Empresas (40 horas) +- Marketing em Plataformas de Social Media (80 horas) diff --git a/_posts/2022-05-19-cati22.md b/_posts/2022-05-19-cati22.md new file mode 100644 index 0000000000..45030e5c26 --- /dev/null +++ b/_posts/2022-05-19-cati22.md @@ -0,0 +1,13 @@ +--- +title: "II CATI: Congresso acadêmico de tecnologia da informação" +last_modified_at: 2022-05-19T16:00:58-04:00 +tags: + - events + - pt + - webinar +toc: false +--- + +## Nuvens híbridas e soluções Red Hat + +[![](/assets/images/posts/2022-05-19-cati22.jpeg)](https://www.youtube.com/watch?v=stKWaGk1__4) diff --git a/_posts/2022-05-25-venko.md b/_posts/2022-05-25-venko.md new file mode 100644 index 0000000000..f772e88f48 --- /dev/null +++ b/_posts/2022-05-25-venko.md @@ -0,0 +1,31 @@ +--- +title: "Estruturando redes com Múltiplos Fornecedores como uma Rede Neutra" +last_modified_at: 2022-05-19T16:00:58-04:00 +tags: + - events + - networks + - nfv + - onf + - pt + - sdn +toc: false +--- + +[![](/assets/images/posts/2022-05-25-venko/1.jpg)](https://form.jotform.com/221327985456667) + +Este evento vai, ao mesmo tempo, mostrar como estruturar **múltiplos serviços**, de **múltiplos fabricantes** e **rentabilizar esta estrutura** unificada ao **alugá-la para terceiros**. Tudo com uma gestão simples, centralizada e econômica. + +**Programa**: + - Venko - Desafios na Construção de Redes Multi-Vendor + - TIP/ONF - Padronização e Soluções Abertas + - Intraway - Solução de Orquestração e Abstração Multi-Tenant + - Netsia - Virtualização de OLT + - Zyxel - Soluções PON + +**Horário**: 8h30-11h30 + +**Local**: We Work Jardim das Perdizes - Avenida Nicolas Boer, 399 - Jardim das Perdizes, São Paulo - SP + +[ONF Community Highlights – April/May 2022](https://opennetworking.org/news-and-events/blog/community-highlights-april-may-2022/) + +![](/assets/images/posts/2022-05-25-venko/2.jpeg) \ No newline at end of file diff --git a/_posts/2022-06-08-perfcon22.md b/_posts/2022-06-08-perfcon22.md new file mode 100644 index 0000000000..aa4db82ff8 --- /dev/null +++ b/_posts/2022-06-08-perfcon22.md @@ -0,0 +1,30 @@ +--- +title: "PerfConf Spring 2022" +last_modified_at: 2022-06-08T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - openshift + - redhat + - sdn +toc: yes +toc_sticky: true +--- + +## [Proceedings](https://perfconfspring2022.sched.com/) + +[**MetalLB Perf&Scale Testing**](https://perfconfspring2022.sched.com/event/13Nri/metallb-perfscale-testing) + +MetalLB is a load-balancer implementation for bare metal Kubernetes clusters, using standard routing protocols (like BGP). For OCP 4.10, MetalLB speaker's implementation was reimplemented into FRR and support for BGP was added as a GA feature. In this talk, we will present the results of the MetalLB Perf&Scale testing report along with some tooling improvements to cope with this scenario. + +Wednesday, June 8 • 2:45pm - 3:15pm CEST + +Google Meet ID: [https://meet.google.com/uvo-pbwv-dbt](https://meet.google.com/uvo-pbwv-dbt) + +## Speakers + - [Jose Castillo Lema](https://perfconfspring2022.sched.com/speaker/jlema) - Software Engineer at **Red Hat** + - [Murali Krishnasamy](https://perfconfspring2022.sched.com/speaker/mukrishn) - Software Engineer at **Red Hat** + + diff --git a/_posts/2022-06-13-women-cloud.md b/_posts/2022-06-13-women-cloud.md new file mode 100644 index 0000000000..56819a16d2 --- /dev/null +++ b/_posts/2022-06-13-women-cloud.md @@ -0,0 +1,23 @@ +--- +title: "AWS - Mulheres em Cloud" +last_modified_at: 2022-06-13T16:00:58-04:00 +tags: + - aws + - classes + - fiap + - pt +toc: false +--- + +[![](/assets/images/posts/2022-06-13-women-cloud.jpeg)](https://aws-mulheres-em-cloud-2022.splashthat.com/) + +Sabemos que a tecnologia tem um poder transformador quando aliada à educação e podemos usá-la como ferramenta nos impactos positivos na luta de igualdade social. + +A AWS apoia uma força de trabalho STEM (abordagem interdisciplinar inovadora que engloba temas como ciências, tecnologia, engenharia e matemática) como uma comunidade global, diversificada e inclusiva, e por isso preparou um dia muito especial para inspirar, motivar e conectar suas alunas e educadoras ao próximo nível de sua carreira em tecnologia. + +Este é um convite para ser encaminhado às nossas convidadas especiais do **Mulheres em Cloud**, no dia 30 de Junho. + +Atenção para as tripulantes: + +- Trazer um notebook no dia do evento para atividade prática +- [Registrar-se](https://aws-mulheres-em-cloud-2022.splashthat.com/) até o dia 20 de Junho \ No newline at end of file diff --git a/_posts/2022-06-15-rh-giveback.md b/_posts/2022-06-15-rh-giveback.md new file mode 100644 index 0000000000..c36d41b8bf --- /dev/null +++ b/_posts/2022-06-15-rh-giveback.md @@ -0,0 +1,16 @@ +--- +title: "Red Hat Giveback Program" +last_modified_at: 2022-06-15T16:00:58-04:00 +tags: + - en + - redhat +toc: false +--- + +The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contributions which impact Red Hat. + +
+ +
+ +
\ No newline at end of file diff --git a/_posts/2022-06-20-apn.md b/_posts/2022-06-20-apn.md new file mode 100644 index 0000000000..301a19dda7 --- /dev/null +++ b/_posts/2022-06-20-apn.md @@ -0,0 +1,31 @@ +--- +title: "AWS Partner Network" +last_modified_at: 2022-06-20T16:00:58-04:00 +tags: + - aws + - cert + - en +toc: false +--- + +[![](/assets/images/posts/2022-06-20-apn.jpeg)](https://aws.amazon.com/partners/) + +The AWS Partner Network (APN) is a global community of partners that leverages programs, expertise, and resources to build, market, and sell customer offerings. + +This diverse network features 100,000 partners from more than 150 countries. As an AWS Partner, you are uniquely positioned to help customers take full advantage of all that AWS has to offer and accelerate their journey to the cloud. + +Together, partners and AWS can provide innovative solutions, solve technical challenges, win deals, and deliver value to our mutual customers. + +One of the Partner Resources is Partner Training and Certification, to deepen your AWS knowledge and skills with digital and classroom trainings. + +
+ +
+ +
+ +
+ +
+ +
\ No newline at end of file diff --git a/_posts/2022-06-22-educate-relaunch.md b/_posts/2022-06-22-educate-relaunch.md new file mode 100644 index 0000000000..89248722ec --- /dev/null +++ b/_posts/2022-06-22-educate-relaunch.md @@ -0,0 +1,19 @@ +--- +title: "AWS Educate relaunch" +last_modified_at: 2022-06-22T16:00:58-04:00 +tags: + - aws + - cert + - en +toc: false +--- + +[![](/assets/images/posts/2022-06-22-educate-relaunch.png)](https://aws.amazon.com/education/awseducate/) + +AWS Educate is now open to any individual, regardless of where they are in their education, technical experience, or career journey. + +AWS Educate offers hundreds of hours of self-paced training and resources for new-to-cloud learners—including hands-on labs in the AWS Management Console. The platform guides you to targeted training content based on your knowledge, goals, interests, and age. Check out some of the most popular course offerings. + +
+ +
\ No newline at end of file diff --git a/_posts/2022-07-01-baseline-operator.md b/_posts/2022-07-01-baseline-operator.md new file mode 100644 index 0000000000..a373458f23 --- /dev/null +++ b/_posts/2022-07-01-baseline-operator.md @@ -0,0 +1,17 @@ +--- +title: "baseline-operator" +last_modified_at: 2022-07-01T16:00:58-04:00 +tags: + - en + - openshift +toc: true +toc_sticky: true +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/baseline-operator/master/README.md %} + + diff --git a/_posts/2022-07-09-shift-aws-foundations-8.md b/_posts/2022-07-09-shift-aws-foundations-8.md new file mode 100644 index 0000000000..fc7fa5346d --- /dev/null +++ b/_posts/2022-07-09-shift-aws-foundations-8.md @@ -0,0 +1,47 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 8th edition" +last_modified_at: 2022-07-09T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **19/07** e **24/08**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2022-08-10-rh-research.md b/_posts/2022-08-10-rh-research.md new file mode 100644 index 0000000000..63e8f9f2a9 --- /dev/null +++ b/_posts/2022-08-10-rh-research.md @@ -0,0 +1,37 @@ +--- +title: "Red Hat Research" +last_modified_at: 2022-11-21T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-08-10-rh-research/1.jpg)](https://research.redhat.com/) + +## About + +Red Hat Research connects Red Hat engineers with professors, researchers, and students to bring great research ideas into open source communities. Our activities around the world have produced grants from government and industry, papers at top conferences, and results that have landed in open source projects of all kinds. Red Hat Research welcomes participation from research-minded individuals around the world. + +## Research Areas + +The Red Hat Research Program emphasizes research projects (PhD dissertations, Master’s Theses, multi-partner government-funded collaborations) in key areas described below. However, we are always evaluating what the next interest area is based on what we’re hearing from our academic and industry partners and seeing in our own explorations: + - [AI/ML](https://research.redhat.com/research-areas/ai-ml/) + - [Cloud/DS](https://research.redhat.com/research-areas/cloud-ds/) + - [Hardware and the OS](https://research.redhat.com/research-areas/hardware-and-the-os/) + - [Security, Privacy, Cryptography](https://research.redhat.com/research-areas/security-privacy-cryptography/) + - [Testing and Ops](https://research.redhat.com/research-areas/testing-and-ops/) + + +## Profile + +[![](/assets/images/posts/2022-08-10-rh-research/2.png)](https://research.redhat.com/blog/project_member/jose-castillo-lema/) + + +## Projects + +- [PHYSICS](/physics): oPtimized HYbrid Space-time servIce Continuum in faaS +- [ICOS](/icos): IoT2Cloud Operating System \ No newline at end of file diff --git a/_posts/2022-08-11-shift-aws-dev-5.md b/_posts/2022-08-11-shift-aws-dev-5.md new file mode 100644 index 0000000000..f902e8fc6d --- /dev/null +++ b/_posts/2022-08-11-shift-aws-dev-5.md @@ -0,0 +1,105 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Developing - 5th edition" +last_modified_at: 2022-08-11T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) + +Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação **[AWS Certified Developer - Associate (DVA-C01)](https://aws.amazon.com/pt/certification/certified-developer-associate/)**. Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos. + +## Para quem? +Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS. + +## Pré-requisito +Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso. + +## SHIFT remoto + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy). Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Benefício FIAP +Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner). + + +## Conteúdo + + - Módulo 1: INTRODUCTION TO DEVELOPING ON AWS + * Recognize the systems development life cycle, and describe how to start to developing on AWS. + * Indicate how to work with AWS SDKs. + * Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools. + * Develop and run a simple program in AWS Cloud9. + - Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) + * Recognize the shared responsibility model. + * Explain how IAM helps secure access to AWS resources. + * Describe IAM user authentication. + * Identify how to authorize an IAM user, group, or role. + - Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 + * Describe how Amazon S3 can be used as a storage solution. + * Identify Amazon S3 features and components. + * Describe two ways to protect data with Amazon S3. + * Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE). + * Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs. +- Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB + * Identify Amazon DynamoDB features. + * Describe Amazon DynamoDB components. + * Explain how Amazon DynamoDB uses partitions. + * Indicate how indexes are used with Amazon DynamoDB. + * Describe how Amazon DynamoDB keeps data consistent. + * Recognize when streaming and global tables are used. + * Explain the backup and restoration process. + * Develop flexible NoSQL solutions with Amazon DynamoDB. +- Módulo 5: CACHING INFORMATION FOR SALABILITY + * Explain when caching is used. + * Describe caching with Amazon CloudFront. + * Describe caching with Amazon ElastiCache Apply caching strategies. +- Módulo 6: INTRODUCTION TO CONTAINERS + * Describe the history, technology, and terminology behind containers. + * Differentiate containers from bare-metal servers and virtual machines. + * Identify the characteristics of a microservices architecture. + * Recognize the drivers for using container-based workloads. + * Host a basic website by using Docker containers. +- Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS + * Recall how message queues works. + * Describe Amazon SQS. + * Send messages to an SQS queue. + * Describe Amazon SNS. + * Explain Amazon SNS concepts. + * Describe Amazon MQ. +- Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA + * Explain serverless computing. + * Describe how AWS Lambda works. + * Recognize AWS Lambda execution models. + * Identify how to use AWS IAM to grant Lambda permissions. + * Indicate the steps to author and configure a Lambda functions. + * Explain how to deploy serverless applications. + * Develop event-driven solutions with AWS Lambda. +- Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY + * Recognize application programming interfaces. + * Describe Amazon API Gateway. + * Indicate the steps for developing RESTful APIs with Amazon API Gateway. +- Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS + * Recognize the dynamics of workflow coordination in distributed applications. + * Describe AWS Step Functions. + * Identify state types. + * Indicate common use cases for AWS Step Functions. + * Recall AWS Step Functions APIs. +- Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS + * Identity how to secure applications. + * Describe how to manage your application’s secrets. + * Recall how to authenticate with AWS Security Token Service. + * Describe how Amazon Cognito is used to build secure applications. +- Módulo 12: DEPLOYING APPLICATIONS ON AWS + * Describe DevOps + * Recognize AWS code services for CI/CD + * Summarize deployment strategies + * Describe how AWS Elastic Beanstalk is used to deploy applications + * Describe how AWS CloudFormation is used to deploy applications + * Describe how AWS SAM is used to deploy serverless applications. \ No newline at end of file diff --git a/_posts/2022-09-01-hcia-20.md b/_posts/2022-09-01-hcia-20.md new file mode 100644 index 0000000000..4c536bec2e --- /dev/null +++ b/_posts/2022-09-01-hcia-20.md @@ -0,0 +1,27 @@ +--- +title: "HCIA Datacom - 20th edition" +last_modified_at: 2022-09-01T16:00:58-04:00 +tags: + - cert + - classes + - huawei + - networks + - pt +toc: false +--- + +[![](/assets/images/posts/2022-09-01-hcia-20.jpeg)](https://www.sympla.com.br/treinamento-em-redes---20-edicao__1696278) + +Informamos que estão abertas as inscrições do **20º Treinamento em Tecnologia de Informação e Comunicação** convênio USP e **HUAWEI – HCIA – Datacom V1.0**, totalmente gratuito e virtual. + +As inscrições podem ser realizadas por este [link](https://www.sympla.com.br/treinamento-em-redes---20-edicao__1696278). + +Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos. + +O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP ([Inova.USP](https://inova.usp.br/)) – Huawei, totalmente na modalidade on-line. + +Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área. + +Uma vez aprovado no processo seletivo seguir [as seguintes instruções](/haina-talent) para efetuar o cadastro na plataforma EaD [Huawei Talent Online](https://e.huawei.com/en/talent). + +[![](/assets/images/posts/2021-03-26-hcia-15/2.png)](https://inova.usp.br/) diff --git a/_posts/2022-09-02-icos.md b/_posts/2022-09-02-icos.md new file mode 100644 index 0000000000..55dd43fe34 --- /dev/null +++ b/_posts/2022-09-02-icos.md @@ -0,0 +1,58 @@ +--- +title: "ICOS EU project" +last_modified_at: 2022-09-02T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-09-02-icos/0.webp)](https://www.icos-project.eu/) + +## The project + +The unstoppable proliferation of novel computing and sensing device technologies, and the ever-growing demand for data-intensive applications in the edge and cloud, are driving the next wave of transformation in computing systems architecture. The resulting paradigm shift in computing is centered around dynamic, intelligent and yet seamless interconnection of IoT, edge and cloud resources in one computing system, to form a continuum. + +A continuum, today also referred to as cloud continuum, IoT continuum, edge-to-cloud or fog-to- cloud, is expected to provide the means for data processing both in the edge and cloud, while inferring and persisting important information for post-mortem and offline analysis. We envision a holistic approach towards the solutioning of this technology trend in future systems, by architecting, designing and implementing the continuum as extensible, open, secure, adaptable, AI-powered as well as well highly performant and technology agnostic, managed through a meta OS, i.e., **IoT2Cloud Operating System** (ICOS). + +![](/assets/images/posts/2022-09-02-icos/1.webp) + +## Features + +- Devices volatility and heterogeneity, continuum infrastructure virtualization and diverse network connectivity +- Optimized and scalable service execution and performance, as well as resources consumptions, including power consumption +- Guaranteed trust, security and privacy +- Reduction of integration costs and effective mitigation of cloud provider lock-in effects, in a data-driven system built upon the principles of openness, adaptability, data sharing and a future edge market scenario for services and data + +![](/assets/images/posts/2022-09-02-icos/2.webp) + + +## Use cases +- In-car Advanced Infotainment and Multimedia Management system (IAIMM) +- Agriculture Operational Robotic Platform (AORP) +- Railway Structural Alert Monitoring system (RSAM) +- Energy Management and Decision Support system (EMDS) + +## Consortium + +- Atos +- Barcelona Supercomputing Center +- CeADAR - Ireland's Centre for Applied AI +- Engineering +- Ferrocarrils de la Generalitat de Catalunya (FGC) +- Lukasiewicz - Poznanski Instytut Technologiczny +- National and Kapodistrian University of Athens +- Red Hat +- SixSQ +- Stellantis +- Suite 5 +- Technische Universitãt Braunschweig +- Universitat Politécnica de Catalunya +- World Sensing +- XLab +- Zetta Scale + +To learn more about the ICOS project, visit the [ICOS project page](https://www.icos-project.eu/). Read more about it in the [Red Hat Research blog](https://research.redhat.com/blog/research_project/icos/). \ No newline at end of file diff --git a/_posts/2022-09-20-physics-ga4.md b/_posts/2022-09-20-physics-ga4.md new file mode 100644 index 0000000000..57e0e2d1e8 --- /dev/null +++ b/_posts/2022-09-20-physics-ga4.md @@ -0,0 +1,24 @@ +--- +title: "PHYSICS 4th General Assembly" +last_modified_at: 2022-09-20T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: false +--- + +[![](/assets/images/posts/2022-09-20-physics-ga4/1.png)](/physics) + +The **4th PHYSICS project General Assembly** meeting was held July 4-6, 2022, hosted by [RYAX](https://ryax.tech/) in Athens, Greece. During the meeting, partners analyzed the project’s growth and had the opportunity to participate in person or virtually in discussions about the next goals of the project. All the work packages of the project were discussed in-depth to monitor the project’s progress and agree on plans for the future. + +[**PHYSICS**](/physics) (**oPtimized HYbrid Space-time servIce Continuum in faaS**) is a research project funded by the European Union’s Horizon 2020 research and innovation program under grant agreement No. 101017047. The project began in January 2021 with 14 international partners and is scheduled to end in December 2023. Partners include Red Hat, Atos, RYAX, the Polytechnic University of Madrid (Spain), and Harokopio University (Greece). + +The project’s goal is to enable application developers to design, implement, and deploy advanced function-as-a-service (FaaS) applications in the scope of advanced cloud application design environments by leveraging proven design patterns and existing libraries of cloud/FaaS components. + +Red Hat engineers lead the work package **Extended Infrastructure Services with Adaptable Algorithms**, where they leverage several community projects to support PHYSICS’s multi-cluster orchestration and connectivity requirements. Some of the projects modified for PHYSICS’ purposes are [Submariner](https://github.com/submariner-io/submariner) and [MicroShift](https://github.com/openshift/microshift). Other projects used include Node-RED and Apache OpenWhisk. + +To learn more about the PHYSICS project, visit the [PHYSICS project page](https://physics-faas.eu/). Read more about it in the [Red Hat Research blog](https://research.redhat.com/blog/2022/09/20/physics-4th-general-assembly-held/). + +![](/assets/images/posts/2022-09-20-physics-ga4/2.png) \ No newline at end of file diff --git a/_posts/2022-10-19-shift-aws-foundations-9.md b/_posts/2022-10-19-shift-aws-foundations-9.md new file mode 100644 index 0000000000..8c478ffe4b --- /dev/null +++ b/_posts/2022-10-19-shift-aws-foundations-9.md @@ -0,0 +1,47 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Foundations - 9th edition" +last_modified_at: 2022-10-19T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-10-19-shift-aws-foundations-9.png)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-foundations-online) + +O **AWS Academy Cloud Foundations** (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – **[AWS Certified Cloud Practitioner (CLF-01)](https://aws.amazon.com/pt/certification/certified-cloud-practitioner/)**. + +O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate. + + +## Para quem? +Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS. + +## Pré-requisito +Recomendamos ter conhecimentos técnicos gerais de TI e de negócios. + +## Como funciona? + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy), com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP. + +## Digital + Live +Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias **19/10** e **22/11**, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner. + + + +## Conteúdo + + - Módulo 1: Visão geral dos conceitos de nuvem + - Módulo 2: Economia e faturamento da nuvem + - Módulo 3: Visão geral da infraestrutura global da AWS + - Módulo 4: Segurança na nuvem AWS + - Módulo 5: Redes e entrega de conteúdo + - Módulo 6: Computação + - Módulo 7: Armazenamento + - Módulo 8: Bancos de dados + - Módulo 9: Arquitetura de nuvem + - Módulo 10: Auto scaling e monitoramento \ No newline at end of file diff --git a/_posts/2022-11-05-icos-ga1.md b/_posts/2022-11-05-icos-ga1.md new file mode 100644 index 0000000000..7069ac0952 --- /dev/null +++ b/_posts/2022-11-05-icos-ga1.md @@ -0,0 +1,31 @@ +--- +title: "ICOS 1st General Assembly" +last_modified_at: 2022-11-05T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: false +--- + +[![](/assets/images/posts/2022-09-02-icos/0.webp)](https://www.icos-project.eu/) + +**22 leading European organizations from 11 countries join forces to tackle the main challenges of the IoT-edge-cloud paradigm, proposing an approach to embed a set of functionalities and define a brand new IoT-edge-Cloud Operating System (ICOS).** + +**Barcelona, Spain. November 2022.** Coordinated by the Research and Innovation hub of the Atos Group in Spain, ICOS project started officially on September 1st, 2022, and will continue for 3 years. The project is funded by the European Commission under the Horizon Europe Programme within the topic Future European platforms for the Edge: Meta Operating Systems. Its F2F kick-off meeting took place in Vilanova i la Geltrú, Barcelona area, Spain, on November 2nd-3rd. + +ICOS aims to design, develop, and validate a meta-operating system for the Cloud-Edge-IoT continuum by addressing four main challenges: + - device volatility and heterogeneity, continuum infrastructure virtualisation and diverse network connectivity; + - optimised and scalable service execution and performance, as well as resource consumption; guaranteed trust, security and privacy; + iii) reduction of integration costs, ; + - effective mitigation of cloud provider lock-in effects. + +Efforts towards these objectives will be consolidatedin a data-driven system built upon the principles of openness, adaptability, data sharing and a future edge market scenario for services and data. + +The project will contribute to European competitiveness by achieving the creation of a globally attractive, secure, and dynamic data-first economy, moving beyond a simple send-data-to-the-cloud strategy, and offering new opportunities for European actors to enter the market with new services, which will result in increasing the EU’s autonomy, sovereignty, and performance in the global data economy. Moreover, its technical impact will consist of a new platform and ecosystem for managing the application lifecycle in a secure, smart, and efficient way across the entire Cloud-Edge-IoT continuum, while its economic impact will be proven by the feasibility demonstrated through the ICOS micro analysis, according to the use case KPIs (namely: In-car Advanced Infotainment and Multimedia Management system; Agriculture Operational Robotic Platform; Railway Structural Alert Monitoring system, and Energy Management and Decision Support system) and also the ICOS will not be alone in this huge mission. As its coordinator Francesco D’Andria (Atos) states: + > The project will cooperate with the other Research and Innovation Action (RIA) projects –such as NEMO or NEPHELE– addressing the same topic, to exploit results and synergies, maximize impacts of the Cloud-Edge-IoT project portfolio and coordinate dissemination activities. In addition, ICOS will contribute to the consolidation and coherence work to be implemented by the two related Coordination and Support Action (CSAs), OpenContinuum and Unlock-CEI". + +Red Hat engineers lead the work package *Development of the Distributed Meta-kernel Layer Module*, where we plan to leverage several community projects to support ICOS multi-cluster orchestration and connectivity requirements. Some of the projects being considered for ICOS are Open Cluster Management, Submariner, MicroShift, and Knative. + +Read more about it in the [Red Hat Research blog](https://research.redhat.com/blog/research_project/icos/). \ No newline at end of file diff --git a/_posts/2022-11-07-shift-aws-dev-6.md b/_posts/2022-11-07-shift-aws-dev-6.md new file mode 100644 index 0000000000..e8bd749051 --- /dev/null +++ b/_posts/2022-11-07-shift-aws-dev-6.md @@ -0,0 +1,105 @@ +--- +title: "FIAP SHIFT: AWS Academy Cloud Developing - 6th edition" +last_modified_at: 2022-11-07T16:00:58-04:00 +tags: + - aws + - cert + - classes + - fiap + - pt +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg)](https://www.fiap.com.br/shift/curso/tecnologia/aws-academy-cloud-developing) + +Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação **[AWS Certified Developer - Associate (DVA-C01)](https://aws.amazon.com/pt/certification/certified-developer-associate/)**. Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos. + +## Para quem? +Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS. + +## Pré-requisito +Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso. + +## SHIFT remoto + +Você vai ter acesso à plataforma [AWS Academy](/aws-academy). Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings. + +## Benefício FIAP +Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner). + + +## Conteúdo + + - Módulo 1: INTRODUCTION TO DEVELOPING ON AWS + * Recognize the systems development life cycle, and describe how to start to developing on AWS. + * Indicate how to work with AWS SDKs. + * Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools. + * Develop and run a simple program in AWS Cloud9. + - Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) + * Recognize the shared responsibility model. + * Explain how IAM helps secure access to AWS resources. + * Describe IAM user authentication. + * Identify how to authorize an IAM user, group, or role. + - Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 + * Describe how Amazon S3 can be used as a storage solution. + * Identify Amazon S3 features and components. + * Describe two ways to protect data with Amazon S3. + * Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE). + * Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs. +- Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB + * Identify Amazon DynamoDB features. + * Describe Amazon DynamoDB components. + * Explain how Amazon DynamoDB uses partitions. + * Indicate how indexes are used with Amazon DynamoDB. + * Describe how Amazon DynamoDB keeps data consistent. + * Recognize when streaming and global tables are used. + * Explain the backup and restoration process. + * Develop flexible NoSQL solutions with Amazon DynamoDB. +- Módulo 5: CACHING INFORMATION FOR SALABILITY + * Explain when caching is used. + * Describe caching with Amazon CloudFront. + * Describe caching with Amazon ElastiCache Apply caching strategies. +- Módulo 6: INTRODUCTION TO CONTAINERS + * Describe the history, technology, and terminology behind containers. + * Differentiate containers from bare-metal servers and virtual machines. + * Identify the characteristics of a microservices architecture. + * Recognize the drivers for using container-based workloads. + * Host a basic website by using Docker containers. +- Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS + * Recall how message queues works. + * Describe Amazon SQS. + * Send messages to an SQS queue. + * Describe Amazon SNS. + * Explain Amazon SNS concepts. + * Describe Amazon MQ. +- Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA + * Explain serverless computing. + * Describe how AWS Lambda works. + * Recognize AWS Lambda execution models. + * Identify how to use AWS IAM to grant Lambda permissions. + * Indicate the steps to author and configure a Lambda functions. + * Explain how to deploy serverless applications. + * Develop event-driven solutions with AWS Lambda. +- Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY + * Recognize application programming interfaces. + * Describe Amazon API Gateway. + * Indicate the steps for developing RESTful APIs with Amazon API Gateway. +- Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS + * Recognize the dynamics of workflow coordination in distributed applications. + * Describe AWS Step Functions. + * Identify state types. + * Indicate common use cases for AWS Step Functions. + * Recall AWS Step Functions APIs. +- Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS + * Identity how to secure applications. + * Describe how to manage your application’s secrets. + * Recall how to authenticate with AWS Security Token Service. + * Describe how Amazon Cognito is used to build secure applications. +- Módulo 12: DEPLOYING APPLICATIONS ON AWS + * Describe DevOps + * Recognize AWS code services for CI/CD + * Summarize deployment strategies + * Describe how AWS Elastic Beanstalk is used to deploy applications + * Describe how AWS CloudFormation is used to deploy applications + * Describe how AWS SAM is used to deploy serverless applications. \ No newline at end of file diff --git a/_posts/2022-11-16-aws-certified-global-community.md b/_posts/2022-11-16-aws-certified-global-community.md new file mode 100644 index 0000000000..9d7d44d06d --- /dev/null +++ b/_posts/2022-11-16-aws-certified-global-community.md @@ -0,0 +1,19 @@ +--- +title: "AWS Training and Certification - AWS Certified Global Community" +last_modified_at: 2022-11-16T16:00:58-04:00 +tags: + - aws + - cert + - en +toc: false +--- + +[![](/assets/images/posts/2022-11-16-aws-certified-global-community/1.png)](https://aws-certification.influitive.com/users/sign_in) + +The [AWS Certified Global community](https://aws-certification.influitive.com/users/sign_in) is a network of certified AWS professionals. Interact, participate in challenges, get advice from peers and industry experts, win swag, and more. + +[![](/assets/images/posts/2022-11-16-aws-certified-global-community/3.png)](https://aws-certification.influitive.com/profiles/5a5d021f-cea2-40c1-8b13-4084afb0fcb6) + +Last week I was featured in the Expert’s Exclusive series, where each week it is published an interview with one of the community champions. + +![](/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg) \ No newline at end of file diff --git a/_posts/2022-11-17-rhr-talks-physics.md b/_posts/2022-11-17-rhr-talks-physics.md new file mode 100644 index 0000000000..0e9fe25186 --- /dev/null +++ b/_posts/2022-11-17-rhr-talks-physics.md @@ -0,0 +1,37 @@ +--- +title: "RHR talks: PHYSICS EU project" +last_modified_at: 2022-11-17T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: false +--- + +[![](/assets/images/posts/2022-11-17-rhr-talks-physics.png)](https://research.redhat.com/events/research-days-physics/) + +Join [Red Hat Research](https://research.redhat.com/) for the next Research Days event, **PHYSICS EU Project: Advancing FaaS applications in the cloud continuum** on November 16, 2022, from 3PM to 4:30PM CEST. + +The Function-as-a-Service (Faas) paradigm offers cloud service providers and application designers speed, simplicity, and efficiency, so long as they have accessible tools and techniques to implement it. For this month’s research presentation, Georgios Kousiouris, Harokopio University of Athens, will give an overview of PHYSICS, a large-scale EU Horizon-funded research collaboration that aims to unlock the potential of FaaS in the cloud continuum. Luis Tomás Bolívar, Red Hat, and Yiannis Georgiou, Ryax Technologies, will lead the conversation. Attendees will have the opportunity to participate in the live discussion. + +## Abstract +PHYSICS is a high technology EU Horizon research project with a total funding of about five million euros composed of 14 international partners. The project started in January 2021 and will end in December 2023. PHYSICS aims to unlock the potential of the Function-as-a-Service (FaaS) paradigm for cloud service providers and application developers. When realized, it will enable application developers to design, implement, and deploy advanced FaaS applications through abstract and visual design environments, leveraging proven design patterns and integrated DevOps pipelines. + +PHYSICS also offers a novel Global Continuum Layer aimed at exploiting the cloud (including edge and multi-cloud locations) for optimizing the deployment and execution of functions based on aspects such as latency, performance, cost, locality, and other constraints. It does so by extending the needed infrastructure components (the Kubernetes scheduler, for example), offering novel ways of container management that target optimized operation of the infrastructure cluster in the form of container scheduling and co-allocation mechanisms. + +In this talk, we will discuss the goals and current status of the PHYSICS EU Horizon project before exploring some of the main research areas of focus and open source development. Specifically, we will describe how visual flow programming and ready-made patterns can enhance abstract function development, and we will investigate different function orchestration means and trade-offs in terms of capabilities and performance. We will also explore the function execution in different clusters while highlighting differences in cluster setup from macroscopically examined load generation and how these map to the observed measurements. Finally, we will look at the task placement and scheduling optimizations that are being developed and how they can be beneficial, in particular, for FaaS-based applications. + +Speaker + - Georgios Kousiouris, Harokopio University of Athens + +Conversation Leaders + - Luis Tomás Bolívar, Red Hat + - Yiannis Georgiou, Ryax Technologies + +Visit the [PHYSICS project website](https://physics-faas.eu/) for more information. + + + +![YouTube Video Views](https://img.shields.io/youtube/views/ZzBI_5DxcnY?style=social) +![YouTube Video Likes](https://img.shields.io/youtube/likes/ZzBI_5DxcnY?style=social) \ No newline at end of file diff --git a/_posts/2022-12-26-tip-academy.md b/_posts/2022-12-26-tip-academy.md new file mode 100644 index 0000000000..d9c49b5029 --- /dev/null +++ b/_posts/2022-12-26-tip-academy.md @@ -0,0 +1,51 @@ +--- +title: "TIP Academy" +last_modified_at: 2023-01-04T16:00:58-04:00 +tags: + - cert + - en + - networks + - nfv + - onf + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2022-12-26-tip-academy/1.svg)](https://www.tip.academy/) + +[TIP Academy](https://www.tip.academy/) is an online Academy managed by the [Telecom Infra Project (TIP)](https://telecominfraproject.com/) supporting the development of organizations in the telecommunications and IT industry. It provides an open, community-based learning and knowledge-sharing space for organizations and telco professionals, building an ecosystem around open, disaggregated solutions. + +## Courses + +### Why Open RAN? + +This learning program will help you to gain awareness of the motivation and imperative of Open RAN and its potential to transform the industry. + +Upon completion of this learning program, you will be able to: + - Define what Open RAN is and explain the drivers, benefits and challenges of Open RAN. + - Gain insight into the main ways Open RAN solutions architectures will impact the Business Case. + - Identify key industry Open RAN initiatives and discover some Open RAN projects around the word. + + +### Open RAN Fundamentals + +This learning program will help you delve into the Open RAN architecture and the underlying forces behind it: disaggregation, open interfaces, virtualization, automation, and orchestration. + +Upon completion of this learning program, you will be able to: + - Describe what is the split of RAN protocol stack, its motivations and the different split options adopted by the industry for Open interfaces. + - Describe the architecture and functions of the Radio Unit (RU), Distributed Unit (DU) and Central Unit (CU). + - Recognize the significant role the Telco Cloud and Orchestration play in unlocking the benefits of Open RAN solutions. + +## Free certification + +After completing the courses training you’ll be eligible to take the final assessments at no cost. + +![](/assets/images/posts/2022-12-26-tip-academy/4.png) + +![](/assets/images/posts/2022-12-26-tip-academy/2.png) + +![](/assets/images/posts/2022-12-26-tip-academy/5.png) + +![](/assets/images/posts/2022-12-26-tip-academy/3.png) + diff --git a/_posts/2023-01-01-newyear23.md b/_posts/2023-01-01-newyear23.md new file mode 100644 index 0000000000..ba9e059d3f --- /dev/null +++ b/_posts/2023-01-01-newyear23.md @@ -0,0 +1,12 @@ +--- +title: "Happy new year!" +last_modified_at: 2022-01-01T16:00:58-04:00 +tags: + - en + - es + - redhat + - pt +toc: false +--- + +![](/assets/images/posts/2023-01-01-newyear23.png) \ No newline at end of file diff --git a/_posts/2023-01-07-ovnk8s-kind.md b/_posts/2023-01-07-ovnk8s-kind.md new file mode 100644 index 0000000000..d23c58b82a --- /dev/null +++ b/_posts/2023-01-07-ovnk8s-kind.md @@ -0,0 +1,154 @@ +--- +title: "Running OVN-Kubernetes on a preexisting kind cluster" +last_modified_at: 2023-01-13T16:00:58-04:00 +tags: + - en + - networks + - openshift + - redhat +toc: false +--- + +[OVN-Kubernetes](https://github.com/ovn-org/ovn-kubernetes/) is a CNI for Kubernetes based on the [Open Virtual Network (OVN)](https://www.ovn.org/en/) project. + +[kind (Kubernetes in Docker) deployment of OVN kubernetes](https://github.com/ovn-org/ovn-kubernetes/blob/master/docs/kind.md) is a fast and easy means to quickly install and test kubernetes with OVN kubernetes CNI. The value proposition is really for developers who want to reproduce an issue or test a fix in an environment that can be brought up locally and within a few minutes. + +The [**kind.sh** script](https://github.com/ovn-org/ovn-kubernetes/blob/master/contrib/kind.sh) creates a new [kind cluster](https://kind.sigs.k8s.io/) and then deploys OVN-Kubernetes on top of it. + +Thanks to the new `--deploy` option introduced by this [PR](https://github.com/ovn-org/ovn-kubernetes/pull/3337) into the **kind.sh** script, now it is possible to leverage the script to deploy OVN-Kubernetes on preexisting kind clusters. + +First, let's define the kind cluster configuration and store it in a **kind-ovn.yaml** file: +```yaml +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +networking: + # kube proxy will be disabled + kubeProxyMode: "none" + # the default CNI will not be installed + disableDefaultCNI: true + podSubnet: "10.244.0.0/16" + serviceSubnet: "10.96.0.0/16" +kubeadmConfigPatches: +- | + kind: ClusterConfiguration + metadata: + name: config + apiServer: + extraArgs: + "v": "4" + controllerManager: + extraArgs: + "v": "4" + scheduler: + extraArgs: + "v": "4" + networking: + dnsDomain: cluster.local + --- + kind: InitConfiguration + nodeRegistration: + kubeletExtraArgs: + "v": "4" + --- + kind: JoinConfiguration + nodeRegistration: + kubeletExtraArgs: + "v": "4" +nodes: + - role: control-plane + kubeadmConfigPatches: + - | + kind: InitConfiguration + nodeRegistration: + kubeletExtraArgs: + node-labels: "ingress-ready=true" + authorization-mode: "AlwaysAllow" + - role: worker + - role: worker +``` + +Create the cluster: +``` +$ kind create cluster --name ovn --image kindest/node:v1.24.0 --config=kind-ovn.yaml +``` + +Export the kubeconfig file: +``` +$ kind get kubeconfig --name ovn > kubeconfig +$ export KUBECONFIG=$(pwd)/kubeconfig +``` + +As you can see the nodes are in `NotReady` state (because there is no CNI deployed) and the CNI dependant pods are in `Pending` state: +``` +$ kubectl get node -o wide +NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME +ovn-control-plane NotReady control-plane 59s v1.24.0 172.18.0.3 Ubuntu 21.10 5.17.5-300.fc36.x86_64 containerd://1.6.4 +ovn-worker NotReady 35s v1.24.0 172.18.0.2 Ubuntu 21.10 5.17.5-300.fc36.x86_64 containerd://1.6.4 +ovn-worker2 NotReady 22s v1.24.0 172.18.0.4 Ubuntu 21.10 5.17.5-300.fc36.x86_64 containerd://1.6.4 + +$ kubectl get po -A +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system coredns-6d4b75cb6d-4nbkk 0/1 Pending 0 107s +kube-system coredns-6d4b75cb6d-wkmzk 0/1 Pending 0 107s +kube-system etcd-kind-control-plane 1/1 Running 0 2m3s +kube-system kube-apiserver-kind-control-plane 1/1 Running 0 2m +kube-system kube-controller-manager-kind-control-plane 1/1 Running 0 2m +kube-system kube-scheduler-kind-control-plane 1/1 Running 0 2m3s +local-path-storage local-path-provisioner-9cd9bd544-4dt8d 0/1 Pending 0 107s +``` + +Enable IPv6 on the kind containers: +``` +$ KIND_NODES=$(kind get nodes --name ovn) +$ for n in $KIND_NODES; do + docker exec "$n" sysctl --ignore net.ipv6.conf.all.disable_ipv6=0 + docker exec "$n" sysctl --ignore net.ipv6.conf.all.forwarding=1 + done +``` + +Clone the ovn-kubernetes repo: +``` +$ git clone https://github.com/ovn-org/ovn-kubernetes.git +``` + +Run the kind.sh script with the `--deploy` option to avoid the creation of a new kind cluster: +``` +$ cd ovn-kubernetes/contrib/ +$ ./kind.sh -kc $KUBECONFIG --deploy +``` + +Check if the nodes and the CNI dependant pods have transitioned to `Ready` state and the OVN pods are present: +``` +$ kubectl get node +NAME STATUS ROLES AGE VERSION +ovn-control-plane Ready control-plane 11m v1.24.0 +ovn-worker Ready 10m v1.24.0 +ovn-worker2 Ready 10m v1.24.0 + +$ kubectl get po -A +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system coredns-6d4b75cb6d-9r8lh 1/1 Running 0 10m +kube-system coredns-6d4b75cb6d-kvhf6 1/1 Running 0 10m +kube-system etcd-ovn-control-plane 1/1 Running 0 11m +kube-system kube-apiserver-ovn-control-plane 1/1 Running 0 11m +kube-system kube-controller-manager-ovn-control-plane 1/1 Running 0 11m +kube-system kube-scheduler-ovn-control-plane 1/1 Running 0 11m +local-path-storage local-path-provisioner-9cd9bd544-fm7vm 1/1 Running 0 10m +ovn-kubernetes ovnkube-db-5fdf4c4986-t2hp7 2/2 Running 0 3m12s +ovn-kubernetes ovnkube-master-5b5ddf8879-7vqcd 2/2 Running 0 3m10s +ovn-kubernetes ovnkube-node-8mmjm 3/3 Running 0 3m3s +ovn-kubernetes ovnkube-node-ggcsd 3/3 Running 0 3m3s +ovn-kubernetes ovnkube-node-xtdxn 3/3 Running 0 3m3s +ovn-kubernetes ovs-node-4qvfz 1/1 Running 0 3m11s +ovn-kubernetes ovs-node-99vl7 1/1 Running 0 3m11s +ovn-kubernetes ovs-node-dx2rk 1/1 Running 0 3m11s +``` + +To tear down the KIND cluster when finished simply run: +``` +$ ./kind.sh --delete +``` + +Alternativally, you can use [this script](https://github.com/elmiko/capi-hacks/blob/devel/deploy-cni-ovn.sh) to automate the deployment. + +Tested on Fedora release 36 and Ubuntu 22.04 with kind version 0.17.0. \ No newline at end of file diff --git a/_posts/2023-01-13-icos-blog.md b/_posts/2023-01-13-icos-blog.md new file mode 100644 index 0000000000..1e5d7ecf76 --- /dev/null +++ b/_posts/2023-01-13-icos-blog.md @@ -0,0 +1,35 @@ +--- +title: "The impact of upstreaming research contributions" +last_modified_at: 2023-01-13T16:00:58-04:00 +tags: + - en + - redhat + - research +toc: false +--- + +> Originally published at [**ICOS blog**](https://www.icos-project.eu/impact-of-upstreaming-research-contributions) on January 13, 2023 and at [**opensource.com**](https://opensource.com/article/23/2/open-science-upstream-contributions) on February 3, 2023. + +*By Cara Delia and Leslie Hawthorn, Red Hat Open Source Program Office, Jose Castillo Lema, Red Hat Performance & Scale Engineering* + +Horizon Europe emphasizes open science and open source technology. The program evolved from Horizon 2020, which provided financial support for research projects that promoted industrial competitiveness, advanced scientific excellence, or solved social challenges through the process of **open science**. + +Open science is an approach to the scientific process based on open cooperative work, tools and diffusing knowledge found in the [Horizon Europe Regulation and Model Grant Agreement](https://ec.europa.eu/info/funding-tenders/opportunities/docs/2021-2027/horizon/agr-contr/unit-mga_he_en.pdf). This open science approach aligns with open source principles that provide a structure for such cooperation. + +The open source principles are: + - Transparency + - Collaboration + - Release early, release often + - Inclusion + - Community orientation + +In creating open source software, one of the basic foundational principles of open source software development is an "upstream first" philosophy. The opposite direction is "downstream", and upstream and downstream make up the ecosystem for a given software package or distribution. Upstreams are important because that's where the source contribution comes from. + +Each upstream is unique, but generally the upstream is where decisions are made and where the community for a project collaborates for the project’s objectives. Work done upstream can flow out to many other open source projects. The upstream is also a place where developers can report bugs and security vulnerabilities. If a bug or security flaw is fixed upstream, then every downstream project or product based on the upstream can benefit from that work. + +It is important to contribute to the work side-by-side with the rest of the community from which you are benefitting from. By working upstream first, there is the opportunity to vet ideas with the larger community and work together to build new features, releases, content, etc. It's far better if all the contributors work together rather than, say, contributors from different companies, universities or affiliations working on features behind closed doors and then trying to integrate them later. Open source contributions can outlive the research project duration making a more durable impact. + +As an example of such contributions, in the [ORBIT FP7 EU project](https://cordis.europa.eu/project/id/609828) a feature was developed together by Red Hat (lower layers, such as Linux Kernel and QEMU) and Umea University (upper layers, such as LibVirt and OpenStack) and contributed to their related upstream communities. This enabled [post-copy live migration of virtual machines in OpenStack](https://wiki.qemu.org/Features/PostCopyLiveMigration). Even though that was done several years ago, that feature is still available (and independently mantained) in any OpenStack distribution today (and in plain LibVirt/QEMU). + +Just as with software development, research under Horizon Europe promotes the adoption of sharing research outputs as early and widely as possible, to citizen science, and developing new indicators for evaluation research and rewarding researchers. With open source upstream communities, the research contributed can extend beyond the research project timeline by feeding into the upstream life cycle. This allows future consumption by companies, universities, governments, etc. to evolve and further secure the research's project contribution. + diff --git a/_posts/2023-01-18-codeco-kickoff.md b/_posts/2023-01-18-codeco-kickoff.md new file mode 100644 index 0000000000..b005cef9f3 --- /dev/null +++ b/_posts/2023-01-18-codeco-kickoff.md @@ -0,0 +1,29 @@ +--- +title: "CODECO project kick off" +last_modified_at: 2023-01-18T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: false +--- + +[![](/assets/images/posts/2023-01-18-codeco-kickoff/1.png)](https://he-codeco.eu/) + +Kick off of the [Horizon Europe CODECO](https://he-codeco.eu/) in the Munich Highlight Towers, on 16th and 17th of January 2023. + +The CODECO project proposes a unique, smart, and cross-layer orchestration between the +decentralised data flow, computation, and networking services, to address Edge-Cloud +challenges derived from the rising Internet and IoT service decentralisation. +Coordinated by Fortiss and involving 15 relevant Edge-Cloud partners +across Europe, the project shall develop an ecosystem consisting of open-source toolkits, +large-scale experimentation, training tools and events, use-cases across 4 vertical domains +(Smart Cities, Energy, Manufacturing, Smart Buildings), multiple events integrated into a +unique Innovation and Research Community Engagement Programme. + +Read more about it in the [Red Hat Research blog](https://research.redhat.com/blog/research_project/codeco/). + +![](/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg) + +![](/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg) \ No newline at end of file diff --git a/_posts/2023-01-18-kubemark.md b/_posts/2023-01-18-kubemark.md new file mode 100644 index 0000000000..7f61b260b4 --- /dev/null +++ b/_posts/2023-01-18-kubemark.md @@ -0,0 +1,396 @@ +--- +title: "Kubernetes control plane scale testing with Kubemark" +last_modified_at: 2023-01-26T16:00:58-04:00 +tags: + - en + - networks + - openshift + - redhat +toc: true +toc_sticky: true +--- + +> Continuation of Michael McCune (@elmiko) notes on [Setting Up a Development Environment for the Cluster API Kubemark Provider](https://notes.elmiko.dev/2021/10/11/setup-dev-capi-kubemark.html), [Automating My Hollow Kubernetes Test Rig](https://notes.elmiko.dev/2023/01/21/automating-my-hollow-kubernetes-test-rig.html) and [DevConf.cz 2022 Testing at Scale with Cluster API and Kubemark (demo)](https://vimeo.com/671479117). + +[Kubemark](https://github.com/kubernetes/kubernetes/tree/master/cmd/kubemark) is a performance testing tool which allows users to run experiments on simulated clusters, by creating "hollow" Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, **hollow nodes are extremely light (<30 MiB)**. + +The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks). + +## Architecture + +On a very high level Kubemark cluster consists of two parts: real master components and a set of "hollow" nodes. The prefix hollow means an implementation/instantiation of a component with all moving parts mocked out. The best example is HollowKubelet, which pretends to be an ordinary Kubelet, but does not start anything, nor mount any volumes -it just lies it does. + +Currently master components run on a dedicated machine(s), and HollowNodes run on an external management Kubernetes cluster. This design has the advantage of completely isolating master resources from everything else. + +## Integration with Cluster API + +[Kubernetes Cluster API (CAPI)](https://cluster-api.sigs.k8s.io/) is a project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters. It uses Kubernetes-style APIs and patterns to automate cluster lifecycle management for platform operators. The supporting infrastructure, like virtual machines, networks, load balancers, and VPCs, as well as the Kubernetes cluster configuration are all defined in the same way that application developers operate deploying and managing their workloads. This enables consistent and repeatable cluster deployments across a wide variety of infrastructure environments. + +The Cluster API community has developed a [Cluster API Kubemark Provider](https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/), allowing users to deploy fake, Kubemark-backed machines to their clusters. This is useful in a variety of scenarios, such load-testing and simulation testing. + +## Hands to work + +On the host docker (we will be using a fresh Ubuntu 22.04 virtual machine) we will use [kind](https://kind.sigs.k8s.io/) (Kubernetes in Docker, a container running the necessary kubernetes pieces) to create the CAPI Management Cluster. Next, we will use the `clusterctl` tool to create a second cluster (using kind as well) for the Kubemark workload (the cluster under test). Lastly, we want to create new nodes for the Kubemark Control Plane Cluster (the cluster under test) and Kubemark requires that we create these hollow nodes as pods running on a cluster that can join the control plane. The Cluster API Kubemark provider then creates pods within the CAPI Management Cluster which will join the Kubemark Control Plane Cluster (the cluster under test/worload cluster) as nodes. + +![](/assets/images/posts/2023-01-18-kubemark.svg) + +For the demo we will be using a Ubuntu 22.04 virtual machine with 4 vCPUs, 4 GiB of memory and 100 GiB disk. + +### Environment setup + +I will be using [Lima](https://github.com/lima-vm/lima) (Linux virtual machines) to create and manage the VM: + +``` +$ limactl start --name=ubuntu22.04 template://ubuntu-lts +$ limactl shell ubuntu22.04 +``` + +We will use [cluster-apikubemark-ansible](https://github.com/elmiko/cluster-api-kubemark-ansible) playbooks to automate the deploy of: + - Golang + - Build tools + - Docker + - Docker local registry + - Kind + - Kubectl + - Kustomize + - Kubebuilder + - Cluster API + - Cluster API Kubemark provider + +Prepare the host to run ansible: + - Install `ansible` (not `ansible-core`) + ``` + $ sudo apt install ansible + $ ssh-keygen + $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys + ``` + - Clone and and prepare the playbooks: + ``` + $ git clone https://github.com/elmiko/cluster-api-kubemark-ansible.git + $ cd cluster-api-kubemark-ansible + $ echo -e "[defaults]\nallow_world_readable_tmpfiles=true" > ansible.cfg + ``` + - Update `inventory/hosts` if you need to change addresses and/or users and run the first playbook: + ``` + $ ansible-playbook -i inventory/hosts setup_devel_environment.yaml + ``` + Once it is finished you will be able to login to the host as the devel user listed in the hosts file. All the development tools should be ready for access. + - Run the second playbook to build the `clusterctl` binary, all the controller images and push the images to the local registry. + ``` + ansible-playbook -i inventory/hosts build_clusterctl_and_images.yaml + ``` + +### Creating the cluster + +We will use the [capi-hacks repo](https://github.com/elmiko/capi-hacks) playbooks to aid with Kubemark deployment. + +Ensure the docker local registry was created in the previous steps, if not use the `00-start-localregistry.sh` script: +``` +$ docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +7064a4208e15 registry:2 "/entrypoint.sh /etc…" 4 days ago Up 46 minutes 127.0.0.1:5000->5000/tcp kind-registry +``` + +Clone the capi-hacks repo: +``` +$ git clone https://github.com/elmiko/capi-hacks.git +$ cd capi-hacks +``` + +Create the CAPI management cluster. This cluster will host the CAPI components and Kubemark hollow nodes: +``` +$ ./01-start-mgmt-cluster.sh +$ kind get clusters +mgmt +``` + +Wait for the node to become ready and configure the management cluster to use the local registry: +``` +$ kubectl get node +NAME STATUS ROLES AGE VERSION +mgmt-control-plane Ready control-plane,master 44s v1.23.6 + +$ ./02-apply-localregistryhosting-configmap.sh +``` + +Deploy the Cluster API (capi) and Cluster API Kubemark Provider (capk) components and wait for their pods to become ready: + +``` +$ ./03-clusterctl-init.sh + +$ kubectl get deploy -A | grep cap +capd-system capd-controller-manager 1/1 1 1 10m +capi-kubeadm-bootstrap-system capi-kubeadm-bootstrap-controller-manager 1/1 1 1 11m +capi-kubeadm-control-plane-system capi-kubeadm-control-plane-controller-manager 1/1 1 1 11m +capi-system capi-controller-manager 1/1 1 1 11m +capk-system capk-controller-manager 1/1 1 1 10m +``` + +Create the a new kind (docker provider) cluster for the control plane under test: +``` +$ kubectl apply -f kubemark/kubemark-workload-control-plane.yaml +``` + +Wait for the machine to transition from provisioning to running state: +``` +$ kubectl get machine +NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION +kubemark-workload-control-plane-lvkcv kubemark-workload kubemark-workload-control-plane-lvkcv docker:////kubemark-workload-control-plane-lvkcv Running 3m31s v1.23.6 + +$ kubectl get clusters +NAME PHASE AGE VERSION +kubemark-workload Provisioned 4m4s + +$ kind get clusters +kubemark-workload +mgmt +``` + +Let's take a look to the new `kubemark-workload` kind cluster that will host the control plane under test. As you can see the node is in `NotReady` state (because there is no CNI deployed) and the CNI dependant pods are in `Pending` state: +``` +$ ./get-kubeconfig.sh kubemark-workload + +$ kubectl get node --kubeconfig=kubeconfig.kubemark-workload +NAME STATUS ROLES AGE VERSION +kubemark-workload-control-plane-lvkcv NotReady control-plane,master 46m v1.23.6 + +$ kubectl get po -A --kubeconfig=kubeconfig.kubemark-workload +NAMESPACE NAME READY STATUS RESTARTS AGE +kube-system coredns-79dc848587-8qbgk 0/1 Pending 0 6m31s +kube-system coredns-79dc848587-n9428 0/1 Pending 0 6m31s +kube-system etcd-kubemark-workload-control-plane-lvkcv 1/1 Running 0 6m39s +kube-system kube-apiserver-kubemark-workload-control-plane-lvkcv 1/1 Running 0 6m39s +kube-system kube-controller-manager-kubemark-workload-control-plane-lvkcv 1/1 Running 0 6m39s +kube-system kube-proxy-skgc9 1/1 Running 0 6m31s +kube-system kube-scheduler-kubemark-workload-control-plane-lvkcv 1/1 Running 0 6m39s +``` + +Let's deploy [OVN-Kubernetes](https://github.com/ovn-org/ovn-kubernetes/) on the cluster (more information on how to deploy OVN-K on a preexisting kind cluster in this [past blog post](/ovnk8s-kind). OVN-Kubernetes is a CNI for Kubernetes based on the [Open Virtual Network (OVN)](https://www.ovn.org/en/) project: +``` +$ ./deploy-cni-ovn.sh $(pwd)/kubeconfig.kubemark-workload kubemark-workload +``` + +Check if the nodes and the CNI dependant pods have transitioned to `Ready` state and the OVN pods are present: +``` +$ kubectl get node --kubeconfig=kubeconfig.kubemark-workload +NAME STATUS ROLES AGE VERSION +kubemark-workload-control-plane-lvkcv Ready control-plane,master 78m v1.23.6 + +$ kubectl get po -A --kubeconfig=kubeconfig.kubemark-workload +NAMESPACE NAME READY STATUS RESTARTS AGE +default test2 1/1 Running 0 3m4s +kube-system coredns-79dc848587-8qbgk 1/1 Running 0 78m +kube-system coredns-79dc848587-n9428 1/1 Running 0 78m +kube-system etcd-kubemark-workload-control-plane-lvkcv 1/1 Running 0 78m +kube-system kube-apiserver-kubemark-workload-control-plane-lvkcv 1/1 Running 0 78m +kube-system kube-controller-manager-kubemark-workload-control-plane-lvkcv 1/1 Running 0 78m +kube-system kube-proxy-skgc9 1/1 Running 0 78m +kube-system kube-scheduler-kubemark-workload-control-plane-lvkcv 1/1 Running 0 78m +ovn-kubernetes ovnkube-db-7d8fdc7dfb-2pf8m 2/2 Running 0 6m42s +ovn-kubernetes ovnkube-master-6dbd568bb5-89s7c 2/2 Running 0 6m41s +ovn-kubernetes ovnkube-node-7s7r5 3/3 Running 0 6m33s +ovn-kubernetes ovs-node-gnpv9 1/1 Running 0 6m41s +``` + +At this point we are ready to deploy Kubemark hollow nodes in the managment cluster. This step will create 4 Kubemark hollow nodes: +``` +kubectl apply -f kubemark/kubemark-workload-md0.yaml +``` + +Let's check things from the managment cluster perspective first: +``` +$ kubectl get machine +NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION +kubemark-workload-control-plane-lvkcv kubemark-workload kubemark-workload-control-plane-lvkcv docker:////kubemark-workload-control-plane-lvkcv Running 84m v1.23.6 +kubemark-workload-md-0-764cb59d5-8c62j kubemark-workload kubemark-workload-md-0-v7592 kubemark://kubemark-workload-md-0-v7592 Running 57s v1.23.6 +kubemark-workload-md-0-764cb59d5-bb2p4 kubemark-workload kubemark-workload-md-0-4955k kubemark://kubemark-workload-md-0-4955k Running 57s v1.23.6 +kubemark-workload-md-0-764cb59d5-hwlh7 kubemark-workload kubemark-workload-md-0-m82cf kubemark://kubemark-workload-md-0-m82cf Running 57s v1.23.6 +kubemark-workload-md-0-764cb59d5-jrmgt kubemark-workload kubemark-workload-md-0-82m9j kubemark://kubemark-workload-md-0-82m9j Running 57s v1.23.6 + +$ kubectl get po +NAME READY STATUS RESTARTS AGE +kubemark-workload-md-0-4955k 1/1 Running 0 90s +kubemark-workload-md-0-82m9j 1/1 Running 0 90s +kubemark-workload-md-0-m82cf 1/1 Running 0 90s +kubemark-workload-md-0-v7592 1/1 Running 0 90s +``` + +Finally, let's check things from the cluster under test perspective: +``` +$ kubectl get node --kubeconfig=kubeconfig.kubemark-workload +NAME STATUS ROLES AGE VERSION +kubemark-workload-control-plane-lvkcv Ready control-plane,master 84m v1.23.6 +kubemark-workload-md-0-4955k Ready 2m11s v1.23.6 +kubemark-workload-md-0-82m9j Ready 2m6s v1.23.6 +kubemark-workload-md-0-m82cf Ready 2m10s v1.23.6 +kubemark-workload-md-0-v7592 Ready 2m9s v1.23.6 +``` + +### Creating resources on the workload cluster + +Let's create a simple pod and service: +``` +$ kubectl run test --image nginx --kubeconfig=kubeconfig.kubemark-workload +pod/test created + +$ kubectl get po -o wide --kubeconfig=kubeconfig.kubemark-workload +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +test 1/1 Running 0 100s 192.168.192.168 kubemark-workload-md-0-m82cf + +$ kubectl expose po/test --port 5000 --kubeconfig=kubeconfig.kubemark-workload +service/test exposed + +$ kubectl get service --kubeconfig=kubeconfig.kubemark-workload +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +kubernetes ClusterIP 192.168.122.1 443/TCP 87m +test ClusterIP 192.168.122.93 5000/TCP 7s +``` + +Let's check OVN databases: +``` +$ POD=$(kubectl get pod -n ovn-kubernetes -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' --kubeconfig=kubeconfig.kubemark-workload | grep ovnkube-db-) ; kubectl exec -ti $POD -n ovn-kubernetes -c nb-ovsdb --kubeconfig=kubeconfig.kubemark-workload -- bash + +[root@kubemark-workload-control-plane-lvkcv ~]# ovn-nbctl ls-list +712ca431-ff74-4aef-af8d-00acee6e40dd (ext_kubemark-workload-control-plane-lvkcv) +95755675-c275-4d04-bd35-713ba7597c0c (join) +d7264e2c-4e4e-44fe-9eae-5b99facca098 (kubemark-workload-control-plane-lvkcv) +ee3c0a20-7df2-421b-8e9e-b676080d6976 (kubemark-workload-md-0-4955k) +b4f230a6-9151-44cd-8fa9-4f489799274e (kubemark-workload-md-0-82m9j) +a27e961a-6aaf-4e33-999c-9e7fd73611fa (kubemark-workload-md-0-m82cf) +48b096d8-42c5-4d18-b226-924ec60af0c5 (kubemark-workload-md-0-v7592) + +[root@kubemark-workload-control-plane-lvkcv ~]# ovn-nbctl lb-list +UUID LB PROTO VIP IPs +8ffbeb8b-c2ba-4549-9a5b-5ac9577c4271 Service_default/ tcp 192.168.122.1:443 172.18.0.5:6443 +e4b5bceb-3b51-48e9-be67-7b45fb966caf Service_default/ tcp 192.168.122.93:5000 192.168.192.168:5000 +654c5590-a2b7-4a6e-bf04-d8c1c78b0267 Service_default/ tcp 192.168.122.1:443 169.254.169.2:6443 +ca23b927-4b87-4fdd-b16c-f8c3d824e6e6 Service_kube-sys tcp 192.168.122.10:53 10.244.0.3:53,10.244.0.4:53 + tcp 192.168.122.10:9153 10.244.0.3:9153,10.244.0.4:9153 +699e0b39-1be8-4db7-953f-dbc836d42faf Service_kube-sys udp 192.168.122.10:53 10.244.0.3:53,10.244.0.4:53 + +[root@kubemark-workload-control-plane-lvkcv ~]# ovn-sbctl list port_binding default_test +_uuid : 26050c0d-0e5d-4496-b0ee-0b3df1bb40c9 +additional_chassis : [] +additional_encap : [] +chassis : [] +datapath : 1ac0b646-9d4d-432e-9e59-64db6520973f +encap : [] +external_ids : {namespace=default, pod="true"} +gateway_chassis : [] +ha_chassis_group : [] +logical_port : default_test +mac : ["0a:58:0a:f4:02:03 10.244.2.3"] +mirror_rules : [] +nat_addresses : [] +options : {iface-id-ver="b505da18-8294-41ac-a25e-ffeeb5d3b7fb", requested-chassis=kubemark-workload-md-0-m82cf} +parent_port : [] +port_security : ["0a:58:0a:f4:02:03 10.244.2.3"] +requested_additional_chassis: [] +requested_chassis : [] +tag : [] +tunnel_key : 2 +type : "" +up : false +virtual_parent : [] +``` + +### Scaling the cluster + +Let's check how many resources Kubemark hollow nodes consume (<30 MiB, compared to 650 MiB of a normal ovnkube worker): +``` +$ kubectl top pod +NAME CPU(cores) MEMORY(bytes) +kubemark-workload-md-0-4955k 38m 28Mi +kubemark-workload-md-0-82m9j 36m 28Mi +kubemark-workload-md-0-m82cf 45m 29Mi +kubemark-workload-md-0-v7592 41m 28Mi +``` + +In our 4 GiB VM we have 1GiB available: +``` +$ free -h + total used free shared buff/cache available +Mem: 3.8Gi 2.5Gi 170Mi 25Mi 1.2Gi 1.0Gi +``` + +Lets create a total of 30 Kubemark hollow nodes: + +``` +$ kubectl patch --type merge MachineDeployment kubemark-workload-md-0 -p '{"spec":{"replicas":30}}' + +$ kubectl get machine | grep kubemark-workload-md-0 | grep Running | wc -l +30 + +$ kubectl get po | grep kubemark-workload | grep Running | wc -l +30 + +$ free -h + total used free shared buff/cache available +Mem: 3.8Gi 3.2Gi 112Mi 28Mi 548Mi 347Mi +``` + +### Stressing the cluster + +Let's use [kube-burner](https://kube-burner.readthedocs.io/) to stress our workload cluster. Kube-burner is a tool aimed at stressing kubernetes clusters, by creating/deleting objects declared in jobs. + +Let's install kube-burner: +``` +$ wget https://github.com/cloud-bulldozer/kube-burner/releases/download/v1.2/kube-burner-1.2-Linux-x86_64.tar.gz + +$ sudo install -o root -g root -m 0755 kube-burner /usr/local/bin/kube-burner + +$ kube-burner version +Version: 1.2 +Git Commit: 563bc92b9262582391e5dffb8941b914ca19d2d3 +Build Date: 2023-01-13T10:18:17Z +Go Version: go1.19.4 +OS/Arch: linux amd64 +``` + +Let's take a look at the configuration file `kubeburner/cfg.yaml`: +```yaml +--- +global: + writeToFile: false + indexerConfig: + enabled: false + +jobs: + - name: kubelet-density + preLoadImages: false + jobIterations: 100 + qps: 20 + burst: 20 + namespacedIterations: false + namespace: kubelet-density + waitWhenFinished: true + podWait: false + objects: + - objectTemplate: pod.yaml + replicas: 1 + inputVars: + containerImage: gcr.io/google_containers/pause-amd64:3.0 +``` + +Let's create some pods on the cluster: +``` +$ KUBECONFIG=kubeconfig.kubemark-workload kube-burner init -c kubeburner/cfg.yaml +INFO[2023-01-17 15:21:25] 🔥 Starting kube-burner (1.2@563bc92b9262582391e5dffb8941b914ca19d2d3) with UUID def1da7b-a5db-4c05-bb17-167d889ef33b +INFO[2023-01-17 15:21:25] 📈 Creating measurement factory +INFO[2023-01-17 15:21:25] Job kubelet-density: 100 iterations with 1 Pod replicas +INFO[2023-01-17 15:21:25] QPS: 20 +INFO[2023-01-17 15:21:25] Burst: 20 +INFO[2023-01-17 15:21:25] Triggering job: kubelet-density +INFO[2023-01-17 15:21:26] Running job kubelet-density +INFO[2023-01-17 15:21:32] Waiting up to 3h0m0s for actions to be completed +INFO[2023-01-17 15:21:51] Actions in namespace kubelet-density completed +INFO[2023-01-17 15:21:51] Finished the create job in 23s +INFO[2023-01-17 15:21:51] Verifying created objects +INFO[2023-01-17 15:21:52] pods found: 100 Expected: 100 +INFO[2023-01-17 15:21:52] Job kubelet-density took 26.88 seconds +INFO[2023-01-17 15:21:52] Finished execution with UUID: def1da7b-a5db-4c05-bb17-167d889ef33b +INFO[2023-01-17 15:21:52] 👋 Exiting kube-burner def1da7b-a5db-4c05-bb17-167d889ef33b + +$ kubectl get po -n kubelet-density | grep Running | wc -l +100 +``` \ No newline at end of file diff --git a/_posts/2023-02-06-icni2.md b/_posts/2023-02-06-icni2.md new file mode 100644 index 0000000000..fbb410997b --- /dev/null +++ b/_posts/2023-02-06-icni2.md @@ -0,0 +1,604 @@ +--- +title: "OVN-Kubernetes Multiple External Gateway local setup" +last_modified_at: 2023-08-10T16:00:58-04:00 +tags: + - en + - networks + - openshift + - redhat +toc: true +toc_sticky: true +--- + +Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a [FRRRouting (FRR)](https://frrouting.org/) pod acting as external gateway. + +![](/assets/images/posts/2023-02-06-icni2.png) + +## Kind setup + +First let us create a local kind cluster with ONV-Kubernetes as CNI: + +``` +$ git clone https://github.com/ovn-org/ovn-kubernetes.git +$ cd ovn-kubernetes/contrib +$ ./kind.sh --disable-snat-multiple-gws --multi-network-enable +``` + +Let's take a look at the options: + - `disable-snat-multiple-gws`: Disable SNAT for multiple gws + - `multi-network-enable`: Installs [Multus-CNI](https://github.com/k8snetworkplumbingwg/multus-cni) on the cluster + +After some minutes, we will have a three node cluster ready for use: +``` +$ export KUBECONFIG=$HOME/ovn.conf +$ kubectl get node +NAME STATUS ROLES AGE VERSION +ovn-control-plane Ready control-plane 4h2m v1.24.0 +ovn-worker Ready 4h1m v1.24.0 +ovn-worker2 Ready 4h1m v1.24.0 +``` + +Let's install some additional CNI networks plugins needed for the test (i.e.: macvlan): +``` +$ git clone https://github.com/containernetworking/plugins.git +$ cd plugins +$ ./build_linux.sh +$ cd bin +$ for i in $(docker ps -aq); do for j in macvlan static tuning; do docker cp $j $i:/opt/cni/bin/; done; done +``` + +Alternativally, if you don't want to manually compile the CNI plugins, submitted a [PR](https://github.com/ovn-org/ovn-kubernetes/pull/3417) that adds an option to deploy additional CNI plugins (i.e.: macvlan, ipvlan, etc.) to the script `kind.sh`: + +``` +$ wget https://raw.githubusercontent.com/ovn-org/ovn-kubernetes/0123ad42d371223dc434b6af06a9ea4fd8336cda/contrib/kind.sh +$ ./kind.sh --install-cni-plugins --disable-snat-multiple-gws --multi-network-enable +``` + +Let's take a look at the new option introduced by the [PR](https://github.com/ovn-org/ovn-kubernetes/pull/3417): + - `install-cni-plugins`: Installs additional CNI network plugins + +## Resource creation + +Let's create the namespaces: +```yaml +$ cat < 11m v1.24.0 172.18.0.4 Ubuntu 21.10 6.0.7-301.fc37.x86_64 containerd://1.6.4 + +$ kubectl get nodes -o jsonpath='{range .items[*].metadata.annotations}{.k8s\.ovn\.org\/node\-subnets}{.k8s\.ovn\.org\/node\-primary\-ifaddr}{"\n"}{end}' | awk -F'["/]' '{print "ip route " $4"/"$5 " " $9}' +ip route 10.244.0.0/24 172.18.0.3 +ip route 10.244.2.0/24 172.18.0.2 +ip route 10.244.1.0/24 172.18.0.4 +``` + +Let's create the FRR configuration: +```yaml +$ cat < mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever +2: eth0@if95: mtu 1400 qdisc noqueue state UP group default + link/ether 0a:58:0a:f4:02:11 brd ff:ff:ff:ff:ff:ff link-netnsid 0 + inet 10.244.2.17/24 brd 10.244.2.255 scope global eth0 + valid_lft forever preferred_lft forever + inet6 fe80::858:aff:fef4:211/64 scope link + valid_lft forever preferred_lft forever +3: net1@if7: mtu 1500 qdisc noqueue state UP group default + link/ether 5a:1d:47:09:44:8e brd ff:ff:ff:ff:ff:ff link-netnsid 0 + inet 172.18.0.10/16 brd 172.18.255.255 scope global net1 + valid_lft forever preferred_lft forever + inet6 fe80::581d:47ff:fe09:448e/64 scope link + valid_lft forever preferred_lft forever + +sh-5.1# ip r +default via 10.244.2.1 dev eth0 +10.244.0.0/24 nhid 15 via 172.18.0.3 dev net1 proto 196 metric 20 +10.244.1.0/24 nhid 16 via 172.18.0.4 dev net1 proto 196 metric 20 +10.244.2.0/24 dev eth0 proto kernel scope link src 10.244.2.6 +172.18.0.0/16 dev net1 proto kernel scope link src 172.18.0.10 + +sh-5.1# ping -c1 172.18.0.4 +PING 172.18.0.4 (172.18.0.4) 56(84) bytes of data. +64 bytes from 172.18.0.4: icmp_seq=1 ttl=64 time=0.276 ms +--- 172.18.0.4 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 0ms +rtt min/avg/max/mdev = 0.276/0.276/0.276/0.000 ms + +sh-5.1# vtysh +Hello, this is FRRouting (version 8.0). +Copyright 1996-2005 Kunihiro Ishiguro, et al. +ext-gw# show bfd peers brief +Session count: 1 +SessionId LocalAddress PeerAddress Status +========= ============ =========== ====== +1866236061 172.18.0.10 172.18.0.4 up +``` + +Let's check FRR logs: +``` +$ oc logs ext-gw -n frr +Started watchfrr +2023/02/23 10:34:31 ZEBRA: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00 +2023/02/23 10:34:31 BGP: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00 +2023/02/23 10:34:31 STATIC: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00 +2023/02/23 10:34:31 BFD: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00 +2023/02/23 10:34:33 BFD: [J1C6V-VMRW5] state-change: [mhop:no peer:172.18.0.4 local:0.0.0.0 vrf:default] init -> up +``` + +Let's check everything was properly created from the OVN perspective: +``` +$ POD=$(kubectl get pod -n ovn-kubernetes -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | grep ovnkube-db-) ; kubectl exec -ti $POD -n ovn-kubernetes -c nb-ovsdb -- bash + +[root@ovn-control-plane ~]# ovn-nbctl list bfd +_uuid : 6a5f6a73-df1f-4114-b36a-745cf3e9123b +detect_mult : [] +dst_ip : "172.18.0.10" +external_ids : {} +logical_port : exgw-rtoe-GR_ovn-worker2 +min_rx : [] +min_tx : [] +options : {} +status : up + +[root@ovn-control-plane ~]# ovn-nbctl lr-route-list GR_ovn-worker2 +IPv4 Routes +Route Table
: + 10.244.1.3 172.18.0.10 src-ip exgw-rtoe-GR_ovn-worker2 ecmp-symmetric-reply bfd + 169.254.169.0/29 169.254.169.4 dst-ip rtoe-GR_ovn-worker2 + 10.244.0.0/16 100.64.0.1 dst-ip + 0.0.0.0/0 172.18.0.1 dst-ip rtoe-GR_ovn-worker2 + +[root@ovn-control-plane ~]# ovn-nbctl lr-route-list GR_ovn-worker +IPv4 Routes +Route Table
: + 169.254.169.0/29 169.254.169.4 dst-ip rtoe-GR_ovn-worker + 10.244.0.0/16 100.64.0.1 dst-ip + 0.0.0.0/0 172.18.0.1 dst-ip rtoe-GR_ovn-worker +``` + +Let's add a loopback address to the *ext-gw* pod to test the source routing entry: +``` +$ kubectl exec -n frr ext-gw -- ip a a 192.168.1.10/32 dev lo +``` + +Validate the *dummy* pod can reach the network running in *ext-gw* container's looback address: +``` +$ kubectl exec -n bar dummy -- ping -c 1 192.168.1.10 +PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data. +64 bytes from 192.168.1.10: icmp_seq=1 ttl=62 time=6.96 ms + +--- 192.168.1.10 ping statistics --- +1 packets transmitted, 1 received, 0% packet loss, time 0ms +rtt min/avg/max/mdev = 6.959/6.959/6.959/0.000 ms +``` + +Let's create a "normal" pod in the default namespace (outside the `routing-namespaces` annotated namespaces): +```yaml +$ cat <- + vtysh -c 'show bfd peers brief' | + grep up + initialDelaySeconds: 5 + periodSeconds: 5 + volumes: + - name: config-volume + configMap: + name: frr-configs + nodeSelector: + kubernetes.io/hostname: ovn-worker +EOF +``` + +``` +$ kubectl get po -n frr +NAME READY STATUS RESTARTS AGE +ext-gw 1/1 Running 0 46m +ext-gw2 1/1 Running 0 5m10s + +$ kubectl describe po ext-gw2 -n frr | grep Ready + Ready: True + Ready True + ContainersReady True +``` diff --git a/_posts/2023-03-20-linux-trivia.md b/_posts/2023-03-20-linux-trivia.md new file mode 100644 index 0000000000..214be2413b --- /dev/null +++ b/_posts/2023-03-20-linux-trivia.md @@ -0,0 +1,26 @@ +--- +title: "Legends of Linux Trivia" +last_modified_at: 2022-03-20T16:00:58-04:00 +tags: + - cert + - en + - redhat +toc: true +toc_sticky: true +--- + +How well do you know Linux? + +Red Hat [is offering](https://redhatdg.co1.qualtrics.com/jfe/form/SV_bjRFSHqPdTpIjoa) three nifty badges for Linux lovers and badge collectors alike. Successfully complete a single Red Hat quiz to earn the badge of your choice below. Or complete them all to earn all three. Sounds pretty easy, right? Well, there is a catch … you have to score 100% on the quiz. + +### Red Hat Enterprise Linux Trivia - Red Hat Titan + +![](/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png) + +### Linux Command-Line Trivia - Command-Line Captain + +![](/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png) + +### Linux Open Source Trivia - Open Sourcer-er + +![](/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png) diff --git a/_posts/2023-03-28-perfcon23.md b/_posts/2023-03-28-perfcon23.md new file mode 100644 index 0000000000..b9075cc456 --- /dev/null +++ b/_posts/2023-03-28-perfcon23.md @@ -0,0 +1,28 @@ +--- +title: "PerfConf Spring 2023" +last_modified_at: 2023-03-28T16:00:58-04:00 +tags: + - en + - events + - networks + - openshift + - redhat + - sdn +toc: true +toc_sticky: true +--- + +## [Proceedings](https://perfconfspring2023.sched.com/) + +[**(Control-plane) testing at scale with Cluster API and Kubemark**](https://perfconfspring2023.sched.com/event/1JjtY/control-plane-testing-at-scale-with-cluster-api-and-kubemark) + +Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating "hollow" Kubernetes nodes (that run as pods in an external management cluster). What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, hollow nodes are extremelly light (<30 MiB). + +The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks). + +Tuesday, March 28 • 3:40pm - 4:00pm CEST + +Google Meet ID: [https://meet.google.com/bzf-quiv-kaz](https://meet.google.com/bzf-quiv-kaz) + +## Speakers + - [Jose Castillo Lema](https://perfconfspring2022.sched.com/speaker/jlema) - Software Engineer at **Red Hat** \ No newline at end of file diff --git a/_posts/2023-04-19-rhr-talks.md b/_posts/2023-04-19-rhr-talks.md new file mode 100644 index 0000000000..5ff4c97669 --- /dev/null +++ b/_posts/2023-04-19-rhr-talks.md @@ -0,0 +1,34 @@ +--- +title: "RHR talks: Fluid Network Control and Data Plane Research" +last_modified_at: 2023-04-19T16:00:58-04:00 +tags: + - en + - networks + - redhat + - research +toc: false +--- + +[![](/assets/images/posts/2023-04-19-physics-rhr-talks.png)](https://research.redhat.com/events/fluid-network-control-and-data-plane-research/) + +Join [Red Hat Research](https://research.redhat.com/) for the next Research Days event, **Fluid Network Control and Data Plane Research** on April 19, 2023 from 17PM to 18:30PM CEST. + +New 5G and 6G technologies are raising the top speed for a wireless device up to 1 Tbps, and experts predict 6G will be available to consumers by 2030. What will our core networks look like then, and how will we engineer them to support diverse dynamic services that range from slow text to fast autonomous vehicles? Join us for a peek into the challenges of driving on the edge as envisioned by researchers from Latin America. + +[Christian Rothenberg](https://research.redhat.com/blog/project_member/christian-esteve-rothenberg/), Professor, University of Campinas, and head of [INTRIG Lab](https://intrig.dca.fee.unicamp.br/), will be our speaker and [Simone Ferlin-Reiter](https://research.redhat.com/blog/project_member/simone-ferlin-reiter/), Red Hat, will lead the conversation. + +## Abstract +Prof. Christian Rothenberg will introduce the [SMARTNESS 2030](https://smartness2030.tech/) research center initiative and present selected ongoing research tracks around network softwarization leveraging state-of-the-art open source and open hardware technologies: + +- Hybrid-p4-5G: Hybrid P4 Programmable Pipelines for 5G gNodeB and User Plane Functions +- P7 – P4 Programmable Patch Panel: an instant 100G emulated network testbed in a Tofino pizza box +- EFFECTOR: Encrypted DASH QoE Performance Evaluation Framework with 5G Datasets +- QoEyes: Virtual Reality Streaming QoE Estimation through ML techniques and Programmable Data Planes +- PoD acceleration: Offloading K8 container networking functions and service mesh crypto functions (eg. kTLS) to programmable SmartNICs/IPUs + +The recording and materials will be available following the talk. Learn more about Red Hat Research Days Events and watch the recordings from previous events at [research.redhat.com/research-talks](https://research.redhat.com/research-talks/). + + + +![YouTube Video Views](https://img.shields.io/youtube/views/Kd5BiDYD0M4?style=social) +![YouTube Video Likes](https://img.shields.io/youtube/likes/Kd5BiDYD0M4?style=social) \ No newline at end of file diff --git a/_posts/2023-04-21-iffe-mbd.md b/_posts/2023-04-21-iffe-mbd.md new file mode 100644 index 0000000000..8c24bda2fd --- /dev/null +++ b/_posts/2023-04-21-iffe-mbd.md @@ -0,0 +1,18 @@ +--- +title: "IFFE Máster en Big Data y Analítica de Negocio (MBD)" +last_modified_at: 2023-04-21T16:00:58-04:00 +tags: + - aws + - classes + - es + - iffe +toc: false +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/iffe/main/README.md %} + + \ No newline at end of file diff --git a/_posts/2023-05-23-devconf23.md b/_posts/2023-05-23-devconf23.md new file mode 100644 index 0000000000..3571e97620 --- /dev/null +++ b/_posts/2023-05-23-devconf23.md @@ -0,0 +1,52 @@ +--- +title: "DevConf.CZ 2023 - Writing a K8s Operator for Knative Functions" +last_modified_at: 2023-07-05T16:00:58-04:00 +tags: + - en + - events + - openshift + - redhat + - research +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2023-05-23-devconf23/1.png)](https://www.devconf.info/cz/) + +## About + +[DevConf.CZ](https://www.devconf.info/cz/) is an annual, free, Red Hat sponsored community conference for developers, admins, DevOps engineers, testers, documentation writers and other contributors to open source technologies. At DevConf.CZ, FLOSS communities sync, share, and hack on upstream projects together. + +DevConf.cz Mini is a bi-annual, highly focused, local, in-person version of DevConf.cz. It offers an opportunity to return to our conference themes in a smaller setting and establishes a platform for the Czech Republic and EMEA based community to sync, share and hack on upstream projects together. + +There is no admission or ticket charge for DevConf.CZ events. However, you are required to complete a free registration. Watch this site for updates about registration. + +We are committed to fostering an open and welcoming environment at our conference. We set expectations for inclusive behavior through our code of conduct and media policies, and are prepared to enforce these. + +## [Schedule](https://devconfcz2023.sched.com/) + +[**Writing a K8s Operator for Knative Functions**](https://devconfcz2023.sched.com/event/1MYpJ/writing-a-k8s-operator-for-knative-functions) + +[![](/assets/images/posts/2023-05-23-devconf23/2.png)](https://research.redhat.com/blog/2023/06/09/red-hat-research-engineers-will-lead-the-workshop-on-k8s-operator-for-faas-at-devconf-cz-2023/) + +Serverless and Function as a Service (FaaS) are getting more and more attention from customers and developers as a way to develop, run and manage applications functionality without the burden of infrastructure related knowledge. All big cloud providers offer them already, e.g., AWS Lambda, Google Cloud Functions or Microsoft Azure Functions. One of the most relevant upstream projects for serverless is Knative, which recently added support for functions (create, build, and deploy) on top of K8s clusters. + +This workshop will introduce you to the the [PHYSICS European project](/physics) and its FaaS model, as well as to building Kubernetes operators. You will implement a K8s Operator, using the operatorsdk framework, to provide the functionality of the Knative CLI. This will allow easier creation, build and deployment of functions with Knative just by creating Kubernetes (CR) objects, and will help you learn the internals about how K8s Operators work in a real life example. + +***Friday June 16, 2023 • 2:15pm - 3:35pm CEST*** + +![](/assets/images/posts/2023-05-23-devconf23/3.jpeg) + +## Speakers + - [Luis Tomas Bolivar](https://devconfcz2023.sched.com/speaker/ltomasbo) - Software Engineer at **Red Hat** + - [Jose Castillo Lema](https://devconfcz2023.sched.com/speaker/jlema) - Software Engineer at **Red Hat** + +## Links + + - [DevConf](https://devconfcz2023.sched.com/event/1MYpJ/writing-a-k8s-operator-for-knative-functions) + - [Red Hat Research (RHR) blog](https://research.redhat.com/blog/2023/06/09/red-hat-research-engineers-will-lead-the-workshop-on-k8s-operator-for-faas-at-devconf-cz-2023/) + - [Physics blog](https://physics-faas.eu/event/future-tech-and-open-research-hackathon/) + +## Workshop + +{% remote_include https://raw.githubusercontent.com/luis5tb/physics-devconf/main/README.md %} \ No newline at end of file diff --git a/_posts/2023-05-25-netsoft23.md b/_posts/2023-05-25-netsoft23.md new file mode 100644 index 0000000000..8d1819a079 --- /dev/null +++ b/_posts/2023-05-25-netsoft23.md @@ -0,0 +1,47 @@ +--- +title: "NetSoft 2023 - Network Softwarization in the Era of Complexity" +last_modified_at: 2023-06-24T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - redhat + - research + - sdn +toc: true +toc_sticky: true +--- + +[![](/assets/images/posts/2023-05-25-netsoft23/1.png)](https://netsoft2023.ieee-netsoft.org/) + +## About + +The [9th IEEE International Conference on Network Softwarization (IEEE NetSoft 2023)](https://netsoft2023.ieee-netsoft.org/about) will be held in **Madrid, Spain from June 19 to June 23, 2023**. The conference will be hosted by University Carlos III of Madrid, one of the best Spanish universities in many technical areas, in its downtown campus in Madrid. + +The theme of the IEEE NetSoft 2023 *Boosting Future Networks through Advanced Softwarization* reflects the vision that future networks will also integrate a native service dimension in a continuum compute-connectivity environment crossing different network segments/providers/domains and enabled by softwarization coupled with new advanced architectures, frameworks, and models. This will allow greater flexibility, reliability, adaptability, and efficiency for both network operations and service deployments for the benefit of an ecosystem of different application layers/developers/components. This will also lay the foundation to head beyond the current inter-networking capabilities in Future Internet architectures and to further convergence between internetworking and IP layer re-engineering. + +As in previous events, the IEEE NetSoft 2023 will showcase the latest research and development results from academia and industry in the area of AI/ML, SDN/NFV, edge/fog networking, management and orchestration, network slicing, energy efficiency, cloud-native deployments, security among others promising research areas in the context of Future Internet with the final aim of enabling an open softwarized network environment featured by full automation and autonomicity, native network slicing, and AI-based and dynamic control, management and orchestration. + +IEEE NetSoft 2023 will feature an intense five-day conference program. The core of the conference will run from June 20 to June 22 and will feature inspiring Keynote Talks delivered by world-class researchers and industry representatives. It also includes a Distinguished Expert Panel, Technical Sessions, as well as Demos showcasing prototypes and proof-of-concept implementations of ongoing research ideas. On June 19 and June 23, the program includes workshops and tutorials that will provide the opportunity to deep dive into the focused topics on network softwarization. In addition, in this edition for the first time a PhD symposium will take place to engage PhD students in the vibrant NetSoft community and give them the opportunity to exchange ideas and receive valuable and constructive feedback for PhD work. + +## [Network Softwarization in the Era of Complexity](https://netsoft2023.ieee-netsoft.org/program/distinguished-expert-panel) + +The IEEE International Conference on Network Softwarization (NetSoft) has a long-standing tradition of hosting a Distinguished Expert Panel (DEP) at the end of the three main conference days. The DEP offers the audience the possibility to hear the opinions and visions of renowned experts coming from academia, industry, and government agencies on the most relevant aspects of network softwarization, as well as to actively interact with them. + +The NetSoft 2023 conference theme (*Boosting Future Networks through Advanced Softwarization*) reflects the vision of networks characterized by unprecedented levels of complexity, which can be dealt with only through the flexibility, reliability, efficiency, and abstraction capabilities offered by network softwarization and its advanced architectures, frameworks, and models. How to approach such complexity from a perspective that has practical implications on industry and society, taking advantage of the pervasiveness of communications and their evolution toward intelligent paradigms, will be discussed in the NetSoft 2023 DEP, scheduled on **Thursday, June 22**. + +The [panel](https://netsoft2023.ieee-netsoft.org/program/distinguished-expert-panel) will be centered on the topic *Network Softwarization in the Era of Complexity* and the discussion will continue on two interesting subtopics: *Industrialization of Network Softwarization* and *Network Softwarization: Pervasiveness and Intelligence*. Champions from industry and academia will present their views and introduce the challenges, stimulating the participation of the other panelists as well as the audience. + +## Panelists + - Rui Aguiar, IT Aveiro, Portugal + - Javier Antich Romaguera, Selector AI, Spain + - Jose Castillo Lema, Red Hat, Spain + - Abhimanyu Gosain, Northeastern University, USA + - Ricard Vilalta, CTTC, Spain + +## Co-chairs + - Luis Miguel Contreras Murillo, Telefonica I+D, Spain + - Walter Cerroni, University of Bologna, Italy + +![](/assets/images/posts/2023-05-25-netsoft23/2.jpg) \ No newline at end of file diff --git a/_posts/2023-06-02-imdea.md b/_posts/2023-06-02-imdea.md new file mode 100644 index 0000000000..000245fbcf --- /dev/null +++ b/_posts/2023-06-02-imdea.md @@ -0,0 +1,26 @@ +--- +title: "Telecom cloud-native development: an industry point of view" +last_modified_at: 2023-06-02T16:00:58-04:00 +tags: + - en + - events + - networks + - nfv + - research + - sdn +toc: false +--- + +[![](/assets/images/posts/2023-06-02-imdea.png)](https://networks.imdea.org/whatsnew/events-agenda/) + +Telcos are increasingly moving from physical/virtual to cloud-native network functions in the context of 5G adoption. In this talk we will describe the telecom network transformation journey, benefits of cloud-native deployments, technical requirements/constraints of the underlying cloud service managers, the role of open source technologies and the use of the operator pattern in telecom contexts. + +**Event**: [link](https://networks.imdea.org/whatsnew/events-agenda/telecom-cloud-native-development-an-industry-point-of-view/) + +**Date**: 9 Jun 2023 + +**Location**: MR-A1 [Ramón] & MR-A2 [Cajal], IMDEA Networks Institute, Avda. del Mar Mediterráneo 22, 28918 Leganés – Madrid + +**Time**: 12:00 + +**Add to Calendar**: [iCalendar](https://networks.imdea.org/whatsnew/events-agenda/telecom-cloud-native-development-an-industry-point-of-view/#) [Outlook](https://networks.imdea.org/whatsnew/events-agenda/telecom-cloud-native-development-an-industry-point-of-view/#) [Google](https://www.google.com/calendar/render?action=TEMPLATE&text=Telecom+cloud-native+development%3A+an+industry+point+of+view&dates=20230609T100000Z/20230609T120000Z&details=&location=MR-A1+%5BRam%C3%B3n%5D+%26+MR-A2+%5BCajal%5D%2C+IMDEA+Networks+Institute%2C+Avda.+del+Mar+Mediterr%C3%A1neo+22%2C+28918+Legan%C3%A9s+%E2%80%93+Madrid&sf=true&output=xml) \ No newline at end of file diff --git a/_posts/2023-06-07-dotfiles.md b/_posts/2023-06-07-dotfiles.md new file mode 100644 index 0000000000..5b64e597d1 --- /dev/null +++ b/_posts/2023-06-07-dotfiles.md @@ -0,0 +1,16 @@ +--- +title: "My Linux desktop" +last_modified_at: 2023-06-07T16:00:58-04:00 +tags: + - en + - redhat +toc: false +--- + + + + + +{% remote_include https://raw.githubusercontent.com/josecastillolema/dotfiles/main/README.md %} + + \ No newline at end of file diff --git a/_posts/2023-09-19-kubemark-ocp.md b/_posts/2023-09-19-kubemark-ocp.md new file mode 100644 index 0000000000..fd62b71a98 --- /dev/null +++ b/_posts/2023-09-19-kubemark-ocp.md @@ -0,0 +1,162 @@ +--- +title: "Kubemark on OpenShift" +last_modified_at: 2023-09-19T16:00:58-04:00 +tags: + - en + - networks + - openshift + - redhat +toc: true +toc_sticky: true +--- + +[Kubemark](https://github.com/kubernetes/kubernetes/tree/master/cmd/kubemark) is a performance testing tool which allows users to run experiments on simulated clusters, by creating "hollow" Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, **hollow nodes are extremely light (<30 MiB)**. + +The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks). + +## Hands to work + +We won't be using the [Cluster API Kubemark Provider](https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/) for this demo, and instead we will be using directly Kubemark itself. + +Let's assume we have a **working OpenShift cluster** available. We will be leveraging a [Red Hat OpenShift Local instance](https://developers.redhat.com/products/openshift-local/overview) (formerly Red Hat CodeReady Containers) for this demo: +``` +❯ oc version +Client Version: 4.13.6 +Kustomize Version: v4.5.7 +Server Version: 4.13.6 +Kubernetes Version: v1.26.6+73ac561 + +❯ oc get node +NAME STATUS ROLES AGE VERSION +crc-2zx29-master-0 Ready control-plane,master,worker 54d v1.26.6+73ac561 +``` + +Let's create a new **project**, **secret** and corresponding **permissions**: +``` +❯ oc new-project kubemark +Now using project "kubemark" on server "https://api.crc.testing:6443". + +❯ oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG +secret/kubeconfig created + +❯ oc adm policy add-scc-to-user privileged -z default +clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "default" +``` + +Let's create the **Kubemark pod** (which in turn will automatically instantiate a new node): +```yaml +❯ cat < 4s v1.26.7 +``` + +The cluster should be healthy: +``` +❯ oc get co +NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE +authentication 4.13.6 True False False 12d +cluster-api 4.13.6 True False False 13d +config-operator 4.13.6 True False False 54d +console 4.13.6 True False False 12d +control-plane-machine-set 4.13.6 True False False 54d +dns 4.13.6 True False False 12d +etcd 4.13.6 True False False 54d +image-registry 4.13.6 True False False 12d +ingress 4.13.6 True False False 54d +kube-apiserver 4.13.6 True False False 54d +kube-controller-manager 4.13.6 True False False 54d +kube-scheduler 4.13.6 True False False 54d +kube-storage-version-migrator 4.13.6 True False False 12d +machine-api 4.13.6 True False False 54d +machine-approver 4.13.6 True False False 54d +machine-config 4.13.6 True False False 54d +marketplace 4.13.6 True False False 54d +network 4.13.6 True False False 54d +openshift-apiserver 4.13.6 True False False 12d +openshift-controller-manager 4.13.6 True False False 12d +openshift-samples 4.13.6 True False False 54d +operator-lifecycle-manager 4.13.6 True False False 54d +operator-lifecycle-manager-catalog 4.13.6 True False False 54d +operator-lifecycle-manager-packageserver 4.13.6 True False False 119m +platform-operators-aggregated 4.13.6 True False False 119m +service-ca 4.13.6 True False False 54d +``` + +And there should a few pods already "running" in the new hollow node: +``` +❯ oc get pods -A --field-selector spec.nodeName=kubemark-node +NAMESPACE NAME READY STATUS RESTARTS AGE +hostpath-provisioner csi-hostpathplugin-8p9j5 4/4 Running 0 17m +openshift-dns dns-default-lt7g8 2/2 Running 0 17m +openshift-dns node-resolver-9plz7 1/1 Running 0 17m +openshift-image-registry node-ca-x7hq7 1/1 Running 0 17m +openshift-ingress-canary ingress-canary-l2mlx 1/1 Running 0 17m +openshift-machine-config-operator machine-config-daemon-smq5z 2/2 Running 0 17m +openshift-multus multus-7xp8p 1/1 Running 0 17m +openshift-multus multus-additional-cni-plugins-rv6j7 0/1 Init:0/6 0 17m +openshift-multus network-metrics-daemon-zh2vz 2/2 Running 0 17m +openshift-network-diagnostics network-check-target-l85xq 1/1 Running 0 17m +openshift-sdn sdn-rv9mb 2/2 Running 0 17m + +``` + +Let's try to create some pods on the new hollow node: +``` +❯ oc run test --image nginx --overrides='{"spec": { "nodeSelector": {"kubernetes.io/hostname": "kubemark-node"}}}' +pod/test created + +❯ oc get po -o wide test +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +test 1/1 Running 0 36s 192.168.192.168 kubemark-node +``` + + +Finally, bear in mind that in order to create new hollow nodes you will have to change two fields in the pod definition: + - The pod name: `metadata.name` + - The name of the hollow node: `spec.containers.args.--name` \ No newline at end of file diff --git a/_posts/2023-10-21-dev-inmutable-distros.md b/_posts/2023-10-21-dev-inmutable-distros.md new file mode 100644 index 0000000000..e2f5ec9fc0 --- /dev/null +++ b/_posts/2023-10-21-dev-inmutable-distros.md @@ -0,0 +1,223 @@ +--- +title: "Development workflows on inmutable distros: rootless setup" +last_modified_at: 2023-10-21T16:00:58-04:00 +tags: + - en + - redhat +toc: true +toc_sticky: true +--- + +> Continuation of [Samsai](https://samsai.eu/) notes on [Toolbox-based Emacs Flatpak workflow](https://samsai.eu/post/toolbox-based-emacs-flatpak-workflow/). + +I have been using inmutable OS distributions for a while (Fedora Silverblue and Sericea, see my [dotfiles](/dotfiles)). They have the following characteristics: + - System root (baseOS) is mostly immutable + - System software installation/updates are handled as images and applied on reboot + - For installing desktop applications, [Flatpak](https://flatpak.org/) is the recommended default route + - [Toolbx](https://containertoolbx.org/) can be used to set up containerized Linux environments for developer tools, these containers will mount your home directory and certain important files for GUI programs to work as well + - Local user (rootless) installations + +I personally follow these guidelines when installing new applications: + - If it is a desktop application, prefer Flatpak (and some terminal ones too, i.e.: [Neovim](https://flathub.org/apps/io.neovim.nvim) and [Emacs](https://flathub.org/apps/org.gnu.emacs)) + - For terminal applications, consider Toolbx or local installations + - Do not install desktop applications into Toolbx + - Avoid duplication (i.e.: installing the same editors or development environments in several places) + - Try to avoid `rpm-ostree` layering on baseOS as much as possible + +The development workflow story on inmutable distros hasn't really been standardized yet, as these distros are quite new. Let's take a look at several approaches and **finally discuss the local (rootless) installation method**. + +## Layering with rpm-ostree (not a good idea) + +You can also install development tools directly on the inmutable distros install using package layering with `rpm-ostree`. So, if you want to, you can install your editor, compilers, build tools and linters straight on the Silverblue install. + +However, this isn't really how most people view you should use Silverblue. The application installation process is a bit more annoying, although experimental support for installing software without rebooting does exist nowadays. It also makes your system install kind of messy due to large numbers of overlayed packages. + +I wouldn't take this route because while you aren't strictly speaking losing all of the benefits of inmutable distros, you are making life quite difficult for yourself compared to just using regular Fedora Workstation for instance. You also don't get the benefits of separating your system from your application environments and expose yourself to more potential breakages. + + +## Toolbx approaches + +### Single toolbx container for all dev activities +The easiest way to have everything working in a predictable and simple manner is to create a single Toolbox container, which has all of the development tools for every single project installed within it. This means that the container contains your text editor of choice, compilers, linters, build tools and all of their dependencies. + +The benefit of this approach is that it is extremely close to how you'd work on any other Linux distribution. + +This approach has several drawbacks: + - All software pilled into one environment + - Keeping the text editor inside the Toolbox still results in somewhat poor integration with the host system + - Install desktop applications into toolbx containers instead of Flatpak applications + +### A toolbx container per language / project + +Another (better IMO) possibility is to separately set up a Toolbox container for each project you work on. This means that all of your project environments are fully separated from each other and all of them only carry tools and dependencies relevant to the project in question. + +Loss of a Toolbox container limits the damage to a particular project and per-project Toolboxes are fairly simple to recreate. + +Drawbacks: + - Certain parts of your development workflow need to be duplicated. You potentially need to install your text editor and all of its required dependencies and tools in each environment. + - Keeping the text editor inside the Toolbox still results in somewhat poor integration with the host system. + +## Flatpak approach + +You can install Flatpak SDKs such as the Rust build tools like this: +``` +$ flatpak install org.freedesktop.Sdk.Extension.rust-stable +``` + +And then load them into a Flatpak editor using an SDK extension flag: +``` +$ FLATPAK_ENABLE_SDK_EXT=rust-stable flatpak run com.visualstudio.code +``` +or just load every SDK available in your local setup: +``` +$ FLATPAK_ENABLE_SDK_EXT=* flatpak run com.visualstudio.code +``` + +This causes the tools and libraries from that SDK to be made visible to the Flatpak application. There are Flatpak SDKs for a few languages like Java, Rust, Haskell, PHP and Node, but obviously support for all use-cases does not exist. But if you only plan to develop in languages that already have an SDK ready or are willing to learn how to package more SDKs, then this approach is definitely viable for things like Neovim, Emacs and VSCode Flatpaks. + +Drawbacks: + - Some languages do not have an SDK available + - Limited to the language runtime versions available in the SDKs + - Duplication of the language runtime (plus you will need to install all the library dependencies on the Flatpak to have proper code support from your editor) + +## Combined approach + +You can also mix approaches such that part of the development activity happens outside Toolbox and part of it inside the Toolbox. The simplest case would be installing your text editor via Flatpak for example and then connecting from that text editor to a Toolbox for project-specific tools like compilers. + +The benefit here is that you can install tools where they make most sense and where they integrate the best. So, you will get your nice app launchers and the ability to keep project environments separate. + +Tools available: + - For VSCode + - [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) + - [toolbox-vscode](https://github.com/owtaylor/toolbox-vscode): a script that configures the current toolbox container to work with the Remote Containers Visual Studio Code extension + - For Emacs + - [toolbox-tramp](https://github.com/fejfighter/toolbox-tramp) + - For Neovim + - `nvim --remote` ? + - [nvim-remote-containers](https://github.com/jamestthompson3/nvim-remote-containers) + +## User (rootless) installations + +I have not seen much information about this method anywhere and for me as of today it is the prefered approach. Flatpak applications (i.e.: editors) cannot access the root filesystem (i.e.: the preinstalled python package on `/usr/bin/python`). However they have full access to the home directory (same as Toolbx containers). + +So installing the development runtimes and tools locally (and then configuring your Flatpak editor to use them) provides an excelent out of the box developer experience without the need of Flatpak SDKs nor plugins to enable your editor to access the Toolbx containers. + +Drawbacks: + - It can be more time consuming to set up than normal `rpm` installs in some scenarios + - No automatic updates + +Let's take a look at local installs for several platforms. + +### OCaml + +We will leverage the [OCaml Package Manager (opam)](https://opam.ocaml.org/) to install the platform (or several versions) and local switches to each project: +``` +$ curl https://github.com/ocaml/opam/releases/download/2.1.5/opam-2.1.5-i686-linux -Lo ~/bin/opam && chmod +x ~/bin/opam +``` + +From a toolbx container with proper development tools, i.e.: [this one](https://github.com/josecastillolema/toolbox-images/blob/main/fedora-toolbox-38/Containerfile) incialize the opam environment and install the [platform tools](https://ocaml.org/docs/platform): +``` +⬢ $ opam init +⬢ $ opam install dune ocaml-lsp-server odoc ocamlformat utop +``` + +Optionally, install some extras for Emacs, Vim and Neovim: +``` +⬢ $ opam install ocp-indent ocp-index merlin tuareg +``` + +We need to add the opam path (`~/bin`) to our editor of choice (i.e.: VSCode) path: +``` +$ sudo flatpak override --env=PATH='/app/bin:/usr/bin:/home/$USER/bin:/home/$USER/.opam/default/bin' com.visualstudio.code +``` + +Finally, open the project in VSCode and choose the corresponding opam switch. + +#### Using local switches + +It is possible to define a switch within the source of a project to be used specifically in that project. +If a **local switch** is detected in the current directory or a parent, opam will select it automatically. +``` +⬢ $ opam switch create . +``` + +Finally, open the project in VSCode and choose the corresponding recommended opam switch. + + +### Golang + +Download latest version: +``` +$ mkdr ~/go +$ curl https://go.dev/dl/go1.21.3.linux-amd64.tar.gz -Lo ~/go.tar.gz +$ tar xf ~/go/go.tar.gz +$ mv ~/go/go ~/go/go-1.21.3 +``` + +Add the following environment variables to your environment: +``` +export GOROOT=$HOME/go/go-1.21.3 +export GOPATH=$HOME/go +export PATH=$PATH:$GOROOT/bin:$GOPATH/bin +``` + +Check installation: +``` +$ go version +go version go1.21.3 linux/amd64 +``` + +Finally, open VSCode (it should automatically detect the local Golang installation), install the [Go VSCode extension](https://marketplace.visualstudio.com/items?itemName=golang.Go) and click on `⚠ Analysis Tools Missing` to install those. + +![](/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png) + +### Python + +#### Local install +Install both `python` and `pip` in the local user environment. + +From a toolbx container with proper development tools, i.e.: [this one](https://github.com/josecastillolema/toolbox-images/blob/main/fedora-toolbox-38/Containerfile) download and compile Python: +``` +⬢ $ wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz +⬢ $ tar -xf Python-3.?.?.tar.xz +⬢ $ cd Python-3.?.?.tar.xz +⬢ $ ./configure --prefix=$HOME +⬢ $ make install +⬢ $ ln -s ~/bin/python3 ~/bin/python +⬢ $ pip install readline +``` + +Then you can just pip install any dependencies, open the project in VSCode and choose the corresponding Python environment `~/bin/python`. I do not tend to pip install the requirements of the projects thought (only the indispensable ones, like i.e.: ansible), instead prefer the virtual environments approach that will be described next. + +![](/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png) + +#### Using python virtual environments + +Before opening the project in VSCode: +``` +$ flatpak run --command=sh com.visualstudio.code +[📦] python -m venv . +[📦] source bin/activate +()[📦] pip install -r requirements.txt +``` +Then open the project in VSCode and choose the local virtual environment. + +### Ansible + +Python local install is a pre-requisite. + +Local ansible installation: +``` +python -m pip install --user ansible ansible-lint +``` +Ansible will be installed on ~/.local/bin, so we need to add this path to our editor of choice (i.e.: VSCode): +``` +$ which ansible +~/.local/bin/ansible +$ sudo flatpak override --env=PATH='/app/bin:/usr/bin:/home/$USER/.local/bin' com.visualstudio.code +``` + +Installed the Ansible extension by Red Hat in VSCode and [enabled Lightspeed](https://developers.redhat.com/articles/2023/08/22/enhance-ansible-development-experience-lightspeed). + +When opening VSCode it should automatically detect the local Ansible installation. + diff --git a/_sass/minimal-mistakes.scss b/_sass/minimal-mistakes.scss new file mode 100644 index 0000000000..3b252e5620 --- /dev/null +++ b/_sass/minimal-mistakes.scss @@ -0,0 +1,40 @@ +/*! + * Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose + * Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes + * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) +*/ + +/* Variables */ +@import "minimal-mistakes/variables"; + +/* Mixins and functions */ +@import "minimal-mistakes/vendor/breakpoint/breakpoint"; +@include breakpoint-set("to ems", true); +@import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup +@import "minimal-mistakes/vendor/susy/susy"; +@import "minimal-mistakes/mixins"; + +/* Core CSS */ +@import "minimal-mistakes/reset"; +@import "minimal-mistakes/base"; +@import "minimal-mistakes/forms"; +@import "minimal-mistakes/tables"; +@import "minimal-mistakes/animations"; + +/* Components */ +@import "minimal-mistakes/buttons"; +@import "minimal-mistakes/notices"; +@import "minimal-mistakes/masthead"; +@import "minimal-mistakes/navigation"; +@import "minimal-mistakes/footer"; +@import "minimal-mistakes/search"; +@import "minimal-mistakes/syntax"; + +/* Utility classes */ +@import "minimal-mistakes/utilities"; + +/* Layout specific */ +@import "minimal-mistakes/page"; +@import "minimal-mistakes/archive"; +@import "minimal-mistakes/sidebar"; +@import "minimal-mistakes/print"; diff --git a/_sass/minimal-mistakes/_masthead.scss b/_sass/minimal-mistakes/_masthead.scss new file mode 100644 index 0000000000..15aab36f97 --- /dev/null +++ b/_sass/minimal-mistakes/_masthead.scss @@ -0,0 +1,95 @@ +/* ========================================================================== + MASTHEAD + ========================================================================== */ + +.masthead { + position: relative; + border-bottom: 1px solid $border-color; + -webkit-animation: $intro-transition; + animation: $intro-transition; + -webkit-animation-delay: 0.15s; + animation-delay: 0.15s; + z-index: 20; + //background-color: #F6F8FA; // github grey + background-color: #F2F3F3; + + &__inner-wrap { + @include clearfix; + margin-left: auto; + margin-right: auto; + padding: 1em; + max-width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + font-family: $sans-serif-narrow; + + @include breakpoint($x-large) { + max-width: $max-width; + } + + nav { + z-index: 10; + } + + a { + text-decoration: none; + } + } +} + +.site-logo img { + max-height: 2rem; +} + +.site-title { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-item-align: center; + align-self: center; + font-weight: bold; + // z-index: 20; +} + +.site-subtitle { + display: block; + font-size: $type-size-8; +} + +.masthead__menu { + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; + + .site-nav { + margin-left: 0; + + @include breakpoint($small) { + float: right; + } + } + + ul { + margin: 0; + padding: 0; + clear: both; + list-style-type: none; + } +} + +.masthead__menu-item { + display: block; + list-style-type: none; + white-space: nowrap; + + &--lg { + padding-right: 2em; + font-weight: 700; + } +} diff --git a/_sass/minimal-mistakes/_navigation.scss b/_sass/minimal-mistakes/_navigation.scss new file mode 100644 index 0000000000..ab7097edfe --- /dev/null +++ b/_sass/minimal-mistakes/_navigation.scss @@ -0,0 +1,573 @@ +/* ========================================================================== + NAVIGATION + ========================================================================== */ + +/* + Breadcrumb navigation links + ========================================================================== */ + +.breadcrumbs { + @include clearfix; + margin: 0 auto; + max-width: 100%; + padding-left: 1em; + padding-right: 1em; + font-family: $sans-serif; + -webkit-animation: $intro-transition; + animation: $intro-transition; + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; + + @include breakpoint($x-large) { + max-width: $x-large; + } + + ol { + padding: 0; + list-style: none; + font-size: $type-size-6; + + @include breakpoint($large) { + float: right; + width: calc(100% - #{$right-sidebar-width-narrow}); + } + + @include breakpoint($x-large) { + width: calc(100% - #{$right-sidebar-width}); + } + } + + li { + display: inline; + } + + .current { + font-weight: bold; + } +} + +/* + Post pagination navigation links + ========================================================================== */ + +.pagination { + @include clearfix(); + float: left; + margin-top: 1em; + padding-top: 1em; + width: 100%; + + ul { + margin: 0; + padding: 0; + list-style-type: none; + font-family: $sans-serif; + } + + li { + display: block; + float: left; + margin-left: -1px; + + a { + display: block; + margin-bottom: 0.25em; + padding: 0.5em 1em; + font-family: $sans-serif; + font-size: 14px; + font-weight: bold; + line-height: 1.5; + text-align: center; + text-decoration: none; + color: $muted-text-color; + border: 1px solid mix(#000, $border-color, 25%); + border-radius: 0; + + &:hover { + color: $link-color-hover; + } + + &.current, + &.current.disabled { + color: #fff; + background: $primary-color; + } + + &.disabled { + color: rgba($muted-text-color, 0.5); + pointer-events: none; + cursor: not-allowed; + } + } + + &:first-child { + margin-left: 0; + + a { + border-top-left-radius: $border-radius; + border-bottom-left-radius: $border-radius; + } + } + + &:last-child { + a { + border-top-right-radius: $border-radius; + border-bottom-right-radius: $border-radius; + } + } + } + + /* next/previous buttons */ + &--pager { + display: block; + padding: 1em 2em; + float: left; + width: 50%; + font-family: $sans-serif; + font-size: $type-size-5; + font-weight: bold; + text-align: center; + text-decoration: none; + color: $muted-text-color; + border: 1px solid mix(#000, $border-color, 25%); + border-radius: $border-radius; + + &:hover { + @include yiq-contrasted($muted-text-color); + } + + &:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + &:last-child { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + &.disabled { + color: rgba($muted-text-color, 0.5); + pointer-events: none; + cursor: not-allowed; + } + } +} + +.page__content + .pagination, +.page__meta + .pagination, +.page__share + .pagination, +.page__comments + .pagination { + margin-top: 2em; + padding-top: 2em; + border-top: 1px solid $border-color; +} + +/* + Priority plus navigation + ========================================================================== */ + +.greedy-nav { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: $nav-height; + background: #F2F3F3; + + a { + display: block; + margin: 0 1rem; + color: $masthead-link-color; + text-decoration: none; + -webkit-transition: none; + transition: none; + + &:hover { + color: $masthead-link-color-hover; + } + + &.site-logo { + margin-left: 0; + margin-right: 0.5rem; + } + + &.site-title { + margin-left: 0; + } + } + + img { + -webkit-transition: none; + transition: none; + } + + &__toggle { + -ms-flex-item-align: center; + align-self: center; + height: $nav-toggle-height; + border: 0; + outline: none; + background-color: transparent; + cursor: pointer; + } + + .visible-links { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; + + li { + -webkit-box-flex: 0; + -ms-flex: none; + flex: none; + } + + a { + position: relative; + + &:before { + content: ""; + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background: $primary-color; + width: 100%; + -webkit-transition: $global-transition; + transition: $global-transition; + -webkit-transform: scaleX(0) translate3d(0, 0, 0); + transform: scaleX(0) translate3d(0, 0, 0); // hide + } + + &:hover:before { + -webkit-transform: scaleX(1); + -ms-transform: scaleX(1); + transform: scaleX(1); // reveal + } + } + } + + .hidden-links { + position: absolute; + top: 100%; + right: 0; + margin-top: 15px; + padding: 5px; + border: 1px solid $border-color; + border-radius: $border-radius; + background: $background-color; + -webkit-box-shadow: 0 2px 4px 0 rgba(#000, 0.16), + 0 2px 10px 0 rgba(#000, 0.12); + box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12); + + &.hidden { + display: none; + } + + a { + margin: 0; + padding: 10px 20px; + font-size: $type-size-5; + + &:hover { + color: $masthead-link-color-hover; + background: $navicon-link-color-hover; + } + } + + &:before { + content: ""; + position: absolute; + top: -11px; + right: 10px; + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: $border-color transparent; + display: block; + z-index: 0; + } + + &:after { + content: ""; + position: absolute; + top: -10px; + right: 10px; + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: $background-color transparent; + display: block; + z-index: 1; + } + + li { + display: block; + border-bottom: 1px solid $border-color; + + &:last-child { + border-bottom: none; + } + } + } +} + +.no-js { + .greedy-nav { + .visible-links { + -ms-flex-wrap: wrap; + flex-wrap: wrap; + overflow: visible; + } + } +} + +/* + Navigation list + ========================================================================== */ + +.nav__list { + margin-bottom: 1.5em; + + input[type="checkbox"], + label { + display: none; + } + + @include breakpoint(max-width $large - 1px) { + label { + position: relative; + display: inline-block; + padding: 0.5em 2.5em 0.5em 1em; + color: $gray; + font-size: $type-size-6; + font-weight: bold; + border: 1px solid $light-gray; + border-radius: $border-radius; + z-index: 20; + -webkit-transition: 0.2s ease-out; + transition: 0.2s ease-out; + cursor: pointer; + + &:before, + &:after { + content: ""; + position: absolute; + right: 1em; + top: 1.25em; + width: 0.75em; + height: 0.125em; + line-height: 1; + background-color: $gray; + -webkit-transition: 0.2s ease-out; + transition: 0.2s ease-out; + } + + &:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + } + + &:hover { + color: #fff; + border-color: $gray; + background-color: mix(white, #000, 20%); + + &:before, + &:after { + background-color: #fff; + } + } + } + + /* selected*/ + input:checked + label { + color: white; + background-color: mix(white, #000, 20%); + + &:before, + &:after { + background-color: #fff; + } + } + + /* on hover show expand*/ + label:hover:after { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + } + + input:checked + label:hover:after { + -webkit-transform: rotate(0); + -ms-transform: rotate(0); + transform: rotate(0); + } + + ul { + margin-bottom: 1em; + } + + a { + display: block; + padding: 0.25em 0; + + @include breakpoint($large) { + padding-top: 0.125em; + padding-bottom: 0.125em; + } + + &:hover { + text-decoration: underline; + } + } + } +} + +.nav__list .nav__items { + margin: 0; + font-size: 1.25rem; + + a { + color: inherit; + } + + .active { + margin-left: -0.5em; + padding-left: 0.5em; + padding-right: 0.5em; + font-weight: bold; + } + + @include breakpoint(max-width $large - 1px) { + position: relative; + max-height: 0; + opacity: 0%; + overflow: hidden; + z-index: 10; + -webkit-transition: 0.3s ease-in-out; + transition: 0.3s ease-in-out; + -webkit-transform: translate(0, 10%); + -ms-transform: translate(0, 10%); + transform: translate(0, 10%); + } +} + +@include breakpoint(max-width $large - 1px) { + .nav__list input:checked ~ .nav__items { + -webkit-transition: 0.5s ease-in-out; + transition: 0.5s ease-in-out; + max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/ + overflow: visible; + opacity: 1; + margin-top: 1em; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + } +} + +.nav__title { + margin: 0; + padding: 0.5rem 0.75rem; + font-family: $sans-serif-narrow; + font-size: $type-size-5; + font-weight: bold; +} + +.nav__sub-title { + display: block; + margin: 0.5rem 0; + padding: 0.25rem 0; + font-family: $sans-serif-narrow; + font-size: $type-size-6; + font-weight: bold; + text-transform: uppercase; + border-bottom: 1px solid $border-color; +} + +/* + Table of contents navigation + ========================================================================== */ + +.toc { + font-family: $sans-serif-narrow; + color: $gray; + background-color: $background-color; + border: 1px solid $border-color; + border-radius: $border-radius; + -webkit-box-shadow: $box-shadow; + box-shadow: $box-shadow; + + .nav__title { + color: #fff; + font-size: $type-size-6; + background: $primary-color; + border-top-left-radius: $border-radius; + border-top-right-radius: $border-radius; + } + + // Scrollspy marks toc items as .active when they are in focus + .active a { + @include yiq-contrasted($active-color); + } +} + +.toc__menu { + margin: 0; + padding: 0; + width: 100%; + list-style: none; + font-size: $type-size-6; + + @include breakpoint($large) { + font-size: $type-size-7; + } + + a { + display: block; + padding: 0.25rem 0.75rem; + color: $muted-text-color; + font-weight: bold; + line-height: 1.5; + border-bottom: 1px solid $border-color; + + &:hover { + color: $text-color; + } + } + + li ul > li a { + padding-left: 1.25rem; + font-weight: normal; + } + + li ul li ul > li a { + padding-left: 1.75rem; + } + + li ul li ul li ul > li a { + padding-left: 2.25rem; + } + + li ul li ul li ul li ul > li a { + padding-left: 2.75rem; + } + + li ul li ul li ul li ul li ul > li a { + padding-left: 3.25rem + } +} diff --git a/_sass/minimal-mistakes/_utilities.scss b/_sass/minimal-mistakes/_utilities.scss new file mode 100644 index 0000000000..121b667565 --- /dev/null +++ b/_sass/minimal-mistakes/_utilities.scss @@ -0,0 +1,607 @@ +/* ========================================================================== + UTILITY CLASSES + ========================================================================== */ + +/* + Visibility + ========================================================================== */ + +/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */ + +.hidden, +.is--hidden { + display: none; + visibility: hidden; +} + +/* for preloading images */ + +.load { + display: none; +} + +.transparent { + opacity: 0; +} + +/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */ + +.visually-hidden, +.screen-reader-text, +.screen-reader-text span, +.screen-reader-shortcut { + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + height: 1px !important; + width: 1px !important; + border: 0 !important; + overflow: hidden; +} + +body:hover .visually-hidden a, +body:hover .visually-hidden input, +body:hover .visually-hidden button { + display: none !important; +} + +/* screen readers */ + +.screen-reader-text:focus, +.screen-reader-shortcut:focus { + clip: auto !important; + height: auto !important; + width: auto !important; + display: block; + font-size: 1em; + font-weight: bold; + padding: 15px 23px 14px; + background: #fff; + z-index: 100000; + text-decoration: none; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); +} + +/* + Skip links + ========================================================================== */ + +.skip-link { + position: fixed; + z-index: 20; + margin: 0; + font-family: $sans-serif; + white-space: nowrap; +} + +.skip-link li { + height: 0; + width: 0; + list-style: none; +} + +/* + Type + ========================================================================== */ + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-nowrap { + white-space: nowrap; +} + +/* + Task lists + ========================================================================== */ + +.task-list { + padding:0; + + li { + list-style-type: none; + } + + .task-list-item-checkbox { + margin-right: 0.5em; + opacity: 1; + } +} + +.task-list .task-list { + margin-left: 1em; +} + +/* + Alignment + ========================================================================== */ + +/* clearfix */ + +.cf { + clear: both; +} + +.wrapper { + margin-left: auto; + margin-right: auto; + width: 100%; +} + +/* + Images + ========================================================================== */ + +/* image align left */ + +.align-left { + display: block; + margin-left: auto; + margin-right: auto; + + @include breakpoint($small) { + float: left; + margin-right: 1em; + } +} + +/* image align right */ + +.align-right { + display: block; + margin-left: auto; + margin-right: auto; + + @include breakpoint($small) { + float: right; + margin-left: 1em; + } +} + +/* image align center */ + +.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* file page content container */ + +.full { + @include breakpoint($large) { + margin-right: -1 * span(2.5 of 12) !important; + } +} + +/* + Icons + ========================================================================== */ + +.icon { + display: inline-block; + fill: currentColor; + width: 1em; + height: 1.1em; + line-height: 1; + position: relative; + top: -0.1em; + vertical-align: middle; +} + +/* social icons*/ + +.social-icons { + .fas, + .fab, + .far, + .fal { + color: $text-color; + } + + .fa-behance, + .fa-behance-square { + color: $behance-color; + } + + .fa-bitbucket { + color: $bitbucket-color; + } + + .fa-dribbble, + .fa-dribble-square { + color: $dribbble-color; + } + + .fa-facebook, + .fa-facebook-square, + .fa-facebook-f { + color: $facebook-color; + } + + .fa-flickr { + color: $flickr-color; + } + + .fa-foursquare { + color: $foursquare-color; + } + + .fa-github, + .fa-github-alt, + .fa-github-square { + color: $github-color; + } + + .fa-gitlab { + color: $gitlab-color; + } + + .fa-instagram { + color: $instagram-color; + } + + .fa-keybase { + color: $keybase-color; + } + + .fa-lastfm, + .fa-lastfm-square { + color: $lastfm-color; + } + + .fa-linkedin, + .fa-linkedin-in { + color: $linkedin-color; + } + + .fa-mastodon, + .fa-mastodon-square { + color: $mastodon-color; + } + + .fa-pinterest, + .fa-pinterest-p, + .fa-pinterest-square { + color: $pinterest-color; + } + + .fa-reddit { + color: $reddit-color; + } + + .fa-rss, + .fa-rss-square { + color: $rss-color; + } + + .fa-soundcloud { + color: $soundcloud-color; + } + + .fa-stack-exchange, + .fa-stack-overflow { + color: $stackoverflow-color; + } + + .fa-tumblr, + .fa-tumblr-square { + color: $tumblr-color; + } + + .fa-twitter, + .fa-twitter-square { + color: $twitter-color; + } + + .fa-vimeo, + .fa-vimeo-square, + .fa-vimeo-v { + color: $vimeo-color; + } + + .fa-vine { + color: $vine-color; + } + + .fa-youtube { + color: $youtube-color; + } + + .fa-xing, + .fa-xing-square { + color: $xing-color; + } + + // Custom + .fa-researchgate { + color: #00cc99; + } + .fa-google { + color: #6699ff; + } + .fa-university { + color: #3366cc; + } + .fa-battle-net { + color: #990000; + } +} + +/* + Navicons + ========================================================================== */ + +.navicon { + position: relative; + width: $navicon-width; + height: $navicon-height; + background: $primary-color; + margin: auto; + -webkit-transition: 0.3s; + transition: 0.3s; + + &:before, + &:after { + content: ""; + position: absolute; + left: 0; + width: $navicon-width; + height: $navicon-height; + background: $primary-color; + -webkit-transition: 0.3s; + transition: 0.3s; + } + + &:before { + top: (-2 * $navicon-height); + } + + &:after { + bottom: (-2 * $navicon-height); + } +} + +.close .navicon { + /* hide the middle line*/ + background: transparent; + + /* overlay the lines by setting both their top values to 0*/ + &:before, + &:after { + -webkit-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + transform-origin: 50% 50%; + top: 0; + width: $navicon-width; + } + + /* rotate the lines to form the x shape*/ + &:before { + -webkit-transform: rotate3d(0, 0, 1, 45deg); + transform: rotate3d(0, 0, 1, 45deg); + } + &:after { + -webkit-transform: rotate3d(0, 0, 1, -45deg); + transform: rotate3d(0, 0, 1, -45deg); + } +} + +.greedy-nav__toggle { + &:before { + @supports (pointer-events: none) { + content: ''; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + background-color: $background-color; + -webkit-transition: $global-transition; + transition: $global-transition; + pointer-events: none; + } + } + + &.close { + &:before { + opacity: 0.9; + -webkit-transition: $global-transition; + transition: $global-transition; + pointer-events: auto; + } + } +} + +.greedy-nav__toggle:hover { + .navicon, + .navicon:before, + .navicon:after { + background: mix(#000, $primary-color, 25%); + } + + &.close { + .navicon { + background: transparent; + } + } +} + +/* + Sticky, fixed to top content + ========================================================================== */ + +.sticky { + @include breakpoint($large) { + @include clearfix(); + position: -webkit-sticky; + position: sticky; + top: 2em; + + > * { + display: block; + } + } +} + +/* + Wells + ========================================================================== */ + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: $border-radius; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +/* + Modals + ========================================================================== */ + +.show-modal { + overflow: hidden; + position: relative; + + &:before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; + background-color: rgba(255, 255, 255, 0.85); + } + + .modal { + display: block; + } +} + +.modal { + display: none; + position: fixed; + width: 300px; + top: 50%; + left: 50%; + margin-left: -150px; + margin-top: -150px; + min-height: 0; + z-index: 9999; + background: #fff; + border: 1px solid $border-color; + border-radius: $border-radius; + box-shadow: $box-shadow; + + &__title { + margin: 0; + padding: 0.5em 1em; + } + + &__supporting-text { + padding: 0 1em 0.5em 1em; + } + + &__actions { + padding: 0.5em 1em; + border-top: 1px solid $border-color; + } +} + +/* + Footnotes + ========================================================================== */ + +.footnote { + color: mix(#fff, $gray, 25%); + text-decoration: none; +} + +.footnotes { + color: mix(#fff, $gray, 25%); + + ol, + li, + p { + margin-bottom: 0; + font-size: $type-size-6; + } +} + +a.reversefootnote { + color: $gray; + text-decoration: none; + + &:hover { + text-decoration: underline; + } +} + +/* + Required + ========================================================================== */ + +.required { + color: $danger-color; + font-weight: bold; +} + +/* + Google Custom Search Engine + ========================================================================== */ + +.gsc-control-cse { + table, + tr, + td { + border: 0; /* remove table borders widget */ + } +} + +/* + Responsive Video Embed + ========================================================================== */ + +.responsive-video-container { + position: relative; + margin-bottom: 1em; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; + + iframe, + object, + embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +} + +// full screen video fixes +:-webkit-full-screen-ancestor { + .masthead, + .page__footer { + position: static; + } +} \ No newline at end of file diff --git a/assets/images/bio-photo.jpg b/assets/images/bio-photo.jpg deleted file mode 100644 index 0008451798..0000000000 Binary files a/assets/images/bio-photo.jpg and /dev/null differ diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100755 index 0000000000..d7ca24b39a Binary files /dev/null and b/assets/images/favicon.ico differ diff --git a/assets/images/favicon_io/android-chrome-192x192.png b/assets/images/favicon_io/android-chrome-192x192.png new file mode 100755 index 0000000000..34dcc965ec Binary files /dev/null and b/assets/images/favicon_io/android-chrome-192x192.png differ diff --git a/assets/images/favicon_io/android-chrome-512x512.png b/assets/images/favicon_io/android-chrome-512x512.png new file mode 100755 index 0000000000..437f21a617 Binary files /dev/null and b/assets/images/favicon_io/android-chrome-512x512.png differ diff --git a/assets/images/favicon_io/apple-touch-icon.png b/assets/images/favicon_io/apple-touch-icon.png new file mode 100755 index 0000000000..6526ea995d Binary files /dev/null and b/assets/images/favicon_io/apple-touch-icon.png differ diff --git a/assets/images/favicon_io/favicon-16x16.png b/assets/images/favicon_io/favicon-16x16.png new file mode 100755 index 0000000000..faa81f37be Binary files /dev/null and b/assets/images/favicon_io/favicon-16x16.png differ diff --git a/assets/images/favicon_io/favicon-32x32.png b/assets/images/favicon_io/favicon-32x32.png new file mode 100755 index 0000000000..247369f218 Binary files /dev/null and b/assets/images/favicon_io/favicon-32x32.png differ diff --git a/assets/images/favicon_io/favicon.ico b/assets/images/favicon_io/favicon.ico new file mode 100755 index 0000000000..d7ca24b39a Binary files /dev/null and b/assets/images/favicon_io/favicon.ico differ diff --git a/assets/images/favicon_io/site.webmanifest b/assets/images/favicon_io/site.webmanifest new file mode 100755 index 0000000000..45dc8a2065 --- /dev/null +++ b/assets/images/favicon_io/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/assets/images/me.jpg b/assets/images/me.jpg new file mode 100644 index 0000000000..399b0213bf Binary files /dev/null and b/assets/images/me.jpg differ diff --git a/assets/images/me2.jpg b/assets/images/me2.jpg new file mode 100644 index 0000000000..55692be449 Binary files /dev/null and b/assets/images/me2.jpg differ diff --git a/assets/images/me3.jpg b/assets/images/me3.jpg new file mode 100644 index 0000000000..3fc01d5ee0 Binary files /dev/null and b/assets/images/me3.jpg differ diff --git a/assets/images/posts/.DS_Store b/assets/images/posts/.DS_Store new file mode 100644 index 0000000000..259ee1bad7 Binary files /dev/null and b/assets/images/posts/.DS_Store differ diff --git a/assets/images/posts/2016-10-09-computer-networks.png b/assets/images/posts/2016-10-09-computer-networks.png new file mode 100644 index 0000000000..535ee76780 Binary files /dev/null and b/assets/images/posts/2016-10-09-computer-networks.png differ diff --git a/assets/images/posts/2016-12-12-hntd-01.jpeg b/assets/images/posts/2016-12-12-hntd-01.jpeg new file mode 100644 index 0000000000..02fc9c011f Binary files /dev/null and b/assets/images/posts/2016-12-12-hntd-01.jpeg differ diff --git a/assets/images/posts/2017-02-01-fiap-corporate.png b/assets/images/posts/2017-02-01-fiap-corporate.png new file mode 100644 index 0000000000..9412a1c6ca Binary files /dev/null and b/assets/images/posts/2017-02-01-fiap-corporate.png differ diff --git a/assets/images/posts/2017-02-06-hntd-02.jpeg b/assets/images/posts/2017-02-06-hntd-02.jpeg new file mode 100644 index 0000000000..279e1cf5c3 Binary files /dev/null and b/assets/images/posts/2017-02-06-hntd-02.jpeg differ diff --git a/assets/images/posts/2017-03-01-puc.jpeg b/assets/images/posts/2017-03-01-puc.jpeg new file mode 100644 index 0000000000..fb89ce2298 Binary files /dev/null and b/assets/images/posts/2017-03-01-puc.jpeg differ diff --git a/assets/images/posts/2017-03-17-apicon/01.png b/assets/images/posts/2017-03-17-apicon/01.png new file mode 100644 index 0000000000..48c069e500 Binary files /dev/null and b/assets/images/posts/2017-03-17-apicon/01.png differ diff --git a/assets/images/posts/2017-03-17-apicon/02.jpeg b/assets/images/posts/2017-03-17-apicon/02.jpeg new file mode 100644 index 0000000000..63676aaccb Binary files /dev/null and b/assets/images/posts/2017-03-17-apicon/02.jpeg differ diff --git a/assets/images/posts/2017-03-17-apicon/03.JPG b/assets/images/posts/2017-03-17-apicon/03.JPG new file mode 100644 index 0000000000..2d78490b5f Binary files /dev/null and b/assets/images/posts/2017-03-17-apicon/03.JPG differ diff --git a/assets/images/posts/2017-03-17-apicon/04.JPG b/assets/images/posts/2017-03-17-apicon/04.JPG new file mode 100644 index 0000000000..a84196dbc8 Binary files /dev/null and b/assets/images/posts/2017-03-17-apicon/04.JPG differ diff --git a/assets/images/posts/2017-03-18-hntd-03.jpeg b/assets/images/posts/2017-03-18-hntd-03.jpeg new file mode 100644 index 0000000000..6bc1b9075e Binary files /dev/null and b/assets/images/posts/2017-03-18-hntd-03.jpeg differ diff --git a/assets/images/posts/2017-03-27-hntd-04.jpeg b/assets/images/posts/2017-03-27-hntd-04.jpeg new file mode 100644 index 0000000000..5b50619485 Binary files /dev/null and b/assets/images/posts/2017-03-27-hntd-04.jpeg differ diff --git a/assets/images/posts/2017-05-29-hntd-05.jpeg b/assets/images/posts/2017-05-29-hntd-05.jpeg new file mode 100644 index 0000000000..90bb02f5c1 Binary files /dev/null and b/assets/images/posts/2017-05-29-hntd-05.jpeg differ diff --git a/assets/images/posts/2017-08-21-hntd-07.jpeg b/assets/images/posts/2017-08-21-hntd-07.jpeg new file mode 100644 index 0000000000..7845110706 Binary files /dev/null and b/assets/images/posts/2017-08-21-hntd-07.jpeg differ diff --git a/assets/images/posts/2017-08-26-hntd-08.jpeg b/assets/images/posts/2017-08-26-hntd-08.jpeg new file mode 100644 index 0000000000..f666e23c0a Binary files /dev/null and b/assets/images/posts/2017-08-26-hntd-08.jpeg differ diff --git a/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg b/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg new file mode 100644 index 0000000000..93ffc4b69c Binary files /dev/null and b/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg differ diff --git a/assets/images/posts/2017-10-17-hntd-09/01.jpeg b/assets/images/posts/2017-10-17-hntd-09/01.jpeg new file mode 100644 index 0000000000..2fae7a9c0c Binary files /dev/null and b/assets/images/posts/2017-10-17-hntd-09/01.jpeg differ diff --git a/assets/images/posts/2017-10-17-hntd-09/02.JPG b/assets/images/posts/2017-10-17-hntd-09/02.JPG new file mode 100644 index 0000000000..6df5ad0215 Binary files /dev/null and b/assets/images/posts/2017-10-17-hntd-09/02.JPG differ diff --git a/assets/images/posts/2017-10-28-futurecom2017/00.jpeg b/assets/images/posts/2017-10-28-futurecom2017/00.jpeg new file mode 100644 index 0000000000..0d10d402db Binary files /dev/null and b/assets/images/posts/2017-10-28-futurecom2017/00.jpeg differ diff --git a/assets/images/posts/2017-10-28-futurecom2017/01.jpg b/assets/images/posts/2017-10-28-futurecom2017/01.jpg new file mode 100644 index 0000000000..5209a8f18a Binary files /dev/null and b/assets/images/posts/2017-10-28-futurecom2017/01.jpg differ diff --git a/assets/images/posts/2017-10-28-futurecom2017/02.jpg b/assets/images/posts/2017-10-28-futurecom2017/02.jpg new file mode 100644 index 0000000000..eb6885c7dc Binary files /dev/null and b/assets/images/posts/2017-10-28-futurecom2017/02.jpg differ diff --git a/assets/images/posts/2017-10-28-hntd-10.png b/assets/images/posts/2017-10-28-hntd-10.png new file mode 100644 index 0000000000..3c0b18287f Binary files /dev/null and b/assets/images/posts/2017-10-28-hntd-10.png differ diff --git a/assets/images/posts/2017-11-26-terraformando-openstack/01.png b/assets/images/posts/2017-11-26-terraformando-openstack/01.png new file mode 100644 index 0000000000..e0f5a09f45 Binary files /dev/null and b/assets/images/posts/2017-11-26-terraformando-openstack/01.png differ diff --git a/assets/images/posts/2017-11-26-terraformando-openstack/02.png b/assets/images/posts/2017-11-26-terraformando-openstack/02.png new file mode 100644 index 0000000000..372cf32e98 Binary files /dev/null and b/assets/images/posts/2017-11-26-terraformando-openstack/02.png differ diff --git a/assets/images/posts/2017-11-26-terraformando-openstack/03.png b/assets/images/posts/2017-11-26-terraformando-openstack/03.png new file mode 100644 index 0000000000..45deb9ca93 Binary files /dev/null and b/assets/images/posts/2017-11-26-terraformando-openstack/03.png differ diff --git a/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg b/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg new file mode 100644 index 0000000000..287a8a1c17 Binary files /dev/null and b/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/01.png b/assets/images/posts/2017-12-20-heat-introducao/01.png new file mode 100644 index 0000000000..5c76e3ea81 Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/01.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/02.png b/assets/images/posts/2017-12-20-heat-introducao/02.png new file mode 100644 index 0000000000..41591d764e Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/02.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/03.png b/assets/images/posts/2017-12-20-heat-introducao/03.png new file mode 100644 index 0000000000..b6880fa5cc Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/03.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/04.png b/assets/images/posts/2017-12-20-heat-introducao/04.png new file mode 100644 index 0000000000..ee347b71d6 Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/04.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/05.png b/assets/images/posts/2017-12-20-heat-introducao/05.png new file mode 100644 index 0000000000..59b43f6c4f Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/05.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/06.png b/assets/images/posts/2017-12-20-heat-introducao/06.png new file mode 100644 index 0000000000..8ac3ec2a1a Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/06.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/07.png b/assets/images/posts/2017-12-20-heat-introducao/07.png new file mode 100644 index 0000000000..b929dc8691 Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/07.png differ diff --git a/assets/images/posts/2017-12-20-heat-introducao/08.png b/assets/images/posts/2017-12-20-heat-introducao/08.png new file mode 100644 index 0000000000..02e9bb4048 Binary files /dev/null and b/assets/images/posts/2017-12-20-heat-introducao/08.png differ diff --git a/assets/images/posts/2018-02-17-hntd-11.jpeg b/assets/images/posts/2018-02-17-hntd-11.jpeg new file mode 100644 index 0000000000..1e64a57008 Binary files /dev/null and b/assets/images/posts/2018-02-17-hntd-11.jpeg differ diff --git a/assets/images/posts/2018-03-14-hntd-12.jpeg b/assets/images/posts/2018-03-14-hntd-12.jpeg new file mode 100644 index 0000000000..0859daa993 Binary files /dev/null and b/assets/images/posts/2018-03-14-hntd-12.jpeg differ diff --git a/assets/images/posts/2018-03-24-hntd-13.jpeg b/assets/images/posts/2018-03-24-hntd-13.jpeg new file mode 100644 index 0000000000..c8bf69347b Binary files /dev/null and b/assets/images/posts/2018-03-24-hntd-13.jpeg differ diff --git a/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg b/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg new file mode 100644 index 0000000000..b10577b7e7 Binary files /dev/null and b/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg differ diff --git a/assets/images/posts/2018-04-01-redhat-academy/icon1.png b/assets/images/posts/2018-04-01-redhat-academy/icon1.png new file mode 100644 index 0000000000..6638460321 Binary files /dev/null and b/assets/images/posts/2018-04-01-redhat-academy/icon1.png differ diff --git a/assets/images/posts/2018-04-01-redhat-academy/icon2.png b/assets/images/posts/2018-04-01-redhat-academy/icon2.png new file mode 100644 index 0000000000..d3bf7f7af6 Binary files /dev/null and b/assets/images/posts/2018-04-01-redhat-academy/icon2.png differ diff --git a/assets/images/posts/2018-04-01-redhat-academy/icon3.png b/assets/images/posts/2018-04-01-redhat-academy/icon3.png new file mode 100644 index 0000000000..18d1959090 Binary files /dev/null and b/assets/images/posts/2018-04-01-redhat-academy/icon3.png differ diff --git a/assets/images/posts/2018-04-01-redhat-academy/icon4.png b/assets/images/posts/2018-04-01-redhat-academy/icon4.png new file mode 100644 index 0000000000..b1a4ef260a Binary files /dev/null and b/assets/images/posts/2018-04-01-redhat-academy/icon4.png differ diff --git a/assets/images/posts/2018-07-28-openstackday.jpeg b/assets/images/posts/2018-07-28-openstackday.jpeg new file mode 100644 index 0000000000..2928c475ee Binary files /dev/null and b/assets/images/posts/2018-07-28-openstackday.jpeg differ diff --git a/assets/images/posts/2018-08-20-mandic-webinar.jpeg b/assets/images/posts/2018-08-20-mandic-webinar.jpeg new file mode 100644 index 0000000000..15044b8774 Binary files /dev/null and b/assets/images/posts/2018-08-20-mandic-webinar.jpeg differ diff --git a/assets/images/posts/2018-09-11-ict-competition.jpg b/assets/images/posts/2018-09-11-ict-competition.jpg new file mode 100644 index 0000000000..df12a5c24a Binary files /dev/null and b/assets/images/posts/2018-09-11-ict-competition.jpg differ diff --git a/assets/images/posts/2019-04-30-aws-educate/0.png b/assets/images/posts/2019-04-30-aws-educate/0.png new file mode 100644 index 0000000000..ebdbda81a7 Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/0.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge0.png b/assets/images/posts/2019-04-30-aws-educate/badge0.png new file mode 100644 index 0000000000..e5efcadb0f Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge0.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge1.png b/assets/images/posts/2019-04-30-aws-educate/badge1.png new file mode 100644 index 0000000000..d697049cec Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge1.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge2.png b/assets/images/posts/2019-04-30-aws-educate/badge2.png new file mode 100644 index 0000000000..257b91e04e Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge2.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge3.png b/assets/images/posts/2019-04-30-aws-educate/badge3.png new file mode 100644 index 0000000000..6f3be0e9f8 Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge3.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge4.png b/assets/images/posts/2019-04-30-aws-educate/badge4.png new file mode 100644 index 0000000000..715232afd9 Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge4.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge5.png b/assets/images/posts/2019-04-30-aws-educate/badge5.png new file mode 100644 index 0000000000..db940cb5ea Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge5.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge6.png b/assets/images/posts/2019-04-30-aws-educate/badge6.png new file mode 100644 index 0000000000..40cb3542ca Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge6.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge7.png b/assets/images/posts/2019-04-30-aws-educate/badge7.png new file mode 100644 index 0000000000..b31571a9d9 Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge7.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/badge8.png b/assets/images/posts/2019-04-30-aws-educate/badge8.png new file mode 100644 index 0000000000..0c542624be Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/badge8.png differ diff --git a/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg b/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg new file mode 100644 index 0000000000..5b7879d7a2 Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg differ diff --git a/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg b/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg new file mode 100644 index 0000000000..c60c44c442 Binary files /dev/null and b/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg differ diff --git a/assets/images/posts/2019-05-21-sumare/01.jpg b/assets/images/posts/2019-05-21-sumare/01.jpg new file mode 100644 index 0000000000..109aab952f Binary files /dev/null and b/assets/images/posts/2019-05-21-sumare/01.jpg differ diff --git a/assets/images/posts/2019-05-21-sumare/02.jpeg b/assets/images/posts/2019-05-21-sumare/02.jpeg new file mode 100644 index 0000000000..96cccb934c Binary files /dev/null and b/assets/images/posts/2019-05-21-sumare/02.jpeg differ diff --git a/assets/images/posts/2019-08-06-kuryr.png b/assets/images/posts/2019-08-06-kuryr.png new file mode 100644 index 0000000000..285461b176 Binary files /dev/null and b/assets/images/posts/2019-08-06-kuryr.png differ diff --git a/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png b/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png new file mode 100644 index 0000000000..7ff300b2dc Binary files /dev/null and b/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png differ diff --git a/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png b/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png new file mode 100644 index 0000000000..fc4a0fc645 Binary files /dev/null and b/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png differ diff --git a/assets/images/posts/2020-04-30-onf/.DS_Store b/assets/images/posts/2020-04-30-onf/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/assets/images/posts/2020-04-30-onf/.DS_Store differ diff --git a/assets/images/posts/2020-04-30-onf/0.jpg b/assets/images/posts/2020-04-30-onf/0.jpg new file mode 100644 index 0000000000..6840d1a584 Binary files /dev/null and b/assets/images/posts/2020-04-30-onf/0.jpg differ diff --git a/assets/images/posts/2020-04-30-onf/1.png b/assets/images/posts/2020-04-30-onf/1.png new file mode 100644 index 0000000000..0b2b5fe9fa Binary files /dev/null and b/assets/images/posts/2020-04-30-onf/1.png differ diff --git a/assets/images/posts/2020-04-30-onf/3.png b/assets/images/posts/2020-04-30-onf/3.png new file mode 100644 index 0000000000..ff22738fe4 Binary files /dev/null and b/assets/images/posts/2020-04-30-onf/3.png differ diff --git a/assets/images/posts/2020-05-11-ussuri/1.png b/assets/images/posts/2020-05-11-ussuri/1.png new file mode 100644 index 0000000000..3e226c0450 Binary files /dev/null and b/assets/images/posts/2020-05-11-ussuri/1.png differ diff --git a/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg b/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg new file mode 100644 index 0000000000..5af1e1c940 --- /dev/null +++ b/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg @@ -0,0 +1 @@ +Ussuri-release-logo-web \ No newline at end of file diff --git a/assets/images/posts/2020-07-07-haina-brazil/0.jpg b/assets/images/posts/2020-07-07-haina-brazil/0.jpg new file mode 100644 index 0000000000..88a7719588 Binary files /dev/null and b/assets/images/posts/2020-07-07-haina-brazil/0.jpg differ diff --git a/assets/images/posts/2020-07-07-haina-brazil/1.png b/assets/images/posts/2020-07-07-haina-brazil/1.png new file mode 100644 index 0000000000..3e87b1ddd8 Binary files /dev/null and b/assets/images/posts/2020-07-07-haina-brazil/1.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/.DS_Store b/assets/images/posts/2020-07-09-aws-academy/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/.DS_Store differ diff --git a/assets/images/posts/2020-07-09-aws-academy/01.png b/assets/images/posts/2020-07-09-aws-academy/01.png new file mode 100644 index 0000000000..352a2bbf35 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/01.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/02.jpeg b/assets/images/posts/2020-07-09-aws-academy/02.jpeg new file mode 100644 index 0000000000..680900bbe3 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/02.jpeg differ diff --git a/assets/images/posts/2020-07-09-aws-academy/03.png b/assets/images/posts/2020-07-09-aws-academy/03.png new file mode 100644 index 0000000000..74deaca415 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/03.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/04.png b/assets/images/posts/2020-07-09-aws-academy/04.png new file mode 100644 index 0000000000..1c00104e85 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/04.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/05.png b/assets/images/posts/2020-07-09-aws-academy/05.png new file mode 100644 index 0000000000..a48b71aae2 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/05.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/06.png b/assets/images/posts/2020-07-09-aws-academy/06.png new file mode 100644 index 0000000000..5447e3b593 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/06.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/07.png b/assets/images/posts/2020-07-09-aws-academy/07.png new file mode 100644 index 0000000000..3e1ffa8e59 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/07.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/08.png b/assets/images/posts/2020-07-09-aws-academy/08.png new file mode 100644 index 0000000000..46ace43227 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/08.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/09.png b/assets/images/posts/2020-07-09-aws-academy/09.png new file mode 100644 index 0000000000..501a449796 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/09.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/10.png b/assets/images/posts/2020-07-09-aws-academy/10.png new file mode 100644 index 0000000000..e0e42a5758 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/10.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/11.png b/assets/images/posts/2020-07-09-aws-academy/11.png new file mode 100644 index 0000000000..faff223224 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/11.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/12.png b/assets/images/posts/2020-07-09-aws-academy/12.png new file mode 100644 index 0000000000..3196a8b9a6 Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/12.png differ diff --git a/assets/images/posts/2020-07-09-aws-academy/13.png b/assets/images/posts/2020-07-09-aws-academy/13.png new file mode 100644 index 0000000000..c879350f0f Binary files /dev/null and b/assets/images/posts/2020-07-09-aws-academy/13.png differ diff --git a/assets/images/posts/2020-07-17-haina/.DS_Store b/assets/images/posts/2020-07-17-haina/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/assets/images/posts/2020-07-17-haina/.DS_Store differ diff --git a/assets/images/posts/2020-07-17-haina/0.png b/assets/images/posts/2020-07-17-haina/0.png new file mode 100644 index 0000000000..5460a8fb95 Binary files /dev/null and b/assets/images/posts/2020-07-17-haina/0.png differ diff --git a/assets/images/posts/2020-07-17-haina/1.png b/assets/images/posts/2020-07-17-haina/1.png new file mode 100644 index 0000000000..e5bd030a2f Binary files /dev/null and b/assets/images/posts/2020-07-17-haina/1.png differ diff --git a/assets/images/posts/2020-07-17-haina/2.png b/assets/images/posts/2020-07-17-haina/2.png new file mode 100644 index 0000000000..8a3325bb4d Binary files /dev/null and b/assets/images/posts/2020-07-17-haina/2.png differ diff --git a/assets/images/posts/2020-07-17-haina/3.png b/assets/images/posts/2020-07-17-haina/3.png new file mode 100644 index 0000000000..154ffc8ada Binary files /dev/null and b/assets/images/posts/2020-07-17-haina/3.png differ diff --git a/assets/images/posts/2020-08-30-shift-aws-foundations.png b/assets/images/posts/2020-08-30-shift-aws-foundations.png new file mode 100644 index 0000000000..2b65543441 Binary files /dev/null and b/assets/images/posts/2020-08-30-shift-aws-foundations.png differ diff --git a/assets/images/posts/2020-09-05-shift-multicloud.png b/assets/images/posts/2020-09-05-shift-multicloud.png new file mode 100644 index 0000000000..b626835dc8 Binary files /dev/null and b/assets/images/posts/2020-09-05-shift-multicloud.png differ diff --git a/assets/images/posts/2020-09-30-mycodeisopen/0.jpg b/assets/images/posts/2020-09-30-mycodeisopen/0.jpg new file mode 100644 index 0000000000..15018453f2 Binary files /dev/null and b/assets/images/posts/2020-09-30-mycodeisopen/0.jpg differ diff --git a/assets/images/posts/2020-09-30-mycodeisopen/1.jpg b/assets/images/posts/2020-09-30-mycodeisopen/1.jpg new file mode 100644 index 0000000000..884e3f0ffc Binary files /dev/null and b/assets/images/posts/2020-09-30-mycodeisopen/1.jpg differ diff --git a/assets/images/posts/2020-10-01-onf-webinar/0.jpeg b/assets/images/posts/2020-10-01-onf-webinar/0.jpeg new file mode 100644 index 0000000000..50ca1c11d9 Binary files /dev/null and b/assets/images/posts/2020-10-01-onf-webinar/0.jpeg differ diff --git a/assets/images/posts/2020-10-01-onf-webinar/1.png b/assets/images/posts/2020-10-01-onf-webinar/1.png new file mode 100644 index 0000000000..0296919ddc Binary files /dev/null and b/assets/images/posts/2020-10-01-onf-webinar/1.png differ diff --git a/assets/images/posts/2020-10-12-aws-cert-challenge.jpg b/assets/images/posts/2020-10-12-aws-cert-challenge.jpg new file mode 100644 index 0000000000..382a2d8642 Binary files /dev/null and b/assets/images/posts/2020-10-12-aws-cert-challenge.jpg differ diff --git a/assets/images/posts/2020-10-25-hcia-14.jpeg b/assets/images/posts/2020-10-25-hcia-14.jpeg new file mode 100644 index 0000000000..05bf65b2fb Binary files /dev/null and b/assets/images/posts/2020-10-25-hcia-14.jpeg differ diff --git a/assets/images/posts/2020-10-26-totvs-talks/0.jpeg b/assets/images/posts/2020-10-26-totvs-talks/0.jpeg new file mode 100644 index 0000000000..de396c9ec5 Binary files /dev/null and b/assets/images/posts/2020-10-26-totvs-talks/0.jpeg differ diff --git a/assets/images/posts/2020-10-26-totvs-talks/1.jpeg b/assets/images/posts/2020-10-26-totvs-talks/1.jpeg new file mode 100644 index 0000000000..d1c767e990 Binary files /dev/null and b/assets/images/posts/2020-10-26-totvs-talks/1.jpeg differ diff --git a/assets/images/posts/2020-10-26-totvs-talks/2.png b/assets/images/posts/2020-10-26-totvs-talks/2.png new file mode 100644 index 0000000000..2727c6a042 Binary files /dev/null and b/assets/images/posts/2020-10-26-totvs-talks/2.png differ diff --git a/assets/images/posts/2020-10-31-caio-youtube.png b/assets/images/posts/2020-10-31-caio-youtube.png new file mode 100644 index 0000000000..32fd4be46b Binary files /dev/null and b/assets/images/posts/2020-10-31-caio-youtube.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/0.png b/assets/images/posts/2020-11-13-haina-talent/0.png new file mode 100644 index 0000000000..9e134c8cec Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/0.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/1.png b/assets/images/posts/2020-11-13-haina-talent/1.png new file mode 100644 index 0000000000..0403112d23 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/1.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/10.png b/assets/images/posts/2020-11-13-haina-talent/10.png new file mode 100644 index 0000000000..2b9d46c686 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/10.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/10_2.png b/assets/images/posts/2020-11-13-haina-talent/10_2.png new file mode 100644 index 0000000000..b1e21eaf19 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/10_2.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/11.png b/assets/images/posts/2020-11-13-haina-talent/11.png new file mode 100644 index 0000000000..3506c79c53 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/11.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/11_2.png b/assets/images/posts/2020-11-13-haina-talent/11_2.png new file mode 100644 index 0000000000..9b0d70d85b Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/11_2.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/12.png b/assets/images/posts/2020-11-13-haina-talent/12.png new file mode 100644 index 0000000000..138910799b Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/12.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/13.png b/assets/images/posts/2020-11-13-haina-talent/13.png new file mode 100644 index 0000000000..91a2edc051 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/13.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/14.png b/assets/images/posts/2020-11-13-haina-talent/14.png new file mode 100644 index 0000000000..fdf4c43942 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/14.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/15.png b/assets/images/posts/2020-11-13-haina-talent/15.png new file mode 100644 index 0000000000..f65f641b6f Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/15.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/2.png b/assets/images/posts/2020-11-13-haina-talent/2.png new file mode 100644 index 0000000000..7dc9e4f37d Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/2.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/3.png b/assets/images/posts/2020-11-13-haina-talent/3.png new file mode 100644 index 0000000000..78223586f1 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/3.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/3_3.png b/assets/images/posts/2020-11-13-haina-talent/3_3.png new file mode 100644 index 0000000000..6d2b16bee7 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/3_3.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/4.png b/assets/images/posts/2020-11-13-haina-talent/4.png new file mode 100644 index 0000000000..d0ce576da5 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/4.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/4_2.png b/assets/images/posts/2020-11-13-haina-talent/4_2.png new file mode 100644 index 0000000000..c4807a4312 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/4_2.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/5.png b/assets/images/posts/2020-11-13-haina-talent/5.png new file mode 100644 index 0000000000..0663b98cae Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/5.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/6.png b/assets/images/posts/2020-11-13-haina-talent/6.png new file mode 100644 index 0000000000..5738b6ab2f Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/6.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/7.png b/assets/images/posts/2020-11-13-haina-talent/7.png new file mode 100644 index 0000000000..bc264edb8a Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/7.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/8.png b/assets/images/posts/2020-11-13-haina-talent/8.png new file mode 100644 index 0000000000..10bfccf8ca Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/8.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/9.png b/assets/images/posts/2020-11-13-haina-talent/9.png new file mode 100644 index 0000000000..9381a06a81 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/9.png differ diff --git a/assets/images/posts/2020-11-13-haina-talent/logo.jpg b/assets/images/posts/2020-11-13-haina-talent/logo.jpg new file mode 100644 index 0000000000..18312b2326 Binary files /dev/null and b/assets/images/posts/2020-11-13-haina-talent/logo.jpg differ diff --git a/assets/images/posts/2020-11-17-shift-aws-foundations-2.png b/assets/images/posts/2020-11-17-shift-aws-foundations-2.png new file mode 100644 index 0000000000..66e29dab5a Binary files /dev/null and b/assets/images/posts/2020-11-17-shift-aws-foundations-2.png differ diff --git a/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg b/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg new file mode 100644 index 0000000000..19180c4460 Binary files /dev/null and b/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg differ diff --git a/assets/images/posts/2020-12-20-intel-network-builders/paths.png b/assets/images/posts/2020-12-20-intel-network-builders/paths.png new file mode 100644 index 0000000000..13cdb3e8c2 Binary files /dev/null and b/assets/images/posts/2020-12-20-intel-network-builders/paths.png differ diff --git a/assets/images/posts/2020-12-22-co.lab.jpg b/assets/images/posts/2020-12-22-co.lab.jpg new file mode 100644 index 0000000000..73c8ea43df Binary files /dev/null and b/assets/images/posts/2020-12-22-co.lab.jpg differ diff --git a/assets/images/posts/2020-12-31-newyear/1.png b/assets/images/posts/2020-12-31-newyear/1.png new file mode 100644 index 0000000000..04d830c469 Binary files /dev/null and b/assets/images/posts/2020-12-31-newyear/1.png differ diff --git a/assets/images/posts/2020-12-31-newyear/2.png b/assets/images/posts/2020-12-31-newyear/2.png new file mode 100644 index 0000000000..92d358a3f2 Binary files /dev/null and b/assets/images/posts/2020-12-31-newyear/2.png differ diff --git a/assets/images/posts/2020-12-31-newyear/3.png b/assets/images/posts/2020-12-31-newyear/3.png new file mode 100644 index 0000000000..5f83fc3220 Binary files /dev/null and b/assets/images/posts/2020-12-31-newyear/3.png differ diff --git a/assets/images/posts/2021-01-05-calico/1.png b/assets/images/posts/2021-01-05-calico/1.png new file mode 100644 index 0000000000..beefa3886c Binary files /dev/null and b/assets/images/posts/2021-01-05-calico/1.png differ diff --git a/assets/images/posts/2021-01-05-calico/2.png b/assets/images/posts/2021-01-05-calico/2.png new file mode 100644 index 0000000000..e21e15e0a7 Binary files /dev/null and b/assets/images/posts/2021-01-05-calico/2.png differ diff --git a/assets/images/posts/2021-01-09-shift-multicloud-2.png b/assets/images/posts/2021-01-09-shift-multicloud-2.png new file mode 100644 index 0000000000..101fcd322a Binary files /dev/null and b/assets/images/posts/2021-01-09-shift-multicloud-2.png differ diff --git a/assets/images/posts/2021-02-05-aviatrix/1.png b/assets/images/posts/2021-02-05-aviatrix/1.png new file mode 100644 index 0000000000..f47550d2e4 Binary files /dev/null and b/assets/images/posts/2021-02-05-aviatrix/1.png differ diff --git a/assets/images/posts/2021-02-05-aviatrix/2.png b/assets/images/posts/2021-02-05-aviatrix/2.png new file mode 100644 index 0000000000..845912ec85 Binary files /dev/null and b/assets/images/posts/2021-02-05-aviatrix/2.png differ diff --git a/assets/images/posts/2021-02-05-aviatrix/3.png b/assets/images/posts/2021-02-05-aviatrix/3.png new file mode 100644 index 0000000000..e9787383bf Binary files /dev/null and b/assets/images/posts/2021-02-05-aviatrix/3.png differ diff --git a/assets/images/posts/2021-02-09-hcia-5g/1.png b/assets/images/posts/2021-02-09-hcia-5g/1.png new file mode 100644 index 0000000000..791e564ffa Binary files /dev/null and b/assets/images/posts/2021-02-09-hcia-5g/1.png differ diff --git a/assets/images/posts/2021-02-09-hcia-5g/2.jpeg b/assets/images/posts/2021-02-09-hcia-5g/2.jpeg new file mode 100644 index 0000000000..f1a4839c6e Binary files /dev/null and b/assets/images/posts/2021-02-09-hcia-5g/2.jpeg differ diff --git a/assets/images/posts/2021-02-09-hcia-5g/3.jpg b/assets/images/posts/2021-02-09-hcia-5g/3.jpg new file mode 100644 index 0000000000..44ad29c0c3 Binary files /dev/null and b/assets/images/posts/2021-02-09-hcia-5g/3.jpg differ diff --git a/assets/images/posts/2021-03-10-shift-aws-foundations-3.png b/assets/images/posts/2021-03-10-shift-aws-foundations-3.png new file mode 100644 index 0000000000..3bf131278a Binary files /dev/null and b/assets/images/posts/2021-03-10-shift-aws-foundations-3.png differ diff --git a/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg b/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg new file mode 100644 index 0000000000..0ddcf1b70f Binary files /dev/null and b/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg differ diff --git a/assets/images/posts/2021-03-22-hcia-5g-2/1.png b/assets/images/posts/2021-03-22-hcia-5g-2/1.png new file mode 100644 index 0000000000..78a9b310f0 Binary files /dev/null and b/assets/images/posts/2021-03-22-hcia-5g-2/1.png differ diff --git a/assets/images/posts/2021-03-25-rh-summit21.jpeg b/assets/images/posts/2021-03-25-rh-summit21.jpeg new file mode 100644 index 0000000000..b4599dac3b Binary files /dev/null and b/assets/images/posts/2021-03-25-rh-summit21.jpeg differ diff --git a/assets/images/posts/2021-03-26-hcia-15/1.png b/assets/images/posts/2021-03-26-hcia-15/1.png new file mode 100644 index 0000000000..a9d3bd11c3 Binary files /dev/null and b/assets/images/posts/2021-03-26-hcia-15/1.png differ diff --git a/assets/images/posts/2021-03-26-hcia-15/2.png b/assets/images/posts/2021-03-26-hcia-15/2.png new file mode 100644 index 0000000000..5b64fa3155 Binary files /dev/null and b/assets/images/posts/2021-03-26-hcia-15/2.png differ diff --git a/assets/images/posts/2021-04-08-azure-fundamentals/.DS_Store b/assets/images/posts/2021-04-08-azure-fundamentals/.DS_Store new file mode 100644 index 0000000000..5008ddfcf5 Binary files /dev/null and b/assets/images/posts/2021-04-08-azure-fundamentals/.DS_Store differ diff --git a/assets/images/posts/2021-04-08-azure-fundamentals/1.png b/assets/images/posts/2021-04-08-azure-fundamentals/1.png new file mode 100644 index 0000000000..73648d31af Binary files /dev/null and b/assets/images/posts/2021-04-08-azure-fundamentals/1.png differ diff --git a/assets/images/posts/2021-04-08-azure-fundamentals/2.png b/assets/images/posts/2021-04-08-azure-fundamentals/2.png new file mode 100644 index 0000000000..520868678e Binary files /dev/null and b/assets/images/posts/2021-04-08-azure-fundamentals/2.png differ diff --git a/assets/images/posts/2021-04-08-azure-fundamentals/3.png b/assets/images/posts/2021-04-08-azure-fundamentals/3.png new file mode 100644 index 0000000000..9eec9f7e83 Binary files /dev/null and b/assets/images/posts/2021-04-08-azure-fundamentals/3.png differ diff --git a/assets/images/posts/2021-04-08-azure-fundamentals/4.png b/assets/images/posts/2021-04-08-azure-fundamentals/4.png new file mode 100644 index 0000000000..b84d24a9a7 Binary files /dev/null and b/assets/images/posts/2021-04-08-azure-fundamentals/4.png differ diff --git a/assets/images/posts/2021-04-08-azure-fundamentals/5.png b/assets/images/posts/2021-04-08-azure-fundamentals/5.png new file mode 100644 index 0000000000..d25b142652 Binary files /dev/null and b/assets/images/posts/2021-04-08-azure-fundamentals/5.png differ diff --git a/assets/images/posts/2021-04-13-kafka/1.png b/assets/images/posts/2021-04-13-kafka/1.png new file mode 100644 index 0000000000..dd312ac9fb Binary files /dev/null and b/assets/images/posts/2021-04-13-kafka/1.png differ diff --git a/assets/images/posts/2021-04-13-kafka/2.png b/assets/images/posts/2021-04-13-kafka/2.png new file mode 100644 index 0000000000..722267896a Binary files /dev/null and b/assets/images/posts/2021-04-13-kafka/2.png differ diff --git a/assets/images/posts/2021-04-17-onf-webinar-21.png b/assets/images/posts/2021-04-17-onf-webinar-21.png new file mode 100644 index 0000000000..54b354a673 Binary files /dev/null and b/assets/images/posts/2021-04-17-onf-webinar-21.png differ diff --git a/assets/images/posts/2021-04-23-gitlab.png b/assets/images/posts/2021-04-23-gitlab.png new file mode 100644 index 0000000000..aa243d8f1d Binary files /dev/null and b/assets/images/posts/2021-04-23-gitlab.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/0.png b/assets/images/posts/2021-05-10-hcia-ia-notes/0.png new file mode 100644 index 0000000000..119b187abf Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/0.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/1.png b/assets/images/posts/2021-05-10-hcia-ia-notes/1.png new file mode 100644 index 0000000000..1cafee9db8 Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/1.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/2.png b/assets/images/posts/2021-05-10-hcia-ia-notes/2.png new file mode 100644 index 0000000000..fd30b3332d Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/2.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/3.png b/assets/images/posts/2021-05-10-hcia-ia-notes/3.png new file mode 100644 index 0000000000..e5429ce4d9 Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/3.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/4.png b/assets/images/posts/2021-05-10-hcia-ia-notes/4.png new file mode 100644 index 0000000000..b47a70adc2 Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/4.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/5.png b/assets/images/posts/2021-05-10-hcia-ia-notes/5.png new file mode 100644 index 0000000000..6f5c192c27 Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/5.png differ diff --git a/assets/images/posts/2021-05-10-hcia-ia-notes/6.png b/assets/images/posts/2021-05-10-hcia-ia-notes/6.png new file mode 100644 index 0000000000..5962d07b87 Binary files /dev/null and b/assets/images/posts/2021-05-10-hcia-ia-notes/6.png differ diff --git a/assets/images/posts/2021-05-11-shift-multicloud-3.png b/assets/images/posts/2021-05-11-shift-multicloud-3.png new file mode 100644 index 0000000000..076c863c65 Binary files /dev/null and b/assets/images/posts/2021-05-11-shift-multicloud-3.png differ diff --git a/assets/images/posts/2021-05-14-hcia-16.jpeg b/assets/images/posts/2021-05-14-hcia-16.jpeg new file mode 100644 index 0000000000..29cc59b0a4 Binary files /dev/null and b/assets/images/posts/2021-05-14-hcia-16.jpeg differ diff --git a/assets/images/posts/2021-05-15-aws-community-builder.png b/assets/images/posts/2021-05-15-aws-community-builder.png new file mode 100755 index 0000000000..9b1dccc7d3 Binary files /dev/null and b/assets/images/posts/2021-05-15-aws-community-builder.png differ diff --git a/assets/images/posts/2021-05-18-gitops-summit-21.png b/assets/images/posts/2021-05-18-gitops-summit-21.png new file mode 100644 index 0000000000..e329aeaa03 Binary files /dev/null and b/assets/images/posts/2021-05-18-gitops-summit-21.png differ diff --git a/assets/images/posts/2021-05-31-fiap-meetup/0.png b/assets/images/posts/2021-05-31-fiap-meetup/0.png new file mode 100644 index 0000000000..4c8ab6e907 Binary files /dev/null and b/assets/images/posts/2021-05-31-fiap-meetup/0.png differ diff --git a/assets/images/posts/2021-05-31-fiap-meetup/1.png b/assets/images/posts/2021-05-31-fiap-meetup/1.png new file mode 100644 index 0000000000..f993c2a845 Binary files /dev/null and b/assets/images/posts/2021-05-31-fiap-meetup/1.png differ diff --git a/assets/images/posts/2021-06-03-edx-magma/1.png b/assets/images/posts/2021-06-03-edx-magma/1.png new file mode 100644 index 0000000000..752753961e Binary files /dev/null and b/assets/images/posts/2021-06-03-edx-magma/1.png differ diff --git a/assets/images/posts/2021-06-03-edx-magma/2.png b/assets/images/posts/2021-06-03-edx-magma/2.png new file mode 100644 index 0000000000..e756f1c465 Binary files /dev/null and b/assets/images/posts/2021-06-03-edx-magma/2.png differ diff --git a/assets/images/posts/2021-06-21-shift-aws-foundations-4.png b/assets/images/posts/2021-06-21-shift-aws-foundations-4.png new file mode 100644 index 0000000000..291370bd36 Binary files /dev/null and b/assets/images/posts/2021-06-21-shift-aws-foundations-4.png differ diff --git a/assets/images/posts/2021-06-22-shift-aws-dev.png b/assets/images/posts/2021-06-22-shift-aws-dev.png new file mode 100644 index 0000000000..236fd83e4a Binary files /dev/null and b/assets/images/posts/2021-06-22-shift-aws-dev.png differ diff --git a/assets/images/posts/2021-06-28-cognitive-class.png b/assets/images/posts/2021-06-28-cognitive-class.png new file mode 100644 index 0000000000..3539c2a23e Binary files /dev/null and b/assets/images/posts/2021-06-28-cognitive-class.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/01.png b/assets/images/posts/2021-07-25-aws-educate-login/01.png new file mode 100644 index 0000000000..c2bf1119c8 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/01.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/02.png b/assets/images/posts/2021-07-25-aws-educate-login/02.png new file mode 100644 index 0000000000..57c846e4e9 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/02.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/03.png b/assets/images/posts/2021-07-25-aws-educate-login/03.png new file mode 100644 index 0000000000..526d21576a Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/03.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/04.png b/assets/images/posts/2021-07-25-aws-educate-login/04.png new file mode 100644 index 0000000000..4588c9c9d9 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/04.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/05.png b/assets/images/posts/2021-07-25-aws-educate-login/05.png new file mode 100644 index 0000000000..ce4a04e0e7 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/05.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/06.png b/assets/images/posts/2021-07-25-aws-educate-login/06.png new file mode 100644 index 0000000000..fcc0b794af Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/06.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/07.png b/assets/images/posts/2021-07-25-aws-educate-login/07.png new file mode 100644 index 0000000000..5ea7a21685 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/07.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/08.png b/assets/images/posts/2021-07-25-aws-educate-login/08.png new file mode 100644 index 0000000000..2042bad827 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/08.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/09.png b/assets/images/posts/2021-07-25-aws-educate-login/09.png new file mode 100644 index 0000000000..ebfe4e761a Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/09.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/10.png b/assets/images/posts/2021-07-25-aws-educate-login/10.png new file mode 100644 index 0000000000..7d1dc814e2 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/10.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/11.png b/assets/images/posts/2021-07-25-aws-educate-login/11.png new file mode 100644 index 0000000000..2e06d1cbb3 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/11.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/12.png b/assets/images/posts/2021-07-25-aws-educate-login/12.png new file mode 100644 index 0000000000..19330ebc04 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/12.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/13.png b/assets/images/posts/2021-07-25-aws-educate-login/13.png new file mode 100644 index 0000000000..3e27804acb Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/13.png differ diff --git a/assets/images/posts/2021-07-25-aws-educate-login/14.png b/assets/images/posts/2021-07-25-aws-educate-login/14.png new file mode 100644 index 0000000000..f08f1f03f9 Binary files /dev/null and b/assets/images/posts/2021-07-25-aws-educate-login/14.png differ diff --git a/assets/images/posts/2021-08-18-hcia-17.jpeg b/assets/images/posts/2021-08-18-hcia-17.jpeg new file mode 100644 index 0000000000..4cd283fbab Binary files /dev/null and b/assets/images/posts/2021-08-18-hcia-17.jpeg differ diff --git a/assets/images/posts/2021-08-30-shift-aws-foundations-5.png b/assets/images/posts/2021-08-30-shift-aws-foundations-5.png new file mode 100644 index 0000000000..69d64a664b Binary files /dev/null and b/assets/images/posts/2021-08-30-shift-aws-foundations-5.png differ diff --git a/assets/images/posts/2021-09-03-lf-courses.png b/assets/images/posts/2021-09-03-lf-courses.png new file mode 100644 index 0000000000..10a87d9a7a Binary files /dev/null and b/assets/images/posts/2021-09-03-lf-courses.png differ diff --git a/assets/images/posts/2021-09-16-soloio-istio.png b/assets/images/posts/2021-09-16-soloio-istio.png new file mode 100644 index 0000000000..813e742c6b Binary files /dev/null and b/assets/images/posts/2021-09-16-soloio-istio.png differ diff --git a/assets/images/posts/2021-10-02-shift-aws-dev-2.png b/assets/images/posts/2021-10-02-shift-aws-dev-2.png new file mode 100644 index 0000000000..acb544e54e Binary files /dev/null and b/assets/images/posts/2021-10-02-shift-aws-dev-2.png differ diff --git a/assets/images/posts/2021-10-12-tendencias-tic.png b/assets/images/posts/2021-10-12-tendencias-tic.png new file mode 100644 index 0000000000..993ae9c901 Binary files /dev/null and b/assets/images/posts/2021-10-12-tendencias-tic.png differ diff --git a/assets/images/posts/2021-10-14-seminf21/0.png b/assets/images/posts/2021-10-14-seminf21/0.png new file mode 100644 index 0000000000..816b8d59ef Binary files /dev/null and b/assets/images/posts/2021-10-14-seminf21/0.png differ diff --git a/assets/images/posts/2021-10-14-seminf21/1.jpeg b/assets/images/posts/2021-10-14-seminf21/1.jpeg new file mode 100644 index 0000000000..dace416d27 Binary files /dev/null and b/assets/images/posts/2021-10-14-seminf21/1.jpeg differ diff --git a/assets/images/posts/2021-10-14-seminf21/2.png b/assets/images/posts/2021-10-14-seminf21/2.png new file mode 100644 index 0000000000..87b7e79c4f Binary files /dev/null and b/assets/images/posts/2021-10-14-seminf21/2.png differ diff --git a/assets/images/posts/2021-10-23-shift-multicloud-4.png b/assets/images/posts/2021-10-23-shift-multicloud-4.png new file mode 100644 index 0000000000..77aa767bbc Binary files /dev/null and b/assets/images/posts/2021-10-23-shift-multicloud-4.png differ diff --git a/assets/images/posts/2021-11-03-aws-community-day-21/1.mp4 b/assets/images/posts/2021-11-03-aws-community-day-21/1.mp4 new file mode 100644 index 0000000000..0dc015d2ee Binary files /dev/null and b/assets/images/posts/2021-11-03-aws-community-day-21/1.mp4 differ diff --git a/assets/images/posts/2021-11-04-microsoft-ignite/0.png b/assets/images/posts/2021-11-04-microsoft-ignite/0.png new file mode 100644 index 0000000000..27c45e2b84 Binary files /dev/null and b/assets/images/posts/2021-11-04-microsoft-ignite/0.png differ diff --git a/assets/images/posts/2021-11-04-microsoft-ignite/1.png b/assets/images/posts/2021-11-04-microsoft-ignite/1.png new file mode 100644 index 0000000000..d6fc9dcefb Binary files /dev/null and b/assets/images/posts/2021-11-04-microsoft-ignite/1.png differ diff --git a/assets/images/posts/2021-11-05-huawey-academy-workshop.png b/assets/images/posts/2021-11-05-huawey-academy-workshop.png new file mode 100644 index 0000000000..d4251f596a Binary files /dev/null and b/assets/images/posts/2021-11-05-huawey-academy-workshop.png differ diff --git a/assets/images/posts/2021-11-22-hcia-18.jpeg b/assets/images/posts/2021-11-22-hcia-18.jpeg new file mode 100644 index 0000000000..5401746010 Binary files /dev/null and b/assets/images/posts/2021-11-22-hcia-18.jpeg differ diff --git a/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg b/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg new file mode 100644 index 0000000000..7da224d7b3 Binary files /dev/null and b/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg differ diff --git a/assets/images/posts/2021-11-28-gremlin-caos/1.png b/assets/images/posts/2021-11-28-gremlin-caos/1.png new file mode 100644 index 0000000000..8f60891942 Binary files /dev/null and b/assets/images/posts/2021-11-28-gremlin-caos/1.png differ diff --git a/assets/images/posts/2021-11-28-gremlin-caos/2.png b/assets/images/posts/2021-11-28-gremlin-caos/2.png new file mode 100644 index 0000000000..1b3a2c0566 Binary files /dev/null and b/assets/images/posts/2021-11-28-gremlin-caos/2.png differ diff --git a/assets/images/posts/2021-12-05-ovn21.png b/assets/images/posts/2021-12-05-ovn21.png new file mode 100644 index 0000000000..402a18d3c2 Binary files /dev/null and b/assets/images/posts/2021-12-05-ovn21.png differ diff --git a/assets/images/posts/2021-12-09-calico-ebpf.png b/assets/images/posts/2021-12-09-calico-ebpf.png new file mode 100644 index 0000000000..a45776a080 Binary files /dev/null and b/assets/images/posts/2021-12-09-calico-ebpf.png differ diff --git a/assets/images/posts/2021-12-13-gitops-fundamentals/0.png b/assets/images/posts/2021-12-13-gitops-fundamentals/0.png new file mode 100644 index 0000000000..95f8f467ed Binary files /dev/null and b/assets/images/posts/2021-12-13-gitops-fundamentals/0.png differ diff --git a/assets/images/posts/2021-12-13-gitops-fundamentals/1.png b/assets/images/posts/2021-12-13-gitops-fundamentals/1.png new file mode 100644 index 0000000000..e51f7452cf Binary files /dev/null and b/assets/images/posts/2021-12-13-gitops-fundamentals/1.png differ diff --git a/assets/images/posts/2021-12-19-istio-fundamentals/0.png b/assets/images/posts/2021-12-19-istio-fundamentals/0.png new file mode 100644 index 0000000000..cc85df5dec Binary files /dev/null and b/assets/images/posts/2021-12-19-istio-fundamentals/0.png differ diff --git a/assets/images/posts/2021-12-19-istio-fundamentals/1.png b/assets/images/posts/2021-12-19-istio-fundamentals/1.png new file mode 100644 index 0000000000..f59436d77d Binary files /dev/null and b/assets/images/posts/2021-12-19-istio-fundamentals/1.png differ diff --git a/assets/images/posts/2021-12-19-istio-fundamentals/2.png b/assets/images/posts/2021-12-19-istio-fundamentals/2.png new file mode 100644 index 0000000000..70976913a6 Binary files /dev/null and b/assets/images/posts/2021-12-19-istio-fundamentals/2.png differ diff --git a/assets/images/posts/2022-01-01-newyear22/1.png b/assets/images/posts/2022-01-01-newyear22/1.png new file mode 100644 index 0000000000..50aab63f81 Binary files /dev/null and b/assets/images/posts/2022-01-01-newyear22/1.png differ diff --git a/assets/images/posts/2022-01-01-newyear22/2.png b/assets/images/posts/2022-01-01-newyear22/2.png new file mode 100644 index 0000000000..f8c1c31c14 Binary files /dev/null and b/assets/images/posts/2022-01-01-newyear22/2.png differ diff --git a/assets/images/posts/2022-01-01-newyear22/3.png b/assets/images/posts/2022-01-01-newyear22/3.png new file mode 100644 index 0000000000..7995674345 Binary files /dev/null and b/assets/images/posts/2022-01-01-newyear22/3.png differ diff --git a/assets/images/posts/2022-01-02-skillbuilder.png b/assets/images/posts/2022-01-02-skillbuilder.png new file mode 100644 index 0000000000..361392d69d Binary files /dev/null and b/assets/images/posts/2022-01-02-skillbuilder.png differ diff --git a/assets/images/posts/2022-01-03-kasten/0.png b/assets/images/posts/2022-01-03-kasten/0.png new file mode 100644 index 0000000000..af87aae7a1 Binary files /dev/null and b/assets/images/posts/2022-01-03-kasten/0.png differ diff --git a/assets/images/posts/2022-01-03-kasten/1.png b/assets/images/posts/2022-01-03-kasten/1.png new file mode 100644 index 0000000000..c32f9d2021 Binary files /dev/null and b/assets/images/posts/2022-01-03-kasten/1.png differ diff --git a/assets/images/posts/2022-01-04-examtopics.jpg b/assets/images/posts/2022-01-04-examtopics.jpg new file mode 100644 index 0000000000..a617274831 Binary files /dev/null and b/assets/images/posts/2022-01-04-examtopics.jpg differ diff --git a/assets/images/posts/2022-01-06-maua-sdn/0.png b/assets/images/posts/2022-01-06-maua-sdn/0.png new file mode 100644 index 0000000000..042b2c6335 Binary files /dev/null and b/assets/images/posts/2022-01-06-maua-sdn/0.png differ diff --git a/assets/images/posts/2022-01-06-maua-sdn/1.png b/assets/images/posts/2022-01-06-maua-sdn/1.png new file mode 100644 index 0000000000..e696363823 Binary files /dev/null and b/assets/images/posts/2022-01-06-maua-sdn/1.png differ diff --git a/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png b/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png new file mode 100644 index 0000000000..0440f40249 Binary files /dev/null and b/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png differ diff --git a/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png b/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png new file mode 100644 index 0000000000..5d8231315a Binary files /dev/null and b/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png differ diff --git a/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg b/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg new file mode 100644 index 0000000000..9149948e57 Binary files /dev/null and b/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg differ diff --git a/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg b/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg new file mode 100644 index 0000000000..b00621ffd5 Binary files /dev/null and b/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg differ diff --git a/assets/images/posts/2022-01-26-magma-cert/0.png b/assets/images/posts/2022-01-26-magma-cert/0.png new file mode 100644 index 0000000000..2d3052a083 Binary files /dev/null and b/assets/images/posts/2022-01-26-magma-cert/0.png differ diff --git a/assets/images/posts/2022-01-26-magma-cert/1.png b/assets/images/posts/2022-01-26-magma-cert/1.png new file mode 100644 index 0000000000..9f3aa1cab2 Binary files /dev/null and b/assets/images/posts/2022-01-26-magma-cert/1.png differ diff --git a/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png b/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png new file mode 100644 index 0000000000..fd49a80bbd Binary files /dev/null and b/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png differ diff --git a/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg b/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg new file mode 100644 index 0000000000..240731cda4 Binary files /dev/null and b/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg differ diff --git a/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg b/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg new file mode 100644 index 0000000000..6b818bac43 Binary files /dev/null and b/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg differ diff --git a/assets/images/posts/2022-02-17-loki.jpeg b/assets/images/posts/2022-02-17-loki.jpeg new file mode 100644 index 0000000000..546faead72 Binary files /dev/null and b/assets/images/posts/2022-02-17-loki.jpeg differ diff --git a/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png b/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png new file mode 100644 index 0000000000..3b3f7b2341 Binary files /dev/null and b/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png differ diff --git a/assets/images/posts/2022-03-17-mct.png b/assets/images/posts/2022-03-17-mct.png new file mode 100644 index 0000000000..0b7dbc8eae Binary files /dev/null and b/assets/images/posts/2022-03-17-mct.png differ diff --git a/assets/images/posts/2022-03-21-mie/1.jpeg b/assets/images/posts/2022-03-21-mie/1.jpeg new file mode 100644 index 0000000000..f118614ac6 Binary files /dev/null and b/assets/images/posts/2022-03-21-mie/1.jpeg differ diff --git a/assets/images/posts/2022-03-21-mie/2.png b/assets/images/posts/2022-03-21-mie/2.png new file mode 100644 index 0000000000..2811bd1c64 Binary files /dev/null and b/assets/images/posts/2022-03-21-mie/2.png differ diff --git a/assets/images/posts/2022-03-24-riab.png b/assets/images/posts/2022-03-24-riab.png new file mode 100644 index 0000000000..5796e8f57b Binary files /dev/null and b/assets/images/posts/2022-03-24-riab.png differ diff --git a/assets/images/posts/2022-03-25-aiab/0.png b/assets/images/posts/2022-03-25-aiab/0.png new file mode 100644 index 0000000000..c26b65d161 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/0.png differ diff --git a/assets/images/posts/2022-03-25-aiab/01.png b/assets/images/posts/2022-03-25-aiab/01.png new file mode 100644 index 0000000000..8d662cbabc Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/01.png differ diff --git a/assets/images/posts/2022-03-25-aiab/02.png b/assets/images/posts/2022-03-25-aiab/02.png new file mode 100644 index 0000000000..bc770d9993 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/02.png differ diff --git a/assets/images/posts/2022-03-25-aiab/03.png b/assets/images/posts/2022-03-25-aiab/03.png new file mode 100644 index 0000000000..66b2a09d72 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/03.png differ diff --git a/assets/images/posts/2022-03-25-aiab/04.png b/assets/images/posts/2022-03-25-aiab/04.png new file mode 100644 index 0000000000..760c143415 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/04.png differ diff --git a/assets/images/posts/2022-03-25-aiab/05.png b/assets/images/posts/2022-03-25-aiab/05.png new file mode 100644 index 0000000000..f2089eb71a Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/05.png differ diff --git a/assets/images/posts/2022-03-25-aiab/06.png b/assets/images/posts/2022-03-25-aiab/06.png new file mode 100644 index 0000000000..1a6d5da89e Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/06.png differ diff --git a/assets/images/posts/2022-03-25-aiab/07.png b/assets/images/posts/2022-03-25-aiab/07.png new file mode 100644 index 0000000000..f953d7ac5e Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/07.png differ diff --git a/assets/images/posts/2022-03-25-aiab/08.png b/assets/images/posts/2022-03-25-aiab/08.png new file mode 100644 index 0000000000..f0ef419e9e Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/08.png differ diff --git a/assets/images/posts/2022-03-25-aiab/09.png b/assets/images/posts/2022-03-25-aiab/09.png new file mode 100644 index 0000000000..6060e83392 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/09.png differ diff --git a/assets/images/posts/2022-03-25-aiab/10.png b/assets/images/posts/2022-03-25-aiab/10.png new file mode 100644 index 0000000000..4c9d5147ad Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/10.png differ diff --git a/assets/images/posts/2022-03-25-aiab/11.png b/assets/images/posts/2022-03-25-aiab/11.png new file mode 100644 index 0000000000..b58ca499a1 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/11.png differ diff --git a/assets/images/posts/2022-03-25-aiab/12.png b/assets/images/posts/2022-03-25-aiab/12.png new file mode 100644 index 0000000000..c2cf12fd08 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/12.png differ diff --git a/assets/images/posts/2022-03-25-aiab/13.png b/assets/images/posts/2022-03-25-aiab/13.png new file mode 100644 index 0000000000..78d0b9f609 Binary files /dev/null and b/assets/images/posts/2022-03-25-aiab/13.png differ diff --git a/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg b/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg new file mode 100644 index 0000000000..584f72046c Binary files /dev/null and b/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg differ diff --git a/assets/images/posts/2022-04-08-hcia-19.jpeg b/assets/images/posts/2022-04-08-hcia-19.jpeg new file mode 100644 index 0000000000..2e73bc9039 Binary files /dev/null and b/assets/images/posts/2022-04-08-hcia-19.jpeg differ diff --git a/assets/images/posts/2022-04-12-aws-certs-desconto/1.png b/assets/images/posts/2022-04-12-aws-certs-desconto/1.png new file mode 100644 index 0000000000..4556ea13a9 Binary files /dev/null and b/assets/images/posts/2022-04-12-aws-certs-desconto/1.png differ diff --git a/assets/images/posts/2022-04-12-aws-certs-desconto/2.png b/assets/images/posts/2022-04-12-aws-certs-desconto/2.png new file mode 100644 index 0000000000..3897a2d285 Binary files /dev/null and b/assets/images/posts/2022-04-12-aws-certs-desconto/2.png differ diff --git a/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png b/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png new file mode 100644 index 0000000000..22379a9d16 Binary files /dev/null and b/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png differ diff --git a/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png b/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png new file mode 100644 index 0000000000..7475a94493 Binary files /dev/null and b/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png differ diff --git a/assets/images/posts/2022-04-25-rh-summit22/1.png b/assets/images/posts/2022-04-25-rh-summit22/1.png new file mode 100644 index 0000000000..8c5960c9ef Binary files /dev/null and b/assets/images/posts/2022-04-25-rh-summit22/1.png differ diff --git a/assets/images/posts/2022-04-25-rh-summit22/2.png b/assets/images/posts/2022-04-25-rh-summit22/2.png new file mode 100644 index 0000000000..b4145567f0 Binary files /dev/null and b/assets/images/posts/2022-04-25-rh-summit22/2.png differ diff --git a/assets/images/posts/2022-04-25-wifi6.png b/assets/images/posts/2022-04-25-wifi6.png new file mode 100644 index 0000000000..a2b746e859 Binary files /dev/null and b/assets/images/posts/2022-04-25-wifi6.png differ diff --git a/assets/images/posts/2022-04-27-eu-capacito.png b/assets/images/posts/2022-04-27-eu-capacito.png new file mode 100644 index 0000000000..eeb21590d7 Binary files /dev/null and b/assets/images/posts/2022-04-27-eu-capacito.png differ diff --git a/assets/images/posts/2022-05-19-cati22.jpeg b/assets/images/posts/2022-05-19-cati22.jpeg new file mode 100644 index 0000000000..05ebb043cf Binary files /dev/null and b/assets/images/posts/2022-05-19-cati22.jpeg differ diff --git a/assets/images/posts/2022-05-25-venko/1.jpg b/assets/images/posts/2022-05-25-venko/1.jpg new file mode 100644 index 0000000000..d958e67312 Binary files /dev/null and b/assets/images/posts/2022-05-25-venko/1.jpg differ diff --git a/assets/images/posts/2022-05-25-venko/2.jpeg b/assets/images/posts/2022-05-25-venko/2.jpeg new file mode 100644 index 0000000000..30f576d39e Binary files /dev/null and b/assets/images/posts/2022-05-25-venko/2.jpeg differ diff --git a/assets/images/posts/2022-06-13-women-cloud.jpeg b/assets/images/posts/2022-06-13-women-cloud.jpeg new file mode 100644 index 0000000000..69031b096a Binary files /dev/null and b/assets/images/posts/2022-06-13-women-cloud.jpeg differ diff --git a/assets/images/posts/2022-06-20-apn.jpeg b/assets/images/posts/2022-06-20-apn.jpeg new file mode 100644 index 0000000000..288e03ff7f Binary files /dev/null and b/assets/images/posts/2022-06-20-apn.jpeg differ diff --git a/assets/images/posts/2022-06-22-educate-relaunch.png b/assets/images/posts/2022-06-22-educate-relaunch.png new file mode 100644 index 0000000000..c02e92f1c4 Binary files /dev/null and b/assets/images/posts/2022-06-22-educate-relaunch.png differ diff --git a/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg b/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg new file mode 100644 index 0000000000..40c1357aac Binary files /dev/null and b/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg differ diff --git a/assets/images/posts/2022-08-10-rh-research/1.jpg b/assets/images/posts/2022-08-10-rh-research/1.jpg new file mode 100644 index 0000000000..43141a14f5 Binary files /dev/null and b/assets/images/posts/2022-08-10-rh-research/1.jpg differ diff --git a/assets/images/posts/2022-08-10-rh-research/2.png b/assets/images/posts/2022-08-10-rh-research/2.png new file mode 100644 index 0000000000..20d368a95b Binary files /dev/null and b/assets/images/posts/2022-08-10-rh-research/2.png differ diff --git a/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg b/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg new file mode 100644 index 0000000000..331b12a7a9 Binary files /dev/null and b/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg differ diff --git a/assets/images/posts/2022-09-01-hcia-20.jpeg b/assets/images/posts/2022-09-01-hcia-20.jpeg new file mode 100644 index 0000000000..078f249bce Binary files /dev/null and b/assets/images/posts/2022-09-01-hcia-20.jpeg differ diff --git a/assets/images/posts/2022-09-02-icos/0.webp b/assets/images/posts/2022-09-02-icos/0.webp new file mode 100644 index 0000000000..3b5aace99e Binary files /dev/null and b/assets/images/posts/2022-09-02-icos/0.webp differ diff --git a/assets/images/posts/2022-09-02-icos/1.webp b/assets/images/posts/2022-09-02-icos/1.webp new file mode 100644 index 0000000000..de163f4c7e Binary files /dev/null and b/assets/images/posts/2022-09-02-icos/1.webp differ diff --git a/assets/images/posts/2022-09-02-icos/2.webp b/assets/images/posts/2022-09-02-icos/2.webp new file mode 100644 index 0000000000..bebfd620c5 Binary files /dev/null and b/assets/images/posts/2022-09-02-icos/2.webp differ diff --git a/assets/images/posts/2022-09-20-physics-ga4/1.png b/assets/images/posts/2022-09-20-physics-ga4/1.png new file mode 100644 index 0000000000..20d7e9f88c Binary files /dev/null and b/assets/images/posts/2022-09-20-physics-ga4/1.png differ diff --git a/assets/images/posts/2022-09-20-physics-ga4/2.png b/assets/images/posts/2022-09-20-physics-ga4/2.png new file mode 100644 index 0000000000..ca4c8c6769 Binary files /dev/null and b/assets/images/posts/2022-09-20-physics-ga4/2.png differ diff --git a/assets/images/posts/2022-10-19-shift-aws-foundations-9.png b/assets/images/posts/2022-10-19-shift-aws-foundations-9.png new file mode 100644 index 0000000000..d60d38b093 Binary files /dev/null and b/assets/images/posts/2022-10-19-shift-aws-foundations-9.png differ diff --git a/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg b/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg new file mode 100644 index 0000000000..e76c0a911f Binary files /dev/null and b/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg differ diff --git a/assets/images/posts/2022-11-16-aws-certified-global-community/1.png b/assets/images/posts/2022-11-16-aws-certified-global-community/1.png new file mode 100644 index 0000000000..51a03072b1 Binary files /dev/null and b/assets/images/posts/2022-11-16-aws-certified-global-community/1.png differ diff --git a/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg b/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg new file mode 100644 index 0000000000..b0c1e81a5a Binary files /dev/null and b/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg differ diff --git a/assets/images/posts/2022-11-16-aws-certified-global-community/3.png b/assets/images/posts/2022-11-16-aws-certified-global-community/3.png new file mode 100644 index 0000000000..7e9d6bfe2a Binary files /dev/null and b/assets/images/posts/2022-11-16-aws-certified-global-community/3.png differ diff --git a/assets/images/posts/2022-11-17-rhr-talks-physics.png b/assets/images/posts/2022-11-17-rhr-talks-physics.png new file mode 100644 index 0000000000..8d55ff4fdf Binary files /dev/null and b/assets/images/posts/2022-11-17-rhr-talks-physics.png differ diff --git a/assets/images/posts/2022-12-26-tip-academy/1.svg b/assets/images/posts/2022-12-26-tip-academy/1.svg new file mode 100644 index 0000000000..0abb137128 --- /dev/null +++ b/assets/images/posts/2022-12-26-tip-academy/1.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/posts/2022-12-26-tip-academy/2.png b/assets/images/posts/2022-12-26-tip-academy/2.png new file mode 100644 index 0000000000..332e9252df Binary files /dev/null and b/assets/images/posts/2022-12-26-tip-academy/2.png differ diff --git a/assets/images/posts/2022-12-26-tip-academy/3.png b/assets/images/posts/2022-12-26-tip-academy/3.png new file mode 100644 index 0000000000..4783286e5d Binary files /dev/null and b/assets/images/posts/2022-12-26-tip-academy/3.png differ diff --git a/assets/images/posts/2022-12-26-tip-academy/4.png b/assets/images/posts/2022-12-26-tip-academy/4.png new file mode 100644 index 0000000000..b28562fd3a Binary files /dev/null and b/assets/images/posts/2022-12-26-tip-academy/4.png differ diff --git a/assets/images/posts/2022-12-26-tip-academy/5.png b/assets/images/posts/2022-12-26-tip-academy/5.png new file mode 100644 index 0000000000..33147efd85 Binary files /dev/null and b/assets/images/posts/2022-12-26-tip-academy/5.png differ diff --git a/assets/images/posts/2023-01-01-newyear23.png b/assets/images/posts/2023-01-01-newyear23.png new file mode 100644 index 0000000000..2cbe209f76 Binary files /dev/null and b/assets/images/posts/2023-01-01-newyear23.png differ diff --git a/assets/images/posts/2023-01-18-codeco-kickoff/1.png b/assets/images/posts/2023-01-18-codeco-kickoff/1.png new file mode 100644 index 0000000000..c9824afbbb Binary files /dev/null and b/assets/images/posts/2023-01-18-codeco-kickoff/1.png differ diff --git a/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg b/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg new file mode 100644 index 0000000000..eb8ff1ee16 Binary files /dev/null and b/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg differ diff --git a/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg b/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg new file mode 100644 index 0000000000..b1940d7cc4 Binary files /dev/null and b/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg differ diff --git a/assets/images/posts/2023-01-18-kubemark.svg b/assets/images/posts/2023-01-18-kubemark.svg new file mode 100644 index 0000000000..4cd4f2ad73 --- /dev/null +++ b/assets/images/posts/2023-01-18-kubemark.svg @@ -0,0 +1,616 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/posts/2023-02-06-icni2.png b/assets/images/posts/2023-02-06-icni2.png new file mode 100644 index 0000000000..4d71a4c3d2 Binary files /dev/null and b/assets/images/posts/2023-02-06-icni2.png differ diff --git a/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png b/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png new file mode 100644 index 0000000000..7d0f17b502 Binary files /dev/null and b/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png differ diff --git a/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png b/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png new file mode 100644 index 0000000000..78cebc1a98 Binary files /dev/null and b/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png differ diff --git a/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png b/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png new file mode 100644 index 0000000000..fd8d1e36a7 Binary files /dev/null and b/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png differ diff --git a/assets/images/posts/2023-04-19-physics-rhr-talks.png b/assets/images/posts/2023-04-19-physics-rhr-talks.png new file mode 100644 index 0000000000..b9a49f8e9f Binary files /dev/null and b/assets/images/posts/2023-04-19-physics-rhr-talks.png differ diff --git a/assets/images/posts/2023-05-23-devconf23/1.png b/assets/images/posts/2023-05-23-devconf23/1.png new file mode 100644 index 0000000000..b85855f71b Binary files /dev/null and b/assets/images/posts/2023-05-23-devconf23/1.png differ diff --git a/assets/images/posts/2023-05-23-devconf23/2.png b/assets/images/posts/2023-05-23-devconf23/2.png new file mode 100644 index 0000000000..4126872643 Binary files /dev/null and b/assets/images/posts/2023-05-23-devconf23/2.png differ diff --git a/assets/images/posts/2023-05-23-devconf23/3.jpeg b/assets/images/posts/2023-05-23-devconf23/3.jpeg new file mode 100644 index 0000000000..67579491b6 Binary files /dev/null and b/assets/images/posts/2023-05-23-devconf23/3.jpeg differ diff --git a/assets/images/posts/2023-05-25-netsoft23/1.png b/assets/images/posts/2023-05-25-netsoft23/1.png new file mode 100644 index 0000000000..bf7cb57903 Binary files /dev/null and b/assets/images/posts/2023-05-25-netsoft23/1.png differ diff --git a/assets/images/posts/2023-05-25-netsoft23/2.jpg b/assets/images/posts/2023-05-25-netsoft23/2.jpg new file mode 100644 index 0000000000..ea248b846e Binary files /dev/null and b/assets/images/posts/2023-05-25-netsoft23/2.jpg differ diff --git a/assets/images/posts/2023-06-02-imdea.png b/assets/images/posts/2023-06-02-imdea.png new file mode 100644 index 0000000000..9bfd6cae04 Binary files /dev/null and b/assets/images/posts/2023-06-02-imdea.png differ diff --git a/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png b/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png new file mode 100644 index 0000000000..03d1042ac6 Binary files /dev/null and b/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png differ diff --git a/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png b/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png new file mode 100644 index 0000000000..cde045a948 Binary files /dev/null and b/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png differ diff --git a/assets/js/lunr/lunr-en.js b/assets/js/lunr/lunr-en.js new file mode 100644 index 0000000000..cefd343e9a --- /dev/null +++ b/assets/js/lunr/lunr-en.js @@ -0,0 +1,70 @@ +--- +layout: none +--- + +var idx = lunr(function () { + this.field('title') + this.field('excerpt') + this.field('categories') + this.field('tags') + this.ref('id') + + this.pipeline.remove(lunr.trimmer) + + for (var item in store) { + this.add({ + title: store[item].title, + excerpt: store[item].excerpt, + categories: store[item].categories, + tags: store[item].tags, + id: item + }) + } +}); + +$(document).ready(function() { + $('input#search').on('keyup', function () { + var resultdiv = $('#results'); + var query = $(this).val().toLowerCase(); + var result = + idx.query(function (q) { + query.split(lunr.tokenizer.separator).forEach(function (term) { + q.term(term, { boost: 100 }) + if(query.lastIndexOf(" ") != query.length-1){ + q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 }) + } + if (term != ""){ + q.term(term, { usePipeline: false, editDistance: 1, boost: 1 }) + } + }) + }); + resultdiv.empty(); + resultdiv.prepend('

'+result.length+' {{ site.data.ui-text[site.locale].results_found | default: "Result(s) found" }}

'); + for (var item in result) { + var ref = result[item].ref; + if(store[ref].teaser){ + var searchitem = + '
'+ + '
'+ + '

'+ + ''+store[ref].title+''+ + '

'+ + '

'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...

'+ + '
'+ + '
'; + } + else{ + var searchitem = + '
'+ + '
'+ + '

'+ + ''+store[ref].title+''+ + '

'+ + '

'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...

'+ + '
'+ + '
'; + } + resultdiv.append(searchitem); + } + }); +}); diff --git a/assets/js/vanilla-back-to-top.min.js b/assets/js/vanilla-back-to-top.min.js new file mode 100644 index 0000000000..6be04a760b --- /dev/null +++ b/assets/js/vanilla-back-to-top.min.js @@ -0,0 +1 @@ +"use strict";function addBackToTop(){var o,t,e,n,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=i.backgroundColor,d=void 0===r?"#000":r,a=i.cornerOffset,c=void 0===a?20:a,s=i.diameter,l=void 0===s?56:s,u=i.ease,p=void 0===u?function(o){return.5*(1-Math.cos(Math.PI*o))}:u,m=i.id,h=void 0===m?"back-to-top":m,b=i.innerHTML,v=void 0===b?'':b,f=i.onClickScrollTo,x=void 0===f?0:f,w=i.scrollContainer,g=void 0===w?document.body:w,k=i.scrollDuration,y=void 0===k?100:k,T=i.showWhenScrollTopIs,M=void 0===T?1:T,z=i.size,E=void 0===z?l:z,C=i.textColor,L=void 0===C?"#fff":C,N=i.zIndex,I=void 0===N?1:N,A=g===document.body,B=A&&document.documentElement;o=Math.round(.43*E),t=Math.round(.29*E),e="#"+h+"{background:"+d+";-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;bottom:"+c+"px;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);box-shadow:0 2px 5px 0 rgba(0,0,0,.26);color:"+L+";cursor:pointer;display:block;height:"+E+"px;opacity:1;outline:0;position:fixed;right:"+c+"px;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-transition:bottom .2s,opacity .2s;-o-transition:bottom .2s,opacity .2s;-moz-transition:bottom .2s,opacity .2s;transition:bottom .2s,opacity .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:"+E+"px;z-index:"+I+"}#"+h+" svg{display:block;fill:currentColor;height:"+o+"px;margin:"+t+"px auto 0;width:"+o+"px}#"+h+".hidden{bottom:-"+E+"px;opacity:0}",(n=document.createElement("style")).appendChild(document.createTextNode(e)),document.head.insertAdjacentElement("afterbegin",n);var D=function(){var o=document.createElement("div");return o.id=h,o.className="hidden",o.innerHTML=v,o.addEventListener("click",function(o){o.preventDefault(),function(){var o="function"==typeof x?x():x,t=window,e=t.performance,n=t.requestAnimationFrame;if(y<=0||void 0===e||void 0===n)return q(o);var i=e.now(),r=j(),d=r-o;n(function o(t){var e=Math.min((t-i)/y,1);q(r-Math.round(p(e)*d)),e<1&&n(o)})}()}),document.body.appendChild(o),o}(),H=!0;function S(){j()>=M?function(){if(!H)return;D.className="",H=!1}():function(){if(H)return;D.className="hidden",H=!0}()}function j(){return g.scrollTop||B&&document.documentElement.scrollTop||0}function q(o){g.scrollTop=o,B&&(document.documentElement.scrollTop=o)}(A?window:g).addEventListener("scroll",S),S()} \ No newline at end of file diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000000..ce20a2f9f2 --- /dev/null +++ b/docs/404.html @@ -0,0 +1,447 @@ + + + + + + +Page Not Found - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + + +
+ + +
+ +

Sorry, but the page you were trying to view does not exist — perhaps you can try searching for it below.

+ + + + + + + +
+ +
+ + + + + + +
+ + + + +
+ + +
+ + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000000..5a51e7c2a9 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,23 @@ +prepare: + touch Gemfile.lock + mkdir docs + chmod a+w Gemfile.lock + chmod a+w _site + +serve: + docker run -e JEKYLL_ENV=production -p 4000:4000 --rm -v=.:/srv/jekyll:Z -it jekyll/builder sh -c 'while :; do jekyll serve; done' + +serve_and_update: + rm Gemfile.lock + touch Gemfile.lock + chmod a+w Gemfile.lock + $(MAKE) serve + +serve_local: + while :; do bundle exec jekyll serve; done + +build: + docker run -e JEKYLL_ENV=production -p 4000:4000 --rm -v=.:/srv/jekyll:Z -it jekyll/builder sh -c 'while ! jekyll build; do echo "Trying again ..."; done' + +build_local: + while ! jekyll build; do echo "Trying again ..."; done diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..93a0df772f --- /dev/null +++ b/docs/README.md @@ -0,0 +1,42 @@ +![GitHub](https://img.shields.io/github/license/josecastillolema/josecastillolema.github.io) +![Website](https://img.shields.io/website?url=https%3A%2F%2Fjosecastillolema.github.io) +![Uptime Robot status](https://img.shields.io/uptimerobot/status/m785297761-3cb3eb53ca3a7966274012bc) +![Uptime Robot ratio (30 days)](https://img.shields.io/uptimerobot/ratio/m785297761-3cb3eb53ca3a7966274012bc) +![GitHub language count](https://img.shields.io/github/languages/count/josecastillolema/josecastillolema.github.io) +![GitHub top language](https://img.shields.io/github/languages/top/josecastillolema/josecastillolema.github.io) +![gem](https://img.shields.io/badge/gem-3.1.2-blue) +![ruby](https://img.shields.io/badge/ruby-2.7-blue) +![jekyll](https://img.shields.io/badge/jekyll-3.8.7-blue) +![bundler](https://img.shields.io/badge/bundler-2.1.4-blue) +![GitHub last commit](https://img.shields.io/github/last-commit/josecastillolema/josecastillolema.github.io) +![Security Headers](https://img.shields.io/security-headers?url=https%3A%2F%2Fjosecastillolema.github.io) +![Chromium HSTS preload](https://img.shields.io/hsts/preload/josecastillolema.github.io) +![Mozilla HTTP Observatory Grade](https://img.shields.io/mozilla-observatory/grade/josecastillolema.github.io?publish) +![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/josecastillolema/josecastillolema.github.io?publish) +![Jekyll site CI](https://github.com/josecastillolema/josecastillolema.github.io/workflows/Jekyll%20site%20CI/badge.svg) + + +Sources of the **GitOps project's website** (https://josecastillolema.github.io/). + +It is built with [Jekyll](http://jekyllrb.com/) as a static site. +The `master` branch contains only the generated files, ie what is in the `_site`. + +To update the website, proceed like this: + +* Make changes in the `source` branch. +* Build the site with Jekyll and test it locally. +* Commit your changes. +* Run `make publish` + +This is the commands that are run when you type `make publish`: + +``` +git branch -D master +git checkout -b master +git filter-branch --subdirectory-filter _site/ -f +git checkout source +git push --all origin +``` + +The idea behind this process is from [@randymorris](https://github.com/randymorris) +(see [this](https://github.com/randymorris/randymorris.github.com/blob/source/README.md)). diff --git a/docs/about/index.html b/docs/about/index.html new file mode 100644 index 0000000000..3676161e7f --- /dev/null +++ b/docs/about/index.html @@ -0,0 +1,494 @@ + + + + + + +About - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + + +
+ + +
+ +

Hi there 👋

+ + +

visitors +Github Badge +Linkedin Badge +Stackoverflow Badge +Gmail Badge

+ +

Cloud ☁️ Architect at Red Hat.

+ +

I’ve been 🎓 teaching Cloud, DevOps and IoT since 2016 at FIAP for post-graduate courses. Feel free to check my repos for some codes and lectures.

+ +

+ +

+ +
+

:octocat: josecastillolema.github.io

+
+ +

+ +

Bio

+ +

Currently working as Cloud Consultant, Architect and Technical Lead for NFV-related projects at Red Hat. BE in Computer Engineering from University of A Coruña (Spain) and PhD from Polytechnic School of the University of São Paulo (Brazil). During MsC and PhD studies, worked on QoS routing in SDN and NFV Management and Orchestration.

+ +

Have been designing and implementing IaaS/PaaS solutions, namelly OpenStack and Kubernetes/OpenShift, for the last 7 years, and teaching postgraduate courses for the last 5 years.

+ +

Areas of Expertise

+
    +
  • NFVi
  • +
  • OpenStack
  • +
  • K8s/OpenShift
  • +
  • SDN
  • +
+ + +
+ +
+ + + + + + +
+ + + + +
+ + +
+ + + +
+ +
+ + +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aiab/index.html b/docs/aiab/index.html new file mode 100644 index 0000000000..1f9932c0a6 --- /dev/null +++ b/docs/aiab/index.html @@ -0,0 +1,942 @@ + + + + + + +Aether-in-a-Box - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +
+ + +
+ + + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run basic tests to validate the installation.

+ +

AiaB can be set up with a 4G or 5G SD-CORE. In either case, SD-CORE configuration can be done with or without the ROC. The ROC provides an interactive GUI for examining and changing the configuration, and is used to manage the production Aether; it can be deployed to test the integration between ROC and SD-CORE. If the ROC is not deployed, a simple tool called SimApp is used to configure the required state in SD-CORE for testing core functionality.

+ +

Helm charts are the primary method of installing the SD-CORE and ROC resources. AiaB offers a great deal of flexibility regarding which Helm chart versions to install:

+
    +
  • Local definitions of charts (for testing Helm chart changes)
  • +
  • Latest published charts (for deploying a development version of Aether)
  • +
  • Specified versions of charts (for deploying a specific Aether release)
  • +
+ +

+ +

Prerequisites

+ +

In order to run AiaB, we should prepare at least a single machine (any baremetal server or on premises/cloud VM) with the following minimum requirements:

+
    +
  • CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores
  • +
  • OS: Ubuntu 18.04 with Kernel 4.15 or later
  • +
  • RAM: At least 12GB
  • +
  • Storage: At least 50GB
  • +
+ +

For this testing it was used a Ubuntu 18.04 t2.xlarge (4 vCPUs / 16 GB) instance on AWS (with port 31194 opened in the corresponding security group).

+ +

Installation

+ +

Clone the AiaB repository:

+
$ git clone https://gerrit.opencord.org/aether-in-a-box
+
+ +

Clone these additional repositories:

+
$ mkdir -p ~/cord
+$ cd ~/cord
+$ git clone "https://gerrit.opencord.org/sdcore-helm-charts"
+$ git clone "https://gerrit.opencord.org/roc-helm-charts"
+
+ +

Install the ROC (in this case to configure the 5G SD-CORE):

+
$ cd /path/to/aether-in-a-box
+$ make roc-5g-models
+...
+until kubectl -n aether-roc exec pod/onos-cli-5d448ff6c4-b7j9p -- \
+	curl -s -f -L -X PATCH "http://aether-roc-api:8181/aether-roc-api" \
+	--header 'Content-Type: application/json' \
+	--data-raw "$(cat /home/ubuntu/aether-in-a-box//roc-5g-models.json)"; do sleep 5; done
+"uuid:a58bd6b9-d8cc-411d-ac14-17cec7153221"
+
+ +

To deploy the 5G SD-CORE and run a test with gNBSim that performs Registration + UE-initiated PDU Session Establishment + sends User Data packets:

+
$ make 5g-test
+...
+2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbUpUe][3858759684] Handling: QUIT-EVENT
+2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbUpUe][3858759684] Gnb User-plane UE Context terminated
+2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbCpUe][3858759684] gNB Control-Plane UE context terminated
+2022-03-25T15:15:45Z [DEBU][GNBSIM][RealUe][PduSession][imsi-208930100007496][10] Received last downlink data packet
+2022-03-25T15:15:45Z [INFO][GNBSIM][RealUe][PduSession][imsi-208930100007496][10] Pdu Session terminated
+2022-03-25T15:15:45Z [INFO][GNBSIM][RealUe][imsi-208930100007496] Real UE terminated
+2022-03-25T15:15:45Z [INFO][GNBSIM][SimUe][imsi-208930100007496] Sim UE terminated
+2022-03-25T15:15:45Z [INFO][GNBSIM][SimUe][imsi-208930100007496] SIM UE go routine complete
+2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Profile Name: profile2 , Profile Type: pdusessest
+2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Ue's Passed: 5 , Ue's Failed: 0
+2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Simulation Result: PASS
+
+ +

Check that everything is up and running:

+
$ kubectl get po -A
+NAMESPACE     NAME                                                              READY   STATUS    RESTARTS   AGE
+aether-roc    aether-roc-api-8788d4cf6-dhsd9                                    1/1     Running   0          6m19s
+aether-roc    aether-roc-gui-v2-6d674fd446-jgngs                                1/1     Running   0          6m19s
+aether-roc    aether-roc-umbrella-grafana-74b4c6bcf6-vwkh7                      2/2     Running   0          6m19s
+aether-roc    aether-roc-umbrella-kube-state-metrics-6c57fdcdcc-vt6vl           1/1     Running   0          6m19s
+aether-roc    aether-roc-umbrella-prometheus-acc-alertmanager-55ddf7468542std   2/2     Running   0          6m19s
+aether-roc    aether-roc-umbrella-prometheus-acc-server-6df774dc96-nncgk        2/2     Running   0          6m19s
+aether-roc    aether-roc-umbrella-prometheus-ace-server-7d8c6d4578-k7p6x        2/2     Running   0          6m19s
+aether-roc    aether-roc-umbrella-prometheus-amp-server-67cc457fc7-hdslj        2/2     Running   0          6m18s
+aether-roc    aether-roc-websocket-855d64549b-zjnbh                             1/1     Running   0          6m19s
+aether-roc    demo-exporter-f97895d8f-2cjl9                                     1/1     Running   0          6m19s
+aether-roc    onos-cli-5d448ff6c4-b7j9p                                         1/1     Running   0          6m19s
+aether-roc    onos-config-7886676d5b-vtkrb                                      6/6     Running   0          6m18s
+aether-roc    onos-consensus-store-0                                            1/1     Running   0          6m19s
+aether-roc    onos-topo-585c7c8976-jtg5t                                        3/3     Running   0          6m19s
+aether-roc    prom-label-proxy-acc-58dbc89fb8-s595b                             1/1     Running   0          6m19s
+aether-roc    prom-label-proxy-amp-5d54b6d445-55wqv                             1/1     Running   0          6m19s
+aether-roc    sdcore-adapter-v2-5646d455b9-ljjpc                                1/1     Running   0          6m18s
+aether-roc    subscriber-proxy-7d989c6b5d-kkdbn                                 1/1     Running   0          6m19s
+default       router                                                            1/1     Running   0          3m46s
+kube-system   atomix-controller-6989fbdbf-qdp48                                 1/1     Running   0          7m19s
+kube-system   atomix-raft-storage-controller-9b4678b97-vrrrq                    1/1     Running   0          6m56s
+kube-system   calico-kube-controllers-dbfbbc4cb-7m8t4                           1/1     Running   0          8m33s
+kube-system   calico-node-cxlfs                                                 1/1     Running   0          8m42s
+kube-system   coredns-bbb7d66cd-4k86p                                           1/1     Running   0          8m20s
+kube-system   dns-autoscaler-7cdcfcf64f-s8hdf                                   1/1     Running   0          8m17s
+kube-system   kube-apiserver-node1                                              1/1     Running   0          9m26s
+kube-system   kube-controller-manager-node1                                     1/1     Running   0          9m26s
+kube-system   kube-multus-ds-amd64-z5jp6                                        1/1     Running   0          8m36s
+kube-system   kube-proxy-9b5h5                                                  1/1     Running   0          8m42s
+kube-system   kube-scheduler-node1                                              1/1     Running   0          9m26s
+kube-system   nodelocaldns-52bkt                                                1/1     Running   0          8m16s
+kube-system   onos-operator-app-6b98cbf864-64vwv                                1/1     Running   0          6m43s
+kube-system   onos-operator-topo-6ddd5875ff-5rqd7                               1/1     Running   0          6m44s
+omec          amf-7465456d9f-5mbzx                                              1/1     Running   0          3m25s
+omec          ausf-654bbdd6b-7bd55                                              1/1     Running   0          3m25s
+omec          gnbsim-0                                                          1/1     Running   0          3m25s
+omec          mongodb-5fcdcff994-bqnpm                                          1/1     Running   0          3m25s
+omec          nrf-5db5789644-65wmd                                              1/1     Running   0          3m25s
+omec          nssf-775fdfbbb4-mbs4t                                             1/1     Running   0          3m25s
+omec          pcf-756b565d85-h8p2w                                              1/1     Running   0          3m25s
+omec          simapp-65dc44b9d-gj9fh                                            1/1     Running   0          3m25s
+omec          smf-9bbcf84bc-5xdbq                                               1/1     Running   0          3m25s
+omec          udm-5ff558bc69-pfpxh                                              1/1     Running   0          3m25s
+omec          udr-cc4654c64-x5pfr                                               1/1     Running   0          3m25s
+omec          upf-0                                                             5/5     Running   0          3m25s
+omec          webui-6db4cfdc55-2wlp7                                            1/1     Running   0          3m25s
+
+ +

Resource usage

+ +

For this particular t2.xlarge instance:

+
    +
  • Load +
     $ uptime
    + 15:16:13 up 45 min,  2 users,  load average: 1.81, 3.32, 2.17
    +
    +
  • +
  • Memory +
     $ free -h
    +               total        used        free      shared  buff/cache   available
    + Mem:            15G        2.7G        1.4G        825M         11G         12G
    + Swap:            0B          0B          0B
    +
    +
  • +
  • Disk +
     $ $ df -h | egrep -v 'overlay|shm'
    + Filesystem      Size  Used Avail Use% Mounted on
    + udev            7.9G     0  7.9G   0% /dev
    + tmpfs           1.6G  8.8M  1.6G   1% /run
    + /dev/xvda1       97G   12G   86G  12% /
    + tmpfs           5.0M     0  5.0M   0% /run/lock
    + tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
    + /dev/loop0       43M   43M     0 100% /snap/snapd/14066
    + /dev/loop1       56M   56M     0 100% /snap/core18/2253
    + /dev/loop2       25M   25M     0 100% /snap/amazon-ssm-agent/4046
    + tmpfs           1.6G     0  1.6G   0% /run/user/1000
    +
    +
  • +
+ +

ROC GUI

+ +

The ROC GUI is available on port 31194 on the host running AiaB.

+ +
    +
  • +

    Dashboard +

    +
  • +
  • +

    Alert view +

    +
  • +
  • +

    Slice view +

    +
  • +
  • +

    User plane function view +

    +
  • +
  • +

    Device groups view +

    +
  • +
  • +

    Devices view +

    +
  • +
  • +

    SIM cards view +

    +
  • +
  • +

    Sites view +

    +
  • +
  • +

    Small cells view +

    +
  • +
  • +

    Traffic classes view +

    +
  • +
  • +

    IP domains view +

    +
  • +
  • +

    Enterprises view +

    +
  • +
  • +

    Connectivity services view +

    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aict14/index.html b/docs/aict14/index.html new file mode 100644 index 0000000000..aaa5ca4d2d --- /dev/null +++ b/docs/aict14/index.html @@ -0,0 +1,772 @@ + + + + + + +AITC 2014 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

The Tenth Advanced International Conference on Telecommunications

+ +

Program

+ +

Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions

+ +
    +
  • José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain)
  • +
  • Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil)
  • +
  • Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil)
  • +
  • Pedro Frosi Rosa (Federal University of Uberlândia, Brazil)
  • +
  • Carlos Eduardo Magalhães Guimarães (Instituto de Telecomunicações - Pólo de Aveiro, Portugal)
  • +
  • Daniel Corujo (Instituto de Telecomunicações Aveiro, Portugal)
  • +
  • Rui L Aguiar (University of Aveiro, Portugal)
  • +
+ +

Cite this

+ +

APA

+ +

Castillo, J., Silva, F.S., Neto, A., Silva, F.O., Frosi, P., Guimarães, C., Corujo, D., & Aguiar, R.L. (2014). Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions. AICT 2014.

+ +

BibTeX

+ +
@inproceedings {Castillo2014EvolvingFI,
+  title={Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions},
+  author={Jos{\'e} Castillo and Felipe Sampaio Dantas da Silva and Augusto Neto and Fl{\'a}vio Oliveira Silva and Pedro Frosi and Carlos Guimar{\~a}es and Daniel Corujo and Rui L. Aguiar},
+  booktitle={IARIA Advanced International Conference on Telecommunications (AICT 2014)},
+  year={2014}}
+
+ +

Chicago

+

Castillo, José, Felipe Sampaio Dantas da Silva, Augusto Neto, Flávio Oliveira Silva, Pedro Frosi, Carlos Guimarães, Daniel Corujo and Rui L. Aguiar. “Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions.” AICT 2014 (2014).

+ +

MLA

+

Castillo, José et al. “Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions.” AICT 2014 (2014).

+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aodh2sensu/index.html b/docs/aodh2sensu/index.html new file mode 100644 index 0000000000..1e85084373 --- /dev/null +++ b/docs/aodh2sensu/index.html @@ -0,0 +1,895 @@ + + + + + + +Importing alarms from OpenStack Aodh into Sensu Core - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ + + + + + + +

GitHub +GitHub language count +GitHub top language +GitHub Pipenv locked Python version +GitHub Pipenv locked dependency version +GitHub Pipenv locked dependency version +GitHub Workflow Status +Python application +CI

+ +

aodh2sensu

+ +

Imports OpenStack Aodh alarms into Sensu Core Server.

+ +

Install

+ +

Via requirements file

+
$ pip3 install -r ./requirements.txt
+
+ +

Via pipenv pipfile

+
$ pipenv install
+
+ +

Use

+ +
Usage: aodh2sensu.py [options]
+
+Imports OpenStack Aodh alarms into Sensu Core Server.
+
+Options:
+  -h, --help            show this help message and exit
+  --sensu-url URL       if not specified, defaults to localhost:4567
+
+ +
    +
  • +

    Run the aodh2sensu proxy. sensu_url must point to the sensu server. The proxy must be run in a server reachable from OpenStack controllers and with access to the Sensu Server (for example, the Sensu Server itself).

    + +
     $ ./aodh2sensu.py
    +
    +

    or alternatively via pipenv:

    +
     $ pipenv shell
    + $ ./aodh2sensu.py
    +
    +
  • +
  • Create an Aodh alarm from OpenStack side. This example alarm will trigger an HTTP POST message to the aodh2sensu proxy whenever the cpu utilization of $INSTANCE_ID goes above 20%: +
     $ openstack alarm create \
    + --name cpu_hi4 \
    + --type gnocchi_resources_threshold \
    + --description 'CPU High Average' \
    + --metric cpu_util \
    + --threshold 20.0 \
    + --comparison-operator gt \
    + --aggregation-method mean \
    + --granularity 300 \
    + --evaluation-periods 1 \
    + --resource-type instance \
    + --resource-id $INSTANCE_ID \
    + --alarm-action 'http://x.y.z.w:50000' \
    + --ok-action 'http://x.y.z.w:50000' \
    + --insufficient-data-action 'http://x.y.z.w:50000'
    +
    +

    where x.y.z.w is the IP address of the server running aodh2sensu proxy.

    +
  • +
  • Confirm the alarm transitions from insufficient_data state to ok state: +
     $ openstack alarm list
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    + | alarm_id                             | type                                       | name           | state             | severity | enabled |
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    + | c466d832-cfce-4488-9726-c631800a36b1 | gnocchi_resources_threshold                | cpu_hi4        | ok                | low      | True    |
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    +
    +
  • +
  • Generate load in the instance above the 20% threeshold, and wait for the alarm to transitition to alarm state: +
     $ openstack alarm list
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    + | alarm_id                             | type                                       | name           | state             | severity | enabled |
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    + | c466d832-cfce-4488-9726-c631800a36b1 | gnocchi_resources_threshold                | cpu_hi4        | alarm             | low      | True    |
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    +
    +
  • +
  • +

    Check the alarm from the Uchiwa dashboard: +Screenshot 1 of the Uchiwa dashboard +Screenshoto 2 of the Uchiwa dashboard

    +
  • +
  • Stop the load generation in the instance, wait for the alarm to transition back to ok state: +
     $ openstack alarm list
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    + | alarm_id                             | type                                       | name           | state             | severity | enabled |
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    + | c466d832-cfce-4488-9726-c631800a36b1 | gnocchi_resources_threshold                | cpu_hi4        | ok                | low      | True    |
    + +--------------------------------------+--------------------------------------------+----------------+-------------------+----------+---------+
    +
    +
  • +
  • +

    Check the new state of the sensu alert: +Screenshot 3 of the Uchiwa dashboard

    +
  • +
  • Confirm it has disappeared from the list of active alerts: +Screenshot 4 of the Uchiwa dashboard
  • +
+ +

Docker

+

To build the image:

+ +
$ buildah build-using-dockerfile -t aodh2sensu .
+
+ +

To run the image:

+ +
$ podman run --name aodh2sensu --add-host="localhost:10.88.0.1" -d -p 50000:50000 aodh2sensu
+
+ +

Pointing to a specific Sensu Server URL:

+ +
$ podman run --name aodh2sensu --add-host="localhost:10.88.0.1" -d -p 50000:50000 -e SENSU_URL=x.y.z.w:p aodh2sensu
+
+ +

Check logs:

+
$ podman logs aodh2sensu
+
+ +

Systemd

+ +

To run aodh2sensu as a systemd service.

+ +

Normal

+
# cat /usr/lib/systemd/system/aodh2sensu.service
+[Unit]
+Description=aodh2sensu service
+
+[Service]
+Type=simple
+ExecStart=/opt/aodh2sensu/aodh2sensu.py
+
+[Install]
+WantedBy=multi-user.target
+
+ +

Docker

+
# cat ~/.config/systemd/user/aodh2sensu.service 
+[Unit]
+Description=aodh2sensu service via podman
+
+[Service]
+Restart=on-failure
+ExecStartPre=/usr/bin/rm -f /%t/%n-pid /%t/%n-cid
+ExecStart=/usr/bin/podman run --conmon-pidfile  /%t/%n-pid  --cidfile /%t/%n-cid --add-host="localhost:10.88.0.1" -d --name aodh2sensu -p 50000:50000 aodh2sensu
+ExecStop=/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`"
+KillMode=none
+Type=forking
+PIDFile=/%t/%n-pid
+
+[Install]
+WantedBy=multi-user.target
+
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/apicon/index.html b/docs/apicon/index.html new file mode 100644 index 0000000000..b535ccce72 --- /dev/null +++ b/docs/apicon/index.html @@ -0,0 +1,727 @@ + + + + + + +APICON 2017 - IoT HandsOn Lab - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

API Connect Conference 2017

+ +

+

+ +

+

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/apn/index.html b/docs/apn/index.html new file mode 100644 index 0000000000..7904a23012 --- /dev/null +++ b/docs/apn/index.html @@ -0,0 +1,748 @@ + + + + + + +AWS Partner Network - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

The AWS Partner Network (APN) is a global community of partners that leverages programs, expertise, and resources to build, market, and sell customer offerings.

+ +

This diverse network features 100,000 partners from more than 150 countries. As an AWS Partner, you are uniquely positioned to help customers take full advantage of all that AWS has to offer and accelerate their journey to the cloud.

+ +

Together, partners and AWS can provide innovative solutions, solve technical challenges, win deals, and deliver value to our mutual customers.

+ +

One of the Partner Resources is Partner Training and Certification, to deepen your AWS knowledge and skills with digital and classroom trainings.

+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/css/main.css b/docs/assets/css/main.css new file mode 100644 index 0000000000..d6b011446c --- /dev/null +++ b/docs/assets/css/main.css @@ -0,0 +1,5 @@ +/*! + * Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose + * Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes + * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) +*/.mfp-counter{font-family:Georgia,Times,serif}.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#000;opacity:.8;filter:alpha(opacity=80)}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:none !important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-inline-holder .mfp-content,.mfp-ajax-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-close,.mfp-arrow,.mfp-preloader,.mfp-counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none !important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-0.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-close,button.mfp-arrow{overflow:visible;cursor:pointer;background:transparent;border:0;-webkit-appearance:none;display:block;outline:none;padding:0;z-index:1046;-webkit-box-shadow:none;box-shadow:none}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:1;filter:alpha(opacity=100);padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Georgia,Times,serif}.mfp-close:hover,.mfp-close:focus{opacity:1;filter:alpha(opacity=100)}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#fff}.mfp-image-holder .mfp-close,.mfp-iframe-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px}.mfp-arrow{position:absolute;opacity:1;filter:alpha(opacity=100);margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:hover,.mfp-arrow:focus{opacity:1;filter:alpha(opacity=100)}.mfp-arrow:before,.mfp-arrow:after,.mfp-arrow .mfp-b,.mfp-arrow .mfp-a{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after,.mfp-arrow .mfp-a{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before,.mfp-arrow .mfp-b{border-top-width:21px;border-bottom-width:21px;opacity:0.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after,.mfp-arrow-left .mfp-a{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before,.mfp-arrow-left .mfp-b{margin-left:25px;border-right:27px solid #fff}.mfp-arrow-right{right:0}.mfp-arrow-right:after,.mfp-arrow-right .mfp-a{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before,.mfp-arrow-right .mfp-b{border-left:27px solid #fff}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-figure figcaption{margin-top:0;margin-bottom:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,0.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,0.6);position:fixed;text-align:center;padding:0}}@media all and (max-width: 900px){.mfp-arrow{-webkit-transform:scale(0.75);transform:scale(0.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}.mfp-ie7 .mfp-img{padding:0}.mfp-ie7 .mfp-bottom-bar{width:600px;left:50%;margin-left:-300px;margin-top:5px;padding-bottom:5px}.mfp-ie7 .mfp-container{padding:0}.mfp-ie7 .mfp-content{padding-top:44px}.mfp-ie7 .mfp-close{top:0;right:0;padding-top:0}a:focus,button:focus{outline:thin dotted #6f777d;outline:5px auto #6f777d;outline-offset:-2px}*{box-sizing:border-box}html{box-sizing:border-box;background-color:#fff;font-size:16px;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}@media (min-width: 48em){html{font-size:18px}}@media (min-width: 64em){html{font-size:20px}}@media (min-width: 80em){html{font-size:22px}}body{margin:0}::-moz-selection{color:#fff;background:#000}::selection{color:#fff;background:#000}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}a{color:#2f7d95}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{box-sizing:border-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}html{position:relative;min-height:100%}body{margin:0;padding:0;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:1.5}body.overflow--hidden{overflow:hidden}h1,h2,h3,h4,h5,h6{margin:2em 0 0.5em;line-height:1.2;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}h1{margin-top:0;font-size:1.563em}h2{font-size:1.25em}h3{font-size:1.125em}h4{font-size:1.0625em}h5{font-size:1.03125em}h6{font-size:1em}small,.small{font-size:.75em}p{margin-bottom:1.3em}u,ins{text-decoration:none;border-bottom:1px solid #3d4144}u a,ins a{color:inherit}del a{color:inherit}p,pre,blockquote,ul,ol,dl,figure,table,fieldset{orphans:3;widows:3}abbr[title],abbr[data-original-title]{text-decoration:none;cursor:help;border-bottom:1px dotted #3d4144}blockquote{margin:2em 1em 2em 0;padding-left:1em;padding-right:1em;font-style:italic;border-left:0.25em solid #6f777d}blockquote cite{font-style:italic}blockquote cite:before{content:"\2014";padding-right:5px}a:visited{color:#4e91a5}a:hover{color:#235e70;outline:0}tt,code,kbd,samp,pre{font-family:Monaco,Consolas,"Lucida Console",monospace}pre{overflow-x:auto}hr{display:block;margin:1em 0;border:0;border-top:1px solid #f2f3f3}ul li,ol li{margin-bottom:0.5em}li ul,li ol{margin-top:0.5em}figure{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:start;align-items:flex-start;flex-wrap:wrap;margin:2em 0}figure img,figure iframe,figure .fluid-width-video-wrapper{margin-bottom:1em}figure img{width:100%;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figure>a{display:block}@media (min-width: 37.5em){figure.half>a,figure.half>img{width:calc(50% - 0.5em)}}figure.half figcaption{width:100%}@media (min-width: 37.5em){figure.third>a,figure.third>img{width:calc(33.3333% - 0.5em)}}figure.third figcaption{width:100%}figcaption{margin-bottom:0.5em;color:#646769;font-family:Georgia,Times,serif;font-size:.75em}figcaption a{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}figcaption a:hover{color:#235e70}svg:not(:root){overflow:hidden}nav ul{margin:0;padding:0}nav li{list-style:none}nav a{text-decoration:none}nav ul li,nav ol li{margin-bottom:0}nav li ul,nav li ol{margin-top:0}b,i,strong,em,blockquote,p,q,span,figure,img,h1,h2,header,input,a,tr,td,form button,input[type="submit"],.btn,.highlight,.archive__item-teaser{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}form{margin:0 0 5px 0;padding:1em;background-color:#f2f3f3}form fieldset{margin-bottom:5px;padding:0;border-width:0}form legend{display:block;width:100%;margin-bottom:10px;*margin-left:-7px;padding:0;color:#3d4144;border:0;white-space:normal}form p{margin-bottom:2.5px}form ul{list-style-type:none;margin:0 0 5px 0;padding:0}form br{display:none}label,input,button,select,textarea{vertical-align:baseline;*vertical-align:middle}input,button,select,textarea{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}label{display:block;margin-bottom:0.25em;color:#3d4144;cursor:pointer}label small{font-size:.75em}label input,label textarea,label select{display:block}input,textarea,select{display:inline-block;width:100%;padding:0.25em;margin-bottom:0.5em;color:#3d4144;background-color:#fff;border:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.input-mini{width:60px}.input-small{width:90px}input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;border-radius:0;border:0 \9;box-shadow:none}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="image"]{border:0}input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:transparent;background-color:initial;box-shadow:none}input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;cursor:pointer;*overflow:visible}select,input[type="file"]{*margin-top:4px}select{width:auto;background-color:#fff}select[multiple],select[size]{height:auto}textarea{resize:vertical;height:auto;overflow:auto;vertical-align:top}input[type="hidden"]{display:none}.form{position:relative}.radio,.checkbox{padding-left:18px;font-weight:normal}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{opacity:0.5;cursor:not-allowed}input:focus,textarea:focus{border-color:#6f777d;outline:0;outline:thin dotted \9;box-shadow:inset 0 1px 3px rgba(61,65,68,0.06),0 0 5px rgba(111,119,125,0.7)}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{box-shadow:none}.help-block,.help-inline{color:#646769}.help-block{display:block;margin-bottom:1em;line-height:1em}.help-inline{display:inline-block;vertical-align:middle;padding-left:5px}.form-group{margin-bottom:5px;padding:0;border-width:0}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;margin-bottom:0}.form-inline label{display:inline-block}.form-inline .radio,.form-inline .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form-search input,.form-search textarea,.form-search select{display:inline-block;margin-bottom:0}.form-search .search-query{padding-left:14px;padding-right:14px;margin-bottom:0;border-radius:14px}.form-search label{display:inline-block}.form-search .radio,.form-search .checkbox,.form-inline .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px}.form--loading:before{content:""}.form--loading .form__spinner{display:block}.form:before{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255,255,255,0.7);z-index:10}.form__spinner{display:none;position:absolute;top:50%;left:50%;z-index:11}table{display:block;margin-bottom:1em;width:100%;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;border-collapse:collapse;overflow-x:auto}table+table{margin-top:1em}thead{background-color:#f2f3f3;border-bottom:2px solid #b6b6b6}th{padding:0.5em;font-weight:bold;text-align:left}td{padding:0.5em;border-bottom:1px solid #b6b6b6}tr,td,th{vertical-align:middle}@-webkit-keyframes intro{0%{opacity:0}100%{opacity:1}}@keyframes intro{0%{opacity:0}100%{opacity:1}}.btn{display:inline-block;margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-align:center;text-decoration:none;border-width:0;border-radius:4px;cursor:pointer}.btn .icon{margin-right:0.5em}.btn .icon+.hidden{margin-left:-0.5em}.btn--primary{background-color:#6f777d;color:#fff}.btn--primary:visited{background-color:#6f777d;color:#fff}.btn--primary:hover{background-color:#595f64;color:#fff}.btn--inverse{background-color:#fff;color:#3d4144;border:1px solid #f2f3f3}.btn--inverse:visited{background-color:#fff;color:#3d4144}.btn--inverse:hover{background-color:#ccc;color:#3d4144}.btn--light-outline{background-color:transparent;color:#fff;border:1px solid #fff}.btn--light-outline:visited{background-color:transparent;color:#fff}.btn--light-outline:hover{background-color:rgba(0,0,0,0.2);color:#fff}.btn--success{background-color:#3fa63f;color:#fff}.btn--success:visited{background-color:#3fa63f;color:#fff}.btn--success:hover{background-color:#328532;color:#fff}.btn--warning{background-color:#d67f05;color:#fff}.btn--warning:visited{background-color:#d67f05;color:#fff}.btn--warning:hover{background-color:#ab6604;color:#fff}.btn--danger{background-color:#ee5f5b;color:#fff}.btn--danger:visited{background-color:#ee5f5b;color:#fff}.btn--danger:hover{background-color:#be4c49;color:#fff}.btn--info{background-color:#3b9cba;color:#fff}.btn--info:visited{background-color:#3b9cba;color:#fff}.btn--info:hover{background-color:#2f7d95;color:#fff}.btn--facebook{background-color:#3b5998;color:#fff}.btn--facebook:visited{background-color:#3b5998;color:#fff}.btn--facebook:hover{background-color:#2f477a;color:#fff}.btn--twitter{background-color:#55acee;color:#fff}.btn--twitter:visited{background-color:#55acee;color:#fff}.btn--twitter:hover{background-color:#448abe;color:#fff}.btn--linkedin{background-color:#007bb6;color:#fff}.btn--linkedin:visited{background-color:#007bb6;color:#fff}.btn--linkedin:hover{background-color:#006292;color:#fff}.btn--block{display:block;width:100%}.btn--block+.btn--block{margin-top:0.25em}.btn--disabled{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.btn--x-large{font-size:1.25em}.btn--large{font-size:1em}.btn--small{font-size:.6875em}.notice{margin:2em 0 !important;padding:1em;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(189,193,196,0.25)}.notice h4{margin-top:0 !important;margin-bottom:0.75em;line-height:inherit}.page__content .notice h4{margin-bottom:0;font-size:1em}.notice p:last-child{margin-bottom:0 !important}.notice h4+p{margin-top:0;padding-top:0}.notice a{color:#aaaeb0}.notice a:hover{color:#5f6162}blockquote.notice{border-left-color:#aaaeb0}.notice code{background-color:#f8f9f9}.notice pre code{background-color:inherit}.notice ul:last-child{margin-bottom:0}.notice--primary{margin:2em 0 !important;padding:1em;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#e2e4e5;border-radius:4px;box-shadow:0 1px 1px rgba(111,119,125,0.25)}.notice--primary h4{margin-top:0 !important;margin-bottom:0.75em;line-height:inherit}.page__content .notice--primary h4{margin-bottom:0;font-size:1em}.notice--primary p:last-child{margin-bottom:0 !important}.notice--primary h4+p{margin-top:0;padding-top:0}.notice--primary a{color:#646b71}.notice--primary a:hover{color:#383c3f}blockquote.notice--primary{border-left-color:#646b71}.notice--primary code{background-color:#f1f1f2}.notice--primary pre code{background-color:inherit}.notice--primary ul:last-child{margin-bottom:0}.notice--info{margin:2em 0 !important;padding:1em;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#d8ebf1;border-radius:4px;box-shadow:0 1px 1px rgba(59,156,186,0.25)}.notice--info h4{margin-top:0 !important;margin-bottom:0.75em;line-height:inherit}.page__content .notice--info h4{margin-bottom:0;font-size:1em}.notice--info p:last-child{margin-bottom:0 !important}.notice--info h4+p{margin-top:0;padding-top:0}.notice--info a{color:#358ca7}.notice--info a:hover{color:#1e4e5d}blockquote.notice--info{border-left-color:#358ca7}.notice--info code{background-color:#ebf5f8}.notice--info pre code{background-color:inherit}.notice--info ul:last-child{margin-bottom:0}.notice--warning{margin:2em 0 !important;padding:1em;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#f7e5cd;border-radius:4px;box-shadow:0 1px 1px rgba(214,127,5,0.25)}.notice--warning h4{margin-top:0 !important;margin-bottom:0.75em;line-height:inherit}.page__content .notice--warning h4{margin-bottom:0;font-size:1em}.notice--warning p:last-child{margin-bottom:0 !important}.notice--warning h4+p{margin-top:0;padding-top:0}.notice--warning a{color:#c17205}.notice--warning a:hover{color:#6b4003}blockquote.notice--warning{border-left-color:#c17205}.notice--warning code{background-color:#fbf2e6}.notice--warning pre code{background-color:inherit}.notice--warning ul:last-child{margin-bottom:0}.notice--success{margin:2em 0 !important;padding:1em;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#d9edd9;border-radius:4px;box-shadow:0 1px 1px rgba(63,166,63,0.25)}.notice--success h4{margin-top:0 !important;margin-bottom:0.75em;line-height:inherit}.page__content .notice--success h4{margin-bottom:0;font-size:1em}.notice--success p:last-child{margin-bottom:0 !important}.notice--success h4+p{margin-top:0;padding-top:0}.notice--success a{color:#399539}.notice--success a:hover{color:#205320}blockquote.notice--success{border-left-color:#399539}.notice--success code{background-color:#ecf6ec}.notice--success pre code{background-color:inherit}.notice--success ul:last-child{margin-bottom:0}.notice--danger{margin:2em 0 !important;padding:1em;color:#3d4144;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em !important;text-indent:initial;background-color:#fcdfde;border-radius:4px;box-shadow:0 1px 1px rgba(238,95,91,0.25)}.notice--danger h4{margin-top:0 !important;margin-bottom:0.75em;line-height:inherit}.page__content .notice--danger h4{margin-bottom:0;font-size:1em}.notice--danger p:last-child{margin-bottom:0 !important}.notice--danger h4+p{margin-top:0;padding-top:0}.notice--danger a{color:#d65652}.notice--danger a:hover{color:#77302e}blockquote.notice--danger{border-left-color:#d65652}.notice--danger code{background-color:#fdefef}.notice--danger pre code{background-color:inherit}.notice--danger ul:last-child{margin-bottom:0}.masthead{position:relative;border-bottom:1px solid #f2f3f3;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s;z-index:20;background-color:#F2F3F3}.masthead__inner-wrap{clear:both;margin-left:auto;margin-right:auto;padding:1em;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.masthead__inner-wrap::after{clear:both;content:"";display:table}@media (min-width: 80em){.masthead__inner-wrap{max-width:1280px}}.masthead__inner-wrap nav{z-index:10}.masthead__inner-wrap a{text-decoration:none}.site-logo img{max-height:2rem}.site-title{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-item-align:center;align-self:center;font-weight:bold}.site-subtitle{display:block;font-size:.625em}.masthead__menu{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.masthead__menu .site-nav{margin-left:0}@media (min-width: 37.5em){.masthead__menu .site-nav{float:right}}.masthead__menu ul{margin:0;padding:0;clear:both;list-style-type:none}.masthead__menu-item{display:block;list-style-type:none;white-space:nowrap}.masthead__menu-item--lg{padding-right:2em;font-weight:700}.breadcrumbs{clear:both;margin:0 auto;max-width:100%;padding-left:1em;padding-right:1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.3s;animation-delay:0.3s}.breadcrumbs::after{clear:both;content:"";display:table}@media (min-width: 80em){.breadcrumbs{max-width:1280px}}.breadcrumbs ol{padding:0;list-style:none;font-size:.75em}@media (min-width: 64em){.breadcrumbs ol{float:right;width:calc(100% - 200px)}}@media (min-width: 80em){.breadcrumbs ol{width:calc(100% - 300px)}}.breadcrumbs li{display:inline}.breadcrumbs .current{font-weight:bold}.pagination{clear:both;float:left;margin-top:1em;padding-top:1em;width:100%}.pagination::after{clear:both;content:"";display:table}.pagination ul{margin:0;padding:0;list-style-type:none;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.pagination li{display:block;float:left;margin-left:-1px}.pagination li a{display:block;margin-bottom:0.25em;padding:0.5em 1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:14px;font-weight:bold;line-height:1.5;text-align:center;text-decoration:none;color:#646769;border:1px solid #b6b6b6;border-radius:0}.pagination li a:hover{color:#235e70}.pagination li a.current,.pagination li a.current.disabled{color:#fff;background:#6f777d}.pagination li a.disabled{color:rgba(100,103,105,0.5);pointer-events:none;cursor:not-allowed}.pagination li:first-child{margin-left:0}.pagination li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination--pager{display:block;padding:1em 2em;float:left;width:50%;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold;text-align:center;text-decoration:none;color:#646769;border:1px solid #b6b6b6;border-radius:4px}.pagination--pager:hover{background-color:#646769;color:#fff}.pagination--pager:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.pagination--pager:last-child{margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.pagination--pager.disabled{color:rgba(100,103,105,0.5);pointer-events:none;cursor:not-allowed}.page__content+.pagination,.page__meta+.pagination,.comment__date+.pagination,.page__share+.pagination,.page__comments+.pagination{margin-top:2em;padding-top:2em;border-top:1px solid #f2f3f3}.greedy-nav{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:2em;background:#F2F3F3}.greedy-nav a{display:block;margin:0 1rem;color:#6f777d;text-decoration:none;-webkit-transition:none;transition:none}.greedy-nav a:hover{color:#53595e}.greedy-nav a.site-logo{margin-left:0;margin-right:0.5rem}.greedy-nav a.site-title{margin-left:0}.greedy-nav img{-webkit-transition:none;transition:none}.greedy-nav__toggle{-ms-flex-item-align:center;align-self:center;height:2rem;border:0;outline:none;background-color:transparent;cursor:pointer}.greedy-nav .visible-links{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.greedy-nav .visible-links li{-webkit-box-flex:0;-ms-flex:none;flex:none}.greedy-nav .visible-links a{position:relative}.greedy-nav .visible-links a:before{content:"";position:absolute;left:0;bottom:0;height:4px;background:#6f777d;width:100%;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;-webkit-transform:scaleX(0) translate3d(0, 0, 0);transform:scaleX(0) translate3d(0, 0, 0)}.greedy-nav .visible-links a:hover:before{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.greedy-nav .hidden-links{position:absolute;top:100%;right:0;margin-top:15px;padding:5px;border:1px solid #f2f3f3;border-radius:4px;background:#fff;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.greedy-nav .hidden-links.hidden{display:none}.greedy-nav .hidden-links a{margin:0;padding:10px 20px;font-size:1em}.greedy-nav .hidden-links a:hover{color:#53595e;background:#dbdddf}.greedy-nav .hidden-links:before{content:"";position:absolute;top:-11px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;display:block;z-index:0}.greedy-nav .hidden-links:after{content:"";position:absolute;top:-10px;right:10px;width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;display:block;z-index:1}.greedy-nav .hidden-links li{display:block;border-bottom:1px solid #f2f3f3}.greedy-nav .hidden-links li:last-child{border-bottom:none}.no-js .greedy-nav .visible-links{-ms-flex-wrap:wrap;flex-wrap:wrap;overflow:visible}.nav__list{margin-bottom:1.5em}.nav__list input[type="checkbox"],.nav__list label{display:none}@media (max-width: 63.9375em){.nav__list label{position:relative;display:inline-block;padding:0.5em 2.5em 0.5em 1em;color:#7a8288;font-size:.75em;font-weight:bold;border:1px solid #bdc1c4;border-radius:4px;z-index:20;-webkit-transition:0.2s ease-out;transition:0.2s ease-out;cursor:pointer}.nav__list label:before,.nav__list label:after{content:"";position:absolute;right:1em;top:1.25em;width:0.75em;height:0.125em;line-height:1;background-color:#7a8288;-webkit-transition:0.2s ease-out;transition:0.2s ease-out}.nav__list label:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.nav__list label:hover{color:#fff;border-color:#7a8288;background-color:#333}.nav__list label:hover:before,.nav__list label:hover:after{background-color:#fff}.nav__list input:checked+label{color:white;background-color:#333}.nav__list input:checked+label:before,.nav__list input:checked+label:after{background-color:#fff}.nav__list label:hover:after{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.nav__list input:checked+label:hover:after{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}.nav__list ul{margin-bottom:1em}.nav__list a{display:block;padding:0.25em 0}}@media (max-width: 63.9375em) and (min-width: 64em){.nav__list a{padding-top:0.125em;padding-bottom:0.125em}}@media (max-width: 63.9375em){.nav__list a:hover{text-decoration:underline}}.nav__list .nav__items{margin:0;font-size:1.25rem}.nav__list .nav__items a{color:inherit}.nav__list .nav__items .active{margin-left:-0.5em;padding-left:0.5em;padding-right:0.5em;font-weight:bold}@media (max-width: 63.9375em){.nav__list .nav__items{position:relative;max-height:0;opacity:0%;overflow:hidden;z-index:10;-webkit-transition:0.3s ease-in-out;transition:0.3s ease-in-out;-webkit-transform:translate(0, 10%);-ms-transform:translate(0, 10%);transform:translate(0, 10%)}}@media (max-width: 63.9375em){.nav__list input:checked ~ .nav__items{-webkit-transition:0.5s ease-in-out;transition:0.5s ease-in-out;max-height:9999px;overflow:visible;opacity:1;margin-top:1em;-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)}}.nav__title{margin:0;padding:0.5rem 0.75rem;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em;font-weight:bold}.nav__sub-title{display:block;margin:0.5rem 0;padding:0.25rem 0;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;font-weight:bold;text-transform:uppercase;border-bottom:1px solid #f2f3f3}.toc{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;color:#7a8288;background-color:#fff;border:1px solid #f2f3f3;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.125);box-shadow:0 1px 1px rgba(0,0,0,0.125)}.toc .nav__title{color:#fff;font-size:.75em;background:#6f777d;border-top-left-radius:4px;border-top-right-radius:4px}.toc .active a{background-color:#e2e4e5;color:#3d4144}.toc__menu{margin:0;padding:0;width:100%;list-style:none;font-size:.75em}@media (min-width: 64em){.toc__menu{font-size:.6875em}}.toc__menu a{display:block;padding:0.25rem 0.75rem;color:#646769;font-weight:bold;line-height:1.5;border-bottom:1px solid #f2f3f3}.toc__menu a:hover{color:#3d4144}.toc__menu li ul>li a{padding-left:1.25rem;font-weight:normal}.toc__menu li ul li ul>li a{padding-left:1.75rem}.toc__menu li ul li ul li ul>li a{padding-left:2.25rem}.toc__menu li ul li ul li ul li ul>li a{padding-left:2.75rem}.toc__menu li ul li ul li ul li ul li ul>li a{padding-left:3.25rem}.page__footer{clear:both;float:left;margin-left:0;margin-right:0;width:100%;margin-top:3em;color:#646769;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.45s;animation-delay:0.45s;background-color:#f2f3f3}.page__footer::after{clear:both;content:"";display:table}.page__footer footer{clear:both;margin-left:auto;margin-right:auto;margin-top:2em;max-width:100%;padding:0 1em 2em}.page__footer footer::after{clear:both;content:"";display:table}@media (min-width: 80em){.page__footer footer{max-width:1280px}}.page__footer a{color:inherit;text-decoration:none}.page__footer a:hover{text-decoration:underline}.page__footer .fas,.page__footer .fab,.page__footer .far,.page__footer .fal{color:#646769}.page__footer-copyright{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.6875em}.page__footer-follow ul{margin:0;padding:0;list-style-type:none}.page__footer-follow li{display:inline-block;padding-top:5px;padding-bottom:5px;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;text-transform:uppercase}.page__footer-follow li+li:before{content:"";padding-right:5px}.page__footer-follow a{padding-right:10px;font-weight:bold}.page__footer-follow .social-icons a{white-space:nowrap}.layout--search .archive__item-teaser{margin-bottom:0.25em}.search__toggle{margin-left:1rem;margin-right:1rem;height:2rem;border:0;outline:none;color:#6f777d;background-color:transparent;cursor:pointer;-webkit-transition:0.2s;transition:0.2s}.search__toggle:hover{color:#53595e}.search-icon{width:100%;height:100%}.search-content{display:none;visibility:hidden;padding-top:1em;padding-bottom:1em}.search-content__inner-wrap{width:100%;margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.15s;animation-delay:0.15s}@media (min-width: 80em){.search-content__inner-wrap{max-width:1280px}}.search-content__form{background-color:transparent}.search-content .search-input{display:block;margin-bottom:0;padding:0;border:none;outline:none;box-shadow:none;background-color:transparent;font-size:1.563em}@media (min-width: 64em){.search-content .search-input{font-size:1.953em}}@media (min-width: 80em){.search-content .search-input{font-size:2.441em}}.search-content.is--visible{display:block;visibility:visible}.search-content.is--visible::after{content:"";display:block}.search-content .results__found{margin-top:0.5em;font-size:.75em}.search-content .archive__item{margin-bottom:2em}@media (min-width: 64em){.search-content .archive__item{width:75%}}@media (min-width: 80em){.search-content .archive__item{width:50%}}.search-content .archive__item-title{margin-top:0}.search-content .archive__item-excerpt{margin-bottom:0}.ais-search-box{max-width:100% !important;margin-bottom:2em}.archive__item-title .ais-Highlight{color:#6f777d;font-style:normal;text-decoration:underline}.archive__item-excerpt .ais-Highlight{color:#6f777d;font-style:normal;font-weight:bold}div.highlighter-rouge,figure.highlight{position:relative;margin-bottom:1em;background:#263238;color:#eff;font-family:Monaco,Consolas,"Lucida Console",monospace;font-size:.75em;line-height:1.8;border-radius:4px}div.highlighter-rouge>pre,div.highlighter-rouge pre.highlight,figure.highlight>pre,figure.highlight pre.highlight{margin:0;padding:1em}.highlight table{margin-bottom:0;font-size:1em;border:0}.highlight table td{padding:0;width:calc(100% - 1em);border:0}.highlight table td.gutter,.highlight table td.rouge-gutter{padding-right:1em;width:1em;color:#b2ccd6;border-right:1px solid #b2ccd6;text-align:right}.highlight table td.code,.highlight table td.rouge-code{padding-left:1em}.highlight table pre{margin:0}.highlight pre{width:100%}.highlight .hll{background-color:#eff}.highlight .c{color:#b2ccd6}.highlight .err{color:#f07178}.highlight .k{color:#c792ea}.highlight .l{color:#f78c6c}.highlight .n{color:#eff}.highlight .o{color:#89ddff}.highlight .p{color:#eff}.highlight .cm{color:#b2ccd6}.highlight .cp{color:#b2ccd6}.highlight .c1{color:#b2ccd6}.highlight .cs{color:#b2ccd6}.highlight .gd{color:#f07178}.highlight .ge{font-style:italic}.highlight .gh{color:#eff;font-weight:bold}.highlight .gi{color:#c3e88d}.highlight .gp{color:#b2ccd6;font-weight:bold}.highlight .gs{font-weight:bold}.highlight .gu{color:#89ddff;font-weight:bold}.highlight .kc{color:#c792ea}.highlight .kd{color:#c792ea}.highlight .kn{color:#89ddff}.highlight .kp{color:#c792ea}.highlight .kr{color:#c792ea}.highlight .kt{color:#ffcb6b}.highlight .ld{color:#c3e88d}.highlight .m{color:#f78c6c}.highlight .s{color:#c3e88d}.highlight .na{color:#82aaff}.highlight .nb{color:#eff}.highlight .nc{color:#ffcb6b}.highlight .no{color:#f07178}.highlight .nd{color:#89ddff}.highlight .ni{color:#eff}.highlight .ne{color:#f07178}.highlight .nf{color:#82aaff}.highlight .nl{color:#eff}.highlight .nn{color:#ffcb6b}.highlight .nx{color:#82aaff}.highlight .py{color:#eff}.highlight .nt{color:#89ddff}.highlight .nv{color:#f07178}.highlight .ow{color:#89ddff}.highlight .w{color:#eff}.highlight .mf{color:#f78c6c}.highlight .mh{color:#f78c6c}.highlight .mi{color:#f78c6c}.highlight .mo{color:#f78c6c}.highlight .sb{color:#c3e88d}.highlight .sc{color:#eff}.highlight .sd{color:#b2ccd6}.highlight .s2{color:#c3e88d}.highlight .se{color:#f78c6c}.highlight .sh{color:#c3e88d}.highlight .si{color:#f78c6c}.highlight .sx{color:#c3e88d}.highlight .sr{color:#c3e88d}.highlight .s1{color:#c3e88d}.highlight .ss{color:#c3e88d}.highlight .bp{color:#eff}.highlight .vc{color:#f07178}.highlight .vg{color:#f07178}.highlight .vi{color:#f07178}.highlight .il{color:#f78c6c}.gist th,.gist td{border-bottom:0}.hidden,.is--hidden{display:none;visibility:hidden}.load{display:none}.transparent{opacity:0}.visually-hidden,.screen-reader-text,.screen-reader-text span,.screen-reader-shortcut{position:absolute !important;clip:rect(1px, 1px, 1px, 1px);height:1px !important;width:1px !important;border:0 !important;overflow:hidden}body:hover .visually-hidden a,body:hover .visually-hidden input,body:hover .visually-hidden button{display:none !important}.screen-reader-text:focus,.screen-reader-shortcut:focus{clip:auto !important;height:auto !important;width:auto !important;display:block;font-size:1em;font-weight:bold;padding:15px 23px 14px;background:#fff;z-index:100000;text-decoration:none;box-shadow:0 0 2px 2px rgba(0,0,0,0.6)}.skip-link{position:fixed;z-index:20;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;white-space:nowrap}.skip-link li{height:0;width:0;list-style:none}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.task-list{padding:0}.task-list li{list-style-type:none}.task-list .task-list-item-checkbox{margin-right:0.5em;opacity:1}.task-list .task-list{margin-left:1em}.cf{clear:both}.wrapper{margin-left:auto;margin-right:auto;width:100%}.align-left{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-left{float:left;margin-right:1em}}.align-right{display:block;margin-left:auto;margin-right:auto}@media (min-width: 37.5em){.align-right{float:right;margin-left:1em}}.align-center{display:block;margin-left:auto;margin-right:auto}@media (min-width: 64em){.full{margin-right:-20.3389830508% !important}}.icon{display:inline-block;fill:currentColor;width:1em;height:1.1em;line-height:1;position:relative;top:-0.1em;vertical-align:middle}.social-icons .fas,.social-icons .fab,.social-icons .far,.social-icons .fal{color:#3d4144}.social-icons .fa-behance,.social-icons .fa-behance-square{color:#1769ff}.social-icons .fa-bitbucket{color:#205081}.social-icons .fa-dribbble,.social-icons .fa-dribble-square{color:#ea4c89}.social-icons .fa-facebook,.social-icons .fa-facebook-square,.social-icons .fa-facebook-f{color:#3b5998}.social-icons .fa-flickr{color:#ff0084}.social-icons .fa-foursquare{color:#0072b1}.social-icons .fa-github,.social-icons .fa-github-alt,.social-icons .fa-github-square{color:#171516}.social-icons .fa-gitlab{color:#e24329}.social-icons .fa-instagram{color:#517fa4}.social-icons .fa-keybase{color:#ef7639}.social-icons .fa-lastfm,.social-icons .fa-lastfm-square{color:#d51007}.social-icons .fa-linkedin,.social-icons .fa-linkedin-in{color:#007bb6}.social-icons .fa-mastodon,.social-icons .fa-mastodon-square{color:#2b90d9}.social-icons .fa-pinterest,.social-icons .fa-pinterest-p,.social-icons .fa-pinterest-square{color:#cb2027}.social-icons .fa-reddit{color:#ff4500}.social-icons .fa-rss,.social-icons .fa-rss-square{color:#fa9b39}.social-icons .fa-soundcloud{color:#f30}.social-icons .fa-stack-exchange,.social-icons .fa-stack-overflow{color:#fe7a15}.social-icons .fa-tumblr,.social-icons .fa-tumblr-square{color:#32506d}.social-icons .fa-twitter,.social-icons .fa-twitter-square{color:#55acee}.social-icons .fa-vimeo,.social-icons .fa-vimeo-square,.social-icons .fa-vimeo-v{color:#1ab7ea}.social-icons .fa-vine{color:#00bf8f}.social-icons .fa-youtube{color:#b00}.social-icons .fa-xing,.social-icons .fa-xing-square{color:#006567}.social-icons .fa-researchgate{color:#00cc99}.social-icons .fa-google{color:#6699ff}.social-icons .fa-university{color:#3366cc}.social-icons .fa-battle-net{color:#990000}.navicon{position:relative;width:1.5rem;height:.25rem;background:#6f777d;margin:auto;-webkit-transition:0.3s;transition:0.3s}.navicon:before,.navicon:after{content:"";position:absolute;left:0;width:1.5rem;height:.25rem;background:#6f777d;-webkit-transition:0.3s;transition:0.3s}.navicon:before{top:-.5rem}.navicon:after{bottom:-.5rem}.close .navicon{background:transparent}.close .navicon:before,.close .navicon:after{-webkit-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%;top:0;width:1.5rem}.close .navicon:before{-webkit-transform:rotate3d(0, 0, 1, 45deg);transform:rotate3d(0, 0, 1, 45deg)}.close .navicon:after{-webkit-transform:rotate3d(0, 0, 1, -45deg);transform:rotate3d(0, 0, 1, -45deg)}@supports (pointer-events: none){.greedy-nav__toggle:before{content:'';position:fixed;top:0;left:0;width:100%;height:100%;opacity:0;background-color:#fff;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;pointer-events:none}}.greedy-nav__toggle.close:before{opacity:0.9;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;pointer-events:auto}.greedy-nav__toggle:hover .navicon,.greedy-nav__toggle:hover .navicon:before,.greedy-nav__toggle:hover .navicon:after{background:#53595e}.greedy-nav__toggle:hover.close .navicon{background:transparent}@media (min-width: 64em){.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em}.sticky::after{clear:both;content:"";display:table}.sticky>*{display:block}}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.show-modal{overflow:hidden;position:relative}.show-modal:before{position:absolute;content:"";top:0;left:0;width:100%;height:100%;z-index:999;background-color:rgba(255,255,255,0.85)}.show-modal .modal{display:block}.modal{display:none;position:fixed;width:300px;top:50%;left:50%;margin-left:-150px;margin-top:-150px;min-height:0;z-index:9999;background:#fff;border:1px solid #f2f3f3;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,0.125)}.modal__title{margin:0;padding:0.5em 1em}.modal__supporting-text{padding:0 1em 0.5em 1em}.modal__actions{padding:0.5em 1em;border-top:1px solid #f2f3f3}.footnote{color:#9ba1a6;text-decoration:none}.footnotes{color:#9ba1a6}.footnotes ol,.footnotes li,.footnotes p{margin-bottom:0;font-size:.75em}a.reversefootnote{color:#7a8288;text-decoration:none}a.reversefootnote:hover{text-decoration:underline}.required{color:#ee5f5b;font-weight:bold}.gsc-control-cse table,.gsc-control-cse tr,.gsc-control-cse td{border:0}.responsive-video-container{position:relative;margin-bottom:1em;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%}.responsive-video-container iframe,.responsive-video-container object,.responsive-video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}:-webkit-full-screen-ancestor .masthead,:-webkit-full-screen-ancestor .page__footer{position:static}#main{clear:both;margin-left:auto;margin-right:auto;padding-left:1em;padding-right:1em;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;max-width:100%;-webkit-animation-delay:0.15s;animation-delay:0.15s}#main::after{clear:both;content:"";display:table}@media (min-width: 80em){#main{max-width:1280px}}body{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:100vh;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.initial-content,.search-content{flex:1 0 auto}@media (min-width: 64em){.page{float:right;width:calc(100% - 200px);padding-right:200px}}@media (min-width: 80em){.page{width:calc(100% - 300px);padding-right:300px}}.page .page__inner-wrap{float:left;margin-top:1em;margin-left:0;margin-right:0;width:100%;clear:both}.page .page__inner-wrap .page__content,.page .page__inner-wrap .page__meta,.page .page__inner-wrap .comment__date,.page .page__inner-wrap .page__share{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page__title{margin-top:0;line-height:1}.page__title a{color:#3d4144;text-decoration:none}.page__title+.page__meta,.page__title+.comment__date{margin-top:-0.5em}.page__lead{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1.25em}.page__content h2{padding-bottom:0.5em;border-bottom:1px solid #f2f3f3}.page__content h1 .header-link,.page__content h2 .header-link,.page__content h3 .header-link,.page__content h4 .header-link,.page__content h5 .header-link,.page__content h6 .header-link{position:relative;left:0.5em;opacity:0;font-size:0.8em;-webkit-transition:opacity 0.2s ease-in-out 0.1s;-moz-transition:opacity 0.2s ease-in-out 0.1s;-o-transition:opacity 0.2s ease-in-out 0.1s;transition:opacity 0.2s ease-in-out 0.1s}.page__content h1:hover .header-link,.page__content h2:hover .header-link,.page__content h3:hover .header-link,.page__content h4:hover .header-link,.page__content h5:hover .header-link,.page__content h6:hover .header-link{opacity:1}.page__content p,.page__content li,.page__content dl{font-size:1em}.page__content p{margin:0 0 1.3em}.page__content a:not(.btn):hover{text-decoration:underline}.page__content a:not(.btn):hover img{box-shadow:0 0 10px rgba(0,0,0,0.25)}.page__content :not(pre)>code{padding-top:0.1rem;padding-bottom:0.1rem;font-size:0.8em;background:#fafafa;border-radius:4px}.page__content :not(pre)>code::before,.page__content :not(pre)>code::after{letter-spacing:-0.2em;content:"\00a0"}.page__content dt{margin-top:1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-weight:bold}.page__content dd{margin-left:1em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__content .small{font-size:.75em}.page__content blockquote+.small{margin-top:-1.5em;padding-left:1.25rem}.page__hero{position:relative;margin-bottom:2em;clear:both;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.25s;animation-delay:0.25s}.page__hero::after{clear:both;content:"";display:table}.page__hero--overlay{position:relative;margin-bottom:2em;padding:3em 0;clear:both;background-size:cover;background-repeat:no-repeat;background-position:center;-webkit-animation:intro 0.3s both;animation:intro 0.3s both;-webkit-animation-delay:0.25s;animation-delay:0.25s}.page__hero--overlay::after{clear:both;content:"";display:table}.page__hero--overlay a{color:#fff}.page__hero--overlay .wrapper{padding-left:1em;padding-right:1em}@media (min-width: 80em){.page__hero--overlay .wrapper{max-width:1280px}}.page__hero--overlay .page__title,.page__hero--overlay .page__meta,.page__hero--overlay .comment__date,.page__hero--overlay .page__lead,.page__hero--overlay .btn{color:#fff;text-shadow:1px 1px 4px rgba(0,0,0,0.5)}.page__hero--overlay .page__lead{max-width:768px}.page__hero--overlay .page__title{font-size:1.953em}@media (min-width: 37.5em){.page__hero--overlay .page__title{font-size:2.441em}}.page__hero-image{width:100%;height:auto;-ms-interpolation-mode:bicubic}.page__hero-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.6875em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 0 0}@media (min-width: 64em){.page__hero-caption{padding:5px 10px}}.page__hero-caption a{color:#fff;text-decoration:none}.page__share{margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3}@media (max-width: 37.5em){.page__share .btn span{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}}.page__share-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta,.comment__date{margin-top:2em;color:#646769;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em}.page__meta p,.comment__date p{margin:0}.page__meta a,.comment__date a{color:inherit}.page__meta-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}.page__meta-sep::before{content:"\2022";padding-left:0.5em;padding-right:0.5em}.page__taxonomy .sep{display:none}.page__taxonomy strong{margin-right:10px}.page__taxonomy-item{display:inline-block;margin-right:5px;margin-bottom:8px;padding:5px 10px;text-decoration:none;border:1px solid #b6b6b6;border-radius:4px}.page__taxonomy-item:hover{text-decoration:none;color:#235e70}.taxonomy__section{margin-bottom:2em;padding-bottom:1em}.taxonomy__section:not(:last-child){border-bottom:solid 1px #f2f3f3}.taxonomy__section .archive__item-title{margin-top:0}.taxonomy__section .archive__subtitle{clear:both;border:0}.taxonomy__section+.taxonomy__section{margin-top:2em}.taxonomy__title{margin-bottom:0.5em;color:#646769}.taxonomy__count{color:#646769}.taxonomy__index{display:grid;grid-column-gap:2em;grid-template-columns:repeat(2, 1fr);margin:1.414em 0;padding:0;font-size:0.75em;list-style:none}@media (min-width: 64em){.taxonomy__index{grid-template-columns:repeat(3, 1fr)}}.taxonomy__index a{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0.25em 0;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:inherit;text-decoration:none;border-bottom:1px solid #f2f3f3}.back-to-top{display:block;clear:both;color:#646769;font-size:0.6em;text-transform:uppercase;text-align:right;text-decoration:none}.page__comments{float:left;margin-left:0;margin-right:0;width:100%;clear:both}.page__comments-title{margin-top:2rem;margin-bottom:10px;padding-top:2rem;font-size:.75em;border-top:1px solid #f2f3f3;text-transform:uppercase}.page__comments-form{-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.page__comments-form.disabled input,.page__comments-form.disabled button,.page__comments-form.disabled textarea,.page__comments-form.disabled label{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);box-shadow:none;opacity:0.65}.comment{clear:both;margin:1em 0}.comment::after{clear:both;content:"";display:table}.comment:not(:last-child){border-bottom:1px solid #f2f3f3}.comment__avatar-wrapper{float:left;width:60px;height:60px}@media (min-width: 64em){.comment__avatar-wrapper{width:100px;height:100px}}.comment__avatar{width:40px;height:40px;border-radius:50%}@media (min-width: 64em){.comment__avatar{width:80px;height:80px;padding:5px;border:1px solid #f2f3f3}}.comment__content-wrapper{float:right;width:calc(100% - 60px)}@media (min-width: 64em){.comment__content-wrapper{width:calc(100% - 100px)}}.comment__author{margin:0}.comment__author a{text-decoration:none}.comment__date{margin:0}.comment__date a{text-decoration:none}.page__related{clear:both;float:left;margin-top:2em;padding-top:1em;border-top:1px solid #f2f3f3}.page__related::after{clear:both;content:"";display:table}@media (min-width: 64em){.page__related{float:right;width:calc(100% - 200px)}}@media (min-width: 80em){.page__related{width:calc(100% - 300px)}}.page__related a{color:inherit;text-decoration:none}.page__related-title{margin-bottom:10px;font-size:.75em;text-transform:uppercase}@media (min-width: 64em){.wide .page{padding-right:0}}@media (min-width: 80em){.wide .page{padding-right:0}}@media (min-width: 64em){.wide .page__related{padding-right:0}}@media (min-width: 80em){.wide .page__related{padding-right:0}}.archive{margin-top:1em;margin-bottom:2em}@media (min-width: 64em){.archive{float:right;width:calc(100% - 200px);padding-right:200px}}@media (min-width: 80em){.archive{width:calc(100% - 300px);padding-right:300px}}.archive__item{position:relative}.archive__item a{position:relative;z-index:10}.archive__item a[rel="permalink"]{position:static}.archive__subtitle{margin:1.414em 0 0.5em;padding-bottom:0.5em;font-size:1em;color:#646769;border-bottom:1px solid #f2f3f3}.archive__subtitle+.list__item .archive__item-title{margin-top:0.5em}.archive__item-title{margin-bottom:0.25em;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;line-height:initial;overflow:hidden;text-overflow:ellipsis}.archive__item-title a[rel="permalink"]::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0}.archive__item-title a+a{opacity:0.5}.page__content .archive__item-title{margin-top:1em;border-bottom:none}.archive__item-excerpt{margin-top:0;font-size:.75em}.archive__item-excerpt+p{text-indent:0}.archive__item-excerpt a{position:relative}.archive__item-teaser{position:relative;border-radius:4px;overflow:hidden}.archive__item-teaser img{width:100%}.archive__item-caption{position:absolute;bottom:0;right:0;margin:0 auto;padding:2px 5px;color:#fff;font-family:Georgia,Times,serif;font-size:.625em;background:#000;text-align:right;z-index:5;opacity:0.5;border-radius:4px 0 0 0}@media (min-width: 64em){.archive__item-caption{padding:5px 10px}}.archive__item-caption a{color:#fff;text-decoration:none}.list__item .page__meta,.list__item .comment__date{margin:0 0 4px;font-size:0.6em}@media (min-width: 64em){.archive .grid__wrapper{margin-right:-200px}}@media (min-width: 80em){.archive .grid__wrapper{margin-right:-300px}}.grid__item{margin-bottom:2em}@media (min-width: 37.5em){.grid__item{float:left;width:48.9795918367%}.grid__item:nth-child(2n+1){clear:both;margin-left:0}.grid__item:nth-child(2n+2){clear:none;margin-left:2.0408163265%}}@media (min-width: 48em){.grid__item{margin-left:0;margin-right:0;width:23.7288135593%}.grid__item:nth-child(2n+1){clear:none}.grid__item:nth-child(4n+1){clear:both}.grid__item:nth-child(4n+2){clear:none;margin-left:1.6949152542%}.grid__item:nth-child(4n+3){clear:none;margin-left:1.6949152542%}.grid__item:nth-child(4n+4){clear:none;margin-left:1.6949152542%}}.grid__item .page__meta,.grid__item .comment__date{margin:0 0 4px;font-size:0.6em}.grid__item .page__meta-sep{display:block}.grid__item .page__meta-sep::before{display:none}.grid__item .archive__item-title{margin-top:0.5em;font-size:1em}.grid__item .archive__item-excerpt{display:none}@media (min-width: 48em){.grid__item .archive__item-excerpt{display:block;font-size:.75em}}@media (min-width: 37.5em){.grid__item .archive__item-teaser{max-height:200px}}@media (min-width: 48em){.grid__item .archive__item-teaser{max-height:120px}}.feature__wrapper{clear:both;margin-bottom:2em;border-bottom:1px solid #f2f3f3}.feature__wrapper::after{clear:both;content:"";display:table}.feature__wrapper .archive__item-title{margin-bottom:0}.feature__item{position:relative;margin-bottom:2em;font-size:1.125em}@media (min-width: 37.5em){.feature__item{float:left;margin-bottom:0;width:32.2033898305%}.feature__item:nth-child(3n+1){clear:both;margin-left:0}.feature__item:nth-child(3n+2){clear:none;margin-left:1.6949152542%}.feature__item:nth-child(3n+3){clear:none;margin-left:1.6949152542%}.feature__item .feature__item-teaser{max-height:200px;overflow:hidden}}.feature__item .archive__item-body{padding-left:1.6949152542%;padding-right:1.6949152542%}.feature__item a.btn::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0}.feature__item--left{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.125em}.feature__item--left .archive__item{float:left}.feature__item--left .archive__item-teaser{margin-bottom:2em}.feature__item--left a.btn::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0}@media (min-width: 37.5em){.feature__item--left .archive__item-teaser{float:left;width:40.6779661017%}.feature__item--left .archive__item-body{float:right;padding-left:1.6949152542%;padding-right:1.6949152542%;width:57.6271186441%}}.feature__item--right{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.125em}.feature__item--right .archive__item{float:left}.feature__item--right .archive__item-teaser{margin-bottom:2em}.feature__item--right a.btn::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0}@media (min-width: 37.5em){.feature__item--right{text-align:right}.feature__item--right .archive__item-teaser{float:right;width:40.6779661017%}.feature__item--right .archive__item-body{float:left;width:57.6271186441%;padding-left:1.6949152542%;padding-right:1.6949152542%}}.feature__item--center{position:relative;float:left;margin-left:0;margin-right:0;width:100%;clear:both;font-size:1.125em}.feature__item--center .archive__item{float:left;width:100%}.feature__item--center .archive__item-teaser{margin-bottom:2em}.feature__item--center a.btn::before{content:'';position:absolute;left:0;top:0;right:0;bottom:0}@media (min-width: 37.5em){.feature__item--center{text-align:center}.feature__item--center .archive__item-teaser{margin:0 auto;width:40.6779661017%}.feature__item--center .archive__item-body{margin:0 auto;width:57.6271186441%}}.archive .feature__wrapper .archive__item-title{margin-top:0.25em;font-size:1em}.archive .feature__item,.archive .feature__item--left,.archive .feature__item--center,.archive .feature__item--right{font-size:1em}@media (min-width: 64em){.wide .archive{padding-right:0}}@media (min-width: 80em){.wide .archive{padding-right:0}}.layout--single .feature__wrapper{display:inline-block}.sidebar{clear:both}.sidebar::after{clear:both;content:"";display:table}@media (min-width: 64em){.sidebar{float:left;width:calc(200px - 1em);opacity:0.75;-webkit-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out}.sidebar:hover{opacity:1}.sidebar.sticky{overflow-y:auto;max-height:calc(100vh - 2em - 2em)}}@media (min-width: 80em){.sidebar{width:calc(300px - 1em)}}.sidebar>*{margin-top:1em;margin-bottom:1em}.sidebar h2,.sidebar h3,.sidebar h4,.sidebar h5,.sidebar h6{margin-bottom:0;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif}.sidebar p,.sidebar li{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:.75em;line-height:1.5}.sidebar img{width:100%}.sidebar img.emoji{width:20px;height:20px}.sidebar__right{margin-bottom:1em}@media (min-width: 64em){.sidebar__right{position:absolute;top:0;right:0;width:200px;margin-right:-200px;padding-left:1em;z-index:10}.sidebar__right.sticky{clear:both;position:-webkit-sticky;position:sticky;top:2em;float:right}.sidebar__right.sticky::after{clear:both;content:"";display:table}.sidebar__right.sticky .toc .toc__menu{overflow-y:auto;max-height:calc(100vh - 7em)}}@media (min-width: 80em){.sidebar__right{width:300px;margin-right:-300px}}@media (min-width: 64em){.splash .sidebar__right{position:relative;float:right;margin-right:0}}@media (min-width: 80em){.splash .sidebar__right{margin-right:0}}.author__avatar{display:table-cell;vertical-align:top;width:36px;height:36px}@media (min-width: 64em){.author__avatar{display:block;width:auto;height:auto}}.author__avatar img{max-width:110px;border-radius:50%}@media (min-width: 64em){.author__avatar img{padding:5px;border:1px solid #f2f3f3}}.author__content{display:table-cell;vertical-align:top;padding-left:15px;padding-right:25px;line-height:1}@media (min-width: 64em){.author__content{display:block;width:100%;padding-left:0;padding-right:0}}.author__content a{color:inherit;text-decoration:none}.author__name{margin:0}@media (min-width: 64em){.author__name{margin-top:10px;margin-bottom:10px}}.sidebar .author__name{font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;font-size:1em}.author__bio{margin:0}@media (min-width: 64em){.author__bio{margin-top:10px;margin-bottom:20px}}.author__urls-wrapper{position:relative;display:table-cell;vertical-align:middle;font-family:-apple-system,BlinkMacSystemFont,"Roboto","Segoe UI","Helvetica Neue","Lucida Grande",Arial,sans-serif;z-index:20;cursor:pointer}.author__urls-wrapper li:last-child a{margin-bottom:0}.author__urls-wrapper .author__urls span.label{padding-left:5px}@media (min-width: 64em){.author__urls-wrapper{display:block}}.author__urls-wrapper button{position:relative;margin-bottom:0}@supports (pointer-events: none){.author__urls-wrapper button:before{content:'';position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none}}.author__urls-wrapper button.open:before{pointer-events:auto}@media (min-width: 64em){.author__urls-wrapper button{display:none}}.author__urls{display:none;position:absolute;right:0;margin-top:15px;padding:10px;list-style-type:none;border:1px solid #f2f3f3;border-radius:4px;background:#fff;box-shadow:0 2px 4px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);cursor:default}.author__urls.is--visible{display:block}@media (min-width: 64em){.author__urls{display:block;position:relative;margin:0;padding:0;border:0;background:transparent;box-shadow:none}}.author__urls:before{display:block;content:"";position:absolute;top:-11px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#f2f3f3 transparent;z-index:0}@media (min-width: 64em){.author__urls:before{display:none}}.author__urls:after{display:block;content:"";position:absolute;top:-10px;left:calc(50% - 10px);width:0;border-style:solid;border-width:0 10px 10px;border-color:#fff transparent;z-index:1}@media (min-width: 64em){.author__urls:after{display:none}}.author__urls ul{padding:10px;list-style-type:none}.author__urls li{white-space:nowrap}.author__urls a{display:block;margin-bottom:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;color:inherit;font-size:1em;text-decoration:none}.author__urls a:hover{text-decoration:underline}.wide .sidebar__right{margin-bottom:1em}@media (min-width: 64em){.wide .sidebar__right{position:initial;top:initial;right:initial;width:initial;margin-right:initial;padding-left:initial;z-index:initial}.wide .sidebar__right.sticky{float:none}}@media (min-width: 80em){.wide .sidebar__right{width:initial;margin-right:initial}}@media print{[hidden]{display:none}*{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}html{margin:0;padding:0;min-height:auto !important;font-size:16px}body{margin:0 auto;background:#fff !important;color:#000 !important;font-size:1rem;line-height:1.5;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{color:#000;line-height:1.2;margin-bottom:0.75rem;margin-top:0}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.75rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1rem}a,a:visited{color:#000;text-decoration:underline;word-wrap:break-word}table{border-collapse:collapse}thead{display:table-header-group}table,th,td{border-bottom:1px solid #000}td,th{padding:8px 16px}img{border:0;display:block;max-width:100% !important;vertical-align:middle}hr{border:0;border-bottom:2px solid #bbb;height:0;margin:2.25rem 0;padding:0}dt{font-weight:bold}dd{margin:0;margin-bottom:0.75rem}abbr[title],acronym[title]{border:0;text-decoration:none}table,blockquote,pre,code,figure,li,hr,ul,ol,a,tr{page-break-inside:avoid}h2,h3,h4,p,a{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid;page-break-inside:avoid}h1+p,h2+p,h3+p{page-break-before:avoid}img{page-break-after:auto;page-break-before:auto;page-break-inside:avoid}pre{white-space:pre-wrap !important;word-wrap:break-word}a[href^='http://']:after,a[href^='https://']:after,a[href^='ftp://']:after{content:" (" attr(href) ")";font-size:80%}abbr[title]:after,acronym[title]:after{content:" (" attr(title) ")"}#main{max-width:100%}.page{margin:0;padding:0;width:100%}.page-break,.page-break-before{page-break-before:always}.page-break-after{page-break-after:always}.no-print{display:none}a.no-reformat:after{content:''}abbr[title].no-reformat:after,acronym[title].no-reformat:after{content:''}.page__hero-caption{color:#000 !important;background:#fff !important;opacity:1}.page__hero-caption a{color:#000 !important}.masthead,.toc,.page__share,.page__related,.pagination,.ads,.page__footer,.page__comments-form,.author__avatar,.author__content,.author__urls-wrapper,.nav__list,.sidebar,.adsbygoogle{display:none !important;height:1px !important}} diff --git a/docs/assets/images/favicon.ico b/docs/assets/images/favicon.ico new file mode 100755 index 0000000000..d7ca24b39a Binary files /dev/null and b/docs/assets/images/favicon.ico differ diff --git a/docs/assets/images/favicon_io/android-chrome-192x192.png b/docs/assets/images/favicon_io/android-chrome-192x192.png new file mode 100755 index 0000000000..34dcc965ec Binary files /dev/null and b/docs/assets/images/favicon_io/android-chrome-192x192.png differ diff --git a/docs/assets/images/favicon_io/android-chrome-512x512.png b/docs/assets/images/favicon_io/android-chrome-512x512.png new file mode 100755 index 0000000000..437f21a617 Binary files /dev/null and b/docs/assets/images/favicon_io/android-chrome-512x512.png differ diff --git a/docs/assets/images/favicon_io/apple-touch-icon.png b/docs/assets/images/favicon_io/apple-touch-icon.png new file mode 100755 index 0000000000..6526ea995d Binary files /dev/null and b/docs/assets/images/favicon_io/apple-touch-icon.png differ diff --git a/docs/assets/images/favicon_io/favicon-16x16.png b/docs/assets/images/favicon_io/favicon-16x16.png new file mode 100755 index 0000000000..faa81f37be Binary files /dev/null and b/docs/assets/images/favicon_io/favicon-16x16.png differ diff --git a/docs/assets/images/favicon_io/favicon-32x32.png b/docs/assets/images/favicon_io/favicon-32x32.png new file mode 100755 index 0000000000..247369f218 Binary files /dev/null and b/docs/assets/images/favicon_io/favicon-32x32.png differ diff --git a/docs/assets/images/favicon_io/favicon.ico b/docs/assets/images/favicon_io/favicon.ico new file mode 100755 index 0000000000..d7ca24b39a Binary files /dev/null and b/docs/assets/images/favicon_io/favicon.ico differ diff --git a/docs/assets/images/favicon_io/site.webmanifest b/docs/assets/images/favicon_io/site.webmanifest new file mode 100755 index 0000000000..45dc8a2065 --- /dev/null +++ b/docs/assets/images/favicon_io/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/docs/assets/images/me.jpg b/docs/assets/images/me.jpg new file mode 100644 index 0000000000..399b0213bf Binary files /dev/null and b/docs/assets/images/me.jpg differ diff --git a/docs/assets/images/me2.jpg b/docs/assets/images/me2.jpg new file mode 100644 index 0000000000..55692be449 Binary files /dev/null and b/docs/assets/images/me2.jpg differ diff --git a/docs/assets/images/me3.jpg b/docs/assets/images/me3.jpg new file mode 100644 index 0000000000..3fc01d5ee0 Binary files /dev/null and b/docs/assets/images/me3.jpg differ diff --git a/docs/assets/images/posts/2016-10-09-computer-networks.png b/docs/assets/images/posts/2016-10-09-computer-networks.png new file mode 100644 index 0000000000..535ee76780 Binary files /dev/null and b/docs/assets/images/posts/2016-10-09-computer-networks.png differ diff --git a/docs/assets/images/posts/2016-12-12-hntd-01.jpeg b/docs/assets/images/posts/2016-12-12-hntd-01.jpeg new file mode 100644 index 0000000000..02fc9c011f Binary files /dev/null and b/docs/assets/images/posts/2016-12-12-hntd-01.jpeg differ diff --git a/docs/assets/images/posts/2017-02-01-fiap-corporate.png b/docs/assets/images/posts/2017-02-01-fiap-corporate.png new file mode 100644 index 0000000000..9412a1c6ca Binary files /dev/null and b/docs/assets/images/posts/2017-02-01-fiap-corporate.png differ diff --git a/docs/assets/images/posts/2017-02-06-hntd-02.jpeg b/docs/assets/images/posts/2017-02-06-hntd-02.jpeg new file mode 100644 index 0000000000..279e1cf5c3 Binary files /dev/null and b/docs/assets/images/posts/2017-02-06-hntd-02.jpeg differ diff --git a/docs/assets/images/posts/2017-03-01-puc.jpeg b/docs/assets/images/posts/2017-03-01-puc.jpeg new file mode 100644 index 0000000000..fb89ce2298 Binary files /dev/null and b/docs/assets/images/posts/2017-03-01-puc.jpeg differ diff --git a/docs/assets/images/posts/2017-03-17-apicon/01.png b/docs/assets/images/posts/2017-03-17-apicon/01.png new file mode 100644 index 0000000000..48c069e500 Binary files /dev/null and b/docs/assets/images/posts/2017-03-17-apicon/01.png differ diff --git a/docs/assets/images/posts/2017-03-17-apicon/02.jpeg b/docs/assets/images/posts/2017-03-17-apicon/02.jpeg new file mode 100644 index 0000000000..63676aaccb Binary files /dev/null and b/docs/assets/images/posts/2017-03-17-apicon/02.jpeg differ diff --git a/docs/assets/images/posts/2017-03-17-apicon/03.JPG b/docs/assets/images/posts/2017-03-17-apicon/03.JPG new file mode 100644 index 0000000000..2d78490b5f Binary files /dev/null and b/docs/assets/images/posts/2017-03-17-apicon/03.JPG differ diff --git a/docs/assets/images/posts/2017-03-17-apicon/04.JPG b/docs/assets/images/posts/2017-03-17-apicon/04.JPG new file mode 100644 index 0000000000..a84196dbc8 Binary files /dev/null and b/docs/assets/images/posts/2017-03-17-apicon/04.JPG differ diff --git a/docs/assets/images/posts/2017-03-18-hntd-03.jpeg b/docs/assets/images/posts/2017-03-18-hntd-03.jpeg new file mode 100644 index 0000000000..6bc1b9075e Binary files /dev/null and b/docs/assets/images/posts/2017-03-18-hntd-03.jpeg differ diff --git a/docs/assets/images/posts/2017-03-27-hntd-04.jpeg b/docs/assets/images/posts/2017-03-27-hntd-04.jpeg new file mode 100644 index 0000000000..5b50619485 Binary files /dev/null and b/docs/assets/images/posts/2017-03-27-hntd-04.jpeg differ diff --git a/docs/assets/images/posts/2017-05-29-hntd-05.jpeg b/docs/assets/images/posts/2017-05-29-hntd-05.jpeg new file mode 100644 index 0000000000..90bb02f5c1 Binary files /dev/null and b/docs/assets/images/posts/2017-05-29-hntd-05.jpeg differ diff --git a/docs/assets/images/posts/2017-08-21-hntd-07.jpeg b/docs/assets/images/posts/2017-08-21-hntd-07.jpeg new file mode 100644 index 0000000000..7845110706 Binary files /dev/null and b/docs/assets/images/posts/2017-08-21-hntd-07.jpeg differ diff --git a/docs/assets/images/posts/2017-08-26-hntd-08.jpeg b/docs/assets/images/posts/2017-08-26-hntd-08.jpeg new file mode 100644 index 0000000000..f666e23c0a Binary files /dev/null and b/docs/assets/images/posts/2017-08-26-hntd-08.jpeg differ diff --git a/docs/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg b/docs/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg new file mode 100644 index 0000000000..93ffc4b69c Binary files /dev/null and b/docs/assets/images/posts/2017-09-26-saint-gobain-ultrachallenge.jpeg differ diff --git a/docs/assets/images/posts/2017-10-17-hntd-09/01.jpeg b/docs/assets/images/posts/2017-10-17-hntd-09/01.jpeg new file mode 100644 index 0000000000..2fae7a9c0c Binary files /dev/null and b/docs/assets/images/posts/2017-10-17-hntd-09/01.jpeg differ diff --git a/docs/assets/images/posts/2017-10-17-hntd-09/02.JPG b/docs/assets/images/posts/2017-10-17-hntd-09/02.JPG new file mode 100644 index 0000000000..6df5ad0215 Binary files /dev/null and b/docs/assets/images/posts/2017-10-17-hntd-09/02.JPG differ diff --git a/docs/assets/images/posts/2017-10-28-futurecom2017/00.jpeg b/docs/assets/images/posts/2017-10-28-futurecom2017/00.jpeg new file mode 100644 index 0000000000..0d10d402db Binary files /dev/null and b/docs/assets/images/posts/2017-10-28-futurecom2017/00.jpeg differ diff --git a/docs/assets/images/posts/2017-10-28-futurecom2017/01.jpg b/docs/assets/images/posts/2017-10-28-futurecom2017/01.jpg new file mode 100644 index 0000000000..5209a8f18a Binary files /dev/null and b/docs/assets/images/posts/2017-10-28-futurecom2017/01.jpg differ diff --git a/docs/assets/images/posts/2017-10-28-futurecom2017/02.jpg b/docs/assets/images/posts/2017-10-28-futurecom2017/02.jpg new file mode 100644 index 0000000000..eb6885c7dc Binary files /dev/null and b/docs/assets/images/posts/2017-10-28-futurecom2017/02.jpg differ diff --git a/docs/assets/images/posts/2017-10-28-hntd-10.png b/docs/assets/images/posts/2017-10-28-hntd-10.png new file mode 100644 index 0000000000..3c0b18287f Binary files /dev/null and b/docs/assets/images/posts/2017-10-28-hntd-10.png differ diff --git a/docs/assets/images/posts/2017-11-26-terraformando-openstack/01.png b/docs/assets/images/posts/2017-11-26-terraformando-openstack/01.png new file mode 100644 index 0000000000..e0f5a09f45 Binary files /dev/null and b/docs/assets/images/posts/2017-11-26-terraformando-openstack/01.png differ diff --git a/docs/assets/images/posts/2017-11-26-terraformando-openstack/02.png b/docs/assets/images/posts/2017-11-26-terraformando-openstack/02.png new file mode 100644 index 0000000000..372cf32e98 Binary files /dev/null and b/docs/assets/images/posts/2017-11-26-terraformando-openstack/02.png differ diff --git a/docs/assets/images/posts/2017-11-26-terraformando-openstack/03.png b/docs/assets/images/posts/2017-11-26-terraformando-openstack/03.png new file mode 100644 index 0000000000..45deb9ca93 Binary files /dev/null and b/docs/assets/images/posts/2017-11-26-terraformando-openstack/03.png differ diff --git a/docs/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg b/docs/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg new file mode 100644 index 0000000000..287a8a1c17 Binary files /dev/null and b/docs/assets/images/posts/2017-11-26-terraformando-openstack/04.jpeg differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/01.png b/docs/assets/images/posts/2017-12-20-heat-introducao/01.png new file mode 100644 index 0000000000..5c76e3ea81 Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/01.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/02.png b/docs/assets/images/posts/2017-12-20-heat-introducao/02.png new file mode 100644 index 0000000000..41591d764e Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/02.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/03.png b/docs/assets/images/posts/2017-12-20-heat-introducao/03.png new file mode 100644 index 0000000000..b6880fa5cc Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/03.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/04.png b/docs/assets/images/posts/2017-12-20-heat-introducao/04.png new file mode 100644 index 0000000000..ee347b71d6 Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/04.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/05.png b/docs/assets/images/posts/2017-12-20-heat-introducao/05.png new file mode 100644 index 0000000000..59b43f6c4f Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/05.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/06.png b/docs/assets/images/posts/2017-12-20-heat-introducao/06.png new file mode 100644 index 0000000000..8ac3ec2a1a Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/06.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/07.png b/docs/assets/images/posts/2017-12-20-heat-introducao/07.png new file mode 100644 index 0000000000..b929dc8691 Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/07.png differ diff --git a/docs/assets/images/posts/2017-12-20-heat-introducao/08.png b/docs/assets/images/posts/2017-12-20-heat-introducao/08.png new file mode 100644 index 0000000000..02e9bb4048 Binary files /dev/null and b/docs/assets/images/posts/2017-12-20-heat-introducao/08.png differ diff --git a/docs/assets/images/posts/2018-02-17-hntd-11.jpeg b/docs/assets/images/posts/2018-02-17-hntd-11.jpeg new file mode 100644 index 0000000000..1e64a57008 Binary files /dev/null and b/docs/assets/images/posts/2018-02-17-hntd-11.jpeg differ diff --git a/docs/assets/images/posts/2018-03-14-hntd-12.jpeg b/docs/assets/images/posts/2018-03-14-hntd-12.jpeg new file mode 100644 index 0000000000..0859daa993 Binary files /dev/null and b/docs/assets/images/posts/2018-03-14-hntd-12.jpeg differ diff --git a/docs/assets/images/posts/2018-03-24-hntd-13.jpeg b/docs/assets/images/posts/2018-03-24-hntd-13.jpeg new file mode 100644 index 0000000000..c8bf69347b Binary files /dev/null and b/docs/assets/images/posts/2018-03-24-hntd-13.jpeg differ diff --git a/docs/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg b/docs/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg new file mode 100644 index 0000000000..b10577b7e7 Binary files /dev/null and b/docs/assets/images/posts/2018-04-01-redhat-academy/2018-04-01-redhat-academy.jpg differ diff --git a/docs/assets/images/posts/2018-04-01-redhat-academy/icon1.png b/docs/assets/images/posts/2018-04-01-redhat-academy/icon1.png new file mode 100644 index 0000000000..6638460321 Binary files /dev/null and b/docs/assets/images/posts/2018-04-01-redhat-academy/icon1.png differ diff --git a/docs/assets/images/posts/2018-04-01-redhat-academy/icon2.png b/docs/assets/images/posts/2018-04-01-redhat-academy/icon2.png new file mode 100644 index 0000000000..d3bf7f7af6 Binary files /dev/null and b/docs/assets/images/posts/2018-04-01-redhat-academy/icon2.png differ diff --git a/docs/assets/images/posts/2018-04-01-redhat-academy/icon3.png b/docs/assets/images/posts/2018-04-01-redhat-academy/icon3.png new file mode 100644 index 0000000000..18d1959090 Binary files /dev/null and b/docs/assets/images/posts/2018-04-01-redhat-academy/icon3.png differ diff --git a/docs/assets/images/posts/2018-04-01-redhat-academy/icon4.png b/docs/assets/images/posts/2018-04-01-redhat-academy/icon4.png new file mode 100644 index 0000000000..b1a4ef260a Binary files /dev/null and b/docs/assets/images/posts/2018-04-01-redhat-academy/icon4.png differ diff --git a/docs/assets/images/posts/2018-07-28-openstackday.jpeg b/docs/assets/images/posts/2018-07-28-openstackday.jpeg new file mode 100644 index 0000000000..2928c475ee Binary files /dev/null and b/docs/assets/images/posts/2018-07-28-openstackday.jpeg differ diff --git a/docs/assets/images/posts/2018-08-20-mandic-webinar.jpeg b/docs/assets/images/posts/2018-08-20-mandic-webinar.jpeg new file mode 100644 index 0000000000..15044b8774 Binary files /dev/null and b/docs/assets/images/posts/2018-08-20-mandic-webinar.jpeg differ diff --git a/docs/assets/images/posts/2018-09-11-ict-competition.jpg b/docs/assets/images/posts/2018-09-11-ict-competition.jpg new file mode 100644 index 0000000000..df12a5c24a Binary files /dev/null and b/docs/assets/images/posts/2018-09-11-ict-competition.jpg differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/0.png b/docs/assets/images/posts/2019-04-30-aws-educate/0.png new file mode 100644 index 0000000000..ebdbda81a7 Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/0.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge0.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge0.png new file mode 100644 index 0000000000..e5efcadb0f Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge0.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge1.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge1.png new file mode 100644 index 0000000000..d697049cec Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge1.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge2.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge2.png new file mode 100644 index 0000000000..257b91e04e Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge2.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge3.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge3.png new file mode 100644 index 0000000000..6f3be0e9f8 Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge3.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge4.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge4.png new file mode 100644 index 0000000000..715232afd9 Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge4.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge5.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge5.png new file mode 100644 index 0000000000..db940cb5ea Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge5.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge6.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge6.png new file mode 100644 index 0000000000..40cb3542ca Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge6.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge7.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge7.png new file mode 100644 index 0000000000..b31571a9d9 Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge7.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/badge8.png b/docs/assets/images/posts/2019-04-30-aws-educate/badge8.png new file mode 100644 index 0000000000..0c542624be Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/badge8.png differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg b/docs/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg new file mode 100644 index 0000000000..5b7879d7a2 Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/cert2019.jpg differ diff --git a/docs/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg b/docs/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg new file mode 100644 index 0000000000..c60c44c442 Binary files /dev/null and b/docs/assets/images/posts/2019-04-30-aws-educate/cert2020.jpg differ diff --git a/docs/assets/images/posts/2019-05-21-sumare/01.jpg b/docs/assets/images/posts/2019-05-21-sumare/01.jpg new file mode 100644 index 0000000000..109aab952f Binary files /dev/null and b/docs/assets/images/posts/2019-05-21-sumare/01.jpg differ diff --git a/docs/assets/images/posts/2019-05-21-sumare/02.jpeg b/docs/assets/images/posts/2019-05-21-sumare/02.jpeg new file mode 100644 index 0000000000..96cccb934c Binary files /dev/null and b/docs/assets/images/posts/2019-05-21-sumare/02.jpeg differ diff --git a/docs/assets/images/posts/2019-08-06-kuryr.png b/docs/assets/images/posts/2019-08-06-kuryr.png new file mode 100644 index 0000000000..285461b176 Binary files /dev/null and b/docs/assets/images/posts/2019-08-06-kuryr.png differ diff --git a/docs/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png b/docs/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png new file mode 100644 index 0000000000..7ff300b2dc Binary files /dev/null and b/docs/assets/images/posts/2020-04-26-osp43-on-rhosp13/0.png differ diff --git a/docs/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png b/docs/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png new file mode 100644 index 0000000000..fc4a0fc645 Binary files /dev/null and b/docs/assets/images/posts/2020-04-26-osp43-on-rhosp13/1.png differ diff --git a/docs/assets/images/posts/2020-04-30-onf/0.jpg b/docs/assets/images/posts/2020-04-30-onf/0.jpg new file mode 100644 index 0000000000..6840d1a584 Binary files /dev/null and b/docs/assets/images/posts/2020-04-30-onf/0.jpg differ diff --git a/docs/assets/images/posts/2020-04-30-onf/1.png b/docs/assets/images/posts/2020-04-30-onf/1.png new file mode 100644 index 0000000000..0b2b5fe9fa Binary files /dev/null and b/docs/assets/images/posts/2020-04-30-onf/1.png differ diff --git a/docs/assets/images/posts/2020-04-30-onf/3.png b/docs/assets/images/posts/2020-04-30-onf/3.png new file mode 100644 index 0000000000..ff22738fe4 Binary files /dev/null and b/docs/assets/images/posts/2020-04-30-onf/3.png differ diff --git a/docs/assets/images/posts/2020-05-11-ussuri/1.png b/docs/assets/images/posts/2020-05-11-ussuri/1.png new file mode 100644 index 0000000000..3e226c0450 Binary files /dev/null and b/docs/assets/images/posts/2020-05-11-ussuri/1.png differ diff --git a/docs/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg b/docs/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg new file mode 100644 index 0000000000..5af1e1c940 --- /dev/null +++ b/docs/assets/images/posts/2020-05-11-ussuri/2020-05-11-ussuri.svg @@ -0,0 +1 @@ +Ussuri-release-logo-web \ No newline at end of file diff --git a/docs/assets/images/posts/2020-07-07-haina-brazil/0.jpg b/docs/assets/images/posts/2020-07-07-haina-brazil/0.jpg new file mode 100644 index 0000000000..88a7719588 Binary files /dev/null and b/docs/assets/images/posts/2020-07-07-haina-brazil/0.jpg differ diff --git a/docs/assets/images/posts/2020-07-07-haina-brazil/1.png b/docs/assets/images/posts/2020-07-07-haina-brazil/1.png new file mode 100644 index 0000000000..3e87b1ddd8 Binary files /dev/null and b/docs/assets/images/posts/2020-07-07-haina-brazil/1.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/01.png b/docs/assets/images/posts/2020-07-09-aws-academy/01.png new file mode 100644 index 0000000000..352a2bbf35 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/01.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/02.jpeg b/docs/assets/images/posts/2020-07-09-aws-academy/02.jpeg new file mode 100644 index 0000000000..680900bbe3 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/02.jpeg differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/03.png b/docs/assets/images/posts/2020-07-09-aws-academy/03.png new file mode 100644 index 0000000000..74deaca415 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/03.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/04.png b/docs/assets/images/posts/2020-07-09-aws-academy/04.png new file mode 100644 index 0000000000..1c00104e85 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/04.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/05.png b/docs/assets/images/posts/2020-07-09-aws-academy/05.png new file mode 100644 index 0000000000..a48b71aae2 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/05.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/06.png b/docs/assets/images/posts/2020-07-09-aws-academy/06.png new file mode 100644 index 0000000000..5447e3b593 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/06.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/07.png b/docs/assets/images/posts/2020-07-09-aws-academy/07.png new file mode 100644 index 0000000000..3e1ffa8e59 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/07.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/08.png b/docs/assets/images/posts/2020-07-09-aws-academy/08.png new file mode 100644 index 0000000000..46ace43227 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/08.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/09.png b/docs/assets/images/posts/2020-07-09-aws-academy/09.png new file mode 100644 index 0000000000..501a449796 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/09.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/10.png b/docs/assets/images/posts/2020-07-09-aws-academy/10.png new file mode 100644 index 0000000000..e0e42a5758 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/10.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/11.png b/docs/assets/images/posts/2020-07-09-aws-academy/11.png new file mode 100644 index 0000000000..faff223224 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/11.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/12.png b/docs/assets/images/posts/2020-07-09-aws-academy/12.png new file mode 100644 index 0000000000..3196a8b9a6 Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/12.png differ diff --git a/docs/assets/images/posts/2020-07-09-aws-academy/13.png b/docs/assets/images/posts/2020-07-09-aws-academy/13.png new file mode 100644 index 0000000000..c879350f0f Binary files /dev/null and b/docs/assets/images/posts/2020-07-09-aws-academy/13.png differ diff --git a/docs/assets/images/posts/2020-07-17-haina/0.png b/docs/assets/images/posts/2020-07-17-haina/0.png new file mode 100644 index 0000000000..5460a8fb95 Binary files /dev/null and b/docs/assets/images/posts/2020-07-17-haina/0.png differ diff --git a/docs/assets/images/posts/2020-07-17-haina/1.png b/docs/assets/images/posts/2020-07-17-haina/1.png new file mode 100644 index 0000000000..e5bd030a2f Binary files /dev/null and b/docs/assets/images/posts/2020-07-17-haina/1.png differ diff --git a/docs/assets/images/posts/2020-07-17-haina/2.png b/docs/assets/images/posts/2020-07-17-haina/2.png new file mode 100644 index 0000000000..8a3325bb4d Binary files /dev/null and b/docs/assets/images/posts/2020-07-17-haina/2.png differ diff --git a/docs/assets/images/posts/2020-07-17-haina/3.png b/docs/assets/images/posts/2020-07-17-haina/3.png new file mode 100644 index 0000000000..154ffc8ada Binary files /dev/null and b/docs/assets/images/posts/2020-07-17-haina/3.png differ diff --git a/docs/assets/images/posts/2020-08-30-shift-aws-foundations.png b/docs/assets/images/posts/2020-08-30-shift-aws-foundations.png new file mode 100644 index 0000000000..2b65543441 Binary files /dev/null and b/docs/assets/images/posts/2020-08-30-shift-aws-foundations.png differ diff --git a/docs/assets/images/posts/2020-09-05-shift-multicloud.png b/docs/assets/images/posts/2020-09-05-shift-multicloud.png new file mode 100644 index 0000000000..b626835dc8 Binary files /dev/null and b/docs/assets/images/posts/2020-09-05-shift-multicloud.png differ diff --git a/docs/assets/images/posts/2020-09-30-mycodeisopen/0.jpg b/docs/assets/images/posts/2020-09-30-mycodeisopen/0.jpg new file mode 100644 index 0000000000..15018453f2 Binary files /dev/null and b/docs/assets/images/posts/2020-09-30-mycodeisopen/0.jpg differ diff --git a/docs/assets/images/posts/2020-09-30-mycodeisopen/1.jpg b/docs/assets/images/posts/2020-09-30-mycodeisopen/1.jpg new file mode 100644 index 0000000000..884e3f0ffc Binary files /dev/null and b/docs/assets/images/posts/2020-09-30-mycodeisopen/1.jpg differ diff --git a/docs/assets/images/posts/2020-10-01-onf-webinar/0.jpeg b/docs/assets/images/posts/2020-10-01-onf-webinar/0.jpeg new file mode 100644 index 0000000000..50ca1c11d9 Binary files /dev/null and b/docs/assets/images/posts/2020-10-01-onf-webinar/0.jpeg differ diff --git a/docs/assets/images/posts/2020-10-01-onf-webinar/1.png b/docs/assets/images/posts/2020-10-01-onf-webinar/1.png new file mode 100644 index 0000000000..0296919ddc Binary files /dev/null and b/docs/assets/images/posts/2020-10-01-onf-webinar/1.png differ diff --git a/docs/assets/images/posts/2020-10-12-aws-cert-challenge.jpg b/docs/assets/images/posts/2020-10-12-aws-cert-challenge.jpg new file mode 100644 index 0000000000..382a2d8642 Binary files /dev/null and b/docs/assets/images/posts/2020-10-12-aws-cert-challenge.jpg differ diff --git a/docs/assets/images/posts/2020-10-25-hcia-14.jpeg b/docs/assets/images/posts/2020-10-25-hcia-14.jpeg new file mode 100644 index 0000000000..05bf65b2fb Binary files /dev/null and b/docs/assets/images/posts/2020-10-25-hcia-14.jpeg differ diff --git a/docs/assets/images/posts/2020-10-26-totvs-talks/0.jpeg b/docs/assets/images/posts/2020-10-26-totvs-talks/0.jpeg new file mode 100644 index 0000000000..de396c9ec5 Binary files /dev/null and b/docs/assets/images/posts/2020-10-26-totvs-talks/0.jpeg differ diff --git a/docs/assets/images/posts/2020-10-26-totvs-talks/1.jpeg b/docs/assets/images/posts/2020-10-26-totvs-talks/1.jpeg new file mode 100644 index 0000000000..d1c767e990 Binary files /dev/null and b/docs/assets/images/posts/2020-10-26-totvs-talks/1.jpeg differ diff --git a/docs/assets/images/posts/2020-10-26-totvs-talks/2.png b/docs/assets/images/posts/2020-10-26-totvs-talks/2.png new file mode 100644 index 0000000000..2727c6a042 Binary files /dev/null and b/docs/assets/images/posts/2020-10-26-totvs-talks/2.png differ diff --git a/docs/assets/images/posts/2020-10-31-caio-youtube.png b/docs/assets/images/posts/2020-10-31-caio-youtube.png new file mode 100644 index 0000000000..32fd4be46b Binary files /dev/null and b/docs/assets/images/posts/2020-10-31-caio-youtube.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/0.png b/docs/assets/images/posts/2020-11-13-haina-talent/0.png new file mode 100644 index 0000000000..9e134c8cec Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/0.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/1.png b/docs/assets/images/posts/2020-11-13-haina-talent/1.png new file mode 100644 index 0000000000..0403112d23 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/1.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/10.png b/docs/assets/images/posts/2020-11-13-haina-talent/10.png new file mode 100644 index 0000000000..2b9d46c686 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/10.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/10_2.png b/docs/assets/images/posts/2020-11-13-haina-talent/10_2.png new file mode 100644 index 0000000000..b1e21eaf19 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/10_2.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/11.png b/docs/assets/images/posts/2020-11-13-haina-talent/11.png new file mode 100644 index 0000000000..3506c79c53 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/11.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/11_2.png b/docs/assets/images/posts/2020-11-13-haina-talent/11_2.png new file mode 100644 index 0000000000..9b0d70d85b Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/11_2.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/12.png b/docs/assets/images/posts/2020-11-13-haina-talent/12.png new file mode 100644 index 0000000000..138910799b Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/12.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/13.png b/docs/assets/images/posts/2020-11-13-haina-talent/13.png new file mode 100644 index 0000000000..91a2edc051 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/13.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/14.png b/docs/assets/images/posts/2020-11-13-haina-talent/14.png new file mode 100644 index 0000000000..fdf4c43942 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/14.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/15.png b/docs/assets/images/posts/2020-11-13-haina-talent/15.png new file mode 100644 index 0000000000..f65f641b6f Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/15.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/2.png b/docs/assets/images/posts/2020-11-13-haina-talent/2.png new file mode 100644 index 0000000000..7dc9e4f37d Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/2.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/3.png b/docs/assets/images/posts/2020-11-13-haina-talent/3.png new file mode 100644 index 0000000000..78223586f1 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/3.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/3_3.png b/docs/assets/images/posts/2020-11-13-haina-talent/3_3.png new file mode 100644 index 0000000000..6d2b16bee7 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/3_3.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/4.png b/docs/assets/images/posts/2020-11-13-haina-talent/4.png new file mode 100644 index 0000000000..d0ce576da5 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/4.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/4_2.png b/docs/assets/images/posts/2020-11-13-haina-talent/4_2.png new file mode 100644 index 0000000000..c4807a4312 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/4_2.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/5.png b/docs/assets/images/posts/2020-11-13-haina-talent/5.png new file mode 100644 index 0000000000..0663b98cae Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/5.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/6.png b/docs/assets/images/posts/2020-11-13-haina-talent/6.png new file mode 100644 index 0000000000..5738b6ab2f Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/6.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/7.png b/docs/assets/images/posts/2020-11-13-haina-talent/7.png new file mode 100644 index 0000000000..bc264edb8a Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/7.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/8.png b/docs/assets/images/posts/2020-11-13-haina-talent/8.png new file mode 100644 index 0000000000..10bfccf8ca Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/8.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/9.png b/docs/assets/images/posts/2020-11-13-haina-talent/9.png new file mode 100644 index 0000000000..9381a06a81 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/9.png differ diff --git a/docs/assets/images/posts/2020-11-13-haina-talent/logo.jpg b/docs/assets/images/posts/2020-11-13-haina-talent/logo.jpg new file mode 100644 index 0000000000..18312b2326 Binary files /dev/null and b/docs/assets/images/posts/2020-11-13-haina-talent/logo.jpg differ diff --git a/docs/assets/images/posts/2020-11-17-shift-aws-foundations-2.png b/docs/assets/images/posts/2020-11-17-shift-aws-foundations-2.png new file mode 100644 index 0000000000..66e29dab5a Binary files /dev/null and b/docs/assets/images/posts/2020-11-17-shift-aws-foundations-2.png differ diff --git a/docs/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg b/docs/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg new file mode 100644 index 0000000000..19180c4460 Binary files /dev/null and b/docs/assets/images/posts/2020-12-20-intel-network-builders/logo.jpg differ diff --git a/docs/assets/images/posts/2020-12-20-intel-network-builders/paths.png b/docs/assets/images/posts/2020-12-20-intel-network-builders/paths.png new file mode 100644 index 0000000000..13cdb3e8c2 Binary files /dev/null and b/docs/assets/images/posts/2020-12-20-intel-network-builders/paths.png differ diff --git a/docs/assets/images/posts/2020-12-22-co.lab.jpg b/docs/assets/images/posts/2020-12-22-co.lab.jpg new file mode 100644 index 0000000000..73c8ea43df Binary files /dev/null and b/docs/assets/images/posts/2020-12-22-co.lab.jpg differ diff --git a/docs/assets/images/posts/2020-12-31-newyear/1.png b/docs/assets/images/posts/2020-12-31-newyear/1.png new file mode 100644 index 0000000000..04d830c469 Binary files /dev/null and b/docs/assets/images/posts/2020-12-31-newyear/1.png differ diff --git a/docs/assets/images/posts/2020-12-31-newyear/2.png b/docs/assets/images/posts/2020-12-31-newyear/2.png new file mode 100644 index 0000000000..92d358a3f2 Binary files /dev/null and b/docs/assets/images/posts/2020-12-31-newyear/2.png differ diff --git a/docs/assets/images/posts/2020-12-31-newyear/3.png b/docs/assets/images/posts/2020-12-31-newyear/3.png new file mode 100644 index 0000000000..5f83fc3220 Binary files /dev/null and b/docs/assets/images/posts/2020-12-31-newyear/3.png differ diff --git a/docs/assets/images/posts/2021-01-05-calico/1.png b/docs/assets/images/posts/2021-01-05-calico/1.png new file mode 100644 index 0000000000..beefa3886c Binary files /dev/null and b/docs/assets/images/posts/2021-01-05-calico/1.png differ diff --git a/docs/assets/images/posts/2021-01-05-calico/2.png b/docs/assets/images/posts/2021-01-05-calico/2.png new file mode 100644 index 0000000000..e21e15e0a7 Binary files /dev/null and b/docs/assets/images/posts/2021-01-05-calico/2.png differ diff --git a/docs/assets/images/posts/2021-01-09-shift-multicloud-2.png b/docs/assets/images/posts/2021-01-09-shift-multicloud-2.png new file mode 100644 index 0000000000..101fcd322a Binary files /dev/null and b/docs/assets/images/posts/2021-01-09-shift-multicloud-2.png differ diff --git a/docs/assets/images/posts/2021-02-05-aviatrix/1.png b/docs/assets/images/posts/2021-02-05-aviatrix/1.png new file mode 100644 index 0000000000..f47550d2e4 Binary files /dev/null and b/docs/assets/images/posts/2021-02-05-aviatrix/1.png differ diff --git a/docs/assets/images/posts/2021-02-05-aviatrix/2.png b/docs/assets/images/posts/2021-02-05-aviatrix/2.png new file mode 100644 index 0000000000..845912ec85 Binary files /dev/null and b/docs/assets/images/posts/2021-02-05-aviatrix/2.png differ diff --git a/docs/assets/images/posts/2021-02-05-aviatrix/3.png b/docs/assets/images/posts/2021-02-05-aviatrix/3.png new file mode 100644 index 0000000000..e9787383bf Binary files /dev/null and b/docs/assets/images/posts/2021-02-05-aviatrix/3.png differ diff --git a/docs/assets/images/posts/2021-02-09-hcia-5g/1.png b/docs/assets/images/posts/2021-02-09-hcia-5g/1.png new file mode 100644 index 0000000000..791e564ffa Binary files /dev/null and b/docs/assets/images/posts/2021-02-09-hcia-5g/1.png differ diff --git a/docs/assets/images/posts/2021-02-09-hcia-5g/2.jpeg b/docs/assets/images/posts/2021-02-09-hcia-5g/2.jpeg new file mode 100644 index 0000000000..f1a4839c6e Binary files /dev/null and b/docs/assets/images/posts/2021-02-09-hcia-5g/2.jpeg differ diff --git a/docs/assets/images/posts/2021-02-09-hcia-5g/3.jpg b/docs/assets/images/posts/2021-02-09-hcia-5g/3.jpg new file mode 100644 index 0000000000..44ad29c0c3 Binary files /dev/null and b/docs/assets/images/posts/2021-02-09-hcia-5g/3.jpg differ diff --git a/docs/assets/images/posts/2021-03-10-shift-aws-foundations-3.png b/docs/assets/images/posts/2021-03-10-shift-aws-foundations-3.png new file mode 100644 index 0000000000..3bf131278a Binary files /dev/null and b/docs/assets/images/posts/2021-03-10-shift-aws-foundations-3.png differ diff --git a/docs/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg b/docs/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg new file mode 100644 index 0000000000..0ddcf1b70f Binary files /dev/null and b/docs/assets/images/posts/2021-03-22-hcia-5g-2/0.jpeg differ diff --git a/docs/assets/images/posts/2021-03-22-hcia-5g-2/1.png b/docs/assets/images/posts/2021-03-22-hcia-5g-2/1.png new file mode 100644 index 0000000000..78a9b310f0 Binary files /dev/null and b/docs/assets/images/posts/2021-03-22-hcia-5g-2/1.png differ diff --git a/docs/assets/images/posts/2021-03-25-rh-summit21.jpeg b/docs/assets/images/posts/2021-03-25-rh-summit21.jpeg new file mode 100644 index 0000000000..b4599dac3b Binary files /dev/null and b/docs/assets/images/posts/2021-03-25-rh-summit21.jpeg differ diff --git a/docs/assets/images/posts/2021-03-26-hcia-15/1.png b/docs/assets/images/posts/2021-03-26-hcia-15/1.png new file mode 100644 index 0000000000..a9d3bd11c3 Binary files /dev/null and b/docs/assets/images/posts/2021-03-26-hcia-15/1.png differ diff --git a/docs/assets/images/posts/2021-03-26-hcia-15/2.png b/docs/assets/images/posts/2021-03-26-hcia-15/2.png new file mode 100644 index 0000000000..5b64fa3155 Binary files /dev/null and b/docs/assets/images/posts/2021-03-26-hcia-15/2.png differ diff --git a/docs/assets/images/posts/2021-04-08-azure-fundamentals/1.png b/docs/assets/images/posts/2021-04-08-azure-fundamentals/1.png new file mode 100644 index 0000000000..73648d31af Binary files /dev/null and b/docs/assets/images/posts/2021-04-08-azure-fundamentals/1.png differ diff --git a/docs/assets/images/posts/2021-04-08-azure-fundamentals/2.png b/docs/assets/images/posts/2021-04-08-azure-fundamentals/2.png new file mode 100644 index 0000000000..520868678e Binary files /dev/null and b/docs/assets/images/posts/2021-04-08-azure-fundamentals/2.png differ diff --git a/docs/assets/images/posts/2021-04-08-azure-fundamentals/3.png b/docs/assets/images/posts/2021-04-08-azure-fundamentals/3.png new file mode 100644 index 0000000000..9eec9f7e83 Binary files /dev/null and b/docs/assets/images/posts/2021-04-08-azure-fundamentals/3.png differ diff --git a/docs/assets/images/posts/2021-04-08-azure-fundamentals/4.png b/docs/assets/images/posts/2021-04-08-azure-fundamentals/4.png new file mode 100644 index 0000000000..b84d24a9a7 Binary files /dev/null and b/docs/assets/images/posts/2021-04-08-azure-fundamentals/4.png differ diff --git a/docs/assets/images/posts/2021-04-08-azure-fundamentals/5.png b/docs/assets/images/posts/2021-04-08-azure-fundamentals/5.png new file mode 100644 index 0000000000..d25b142652 Binary files /dev/null and b/docs/assets/images/posts/2021-04-08-azure-fundamentals/5.png differ diff --git a/docs/assets/images/posts/2021-04-13-kafka/1.png b/docs/assets/images/posts/2021-04-13-kafka/1.png new file mode 100644 index 0000000000..dd312ac9fb Binary files /dev/null and b/docs/assets/images/posts/2021-04-13-kafka/1.png differ diff --git a/docs/assets/images/posts/2021-04-13-kafka/2.png b/docs/assets/images/posts/2021-04-13-kafka/2.png new file mode 100644 index 0000000000..722267896a Binary files /dev/null and b/docs/assets/images/posts/2021-04-13-kafka/2.png differ diff --git a/docs/assets/images/posts/2021-04-17-onf-webinar-21.png b/docs/assets/images/posts/2021-04-17-onf-webinar-21.png new file mode 100644 index 0000000000..54b354a673 Binary files /dev/null and b/docs/assets/images/posts/2021-04-17-onf-webinar-21.png differ diff --git a/docs/assets/images/posts/2021-04-23-gitlab.png b/docs/assets/images/posts/2021-04-23-gitlab.png new file mode 100644 index 0000000000..aa243d8f1d Binary files /dev/null and b/docs/assets/images/posts/2021-04-23-gitlab.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/0.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/0.png new file mode 100644 index 0000000000..119b187abf Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/0.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/1.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/1.png new file mode 100644 index 0000000000..1cafee9db8 Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/1.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/2.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/2.png new file mode 100644 index 0000000000..fd30b3332d Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/2.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/3.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/3.png new file mode 100644 index 0000000000..e5429ce4d9 Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/3.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/4.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/4.png new file mode 100644 index 0000000000..b47a70adc2 Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/4.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/5.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/5.png new file mode 100644 index 0000000000..6f5c192c27 Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/5.png differ diff --git a/docs/assets/images/posts/2021-05-10-hcia-ia-notes/6.png b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/6.png new file mode 100644 index 0000000000..5962d07b87 Binary files /dev/null and b/docs/assets/images/posts/2021-05-10-hcia-ia-notes/6.png differ diff --git a/docs/assets/images/posts/2021-05-11-shift-multicloud-3.png b/docs/assets/images/posts/2021-05-11-shift-multicloud-3.png new file mode 100644 index 0000000000..076c863c65 Binary files /dev/null and b/docs/assets/images/posts/2021-05-11-shift-multicloud-3.png differ diff --git a/docs/assets/images/posts/2021-05-14-hcia-16.jpeg b/docs/assets/images/posts/2021-05-14-hcia-16.jpeg new file mode 100644 index 0000000000..29cc59b0a4 Binary files /dev/null and b/docs/assets/images/posts/2021-05-14-hcia-16.jpeg differ diff --git a/docs/assets/images/posts/2021-05-15-aws-community-builder.png b/docs/assets/images/posts/2021-05-15-aws-community-builder.png new file mode 100755 index 0000000000..9b1dccc7d3 Binary files /dev/null and b/docs/assets/images/posts/2021-05-15-aws-community-builder.png differ diff --git a/docs/assets/images/posts/2021-05-18-gitops-summit-21.png b/docs/assets/images/posts/2021-05-18-gitops-summit-21.png new file mode 100644 index 0000000000..e329aeaa03 Binary files /dev/null and b/docs/assets/images/posts/2021-05-18-gitops-summit-21.png differ diff --git a/docs/assets/images/posts/2021-05-31-fiap-meetup/0.png b/docs/assets/images/posts/2021-05-31-fiap-meetup/0.png new file mode 100644 index 0000000000..4c8ab6e907 Binary files /dev/null and b/docs/assets/images/posts/2021-05-31-fiap-meetup/0.png differ diff --git a/docs/assets/images/posts/2021-05-31-fiap-meetup/1.png b/docs/assets/images/posts/2021-05-31-fiap-meetup/1.png new file mode 100644 index 0000000000..f993c2a845 Binary files /dev/null and b/docs/assets/images/posts/2021-05-31-fiap-meetup/1.png differ diff --git a/docs/assets/images/posts/2021-06-03-edx-magma/1.png b/docs/assets/images/posts/2021-06-03-edx-magma/1.png new file mode 100644 index 0000000000..752753961e Binary files /dev/null and b/docs/assets/images/posts/2021-06-03-edx-magma/1.png differ diff --git a/docs/assets/images/posts/2021-06-03-edx-magma/2.png b/docs/assets/images/posts/2021-06-03-edx-magma/2.png new file mode 100644 index 0000000000..e756f1c465 Binary files /dev/null and b/docs/assets/images/posts/2021-06-03-edx-magma/2.png differ diff --git a/docs/assets/images/posts/2021-06-21-shift-aws-foundations-4.png b/docs/assets/images/posts/2021-06-21-shift-aws-foundations-4.png new file mode 100644 index 0000000000..291370bd36 Binary files /dev/null and b/docs/assets/images/posts/2021-06-21-shift-aws-foundations-4.png differ diff --git a/docs/assets/images/posts/2021-06-22-shift-aws-dev.png b/docs/assets/images/posts/2021-06-22-shift-aws-dev.png new file mode 100644 index 0000000000..236fd83e4a Binary files /dev/null and b/docs/assets/images/posts/2021-06-22-shift-aws-dev.png differ diff --git a/docs/assets/images/posts/2021-06-28-cognitive-class.png b/docs/assets/images/posts/2021-06-28-cognitive-class.png new file mode 100644 index 0000000000..3539c2a23e Binary files /dev/null and b/docs/assets/images/posts/2021-06-28-cognitive-class.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/01.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/01.png new file mode 100644 index 0000000000..c2bf1119c8 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/01.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/02.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/02.png new file mode 100644 index 0000000000..57c846e4e9 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/02.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/03.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/03.png new file mode 100644 index 0000000000..526d21576a Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/03.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/04.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/04.png new file mode 100644 index 0000000000..4588c9c9d9 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/04.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/05.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/05.png new file mode 100644 index 0000000000..ce4a04e0e7 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/05.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/06.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/06.png new file mode 100644 index 0000000000..fcc0b794af Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/06.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/07.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/07.png new file mode 100644 index 0000000000..5ea7a21685 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/07.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/08.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/08.png new file mode 100644 index 0000000000..2042bad827 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/08.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/09.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/09.png new file mode 100644 index 0000000000..ebfe4e761a Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/09.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/10.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/10.png new file mode 100644 index 0000000000..7d1dc814e2 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/10.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/11.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/11.png new file mode 100644 index 0000000000..2e06d1cbb3 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/11.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/12.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/12.png new file mode 100644 index 0000000000..19330ebc04 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/12.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/13.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/13.png new file mode 100644 index 0000000000..3e27804acb Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/13.png differ diff --git a/docs/assets/images/posts/2021-07-25-aws-educate-login/14.png b/docs/assets/images/posts/2021-07-25-aws-educate-login/14.png new file mode 100644 index 0000000000..f08f1f03f9 Binary files /dev/null and b/docs/assets/images/posts/2021-07-25-aws-educate-login/14.png differ diff --git a/docs/assets/images/posts/2021-08-18-hcia-17.jpeg b/docs/assets/images/posts/2021-08-18-hcia-17.jpeg new file mode 100644 index 0000000000..4cd283fbab Binary files /dev/null and b/docs/assets/images/posts/2021-08-18-hcia-17.jpeg differ diff --git a/docs/assets/images/posts/2021-08-30-shift-aws-foundations-5.png b/docs/assets/images/posts/2021-08-30-shift-aws-foundations-5.png new file mode 100644 index 0000000000..69d64a664b Binary files /dev/null and b/docs/assets/images/posts/2021-08-30-shift-aws-foundations-5.png differ diff --git a/docs/assets/images/posts/2021-09-03-lf-courses.png b/docs/assets/images/posts/2021-09-03-lf-courses.png new file mode 100644 index 0000000000..10a87d9a7a Binary files /dev/null and b/docs/assets/images/posts/2021-09-03-lf-courses.png differ diff --git a/docs/assets/images/posts/2021-09-16-soloio-istio.png b/docs/assets/images/posts/2021-09-16-soloio-istio.png new file mode 100644 index 0000000000..813e742c6b Binary files /dev/null and b/docs/assets/images/posts/2021-09-16-soloio-istio.png differ diff --git a/docs/assets/images/posts/2021-10-02-shift-aws-dev-2.png b/docs/assets/images/posts/2021-10-02-shift-aws-dev-2.png new file mode 100644 index 0000000000..acb544e54e Binary files /dev/null and b/docs/assets/images/posts/2021-10-02-shift-aws-dev-2.png differ diff --git a/docs/assets/images/posts/2021-10-12-tendencias-tic.png b/docs/assets/images/posts/2021-10-12-tendencias-tic.png new file mode 100644 index 0000000000..993ae9c901 Binary files /dev/null and b/docs/assets/images/posts/2021-10-12-tendencias-tic.png differ diff --git a/docs/assets/images/posts/2021-10-14-seminf21/0.png b/docs/assets/images/posts/2021-10-14-seminf21/0.png new file mode 100644 index 0000000000..816b8d59ef Binary files /dev/null and b/docs/assets/images/posts/2021-10-14-seminf21/0.png differ diff --git a/docs/assets/images/posts/2021-10-14-seminf21/1.jpeg b/docs/assets/images/posts/2021-10-14-seminf21/1.jpeg new file mode 100644 index 0000000000..dace416d27 Binary files /dev/null and b/docs/assets/images/posts/2021-10-14-seminf21/1.jpeg differ diff --git a/docs/assets/images/posts/2021-10-14-seminf21/2.png b/docs/assets/images/posts/2021-10-14-seminf21/2.png new file mode 100644 index 0000000000..87b7e79c4f Binary files /dev/null and b/docs/assets/images/posts/2021-10-14-seminf21/2.png differ diff --git a/docs/assets/images/posts/2021-10-23-shift-multicloud-4.png b/docs/assets/images/posts/2021-10-23-shift-multicloud-4.png new file mode 100644 index 0000000000..77aa767bbc Binary files /dev/null and b/docs/assets/images/posts/2021-10-23-shift-multicloud-4.png differ diff --git a/docs/assets/images/posts/2021-11-03-aws-community-day-21/1.mp4 b/docs/assets/images/posts/2021-11-03-aws-community-day-21/1.mp4 new file mode 100644 index 0000000000..0dc015d2ee Binary files /dev/null and b/docs/assets/images/posts/2021-11-03-aws-community-day-21/1.mp4 differ diff --git a/docs/assets/images/posts/2021-11-04-microsoft-ignite/0.png b/docs/assets/images/posts/2021-11-04-microsoft-ignite/0.png new file mode 100644 index 0000000000..27c45e2b84 Binary files /dev/null and b/docs/assets/images/posts/2021-11-04-microsoft-ignite/0.png differ diff --git a/docs/assets/images/posts/2021-11-04-microsoft-ignite/1.png b/docs/assets/images/posts/2021-11-04-microsoft-ignite/1.png new file mode 100644 index 0000000000..d6fc9dcefb Binary files /dev/null and b/docs/assets/images/posts/2021-11-04-microsoft-ignite/1.png differ diff --git a/docs/assets/images/posts/2021-11-05-huawey-academy-workshop.png b/docs/assets/images/posts/2021-11-05-huawey-academy-workshop.png new file mode 100644 index 0000000000..d4251f596a Binary files /dev/null and b/docs/assets/images/posts/2021-11-05-huawey-academy-workshop.png differ diff --git a/docs/assets/images/posts/2021-11-22-hcia-18.jpeg b/docs/assets/images/posts/2021-11-22-hcia-18.jpeg new file mode 100644 index 0000000000..5401746010 Binary files /dev/null and b/docs/assets/images/posts/2021-11-22-hcia-18.jpeg differ diff --git a/docs/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg b/docs/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg new file mode 100644 index 0000000000..7da224d7b3 Binary files /dev/null and b/docs/assets/images/posts/2021-11-24-huawey-job-fair-21.jpg differ diff --git a/docs/assets/images/posts/2021-11-28-gremlin-caos/1.png b/docs/assets/images/posts/2021-11-28-gremlin-caos/1.png new file mode 100644 index 0000000000..8f60891942 Binary files /dev/null and b/docs/assets/images/posts/2021-11-28-gremlin-caos/1.png differ diff --git a/docs/assets/images/posts/2021-11-28-gremlin-caos/2.png b/docs/assets/images/posts/2021-11-28-gremlin-caos/2.png new file mode 100644 index 0000000000..1b3a2c0566 Binary files /dev/null and b/docs/assets/images/posts/2021-11-28-gremlin-caos/2.png differ diff --git a/docs/assets/images/posts/2021-12-05-ovn21.png b/docs/assets/images/posts/2021-12-05-ovn21.png new file mode 100644 index 0000000000..402a18d3c2 Binary files /dev/null and b/docs/assets/images/posts/2021-12-05-ovn21.png differ diff --git a/docs/assets/images/posts/2021-12-09-calico-ebpf.png b/docs/assets/images/posts/2021-12-09-calico-ebpf.png new file mode 100644 index 0000000000..a45776a080 Binary files /dev/null and b/docs/assets/images/posts/2021-12-09-calico-ebpf.png differ diff --git a/docs/assets/images/posts/2021-12-13-gitops-fundamentals/0.png b/docs/assets/images/posts/2021-12-13-gitops-fundamentals/0.png new file mode 100644 index 0000000000..95f8f467ed Binary files /dev/null and b/docs/assets/images/posts/2021-12-13-gitops-fundamentals/0.png differ diff --git a/docs/assets/images/posts/2021-12-13-gitops-fundamentals/1.png b/docs/assets/images/posts/2021-12-13-gitops-fundamentals/1.png new file mode 100644 index 0000000000..e51f7452cf Binary files /dev/null and b/docs/assets/images/posts/2021-12-13-gitops-fundamentals/1.png differ diff --git a/docs/assets/images/posts/2021-12-19-istio-fundamentals/0.png b/docs/assets/images/posts/2021-12-19-istio-fundamentals/0.png new file mode 100644 index 0000000000..cc85df5dec Binary files /dev/null and b/docs/assets/images/posts/2021-12-19-istio-fundamentals/0.png differ diff --git a/docs/assets/images/posts/2021-12-19-istio-fundamentals/1.png b/docs/assets/images/posts/2021-12-19-istio-fundamentals/1.png new file mode 100644 index 0000000000..f59436d77d Binary files /dev/null and b/docs/assets/images/posts/2021-12-19-istio-fundamentals/1.png differ diff --git a/docs/assets/images/posts/2021-12-19-istio-fundamentals/2.png b/docs/assets/images/posts/2021-12-19-istio-fundamentals/2.png new file mode 100644 index 0000000000..70976913a6 Binary files /dev/null and b/docs/assets/images/posts/2021-12-19-istio-fundamentals/2.png differ diff --git a/docs/assets/images/posts/2022-01-01-newyear22/1.png b/docs/assets/images/posts/2022-01-01-newyear22/1.png new file mode 100644 index 0000000000..50aab63f81 Binary files /dev/null and b/docs/assets/images/posts/2022-01-01-newyear22/1.png differ diff --git a/docs/assets/images/posts/2022-01-01-newyear22/2.png b/docs/assets/images/posts/2022-01-01-newyear22/2.png new file mode 100644 index 0000000000..f8c1c31c14 Binary files /dev/null and b/docs/assets/images/posts/2022-01-01-newyear22/2.png differ diff --git a/docs/assets/images/posts/2022-01-01-newyear22/3.png b/docs/assets/images/posts/2022-01-01-newyear22/3.png new file mode 100644 index 0000000000..7995674345 Binary files /dev/null and b/docs/assets/images/posts/2022-01-01-newyear22/3.png differ diff --git a/docs/assets/images/posts/2022-01-02-skillbuilder.png b/docs/assets/images/posts/2022-01-02-skillbuilder.png new file mode 100644 index 0000000000..361392d69d Binary files /dev/null and b/docs/assets/images/posts/2022-01-02-skillbuilder.png differ diff --git a/docs/assets/images/posts/2022-01-03-kasten/0.png b/docs/assets/images/posts/2022-01-03-kasten/0.png new file mode 100644 index 0000000000..af87aae7a1 Binary files /dev/null and b/docs/assets/images/posts/2022-01-03-kasten/0.png differ diff --git a/docs/assets/images/posts/2022-01-03-kasten/1.png b/docs/assets/images/posts/2022-01-03-kasten/1.png new file mode 100644 index 0000000000..c32f9d2021 Binary files /dev/null and b/docs/assets/images/posts/2022-01-03-kasten/1.png differ diff --git a/docs/assets/images/posts/2022-01-04-examtopics.jpg b/docs/assets/images/posts/2022-01-04-examtopics.jpg new file mode 100644 index 0000000000..a617274831 Binary files /dev/null and b/docs/assets/images/posts/2022-01-04-examtopics.jpg differ diff --git a/docs/assets/images/posts/2022-01-06-maua-sdn/0.png b/docs/assets/images/posts/2022-01-06-maua-sdn/0.png new file mode 100644 index 0000000000..042b2c6335 Binary files /dev/null and b/docs/assets/images/posts/2022-01-06-maua-sdn/0.png differ diff --git a/docs/assets/images/posts/2022-01-06-maua-sdn/1.png b/docs/assets/images/posts/2022-01-06-maua-sdn/1.png new file mode 100644 index 0000000000..e696363823 Binary files /dev/null and b/docs/assets/images/posts/2022-01-06-maua-sdn/1.png differ diff --git a/docs/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png b/docs/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png new file mode 100644 index 0000000000..0440f40249 Binary files /dev/null and b/docs/assets/images/posts/2022-01-07-shift-aws-foundations-6/0.png differ diff --git a/docs/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png b/docs/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png new file mode 100644 index 0000000000..5d8231315a Binary files /dev/null and b/docs/assets/images/posts/2022-01-07-shift-aws-foundations-6/1.png differ diff --git a/docs/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg b/docs/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg new file mode 100644 index 0000000000..9149948e57 Binary files /dev/null and b/docs/assets/images/posts/2022-01-21-shift-aws-dev-3/1.jpg differ diff --git a/docs/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg b/docs/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg new file mode 100644 index 0000000000..b00621ffd5 Binary files /dev/null and b/docs/assets/images/posts/2022-01-21-shift-aws-dev-3/2.jpg differ diff --git a/docs/assets/images/posts/2022-01-26-magma-cert/0.png b/docs/assets/images/posts/2022-01-26-magma-cert/0.png new file mode 100644 index 0000000000..2d3052a083 Binary files /dev/null and b/docs/assets/images/posts/2022-01-26-magma-cert/0.png differ diff --git a/docs/assets/images/posts/2022-01-26-magma-cert/1.png b/docs/assets/images/posts/2022-01-26-magma-cert/1.png new file mode 100644 index 0000000000..9f3aa1cab2 Binary files /dev/null and b/docs/assets/images/posts/2022-01-26-magma-cert/1.png differ diff --git a/docs/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png b/docs/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png new file mode 100644 index 0000000000..fd49a80bbd Binary files /dev/null and b/docs/assets/images/posts/2022-02-03-kyverno-fundamentals/0.png differ diff --git a/docs/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg b/docs/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg new file mode 100644 index 0000000000..240731cda4 Binary files /dev/null and b/docs/assets/images/posts/2022-02-10-ipt-cloud/1.jpeg differ diff --git a/docs/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg b/docs/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg new file mode 100644 index 0000000000..6b818bac43 Binary files /dev/null and b/docs/assets/images/posts/2022-02-10-ipt-cloud/2.jpeg differ diff --git a/docs/assets/images/posts/2022-02-17-loki.jpeg b/docs/assets/images/posts/2022-02-17-loki.jpeg new file mode 100644 index 0000000000..546faead72 Binary files /dev/null and b/docs/assets/images/posts/2022-02-17-loki.jpeg differ diff --git a/docs/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png b/docs/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png new file mode 100644 index 0000000000..3b3f7b2341 Binary files /dev/null and b/docs/assets/images/posts/2022-03-11-huawey-rs-vs-datacom.png differ diff --git a/docs/assets/images/posts/2022-03-17-mct.png b/docs/assets/images/posts/2022-03-17-mct.png new file mode 100644 index 0000000000..0b7dbc8eae Binary files /dev/null and b/docs/assets/images/posts/2022-03-17-mct.png differ diff --git a/docs/assets/images/posts/2022-03-21-mie/1.jpeg b/docs/assets/images/posts/2022-03-21-mie/1.jpeg new file mode 100644 index 0000000000..f118614ac6 Binary files /dev/null and b/docs/assets/images/posts/2022-03-21-mie/1.jpeg differ diff --git a/docs/assets/images/posts/2022-03-21-mie/2.png b/docs/assets/images/posts/2022-03-21-mie/2.png new file mode 100644 index 0000000000..2811bd1c64 Binary files /dev/null and b/docs/assets/images/posts/2022-03-21-mie/2.png differ diff --git a/docs/assets/images/posts/2022-03-24-riab.png b/docs/assets/images/posts/2022-03-24-riab.png new file mode 100644 index 0000000000..5796e8f57b Binary files /dev/null and b/docs/assets/images/posts/2022-03-24-riab.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/0.png b/docs/assets/images/posts/2022-03-25-aiab/0.png new file mode 100644 index 0000000000..c26b65d161 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/0.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/01.png b/docs/assets/images/posts/2022-03-25-aiab/01.png new file mode 100644 index 0000000000..8d662cbabc Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/01.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/02.png b/docs/assets/images/posts/2022-03-25-aiab/02.png new file mode 100644 index 0000000000..bc770d9993 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/02.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/03.png b/docs/assets/images/posts/2022-03-25-aiab/03.png new file mode 100644 index 0000000000..66b2a09d72 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/03.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/04.png b/docs/assets/images/posts/2022-03-25-aiab/04.png new file mode 100644 index 0000000000..760c143415 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/04.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/05.png b/docs/assets/images/posts/2022-03-25-aiab/05.png new file mode 100644 index 0000000000..f2089eb71a Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/05.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/06.png b/docs/assets/images/posts/2022-03-25-aiab/06.png new file mode 100644 index 0000000000..1a6d5da89e Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/06.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/07.png b/docs/assets/images/posts/2022-03-25-aiab/07.png new file mode 100644 index 0000000000..f953d7ac5e Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/07.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/08.png b/docs/assets/images/posts/2022-03-25-aiab/08.png new file mode 100644 index 0000000000..f0ef419e9e Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/08.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/09.png b/docs/assets/images/posts/2022-03-25-aiab/09.png new file mode 100644 index 0000000000..6060e83392 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/09.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/10.png b/docs/assets/images/posts/2022-03-25-aiab/10.png new file mode 100644 index 0000000000..4c9d5147ad Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/10.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/11.png b/docs/assets/images/posts/2022-03-25-aiab/11.png new file mode 100644 index 0000000000..b58ca499a1 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/11.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/12.png b/docs/assets/images/posts/2022-03-25-aiab/12.png new file mode 100644 index 0000000000..c2cf12fd08 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/12.png differ diff --git a/docs/assets/images/posts/2022-03-25-aiab/13.png b/docs/assets/images/posts/2022-03-25-aiab/13.png new file mode 100644 index 0000000000..78d0b9f609 Binary files /dev/null and b/docs/assets/images/posts/2022-03-25-aiab/13.png differ diff --git a/docs/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg b/docs/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg new file mode 100644 index 0000000000..584f72046c Binary files /dev/null and b/docs/assets/images/posts/2022-04-01-shift-aws-foundations-7.jpg differ diff --git a/docs/assets/images/posts/2022-04-08-hcia-19.jpeg b/docs/assets/images/posts/2022-04-08-hcia-19.jpeg new file mode 100644 index 0000000000..2e73bc9039 Binary files /dev/null and b/docs/assets/images/posts/2022-04-08-hcia-19.jpeg differ diff --git a/docs/assets/images/posts/2022-04-12-aws-certs-desconto/1.png b/docs/assets/images/posts/2022-04-12-aws-certs-desconto/1.png new file mode 100644 index 0000000000..4556ea13a9 Binary files /dev/null and b/docs/assets/images/posts/2022-04-12-aws-certs-desconto/1.png differ diff --git a/docs/assets/images/posts/2022-04-12-aws-certs-desconto/2.png b/docs/assets/images/posts/2022-04-12-aws-certs-desconto/2.png new file mode 100644 index 0000000000..3897a2d285 Binary files /dev/null and b/docs/assets/images/posts/2022-04-12-aws-certs-desconto/2.png differ diff --git a/docs/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png b/docs/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png new file mode 100644 index 0000000000..22379a9d16 Binary files /dev/null and b/docs/assets/images/posts/2022-04-12-shift-aws-dev-4/1.png differ diff --git a/docs/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png b/docs/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png new file mode 100644 index 0000000000..7475a94493 Binary files /dev/null and b/docs/assets/images/posts/2022-04-12-shift-aws-dev-4/2.png differ diff --git a/docs/assets/images/posts/2022-04-25-rh-summit22/1.png b/docs/assets/images/posts/2022-04-25-rh-summit22/1.png new file mode 100644 index 0000000000..8c5960c9ef Binary files /dev/null and b/docs/assets/images/posts/2022-04-25-rh-summit22/1.png differ diff --git a/docs/assets/images/posts/2022-04-25-rh-summit22/2.png b/docs/assets/images/posts/2022-04-25-rh-summit22/2.png new file mode 100644 index 0000000000..b4145567f0 Binary files /dev/null and b/docs/assets/images/posts/2022-04-25-rh-summit22/2.png differ diff --git a/docs/assets/images/posts/2022-04-25-wifi6.png b/docs/assets/images/posts/2022-04-25-wifi6.png new file mode 100644 index 0000000000..a2b746e859 Binary files /dev/null and b/docs/assets/images/posts/2022-04-25-wifi6.png differ diff --git a/docs/assets/images/posts/2022-04-27-eu-capacito.png b/docs/assets/images/posts/2022-04-27-eu-capacito.png new file mode 100644 index 0000000000..eeb21590d7 Binary files /dev/null and b/docs/assets/images/posts/2022-04-27-eu-capacito.png differ diff --git a/docs/assets/images/posts/2022-05-19-cati22.jpeg b/docs/assets/images/posts/2022-05-19-cati22.jpeg new file mode 100644 index 0000000000..05ebb043cf Binary files /dev/null and b/docs/assets/images/posts/2022-05-19-cati22.jpeg differ diff --git a/docs/assets/images/posts/2022-05-25-venko/1.jpg b/docs/assets/images/posts/2022-05-25-venko/1.jpg new file mode 100644 index 0000000000..d958e67312 Binary files /dev/null and b/docs/assets/images/posts/2022-05-25-venko/1.jpg differ diff --git a/docs/assets/images/posts/2022-05-25-venko/2.jpeg b/docs/assets/images/posts/2022-05-25-venko/2.jpeg new file mode 100644 index 0000000000..30f576d39e Binary files /dev/null and b/docs/assets/images/posts/2022-05-25-venko/2.jpeg differ diff --git a/docs/assets/images/posts/2022-06-13-women-cloud.jpeg b/docs/assets/images/posts/2022-06-13-women-cloud.jpeg new file mode 100644 index 0000000000..69031b096a Binary files /dev/null and b/docs/assets/images/posts/2022-06-13-women-cloud.jpeg differ diff --git a/docs/assets/images/posts/2022-06-20-apn.jpeg b/docs/assets/images/posts/2022-06-20-apn.jpeg new file mode 100644 index 0000000000..288e03ff7f Binary files /dev/null and b/docs/assets/images/posts/2022-06-20-apn.jpeg differ diff --git a/docs/assets/images/posts/2022-06-22-educate-relaunch.png b/docs/assets/images/posts/2022-06-22-educate-relaunch.png new file mode 100644 index 0000000000..c02e92f1c4 Binary files /dev/null and b/docs/assets/images/posts/2022-06-22-educate-relaunch.png differ diff --git a/docs/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg b/docs/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg new file mode 100644 index 0000000000..40c1357aac Binary files /dev/null and b/docs/assets/images/posts/2022-07-09-shift-aws-foundations-8.jpeg differ diff --git a/docs/assets/images/posts/2022-08-10-rh-research/1.jpg b/docs/assets/images/posts/2022-08-10-rh-research/1.jpg new file mode 100644 index 0000000000..43141a14f5 Binary files /dev/null and b/docs/assets/images/posts/2022-08-10-rh-research/1.jpg differ diff --git a/docs/assets/images/posts/2022-08-10-rh-research/2.png b/docs/assets/images/posts/2022-08-10-rh-research/2.png new file mode 100644 index 0000000000..20d368a95b Binary files /dev/null and b/docs/assets/images/posts/2022-08-10-rh-research/2.png differ diff --git a/docs/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg b/docs/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg new file mode 100644 index 0000000000..331b12a7a9 Binary files /dev/null and b/docs/assets/images/posts/2022-08-11-shift-aws-dev-5.jpg differ diff --git a/docs/assets/images/posts/2022-09-01-hcia-20.jpeg b/docs/assets/images/posts/2022-09-01-hcia-20.jpeg new file mode 100644 index 0000000000..078f249bce Binary files /dev/null and b/docs/assets/images/posts/2022-09-01-hcia-20.jpeg differ diff --git a/docs/assets/images/posts/2022-09-02-icos/0.webp b/docs/assets/images/posts/2022-09-02-icos/0.webp new file mode 100644 index 0000000000..3b5aace99e Binary files /dev/null and b/docs/assets/images/posts/2022-09-02-icos/0.webp differ diff --git a/docs/assets/images/posts/2022-09-02-icos/1.webp b/docs/assets/images/posts/2022-09-02-icos/1.webp new file mode 100644 index 0000000000..de163f4c7e Binary files /dev/null and b/docs/assets/images/posts/2022-09-02-icos/1.webp differ diff --git a/docs/assets/images/posts/2022-09-02-icos/2.webp b/docs/assets/images/posts/2022-09-02-icos/2.webp new file mode 100644 index 0000000000..bebfd620c5 Binary files /dev/null and b/docs/assets/images/posts/2022-09-02-icos/2.webp differ diff --git a/docs/assets/images/posts/2022-09-20-physics-ga4/1.png b/docs/assets/images/posts/2022-09-20-physics-ga4/1.png new file mode 100644 index 0000000000..20d7e9f88c Binary files /dev/null and b/docs/assets/images/posts/2022-09-20-physics-ga4/1.png differ diff --git a/docs/assets/images/posts/2022-09-20-physics-ga4/2.png b/docs/assets/images/posts/2022-09-20-physics-ga4/2.png new file mode 100644 index 0000000000..ca4c8c6769 Binary files /dev/null and b/docs/assets/images/posts/2022-09-20-physics-ga4/2.png differ diff --git a/docs/assets/images/posts/2022-10-19-shift-aws-foundations-9.png b/docs/assets/images/posts/2022-10-19-shift-aws-foundations-9.png new file mode 100644 index 0000000000..d60d38b093 Binary files /dev/null and b/docs/assets/images/posts/2022-10-19-shift-aws-foundations-9.png differ diff --git a/docs/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg b/docs/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg new file mode 100644 index 0000000000..e76c0a911f Binary files /dev/null and b/docs/assets/images/posts/2022-11-07-shift-aws-dev-6.jpg differ diff --git a/docs/assets/images/posts/2022-11-16-aws-certified-global-community/1.png b/docs/assets/images/posts/2022-11-16-aws-certified-global-community/1.png new file mode 100644 index 0000000000..51a03072b1 Binary files /dev/null and b/docs/assets/images/posts/2022-11-16-aws-certified-global-community/1.png differ diff --git a/docs/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg b/docs/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg new file mode 100644 index 0000000000..b0c1e81a5a Binary files /dev/null and b/docs/assets/images/posts/2022-11-16-aws-certified-global-community/2.jpg differ diff --git a/docs/assets/images/posts/2022-11-16-aws-certified-global-community/3.png b/docs/assets/images/posts/2022-11-16-aws-certified-global-community/3.png new file mode 100644 index 0000000000..7e9d6bfe2a Binary files /dev/null and b/docs/assets/images/posts/2022-11-16-aws-certified-global-community/3.png differ diff --git a/docs/assets/images/posts/2022-11-17-rhr-talks-physics.png b/docs/assets/images/posts/2022-11-17-rhr-talks-physics.png new file mode 100644 index 0000000000..8d55ff4fdf Binary files /dev/null and b/docs/assets/images/posts/2022-11-17-rhr-talks-physics.png differ diff --git a/docs/assets/images/posts/2022-12-26-tip-academy/1.svg b/docs/assets/images/posts/2022-12-26-tip-academy/1.svg new file mode 100644 index 0000000000..0abb137128 --- /dev/null +++ b/docs/assets/images/posts/2022-12-26-tip-academy/1.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/posts/2022-12-26-tip-academy/2.png b/docs/assets/images/posts/2022-12-26-tip-academy/2.png new file mode 100644 index 0000000000..332e9252df Binary files /dev/null and b/docs/assets/images/posts/2022-12-26-tip-academy/2.png differ diff --git a/docs/assets/images/posts/2022-12-26-tip-academy/3.png b/docs/assets/images/posts/2022-12-26-tip-academy/3.png new file mode 100644 index 0000000000..4783286e5d Binary files /dev/null and b/docs/assets/images/posts/2022-12-26-tip-academy/3.png differ diff --git a/docs/assets/images/posts/2022-12-26-tip-academy/4.png b/docs/assets/images/posts/2022-12-26-tip-academy/4.png new file mode 100644 index 0000000000..b28562fd3a Binary files /dev/null and b/docs/assets/images/posts/2022-12-26-tip-academy/4.png differ diff --git a/docs/assets/images/posts/2022-12-26-tip-academy/5.png b/docs/assets/images/posts/2022-12-26-tip-academy/5.png new file mode 100644 index 0000000000..33147efd85 Binary files /dev/null and b/docs/assets/images/posts/2022-12-26-tip-academy/5.png differ diff --git a/docs/assets/images/posts/2023-01-01-newyear23.png b/docs/assets/images/posts/2023-01-01-newyear23.png new file mode 100644 index 0000000000..2cbe209f76 Binary files /dev/null and b/docs/assets/images/posts/2023-01-01-newyear23.png differ diff --git a/docs/assets/images/posts/2023-01-18-codeco-kickoff/1.png b/docs/assets/images/posts/2023-01-18-codeco-kickoff/1.png new file mode 100644 index 0000000000..c9824afbbb Binary files /dev/null and b/docs/assets/images/posts/2023-01-18-codeco-kickoff/1.png differ diff --git a/docs/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg b/docs/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg new file mode 100644 index 0000000000..eb8ff1ee16 Binary files /dev/null and b/docs/assets/images/posts/2023-01-18-codeco-kickoff/2.jpg differ diff --git a/docs/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg b/docs/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg new file mode 100644 index 0000000000..b1940d7cc4 Binary files /dev/null and b/docs/assets/images/posts/2023-01-18-codeco-kickoff/3.jpg differ diff --git a/docs/assets/images/posts/2023-01-18-kubemark.svg b/docs/assets/images/posts/2023-01-18-kubemark.svg new file mode 100644 index 0000000000..4cd4f2ad73 --- /dev/null +++ b/docs/assets/images/posts/2023-01-18-kubemark.svg @@ -0,0 +1,616 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/assets/images/posts/2023-02-06-icni2.png b/docs/assets/images/posts/2023-02-06-icni2.png new file mode 100644 index 0000000000..4d71a4c3d2 Binary files /dev/null and b/docs/assets/images/posts/2023-02-06-icni2.png differ diff --git a/docs/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png b/docs/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png new file mode 100644 index 0000000000..7d0f17b502 Binary files /dev/null and b/docs/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png differ diff --git a/docs/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png b/docs/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png new file mode 100644 index 0000000000..78cebc1a98 Binary files /dev/null and b/docs/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png differ diff --git a/docs/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png b/docs/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png new file mode 100644 index 0000000000..fd8d1e36a7 Binary files /dev/null and b/docs/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png differ diff --git a/docs/assets/images/posts/2023-04-19-physics-rhr-talks.png b/docs/assets/images/posts/2023-04-19-physics-rhr-talks.png new file mode 100644 index 0000000000..b9a49f8e9f Binary files /dev/null and b/docs/assets/images/posts/2023-04-19-physics-rhr-talks.png differ diff --git a/docs/assets/images/posts/2023-05-23-devconf23/1.png b/docs/assets/images/posts/2023-05-23-devconf23/1.png new file mode 100644 index 0000000000..b85855f71b Binary files /dev/null and b/docs/assets/images/posts/2023-05-23-devconf23/1.png differ diff --git a/docs/assets/images/posts/2023-05-23-devconf23/2.png b/docs/assets/images/posts/2023-05-23-devconf23/2.png new file mode 100644 index 0000000000..4126872643 Binary files /dev/null and b/docs/assets/images/posts/2023-05-23-devconf23/2.png differ diff --git a/docs/assets/images/posts/2023-05-23-devconf23/3.jpeg b/docs/assets/images/posts/2023-05-23-devconf23/3.jpeg new file mode 100644 index 0000000000..67579491b6 Binary files /dev/null and b/docs/assets/images/posts/2023-05-23-devconf23/3.jpeg differ diff --git a/docs/assets/images/posts/2023-05-25-netsoft23/1.png b/docs/assets/images/posts/2023-05-25-netsoft23/1.png new file mode 100644 index 0000000000..bf7cb57903 Binary files /dev/null and b/docs/assets/images/posts/2023-05-25-netsoft23/1.png differ diff --git a/docs/assets/images/posts/2023-05-25-netsoft23/2.jpg b/docs/assets/images/posts/2023-05-25-netsoft23/2.jpg new file mode 100644 index 0000000000..ea248b846e Binary files /dev/null and b/docs/assets/images/posts/2023-05-25-netsoft23/2.jpg differ diff --git a/docs/assets/images/posts/2023-06-02-imdea.png b/docs/assets/images/posts/2023-06-02-imdea.png new file mode 100644 index 0000000000..9bfd6cae04 Binary files /dev/null and b/docs/assets/images/posts/2023-06-02-imdea.png differ diff --git a/docs/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png b/docs/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png new file mode 100644 index 0000000000..03d1042ac6 Binary files /dev/null and b/docs/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png differ diff --git a/docs/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png b/docs/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png new file mode 100644 index 0000000000..cde045a948 Binary files /dev/null and b/docs/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png differ diff --git a/docs/assets/js/_main.js b/docs/assets/js/_main.js new file mode 100644 index 0000000000..06c7092f1b --- /dev/null +++ b/docs/assets/js/_main.js @@ -0,0 +1,136 @@ +/* ========================================================================== + jQuery plugin settings and other scripts + ========================================================================== */ + +$(function() { + // FitVids init + $("#main").fitVids(); + + // Sticky sidebar + var stickySideBar = function() { + var show = + $(".author__urls-wrapper").find("button").length === 0 + ? $(window).width() > 1024 // width should match $large Sass variable + : !$(".author__urls-wrapper").find("button").is(":visible"); + if (show) { + // fix + $(".sidebar").addClass("sticky"); + } else { + // unfix + $(".sidebar").removeClass("sticky"); + } + }; + + stickySideBar(); + + $(window).resize(function() { + stickySideBar(); + }); + + // Follow menu drop down + $(".author__urls-wrapper").find("button").on("click", function() { + $(".author__urls").toggleClass("is--visible"); + $(".author__urls-wrapper").find("button").toggleClass("open"); + }); + + // Close search screen with Esc key + $(document).keyup(function(e) { + if (e.keyCode === 27) { + if ($(".initial-content").hasClass("is--hidden")) { + $(".search-content").toggleClass("is--visible"); + $(".initial-content").toggleClass("is--hidden"); + } + } + }); + + // Search toggle + $(".search__toggle").on("click", function() { + $(".search-content").toggleClass("is--visible"); + $(".initial-content").toggleClass("is--hidden"); + // set focus on input + setTimeout(function() { + $(".search-content").find("input").focus(); + }, 400); + }); + + // Smooth scrolling + var scroll = new SmoothScroll('a[href*="#"]', { + offset: 20, + speed: 400, + speedAsDuration: true, + durationMax: 500 + }); + + // Gumshoe scroll spy init + if($("nav.toc").length > 0) { + var spy = new Gumshoe("nav.toc a", { + // Active classes + navClass: "active", // applied to the nav list item + contentClass: "active", // applied to the content + + // Nested navigation + nested: false, // if true, add classes to parents of active link + nestedClass: "active", // applied to the parent items + + // Offset & reflow + offset: 20, // how far from the top of the page to activate a content area + reflow: true, // if true, listen for reflows + + // Event support + events: true // if true, emit custom events + }); + } + + // add lightbox class to all image links + $( + "a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']" + ).has("> img").addClass("image-popup"); + + // Magnific-Popup options + $(".image-popup").magnificPopup({ + // disableOn: function() { + // if( $(window).width() < 500 ) { + // return false; + // } + // return true; + // }, + type: "image", + tLoading: "Loading image #%curr%...", + gallery: { + enabled: true, + navigateByImgClick: true, + preload: [0, 1] // Will preload 0 - before current, and 1 after the current image + }, + image: { + tError: 'Image #%curr% could not be loaded.' + }, + removalDelay: 500, // Delay in milliseconds before popup is removed + // Class that is added to body when popup is open. + // make it unique to apply your CSS animations just to this exact popup + mainClass: "mfp-zoom-in", + callbacks: { + beforeOpen: function() { + // just a hack that adds mfp-anim class to markup + this.st.image.markup = this.st.image.markup.replace( + "mfp-figure", + "mfp-figure mfp-with-anim" + ); + } + }, + closeOnContentClick: true, + midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source. + }); + + // Add anchors for headings + $('.page__content').find('h1, h2, h3, h4, h5, h6').each(function() { + var id = $(this).attr('id'); + if (id) { + var anchor = document.createElement("a"); + anchor.className = 'header-link'; + anchor.href = '#' + id; + anchor.innerHTML = 'Permalink'; + anchor.title = "Permalink"; + $(this).append(anchor); + } + }); +}); diff --git a/docs/assets/js/lunr/lunr-en.js b/docs/assets/js/lunr/lunr-en.js new file mode 100644 index 0000000000..2a1cd004c5 --- /dev/null +++ b/docs/assets/js/lunr/lunr-en.js @@ -0,0 +1,66 @@ +var idx = lunr(function () { + this.field('title') + this.field('excerpt') + this.field('categories') + this.field('tags') + this.ref('id') + + this.pipeline.remove(lunr.trimmer) + + for (var item in store) { + this.add({ + title: store[item].title, + excerpt: store[item].excerpt, + categories: store[item].categories, + tags: store[item].tags, + id: item + }) + } +}); + +$(document).ready(function() { + $('input#search').on('keyup', function () { + var resultdiv = $('#results'); + var query = $(this).val().toLowerCase(); + var result = + idx.query(function (q) { + query.split(lunr.tokenizer.separator).forEach(function (term) { + q.term(term, { boost: 100 }) + if(query.lastIndexOf(" ") != query.length-1){ + q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 }) + } + if (term != ""){ + q.term(term, { usePipeline: false, editDistance: 1, boost: 1 }) + } + }) + }); + resultdiv.empty(); + resultdiv.prepend('

'+result.length+' Result(s) found

'); + for (var item in result) { + var ref = result[item].ref; + if(store[ref].teaser){ + var searchitem = + '
'+ + '
'+ + '

'+ + ''+store[ref].title+''+ + '

'+ + '

'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...

'+ + '
'+ + '
'; + } + else{ + var searchitem = + '
'+ + '
'+ + '

'+ + ''+store[ref].title+''+ + '

'+ + '

'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...

'+ + '
'+ + '
'; + } + resultdiv.append(searchitem); + } + }); +}); diff --git a/docs/assets/js/lunr/lunr-gr.js b/docs/assets/js/lunr/lunr-gr.js new file mode 100644 index 0000000000..e829362bf6 --- /dev/null +++ b/docs/assets/js/lunr/lunr-gr.js @@ -0,0 +1,522 @@ +step1list = new Array(); +step1list["ΦΑΓΙΑ"] = "ΦΑ"; +step1list["ΦΑΓΙΟΥ"] = "ΦΑ"; +step1list["ΦΑΓΙΩΝ"] = "ΦΑ"; +step1list["ΣΚΑΓΙΑ"] = "ΣΚΑ"; +step1list["ΣΚΑΓΙΟΥ"] = "ΣΚΑ"; +step1list["ΣΚΑΓΙΩΝ"] = "ΣΚΑ"; +step1list["ΟΛΟΓΙΟΥ"] = "ΟΛΟ"; +step1list["ΟΛΟΓΙΑ"] = "ΟΛΟ"; +step1list["ΟΛΟΓΙΩΝ"] = "ΟΛΟ"; +step1list["ΣΟΓΙΟΥ"] = "ΣΟ"; +step1list["ΣΟΓΙΑ"] = "ΣΟ"; +step1list["ΣΟΓΙΩΝ"] = "ΣΟ"; +step1list["ΤΑΤΟΓΙΑ"] = "ΤΑΤΟ"; +step1list["ΤΑΤΟΓΙΟΥ"] = "ΤΑΤΟ"; +step1list["ΤΑΤΟΓΙΩΝ"] = "ΤΑΤΟ"; +step1list["ΚΡΕΑΣ"] = "ΚΡΕ"; +step1list["ΚΡΕΑΤΟΣ"] = "ΚΡΕ"; +step1list["ΚΡΕΑΤΑ"] = "ΚΡΕ"; +step1list["ΚΡΕΑΤΩΝ"] = "ΚΡΕ"; +step1list["ΠΕΡΑΣ"] = "ΠΕΡ"; +step1list["ΠΕΡΑΤΟΣ"] = "ΠΕΡ"; +step1list["ΠΕΡΑΤΑ"] = "ΠΕΡ"; +step1list["ΠΕΡΑΤΩΝ"] = "ΠΕΡ"; +step1list["ΤΕΡΑΣ"] = "ΤΕΡ"; +step1list["ΤΕΡΑΤΟΣ"] = "ΤΕΡ"; +step1list["ΤΕΡΑΤΑ"] = "ΤΕΡ"; +step1list["ΤΕΡΑΤΩΝ"] = "ΤΕΡ"; +step1list["ΦΩΣ"] = "ΦΩ"; +step1list["ΦΩΤΟΣ"] = "ΦΩ"; +step1list["ΦΩΤΑ"] = "ΦΩ"; +step1list["ΦΩΤΩΝ"] = "ΦΩ"; +step1list["ΚΑΘΕΣΤΩΣ"] = "ΚΑΘΕΣΤ"; +step1list["ΚΑΘΕΣΤΩΤΟΣ"] = "ΚΑΘΕΣΤ"; +step1list["ΚΑΘΕΣΤΩΤΑ"] = "ΚΑΘΕΣΤ"; +step1list["ΚΑΘΕΣΤΩΤΩΝ"] = "ΚΑΘΕΣΤ"; +step1list["ΓΕΓΟΝΟΣ"] = "ΓΕΓΟΝ"; +step1list["ΓΕΓΟΝΟΤΟΣ"] = "ΓΕΓΟΝ"; +step1list["ΓΕΓΟΝΟΤΑ"] = "ΓΕΓΟΝ"; +step1list["ΓΕΓΟΝΟΤΩΝ"] = "ΓΕΓΟΝ"; + +v = "[ΑΕΗΙΟΥΩ]"; +v2 = "[ΑΕΗΙΟΩ]" + +function stemWord(w) { + var stem; + var suffix; + var firstch; + var origword = w; + test1 = new Boolean(true); + + if(w.length < 4) { + return w; + } + + var re; + var re2; + var re3; + var re4; + + re = /(.*)(ΦΑΓΙΑ|ΦΑΓΙΟΥ|ΦΑΓΙΩΝ|ΣΚΑΓΙΑ|ΣΚΑΓΙΟΥ|ΣΚΑΓΙΩΝ|ΟΛΟΓΙΟΥ|ΟΛΟΓΙΑ|ΟΛΟΓΙΩΝ|ΣΟΓΙΟΥ|ΣΟΓΙΑ|ΣΟΓΙΩΝ|ΤΑΤΟΓΙΑ|ΤΑΤΟΓΙΟΥ|ΤΑΤΟΓΙΩΝ|ΚΡΕΑΣ|ΚΡΕΑΤΟΣ|ΚΡΕΑΤΑ|ΚΡΕΑΤΩΝ|ΠΕΡΑΣ|ΠΕΡΑΤΟΣ|ΠΕΡΑΤΑ|ΠΕΡΑΤΩΝ|ΤΕΡΑΣ|ΤΕΡΑΤΟΣ|ΤΕΡΑΤΑ|ΤΕΡΑΤΩΝ|ΦΩΣ|ΦΩΤΟΣ|ΦΩΤΑ|ΦΩΤΩΝ|ΚΑΘΕΣΤΩΣ|ΚΑΘΕΣΤΩΤΟΣ|ΚΑΘΕΣΤΩΤΑ|ΚΑΘΕΣΤΩΤΩΝ|ΓΕΓΟΝΟΣ|ΓΕΓΟΝΟΤΟΣ|ΓΕΓΟΝΟΤΑ|ΓΕΓΟΝΟΤΩΝ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + w = stem + step1list[suffix]; + test1 = false; + } + + re = /^(.+?)(ΑΔΕΣ|ΑΔΩΝ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + + reg1 = /(ΟΚ|ΜΑΜ|ΜΑΝ|ΜΠΑΜΠ|ΠΑΤΕΡ|ΓΙΑΓΙ|ΝΤΑΝΤ|ΚΥΡ|ΘΕΙ|ΠΕΘΕΡ)$/; + + if(!(reg1.test(w))) { + w = w + "ΑΔ"; + } + } + + re2 = /^(.+?)(ΕΔΕΣ|ΕΔΩΝ)$/; + + if(re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + w = stem; + + exept2 = /(ΟΠ|ΙΠ|ΕΜΠ|ΥΠ|ΓΗΠ|ΔΑΠ|ΚΡΑΣΠ|ΜΙΛ)$/; + + if(exept2.test(w)) { + w = w + "ΕΔ"; + } + } + + re3 = /^(.+?)(ΟΥΔΕΣ|ΟΥΔΩΝ)$/; + + if(re3.test(w)) { + var fp = re3.exec(w); + stem = fp[1]; + w = stem; + + exept3 = /(ΑΡΚ|ΚΑΛΙΑΚ|ΠΕΤΑΛ|ΛΙΧ|ΠΛΕΞ|ΣΚ|Σ|ΦΛ|ΦΡ|ΒΕΛ|ΛΟΥΛ|ΧΝ|ΣΠ|ΤΡΑΓ|ΦΕ)$/; + + if(exept3.test(w)) { + w = w + "ΟΥΔ"; + } + } + + re4 = /^(.+?)(ΕΩΣ|ΕΩΝ)$/; + + if(re4.test(w)) { + var fp = re4.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept4 = /^(Θ|Δ|ΕΛ|ΓΑΛ|Ν|Π|ΙΔ|ΠΑΡ)$/; + + if(exept4.test(w)) { + w = w + "Ε"; + } + } + + re = /^(.+?)(ΙΑ|ΙΟΥ|ΙΩΝ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + re2 = new RegExp(v + "$"); + test1 = false; + + if(re2.test(w)) { + w = stem + "Ι"; + } + } + + re = /^(.+?)(ΙΚΑ|ΙΚΟ|ΙΚΟΥ|ΙΚΩΝ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + re2 = new RegExp(v + "$"); + exept5 = /^(ΑΛ|ΑΔ|ΕΝΔ|ΑΜΑΝ|ΑΜΜΟΧΑΛ|ΗΘ|ΑΝΗΘ|ΑΝΤΙΔ|ΦΥΣ|ΒΡΩΜ|ΓΕΡ|ΕΞΩΔ|ΚΑΛΠ|ΚΑΛΛΙΝ|ΚΑΤΑΔ|ΜΟΥΛ|ΜΠΑΝ|ΜΠΑΓΙΑΤ|ΜΠΟΛ|ΜΠΟΣ|ΝΙΤ|ΞΙΚ|ΣΥΝΟΜΗΛ|ΠΕΤΣ|ΠΙΤΣ|ΠΙΚΑΝΤ|ΠΛΙΑΤΣ|ΠΟΣΤΕΛΝ|ΠΡΩΤΟΔ|ΣΕΡΤ|ΣΥΝΑΔ|ΤΣΑΜ|ΥΠΟΔ|ΦΙΛΟΝ|ΦΥΛΟΔ|ΧΑΣ)$/; + + if((exept5.test(w)) || (re2.test(w))) { + w = w + "ΙΚ"; + } + } + + re = /^(.+?)(ΑΜΕ)$/; + re2 = /^(.+?)(ΑΓΑΜΕ|ΗΣΑΜΕ|ΟΥΣΑΜΕ|ΗΚΑΜΕ|ΗΘΗΚΑΜΕ)$/; + if(w == "ΑΓΑΜΕ") { + w = "ΑΓΑΜ"; + } + + if(re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + } + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept6 = /^(ΑΝΑΠ|ΑΠΟΘ|ΑΠΟΚ|ΑΠΟΣΤ|ΒΟΥΒ|ΞΕΘ|ΟΥΛ|ΠΕΘ|ΠΙΚΡ|ΠΟΤ|ΣΙΧ|Χ)$/; + + if(exept6.test(w)) { + w = w + "ΑΜ"; + } + } + + re2 = /^(.+?)(ΑΝΕ)$/; + re3 = /^(.+?)(ΑΓΑΝΕ|ΗΣΑΝΕ|ΟΥΣΑΝΕ|ΙΟΝΤΑΝΕ|ΙΟΤΑΝΕ|ΙΟΥΝΤΑΝΕ|ΟΝΤΑΝΕ|ΟΤΑΝΕ|ΟΥΝΤΑΝΕ|ΗΚΑΝΕ|ΗΘΗΚΑΝΕ)$/; + + if(re3.test(w)) { + var fp = re3.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + re3 = /^(ΤΡ|ΤΣ)$/; + + if(re3.test(w)) { + w = w + "ΑΓΑΝ"; + } + } + + if(re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + re2 = new RegExp(v2 + "$"); + exept7 = /^(ΒΕΤΕΡ|ΒΟΥΛΚ|ΒΡΑΧΜ|Γ|ΔΡΑΔΟΥΜ|Θ|ΚΑΛΠΟΥΖ|ΚΑΣΤΕΛ|ΚΟΡΜΟΡ|ΛΑΟΠΛ|ΜΩΑΜΕΘ|Μ|ΜΟΥΣΟΥΛΜ|Ν|ΟΥΛ|Π|ΠΕΛΕΚ|ΠΛ|ΠΟΛΙΣ|ΠΟΡΤΟΛ|ΣΑΡΑΚΑΤΣ|ΣΟΥΛΤ|ΤΣΑΡΛΑΤ|ΟΡΦ|ΤΣΙΓΓ|ΤΣΟΠ|ΦΩΤΟΣΤΕΦ|Χ|ΨΥΧΟΠΛ|ΑΓ|ΟΡΦ|ΓΑΛ|ΓΕΡ|ΔΕΚ|ΔΙΠΛ|ΑΜΕΡΙΚΑΝ|ΟΥΡ|ΠΙΘ|ΠΟΥΡΙΤ|Σ|ΖΩΝΤ|ΙΚ|ΚΑΣΤ|ΚΟΠ|ΛΙΧ|ΛΟΥΘΗΡ|ΜΑΙΝΤ|ΜΕΛ|ΣΙΓ|ΣΠ|ΣΤΕΓ|ΤΡΑΓ|ΤΣΑΓ|Φ|ΕΡ|ΑΔΑΠ|ΑΘΙΓΓ|ΑΜΗΧ|ΑΝΙΚ|ΑΝΟΡΓ|ΑΠΗΓ|ΑΠΙΘ|ΑΤΣΙΓΓ|ΒΑΣ|ΒΑΣΚ|ΒΑΘΥΓΑΛ|ΒΙΟΜΗΧ|ΒΡΑΧΥΚ|ΔΙΑΤ|ΔΙΑΦ|ΕΝΟΡΓ|ΘΥΣ|ΚΑΠΝΟΒΙΟΜΗΧ|ΚΑΤΑΓΑΛ|ΚΛΙΒ|ΚΟΙΛΑΡΦ|ΛΙΒ|ΜΕΓΛΟΒΙΟΜΗΧ|ΜΙΚΡΟΒΙΟΜΗΧ|ΝΤΑΒ|ΞΗΡΟΚΛΙΒ|ΟΛΙΓΟΔΑΜ|ΟΛΟΓΑΛ|ΠΕΝΤΑΡΦ|ΠΕΡΗΦ|ΠΕΡΙΤΡ|ΠΛΑΤ|ΠΟΛΥΔΑΠ|ΠΟΛΥΜΗΧ|ΣΤΕΦ|ΤΑΒ|ΤΕΤ|ΥΠΕΡΗΦ|ΥΠΟΚΟΠ|ΧΑΜΗΛΟΔΑΠ|ΨΗΛΟΤΑΒ)$/; + + if((re2.test(w)) || (exept7.test(w))) { + w = w + "ΑΝ"; + } + } + + re3 = /^(.+?)(ΕΤΕ)$/; + re4 = /^(.+?)(ΗΣΕΤΕ)$/; + + if(re4.test(w)) { + var fp = re4.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + } + + if(re3.test(w)) { + var fp = re3.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + re3 = new RegExp(v2 + "$"); + exept8 = /(ΟΔ|ΑΙΡ|ΦΟΡ|ΤΑΘ|ΔΙΑΘ|ΣΧ|ΕΝΔ|ΕΥΡ|ΤΙΘ|ΥΠΕΡΘ|ΡΑΘ|ΕΝΘ|ΡΟΘ|ΣΘ|ΠΥΡ|ΑΙΝ|ΣΥΝΔ|ΣΥΝ|ΣΥΝΘ|ΧΩΡ|ΠΟΝ|ΒΡ|ΚΑΘ|ΕΥΘ|ΕΚΘ|ΝΕΤ|ΡΟΝ|ΑΡΚ|ΒΑΡ|ΒΟΛ|ΩΦΕΛ)$/; + exept9 = /^(ΑΒΑΡ|ΒΕΝ|ΕΝΑΡ|ΑΒΡ|ΑΔ|ΑΘ|ΑΝ|ΑΠΛ|ΒΑΡΟΝ|ΝΤΡ|ΣΚ|ΚΟΠ|ΜΠΟΡ|ΝΙΦ|ΠΑΓ|ΠΑΡΑΚΑΛ|ΣΕΡΠ|ΣΚΕΛ|ΣΥΡΦ|ΤΟΚ|Υ|Δ|ΕΜ|ΘΑΡΡ|Θ)$/; + + if((re3.test(w)) || (exept8.test(w)) || (exept9.test(w))) { + w = w + "ΕΤ"; + } + } + + re = /^(.+?)(ΟΝΤΑΣ|ΩΝΤΑΣ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept10 = /^(ΑΡΧ)$/; + exept11 = /(ΚΡΕ)$/; + if(exept10.test(w)) { + w = w + "ΟΝΤ"; + } + if(exept11.test(w)) { + w = w + "ΩΝΤ"; + } + } + + re = /^(.+?)(ΟΜΑΣΤΕ|ΙΟΜΑΣΤΕ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept11 = /^(ΟΝ)$/; + + if(exept11.test(w)) { + w = w + "ΟΜΑΣΤ"; + } + } + + re = /^(.+?)(ΕΣΤΕ)$/; + re2 = /^(.+?)(ΙΕΣΤΕ)$/; + + if(re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + re2 = /^(Π|ΑΠ|ΣΥΜΠ|ΑΣΥΜΠ|ΑΚΑΤΑΠ|ΑΜΕΤΑΜΦ)$/; + + if(re2.test(w)) { + w = w + "ΙΕΣΤ"; + } + } + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept12 = /^(ΑΛ|ΑΡ|ΕΚΤΕΛ|Ζ|Μ|Ξ|ΠΑΡΑΚΑΛ|ΑΡ|ΠΡΟ|ΝΙΣ)$/; + + if(exept12.test(w)) { + w = w + "ΕΣΤ"; + } + } + + re = /^(.+?)(ΗΚΑ|ΗΚΕΣ|ΗΚΕ)$/; + re2 = /^(.+?)(ΗΘΗΚΑ|ΗΘΗΚΕΣ|ΗΘΗΚΕ)$/; + + if(re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + } + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept13 = /(ΣΚΩΛ|ΣΚΟΥΛ|ΝΑΡΘ|ΣΦ|ΟΘ|ΠΙΘ)$/; + exept14 = /^(ΔΙΑΘ|Θ|ΠΑΡΑΚΑΤΑΘ|ΠΡΟΣΘ|ΣΥΝΘ|)$/; + + if((exept13.test(w)) || (exept14.test(w))) { + w = w + "ΗΚ"; + } + } + + re = /^(.+?)(ΟΥΣΑ|ΟΥΣΕΣ|ΟΥΣΕ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept15 = /^(ΦΑΡΜΑΚ|ΧΑΔ|ΑΓΚ|ΑΝΑΡΡ|ΒΡΟΜ|ΕΚΛΙΠ|ΛΑΜΠΙΔ|ΛΕΧ|Μ|ΠΑΤ|Ρ|Λ|ΜΕΔ|ΜΕΣΑΖ|ΥΠΟΤΕΙΝ|ΑΜ|ΑΙΘ|ΑΝΗΚ|ΔΕΣΠΟΖ|ΕΝΔΙΑΦΕΡ|ΔΕ|ΔΕΥΤΕΡΕΥ|ΚΑΘΑΡΕΥ|ΠΛΕ|ΤΣΑ)$/; + exept16 = /(ΠΟΔΑΡ|ΒΛΕΠ|ΠΑΝΤΑΧ|ΦΡΥΔ|ΜΑΝΤΙΛ|ΜΑΛΛ|ΚΥΜΑΤ|ΛΑΧ|ΛΗΓ|ΦΑΓ|ΟΜ|ΠΡΩΤ)$/; + + if((exept15.test(w)) || (exept16.test(w))) { + w = w + "ΟΥΣ"; + } + } + + re = /^(.+?)(ΑΓΑ|ΑΓΕΣ|ΑΓΕ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept17 = /^(ΨΟΦ|ΝΑΥΛΟΧ)$/; + exept20 = /(ΚΟΛΛ)$/; + exept18 = /^(ΑΒΑΣΤ|ΠΟΛΥΦ|ΑΔΗΦ|ΠΑΜΦ|Ρ|ΑΣΠ|ΑΦ|ΑΜΑΛ|ΑΜΑΛΛΙ|ΑΝΥΣΤ|ΑΠΕΡ|ΑΣΠΑΡ|ΑΧΑΡ|ΔΕΡΒΕΝ|ΔΡΟΣΟΠ|ΞΕΦ|ΝΕΟΠ|ΝΟΜΟΤ|ΟΛΟΠ|ΟΜΟΤ|ΠΡΟΣΤ|ΠΡΟΣΩΠΟΠ|ΣΥΜΠ|ΣΥΝΤ|Τ|ΥΠΟΤ|ΧΑΡ|ΑΕΙΠ|ΑΙΜΟΣΤ|ΑΝΥΠ|ΑΠΟΤ|ΑΡΤΙΠ|ΔΙΑΤ|ΕΝ|ΕΠΙΤ|ΚΡΟΚΑΛΟΠ|ΣΙΔΗΡΟΠ|Λ|ΝΑΥ|ΟΥΛΑΜ|ΟΥΡ|Π|ΤΡ|Μ)$/; + exept19 = /(ΟΦ|ΠΕΛ|ΧΟΡΤ|ΛΛ|ΣΦ|ΡΠ|ΦΡ|ΠΡ|ΛΟΧ|ΣΜΗΝ)$/; + + if(((exept18.test(w)) || (exept19.test(w))) && !((exept17.test(w)) || (exept20.test(w)))) { + w = w + "ΑΓ"; + } + } + + re = /^(.+?)(ΗΣΕ|ΗΣΟΥ|ΗΣΑ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept21 = /^(Ν|ΧΕΡΣΟΝ|ΔΩΔΕΚΑΝ|ΕΡΗΜΟΝ|ΜΕΓΑΛΟΝ|ΕΠΤΑΝ)$/; + + if(exept21.test(w)) { + w = w + "ΗΣ"; + } + } + + re = /^(.+?)(ΗΣΤΕ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept22 = /^(ΑΣΒ|ΣΒ|ΑΧΡ|ΧΡ|ΑΠΛ|ΑΕΙΜΝ|ΔΥΣΧΡ|ΕΥΧΡ|ΚΟΙΝΟΧΡ|ΠΑΛΙΜΨ)$/; + + if(exept22.test(w)) { + w = w + "ΗΣΤ"; + } + } + + re = /^(.+?)(ΟΥΝΕ|ΗΣΟΥΝΕ|ΗΘΟΥΝΕ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept23 = /^(Ν|Ρ|ΣΠΙ|ΣΤΡΑΒΟΜΟΥΤΣ|ΚΑΚΟΜΟΥΤΣ|ΕΞΩΝ)$/; + + if(exept23.test(w)) { + w = w + "ΟΥΝ"; + } + } + + re = /^(.+?)(ΟΥΜΕ|ΗΣΟΥΜΕ|ΗΘΟΥΜΕ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + test1 = false; + + exept24 = /^(ΠΑΡΑΣΟΥΣ|Φ|Χ|ΩΡΙΟΠΛ|ΑΖ|ΑΛΛΟΣΟΥΣ|ΑΣΟΥΣ)$/; + + if(exept24.test(w)) { + w = w + "ΟΥΜ"; + } + } + + re = /^(.+?)(ΜΑΤΑ|ΜΑΤΩΝ|ΜΑΤΟΣ)$/; + re2 = /^(.+?)(Α|ΑΓΑΤΕ|ΑΓΑΝ|ΑΕΙ|ΑΜΑΙ|ΑΝ|ΑΣ|ΑΣΑΙ|ΑΤΑΙ|ΑΩ|Ε|ΕΙ|ΕΙΣ|ΕΙΤΕ|ΕΣΑΙ|ΕΣ|ΕΤΑΙ|Ι|ΙΕΜΑΙ|ΙΕΜΑΣΤΕ|ΙΕΤΑΙ|ΙΕΣΑΙ|ΙΕΣΑΣΤΕ|ΙΟΜΑΣΤΑΝ|ΙΟΜΟΥΝ|ΙΟΜΟΥΝΑ|ΙΟΝΤΑΝ|ΙΟΝΤΟΥΣΑΝ|ΙΟΣΑΣΤΑΝ|ΙΟΣΑΣΤΕ|ΙΟΣΟΥΝ|ΙΟΣΟΥΝΑ|ΙΟΤΑΝ|ΙΟΥΜΑ|ΙΟΥΜΑΣΤΕ|ΙΟΥΝΤΑΙ|ΙΟΥΝΤΑΝ|Η|ΗΔΕΣ|ΗΔΩΝ|ΗΘΕΙ|ΗΘΕΙΣ|ΗΘΕΙΤΕ|ΗΘΗΚΑΤΕ|ΗΘΗΚΑΝ|ΗΘΟΥΝ|ΗΘΩ|ΗΚΑΤΕ|ΗΚΑΝ|ΗΣ|ΗΣΑΝ|ΗΣΑΤΕ|ΗΣΕΙ|ΗΣΕΣ|ΗΣΟΥΝ|ΗΣΩ|Ο|ΟΙ|ΟΜΑΙ|ΟΜΑΣΤΑΝ|ΟΜΟΥΝ|ΟΜΟΥΝΑ|ΟΝΤΑΙ|ΟΝΤΑΝ|ΟΝΤΟΥΣΑΝ|ΟΣ|ΟΣΑΣΤΑΝ|ΟΣΑΣΤΕ|ΟΣΟΥΝ|ΟΣΟΥΝΑ|ΟΤΑΝ|ΟΥ|ΟΥΜΑΙ|ΟΥΜΑΣΤΕ|ΟΥΝ|ΟΥΝΤΑΙ|ΟΥΝΤΑΝ|ΟΥΣ|ΟΥΣΑΝ|ΟΥΣΑΤΕ|Υ|ΥΣ|Ω|ΩΝ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "ΜΑ"; + } + + if((re2.test(w)) && (test1)) { + var fp = re2.exec(w); + stem = fp[1]; + w = stem; + + } + + re = /^(.+?)(ΕΣΤΕΡ|ΕΣΤΑΤ|ΟΤΕΡ|ΟΤΑΤ|ΥΤΕΡ|ΥΤΑΤ|ΩΤΕΡ|ΩΤΑΤ)$/; + + if(re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem; + } + + return w; +}; + +var greekStemmer = function (token) { + return token.update(function (word) { + return stemWord(word); + }) +} + +var idx = lunr(function () { + this.field('title') + this.field('excerpt') + this.field('categories') + this.field('tags') + this.ref('id') + + this.pipeline.remove(lunr.trimmer) + this.pipeline.add(greekStemmer) + this.pipeline.remove(lunr.stemmer) + + for (var item in store) { + this.add({ + title: store[item].title, + excerpt: store[item].excerpt, + categories: store[item].categories, + tags: store[item].tags, + id: item + }) + } +}); + +$(document).ready(function() { + $('input#search').on('keyup', function () { + var resultdiv = $('#results'); + var query = $(this).val().toLowerCase(); + var result = + idx.query(function (q) { + query.split(lunr.tokenizer.separator).forEach(function (term) { + q.term(term, { boost: 100 }) + if(query.lastIndexOf(" ") != query.length-1){ + q.term(term, { usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING, boost: 10 }) + } + if (term != ""){ + q.term(term, { usePipeline: false, editDistance: 1, boost: 1 }) + } + }) + }); + resultdiv.empty(); + resultdiv.prepend('

'+result.length+' Result(s) found

'); + for (var item in result) { + var ref = result[item].ref; + if(store[ref].teaser){ + var searchitem = + '
'+ + '
'+ + '

'+ + ''+store[ref].title+''+ + '

'+ + '
'+ + ''+ + '
'+ + '

'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...

'+ + '
'+ + '
'; + } + else{ + var searchitem = + '
'+ + '
'+ + '

'+ + ''+store[ref].title+''+ + '

'+ + '

'+store[ref].excerpt.split(" ").splice(0,20).join(" ")+'...

'+ + '
'+ + '
'; + } + resultdiv.append(searchitem); + } + }); +}); diff --git a/docs/assets/js/lunr/lunr-store.js b/docs/assets/js/lunr/lunr-store.js new file mode 100644 index 0000000000..c7c397bd49 --- /dev/null +++ b/docs/assets/js/lunr/lunr-store.js @@ -0,0 +1,1375 @@ +var store = [{ + "title": "ICCCN 2012", + "excerpt":"2012 21st International Conference on Computer Communications and Networks (ICCCN) Proceedings Context-Driven Resource Over-Provisioning Approach for Rich Networking J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain) E. Cruz (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) S. Sargento (Institute of...","categories": [], + "tags": ["en","events","networks","papers","research"], + "url": "/icccn12/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE LATINCOM 2012", + "excerpt":"2012 IEEE Latin-America Conference on Communications Proceedings Applying advanced network resource provisioning in future internet systems S. Jardim (Informatics Institute, Federal University of Goiás, Goiânia, Brazil) A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain) E. Cerqueira (Computer Engineering, Federal University...","categories": [], + "tags": ["en","events","networks","papers","research"], + "url": "/latincom12/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "NETWORKS 2012", + "excerpt":"2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) Proceedings Applying over-provisioning centric resource control in context-sensitive networks J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain) E. Cruz (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil) S. Sargento (Institute...","categories": [], + "tags": ["en","events","networks","papers","research"], + "url": "/networks12/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "ICNC 2013", + "excerpt":"2013 International Conference on Computing, Networking and Communications (ICNC) Proceedings Advanced resource provisioning in context-sensitive converged networks Jose Castillo Lema (Universidade da Coruña, Spain) Elifanio Cruz (Federal University of Ceará, Brazil) Augusto Jose Venancio Neto (Universidade Federal do Rio Grande do Norte, Brazil) Eduardo Cerqueira (Federal University of Para, Brazil)...","categories": [], + "tags": ["en","events","networks","papers","research"], + "url": "/icnc13/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE ISCC 2013", + "excerpt":"2013 IEEE Symposium on Computers and Communications (ISCC) Proceedings Over-provisioning centric network resource control in Future Internet systems Sandino Jardim (Federal University of Goias, Brazil) Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) Jose Castillo Lema (Universidade da Coruña, Spain) Eduardo Cerqueira (Federal University...","categories": [], + "tags": ["en","events","networks","papers","research"], + "url": "/iscc13/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE GLOBECOM 2013", + "excerpt":"Globecom 2013 Workshop - Management of Emerging Networks and Services Program Program Hybrid Framework for Scalable Resource Control in Multi-ingress Networks Sandino Jardim (Federal University of Goias, Brazil) Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil) Jose Castillo Lema (Universidade da Coruña, Spain) Evariste...","categories": [], + "tags": ["en","events","networks","papers","research"], + "url": "/globecom13/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "SBRC/WPEIF 2014", + "excerpt":"XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro Proceedings Quality-oriented Mobility Control Architecture for ETArch Handover Optimization Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) José Castillo Lema...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/sbrc14/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE ISCC 2014", + "excerpt":"The nineteenth IEEE Symposium on Computers And Communications Program Entity Title Architecture Extensions Towards Advanced Quality-oriented Mobility Control Capabilities Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain) Augusto Jose...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/iscc14/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AITC 2014", + "excerpt":"The Tenth Advanced International Conference on Telecommunications Program Evolving Future Internet Clean-Slate Entity Title Architecture with Quality-Oriented Control Plane Extensions José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain) Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) Augusto...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/aict14/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Evolving Future Internet clean-slate ETArch with QoS control-plane extensions", + "excerpt":"Biblioteca Digital Brasileira de Teses e Dissertações Cite this APA Lema, J. C. (2014). Evolving Future Internet clean-slate Entity Title Architecture with quality-oriented control-plane extensions. Chicago Lema, José Castillo. Evolving Future Internet Clean-slate Entity Title Architecture With Quality-oriented Control-plane Extensions. 2014. MLA Lema, José Castillo. Evolving Future Internet Clean-slate Entity...","categories": [], + "tags": ["en","networks","papers","research","sdn"], + "url": "/mdthesis/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Support of Mobile Sessions with High Transport Network Resource Demand", + "excerpt":"smart-OF-controller This project aims to design and develop a clean-slate Future Internet framework called SMART (Support of Mobile Sessions with High Transport Network Resource Demand). In this framework, Software-Defined Networking mechanisms will be applied and fitted in vital aspects of the RNP (Brazilian National Research and Education Network) infrastructure, to...","categories": [], + "tags": ["en","networks","papers","research","sdn"], + "url": "/smart/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE HealthCom 2014", + "excerpt":"2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) Proceedings Software defined eHealth networking towards a truly mobile and reliable system Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil) José Castillo Lema (Universidade Federal do Rio Grande...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/healthcom14/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Smart Campus SP", + "excerpt":"Smart Campus SP SmartCampus is a FI-Ware software prototype to measure the contamination levels in the University of São Paulo (USP) Campus with a group of Android, Arduino and Galileo sensors. Below you can find a diagram of all the system components and a brief explanation of their functions. The...","categories": [], + "tags": ["en","fiware","iot"], + "url": "/smartcampus/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE GLOBECOM 2014", + "excerpt":"Global Communications Conference 2014 Proceedings Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems José Castillo - Federal University of Rio Grande do Norte (UFRN), Brazil Augusto Neto - Federal University of Rio Grande do Norte (UFRN), Brazil Flavio Silva -...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/globecom14/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "ICWN 2015", + "excerpt":"The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing Agenda Infrastructured Mobility Management Approach for Future Internet ETArch Networks Felipe Sampaio Dantas da Silva, Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil Augusto J. Venancio Neto, Federal University of Rio Grande do...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/icwn15/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "LANOMS 2015", + "excerpt":"8th Latin American Network Operations and Management Symposium Agenda SDN-based Control Plane Extensions for Mobility Management Improvement in Future Internet Networks Felipe Sampaio Dantas da Silva, Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil Augusto J. Venancio Neto, Federal University of Rio Grande do Norte,...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/lanoms15/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "MSWiM 2015", + "excerpt":"The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems Agenda Network-Initiated Quality-oriented Mobility Management Approach for Next Generation ETArch Networks Felipe Sampaio Dantas da Silva, Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil Augusto J. Venancio Neto, Federal University...","categories": [], + "tags": ["en","events","networks","papers","research","sdn"], + "url": "/mswim15/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Full Stack Developer - Microservices, Cloud e IoT (SCJ)", + "excerpt":" Arquitetura e Desenvolvimento Java com IoT Arquitetura e Desenvolvimento Java de Alta Disponibilidade para Cloud Computing Arquitetura e Infraestrutura de Cloud Computing e Internet das Coisas Cloud Development Desenvolvimento de aplicações usando Cloud Computing ","categories": [], + "tags": ["aws","azure","classes","fiap","pt"], + "url": "/fiap-scj/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Computer Networks - Volume 107", + "excerpt":"Volume 107, Part 2, Pages 270-291 An innovative software-defined WiNeMO architecture for advanced QoS-guaranteed mobile service transport Felipe S. Dantas Silva Augusto Venâncio Netob Douglas Maciel José Castillo-Lema Flávio Silva Pedro Frosi Eduardo Cerqueira. Cite this ACM Felipe S. Dantas Silva, Augusto Venâncio Neto, Douglas Maciel, José Castillo-Lema, Flávio Silva,...","categories": [], + "tags": ["en","networks","papers","research","sdn"], + "url": "/computer-networks/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Mobile Development (MOB)", + "excerpt":" Cloud Foundation DevOps & Cloud Oriented Architecture Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing ","categories": [], + "tags": ["aws","azure","classes","fiap","pt"], + "url": "/fiap-mob/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 1st edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-01/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP Corporate", + "excerpt":" Citibank: Internet of Things (2017) Gerdau: Internet of Things (2017) Ambev: Computers Networks and Cloud Computing (2018) T-Systems: Internet of Things (2018) CCR: Multicloud Architecture (2021) ","categories": [], + "tags": ["aws","azure","classes","fiap","iot","networks","pt"], + "url": "/fiap-corporate/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 2nd edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-02/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "PUC-SP Cursos de extensão - Internet das Coisas", + "excerpt":" ","categories": [], + "tags": ["classes","iot","pt"], + "url": "/puc/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "APICON 2017 - IoT HandsOn Lab", + "excerpt":"API Connect Conference 2017 ","categories": [], + "tags": ["events","iot","pt"], + "url": "/apicon/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 3rd edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-03/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 4th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-04/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 5th/6th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-05/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 7th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-07/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 8th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-08/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Ultra Challenge Saint-Gobain", + "excerpt":" ","categories": [], + "tags": ["events","hackathon","iot","pt","youtube"], + "url": "/saint-gobain-ultrachallenge/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 9th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-09/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Futurecom 2017 - Tour IoT", + "excerpt":" ","categories": [], + "tags": ["events","iot","pt"], + "url": "/futurecom17/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 10th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-10/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "[PT] Terraform – IaC – Terraformando no OpenStack", + "excerpt":"Originally published at Churrops on DevOps on November 26, 2017. Olá pessoal, vamos começar uma uma série de artigos sobre OpenStack dando continuidade aos artigos sobre Terraform (parte 1 e parte 2) do Rodrigo Floriano, pois é uma ferramenta que vários assíduos do blog já conhecem e usam a diário!...","categories": [], + "tags": ["openstack","iac","terraform","pt","redhat","series"], + "url": "/terraformando-openstack/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "[PT] Heat - Introdução", + "excerpt":"Originally published at Churrops on DevOps on December 20, 2017. Olá pessoal, vamos começar uma série de artigos sobre Heat, o “terraform” nativo do OpenStack, ou para quem vem do mundo da AWS, o CloudFormation do OpenStack (inclusive parcialmente compatível). Neste primeiro artigo introdutório vamos aprender a criar as nossas...","categories": [], + "tags": ["iac","openstack","pt","redhat","series"], + "url": "/heat-introducao/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 11th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-11/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Cloud Computing (CLD)", + "excerpt":" BootCamp OpenStack Implementação de Cloud Implementação OpenStack Soluções MultiCloud ","categories": [], + "tags": ["classes","fiap","openstack","pt"], + "url": "/fiap-cld/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 12th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-12/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series I: Keystone - Identity Manager", + "excerpt":"Serie de artigos sobre OpenStack. Lab 1 - OpenStack Keystone Identity Manager Usaremos o serviço Keystone para aprender alguns conceitos importantes de autenticação/autorização de usuários: projetos róis quotas endpoints Pre-reqs Listar os serviços Linux que compõem o Keystone: $ systemctl | grep devstack@keystone devstack@keystone.service loaded active running Devstack devstack@keystone.service Conferir...","categories": [], + "tags": ["classes","fiap","openstack","pt","redhat","series"], + "url": "/openstack1-keystone/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series II: Glance - Image Service", + "excerpt":"Serie de artigos sobre OpenStack. Lab 2 - OpenStack Glance Image Service Usaremos o serviço Glance para aprender alguns conceitos importantes de imagens/snapshots de máquinas virtuais: formatos: qcow2, raw, vmdk, ami, … conversão entre formatos: ferramenta qemu-img snapshots Pre-reqs Carregar as credenciais de administrador e conferir que foram aplicadas no...","categories": [], + "tags": ["classes","fiap","openstack","pt","redhat","series"], + "url": "/openstack2-glance/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series III: Nova - Compute Service", + "excerpt":"Serie de artigos sobre OpenStack. Lab 3 - OpenStack Nova Compute Service Usaremos o serviço Nova para aprender alguns conceitos importantes sobre máquinas virtuais: flavors security groups cloud-init Pre-reqs Conferir se as extensões de virtualizações estão presentes no processador: $ grep -E ' svm | vmx ' /proc/cpuinfo Listar os...","categories": [], + "tags": ["classes","fiap","openstack","pt","redhat","series"], + "url": "/openstack3-nova/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCNA-HNTD Training - 13th edition", + "excerpt":" ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hntd-13/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Red Hat Academy", + "excerpt":"Benefícios Aproveite os descontos (voucher 50% off) nos exames de certificação. Escolha o estilo de aprendizado ideal para você dentre os nossos vários formatos de material didático. Adquiria uma experiência valiosa com os ambientes de laboratório hands-on. Conecte-se com outros estudantes e os instrutores da Red Hat que fazem parte...","categories": [], + "tags": ["cert","classes","fiap","openshift","openstack","pt","redhat"], + "url": "/redhat-academy/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series IV: Neutron - Network Service", + "excerpt":"Serie de artigos sobre OpenStack. Lab 4 - OpenStack Neutron Network Service Usaremos o serviço Neutron para aprender alguns conceitos importantes sobre virtualização de redes: criação de redes/subredes virtuais virtual routers security groups floating IPs Pre-reqs Carregar as credenciais de OpenStack: $ source devstack/openrc admin WARNING: setting legacy OS_TENANT_NAME to...","categories": [], + "tags": ["classes","fiap","networks","openstack","pt","redhat","sdn","series"], + "url": "/openstack4-neutron/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series V: Cinder - Block Storage Service", + "excerpt":"Serie de artigos sobre OpenStack. Lab 5 - OpenStack Cinder Block Storage Service Usaremos o serviço Cinder para aprender alguns conceitos importantes sobre armazenamento de bloco: criação de volumes snapshots partição, formatação e montagem de volumes Pre-reqs Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: $...","categories": [], + "tags": ["classes","fiap","openstack","pt","redhat","sds","series"], + "url": "/openstack5-cinder/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series VI: Swift - Object Storage Service", + "excerpt":"Serie de artigos sobre OpenStack. Lab 6 - OpenStack Swift Object Storage Service Usaremos o serviço Swift para aprender alguns conceitos importantes sobre armazenamento de objeto: criação de containers objetos acesso via URL Pre-reqs Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: $ source devstack/openrc admin...","categories": [], + "tags": ["classes","fiap","openstack","pt","redhat","sds","series"], + "url": "/openstack6-swift/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series VII: Heat - Orchestration Service", + "excerpt":"Serie de artigos sobre OpenStack. Lab 7 - OpenStack Heat Orchestration Service Usaremos o serviço Heat para aprender alguns conceitos importantes sobre orquestração e Infrastructure as Code (IaC): criação de pilhas (stacks) listagem de recursos Pre-reqs Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: $ source...","categories": [], + "tags": ["classes","fiap","iac","openstack","pt","redhat","series"], + "url": "/openstack7-heat/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack series VIII: Terraform", + "excerpt":"Serie de artigos sobre OpenStack. Lab 8 - Terraform OpenStack Provider O Terraform é uma ferramenta para construir, alterar e controlar a infraestrutura de forma segura e eficiente. O Terraform pode gerenciar provedores de serviços existentes e populares como OpenStack, Azure, AWS, Digital Ocean, entre outras, bem como soluções internas...","categories": [], + "tags": ["classes","fiap","iac","openstack","pt","redhat","series","terraform"], + "url": "/openstack8-terraform/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack Day SP 2018", + "excerpt":"IPv6 no OpenStack ","categories": [], + "tags": ["events","openstack","pt","youtube"], + "url": "/openstackday/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Webinar Mandic Cloud - IPv6 no OpenStack", + "excerpt":" ","categories": [], + "tags": ["events","pt","webinar"], + "url": "/mandic-webinar/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei ICT Competition Brazil 2018-2019", + "excerpt":"A Huawei University promove pela primeira vez no Brasil o ICT Competition, um campeonato mundial promovido anualmente pela companhia para estudantes de TIC – Tecnologia da Informação e Comunicação . Com a participação de mais de 50 países, o programa deve receber mais de 80 mil alunos de cerca de...","categories": [], + "tags": ["classes","huawei","networks","pt"], + "url": "/ict-competition/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Converting ETSI NFV templates into TOSCA profile", + "excerpt":"etsi2tosca Converts ETSI NFV templates into TOSCA profile. Use Usage: etsi2tosca FILE Converts ETSI NFV templates into TOSCA profile Options: -h, --help show this help message and exit Examples Example 1: $ ./etsi2tosca.py samples/opencv_transcoder_vnfd.yaml tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0 description: OpenCV Transcoder VNF metadata: template_name: opencv_transcoder_vnf topology_template: inputs: ssh-hostname: type: string default: <rw_mgmt_ip>...","categories": [], + "tags": ["en","networks","nfv"], + "url": "/etsi2tosca/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Arquitetura de Soluções (ASO)", + "excerpt":" Arquitetura de Storage / DataCenter / Virtualização e Microcontainers Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) ","categories": [], + "tags": ["aws","azure","classes","fiap","openshift","pt"], + "url": "/fiap-aso/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series I: Docker", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 1 - Docker Usaremos a imagem oficial Ubuntu Linux 18.04 ou Amazon Linux para aprender alguns conceitos importantes do Docker: instalação customização de imagens via Dockerfile upload de imagens no DockerHub Vamos trabalhar com dois terminais abertos...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers1-docker/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series II: Docker - continuação", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 2 - Docker - continuação Executando mysql server Usaremos a imagem oficial mysql para aprender alguns conceitos importantes do Docker: variáveis de entorno: docker run -e mapeamento de portas: docker run -p persistência de dados: docker run...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers2-docker2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series III: Docker Compose", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 3 - Docker Compose Executando servicos Docker Compose permite definir serviços (que a sua vez são formados por containers) e a comunicação entre os mesmos. Esta comunicação é implementada via DNS nos containers. Além disso, no arquivo...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers3-docker-compose/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series IV: Docker Swarm", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 4 - Docker Swarm Orquestrando containers Docker Swarm permite orquestrar containers em um cluster formado por vários servidores. De esta forma conseguimos garantir as seguintes propriedades nos containers gerenciados pelo orquestrador: tolerância a falhas: se um dos...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers4-docker-swarm/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series V: Kubernetes - Instalação", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 5 - Kubernetes - Instalação Orquestrando containers Kubernetes (k8s), da mesma forma que o Docker Swarm, permite orquestrar containers em um cluster formado por vários servidores. De esta forma conseguimos garantir as seguintes propriedades nos containers gerenciados...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers5-k8s-install/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series VI: Kompose", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 6 - Kompose Kompose permite importar templates do Docker Swarm no Kubernetes. Instalação Instalação do Kompose a. Obtenção do executável: $ curl -L https://github.com/kubernetes/kompose/releases/download/v1.17.0/kompose-linux-amd64 -o kompose % Total % Received % Xferd Average Speed Time Time Time...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers6-kompose/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Containers series VII: Kubernetes - Uso", + "excerpt":"Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). Lab 7 - Kubernetes - Uso Orquestrando containers Existem vários recursos dentro de um cluster Kubernetes: pod: conjunto de um ou mais containers service: cria um endpoint para acessar os pods de uma determinada app deployment: define as...","categories": [], + "tags": ["classes","fiap","iac","openshift","pt","redhat","series"], + "url": "/containers7-k8s-use/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Locust CCN client", + "excerpt":" locust-ccnclient A Locust CCN client compatible with ccn-lite. It allows the execution of load test experiments againts a CCN network. ","categories": [], + "tags": ["ccn","en","networks"], + "url": "/locust-ccnclient/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Arquitetura e Desenvolvimento na Plataforma .NET (NET)", + "excerpt":" Arquitetura Windows Azure Services Gestão de Configuração - ALM e DevOps ","categories": [], + "tags": ["azure","classes","fiap","pt"], + "url": "/fiap-net/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Big Data (Data Science) (BDT)", + "excerpt":" Cloud Computing Fast Data & Microservices Internet das Coisas Microserviços ","categories": [], + "tags": ["aws","classes","fiap","iot","openshift","pt"], + "url": "/fiap-bdt/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Zabbix templates for OpenStack", + "excerpt":"zabbix-for-openstack Ansible playbook for installing Zabbix and its templates for OpenStack (through Zabbix user parameters). In the following screenshot you can see the final result: As you can see, hosts are segregated by groups (controllers, compute, ceph, external Horizon, IdM, storage, etc.), and the items we monitore in each group...","categories": [], + "tags": ["ansible","monitoring","openstack","pt","redhat"], + "url": "/zabbix-openstack/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Educate", + "excerpt":"Recursos e benefícios Acesso ao AWS Educate Student Portal. Accesso ao console AWS com 50$ de créditos e labs online. Cloud Career Pathways: Explore trajetórias profissionais na nuvem para saber mais sobre as principais competências de nuvem nas carreiras de tecnologia mais procuradas. Desde Cientista de machine learning até Desenvolvedor...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/aws-educate/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "SBRC/WPEIF 2019", + "excerpt":"XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro Proceedings Network Function Virtualization in Content-Centric Networks José Castillo Lema, Universidade de São Paulo, Brazil Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil Flavio de Oliveira Silva,...","categories": [], + "tags": ["ccn","en","events","networks","nfv","research","papers"], + "url": "/sbrc19/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "11a Semana de TI da Sumaré", + "excerpt":"Agenda ","categories": [], + "tags": ["events","pt"], + "url": "/sumare/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Blockchain Development & Technologies (BLC)", + "excerpt":" DevOps & Cloud Oriented Architecture ","categories": [], + "tags": ["aws","azure","classes","fiap","pt"], + "url": "/fiap-blc/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IEEE NetSoft/S4SI 2019", + "excerpt":"IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures Agenda Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping José Castillo Lema, Universidade de São Paulo, Brazil Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil Flavio de...","categories": [], + "tags": ["en","events","networks","nfv","papers","research","sdn"], + "url": "/netsoft19/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Engenharia de Software - Online (AOJO)", + "excerpt":" Fase 4: Data Analytics Data Engineering (Big Data & Analytics) Cloud Computing & SRE Leadership and Corporate Accountability ","categories": [], + "tags": ["aws","azure","classes","fiap","pt"], + "url": "/fiap-aojo/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "A generic NFV MANO for Content-Centric Networks", + "excerpt":"Biblioteca Digital de Teses e Dissertações da USP Cite this ISO CASTILLO LEMA, José. A generic network function virtualization manager and orchestrator for content-centric networks [doi:10.11606/T.3.2019.tde-23102019-120559]. São Paulo : Escola Politécnica, Universidade de São Paulo, 2019. Tese de Doutorado em Sistemas Eletrônicos. [acesso 2020-06-01]. ABNT CASTILLO LEMA, José. A generic...","categories": [], + "tags": ["ccn","en","networks","nfv","papers","research"], + "url": "/thesis/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Kuryr on OpenStack", + "excerpt":"Kuryr is Kubernetes Container Network Interface (CNI) for OpenStack, supported from OpenStack side from Red Hat OpenStack 13, for OpenShift 3.11 and for OpenShift 4.2 and above. If you are interested on checking the performance impact, check the post Accelerate your OpenShift Network Performance on OpenStack with Kuryr from the...","categories": [], + "tags": ["en","networks","openshift","openstack","redhat"], + "url": "/kuryr/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Artificial Intelligence & Machine Learning (IA)", + "excerpt":" Princípios de Robótica e IoT ","categories": [], + "tags": ["classes","fiap","iot","pt"], + "url": "/fiap-ia/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA ON Live - 1ASO - Fase 3 - Cloud", + "excerpt":" ","categories": [], + "tags": ["events","fiap","pt","webinar"], + "url": "/fiapon-live-1aso/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "ComputeHCISriov role for Director/TripleO", + "excerpt":"Hyper-converged SR-IOV role for compute nodes. Change 700887 proposed and merged upstream: https://review.opendev.org/#/c/700887/ ############################################################################### # Role: ComputeHCISriov # ############################################################################### - name: ComputeHCISriov description: | Compute Node with SR-IOV role hosting Ceph OSD too networks: - InternalApi - Tenant - Storage - StorageMgmt - Management default_route_networks: ['Management'] disable_upgrade_deployment: True RoleParametersDefault: TunedProfileName:...","categories": [], + "tags": ["en","nfv","openstack","redhat"], + "url": "/computehcisriov-role/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Open Networking Foundation", + "excerpt":"Open Networking Foundation The Open Networking Foundation (ONF) is a non-profit operator led consortium driving transformation of network infrastructure and carrier business models. We are an open, collaborative, community of communities. The ONF serves as the umbrella for a number of projects building solutions by leveraging network disaggregation, white box...","categories": [], + "tags": ["en","networks","nfv","onf","sdn"], + "url": "/onf/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series I: Elastic Computing (EC2)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 1 - AWS EC2 Criando a instancia Usaremos a imagem oficial Amazon Linux para aprender alguns conceitos importantes do Amazon Elastic Computing: flavors security groups cloud-init Acessar o serviço EC2: Lançar o assistente de criaçao de instancias: Escolher a imagem do Amazon...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws1-ec2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenShift 4.3 on RHOSP 13: Installation and Integrations", + "excerpt":"I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octavia TBD). Prerequisites This was not a disconnected environment. Note that virtual machines have to be born with proper DNS configuration for OpenShift to download proper CoreOS images...","categories": [], + "tags": ["en","openstack","openshift","redhat"], + "url": "/ocp43-on-rhosp13/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OpenStack Ussuri Contributor List", + "excerpt":" Thanks to the more than 1,000 contributors from more than 50 countries and 188 organizations that contributed to the OpenStack Ussuri release. https://www.openstack.org/software/ussuri/ ","categories": [], + "tags": ["en","nfv","openstack","redhat"], + "url": "/ussuri/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Importing alarms from OpenStack Aodh into Sensu Core", + "excerpt":"aodh2sensu Imports OpenStack Aodh alarms into Sensu Core Server. Install Via requirements file $ pip3 install -r ./requirements.txt Via pipenv pipfile $ pipenv install Use Usage: aodh2sensu.py [options] Imports OpenStack Aodh alarms into Sensu Core Server. Options: -h, --help show this help message and exit --sensu-url URL if not specified,...","categories": [], + "tags": ["en","openstack","monitoring","redhat"], + "url": "/aodh2sensu/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series II: Elastic Block Service (EBS)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 4 - AWS EBS Em este lab sobre Elastic Block Service aprenderemos alguns conceitos importantes do armazenamento em blocos: Criação de volumes Anexar volumes a instâncias Configurar volumes dentro das instâncias Formatação Criação do sistema de arquivos Montar o volume Pre-reqs Na...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws2-ebs/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series III: Simple Storage Service (S3)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 5 - AWS S3 Em este lab sobre Simple Storage Service (S3) aprenderemos alguns conceitos importantes do armazenamento de objetos: Criação de buckets Criação de objetos Controle de permissões de acesso Hospedagem de sites estáticos Criação do bucket Accessar o serviço S3:...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws3-s3/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei Certificate Training Program", + "excerpt":"A Huawei está oferecendo treinamentos digitais gratuitos, trazendo para o Brasil o Huawei Certificate Training Program, um programa de treinamentos para realizar os cursos preparatórios das certificações nível Associate, testes de qualificação e solicitar um voucher para realizar a prova sem custo (que normalmente tem um valor de $200). São...","categories": [], + "tags": ["cert","huawei","networks","pt"], + "url": "/haina-brazil/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series IV: Auto Scaling", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 9 - AWS Autoscaling Usaremos a imagem oficial Amazon Linux para aprender alguns conceitos importantes de autoscaling: launch configuration templates autoscaling groups scaling policies Criando o launch template Acessar o serviço EC2: Criar um novo launch template: Escolher a imagem do Amazon...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws4-autoscaling/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series V: Elastic Container Service (ECS)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 3 - AWS ECS Criando a instância Usaremos a imagem josecastillolema/api hospedada no Docker Hub para aprender alguns conceitos importantes do Elastic Container Service: Deploy de containers no ECS Mapeamento de portas Memory limits Acessar o serviço ECS: Lançar o assistente de...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws5-ecs/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series VII: Elastic Beanstalk (EB)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 6 - AWS Elastic Beanstalk Em este lab sobre Elastic Beanstalk (EB) aprenderemos alguns conceitos importantes da camada de plataforma da AWS: Deploy de aplicações Plataformas/entornos de execução disponíveis Logging Monitoramento Pre-reqs git python3 pip3 Se não tiver os pre-reqs na máquina...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws7-eb/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Academy", + "excerpt":"Benefícios do programa Acesso ao currículo criado pela AWS: O currículo pronto para ensino permite que as instituições membro incorporem a instrução em seu catálogo de cursos. As atualizações regulares da AWS refletem o ritmo da inovação e as melhores práticas da computação em nuvem. Crie habilidades alinhadas à AWS...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/aws-academy/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series VIII: Elastic Beanstalk (EB) com Spring Boot", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 10 - AWS Elastic Beanstalk com Spring Boot Em este lab sobre Elastic Beanstalk (EB) aprenderemos alguns conceitos importantes da camada de plataforma da AWS: Deploy de aplicações Plataformas/entornos de execução disponíveis Logging Monitoramento Deploy local Clonar o repositório: git clone https://github.com/josecastillolema/fiap...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws8-eb-springboot/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series XII: DynamoDB", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 8 - AWS DynamoDB Em este lab sobre DynamoDB aprenderemos alguns conceitos importantes na criação de DBaaS NoSQL: Criação de tabelas Inserção/consulta de dados via console Inserção/consulta via código python Aproveitaremos para ver alguns conceitos importantes sobre Identity and Access Management (IAM):...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws12-dynamodb/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series IX: CodePipeline", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 7 - AWS CP Em este lab sobre Code Pipeline aprenderemos alguns conceitos importantes da criação de pipelines: Criação do pipeline Automação de deploy no Beanstalk Pre-reqs A aplicação do lab de Beanstalk precisa estar no ar: Criação de um repositório no...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws9-cp/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei ICT Academy", + "excerpt":"A Huawei ICT Academy é um programa de parceria sem fins lucrativos que autoriza universidades e faculdades a oferecer cursos de Certificação Huawei para estudantes. Este programa atua como uma ponte entre empresas e academia para construir um ecossistema de talentos para as indústrias de TIC. Desde sua afiliação no...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/haina/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series XIV: Elastic MapReduce (EMR)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 12 - Elastic MapReduce Em este lab sobre EMR aprenderemos alguns conceitos da plataforma de Big Data as a Service da AWS: Criação de cluster Acesso via WEB e SSH/CLI Monitoramento Configuração do serviço Acessar o serviço EMR: Iniciar a criação do...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws14-emr/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series X: API Gateway", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 11 - Amazon API Gateway Em este lab sobre API Gateway aprenderemos alguns conceitos do API gateway da plataforma da AWS: Configuração de rotas Throttling (limitação do número de requisições por segundo) Monitoramento Pre-reqs Dois URLs accessíveis. Por exemplo, dois apps no...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws10-apigw/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series XV: Lambda", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 13 - Amazon Lambda Em este lab sobre Lambda aprenderemos alguns conceitos do modulo de Function as a Service (FaaS) / serverless da plataforma da AWS: Criação de funções Lambda Teste de funções Criação de triggers (via API Gateway) Pre-reqs A seguinte...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws15-lambda/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: Multicloud Architecture", + "excerpt":"A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. Além de ser uma solução inovadora, a Cloud...","categories": [], + "tags": ["aws","classes","fiap","pt"], + "url": "/shift-multicloud/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "My code is open", + "excerpt":" ","categories": [], + "tags": ["redhat"], + "url": "/mycodeisopen/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Webinar: Working with ONF to transform mobile and broadband networks in LATAM 2020", + "excerpt":"Don’t miss this virtual event sponsored by the ONF LATAM Ambassador team. In this webinar you will learn about the Open Networking Foundation (ONF), a non-profit, operator-led consortium that is focused on driving transformation of network infrastructure and carrier business models around the world. The ONF serves as the umbrella...","categories": [], + "tags": ["en","events","networks","nfv","onf","sdn","webinar"], + "url": "/onf-webinar/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Global Certification Challenge", + "excerpt":"A AWS está oferecendo de forma gratuita a certificação AWS Cloud Practitioner, que normalmente tem um valor de $200, como parte da iniciativa AWS re:Invent 2020 durante os meses de outubro e novembro de este ano. Segue o link para a solicitação do voucher, que demora até 3 dias úteis,...","categories": [], + "tags": ["aws","cert","pt"], + "url": "/aws-cert-challenge/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA-Routing & Switching - 14th edition", + "excerpt":" Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online. ","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-14/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "TOTVS TALKS #09 - A computação em nuvem no Brasil", + "excerpt":"O TOTVS TALKS Podcast é uma parceria entre a BandNews FM e a TOTVS. Aqui, você ouve conversas sobre tecnologia – ferramentas, soluções e caminhos; cada mês, um novo assunto. Os episódios novos saem sempre no dia 20 e você encontra o programa no site da BandNews FM e no...","categories": [], + "tags": ["events","podcast","pt"], + "url": "/totvs-talks/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Caio Ferreira - canal de YouTube", + "excerpt":" Gostaria de recomendar o canal de YouTube do meu amigo Caio Ferreria. No canal podem encontrar videos sobre: AWS Fluxos de pagamento Restcomm/Mobicents Parabéns pelo canal Caio! ","categories": [], + "tags": ["aws","networks","pt","youtube"], + "url": "/caio-youtube/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Arquitetura de Soluções - Online (ASOO)", + "excerpt":" Fase 4: On the Clouds Gestão Financeira de TI Bimodal IT & Sourcing Arquitetura em MultiCloud (AWS / Google Cloud / Azure / IBM Cloud) ","categories": [], + "tags": ["aws","azure","classes","fiap","pt"], + "url": "/fiap-asoo/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei Talent: Cadastro na plataforma", + "excerpt":"Para acompanhar os cursos HCIA Routing & Switching, uma vez aprovado no processo seletivo é necessária a criação de uma conta na plataforma Huawei Talent Online. A plataforma on-line da Huawei ICT Academy fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/haina-talent/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 2nd edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Intel Network Builders University", + "excerpt":"Intel® Network Builders University is a comprehensive network functions virtualization (NFV) and software defined networking (SDN) training program. The university includes a broad collection of online content training to help technical professionals in the network industry to improve their knowledge of key Intel® technologies, industry trends, and technical aspects of...","categories": [], + "tags": ["en","networks","nfv","openstack","sdn"], + "url": "/intel-network-builders/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Red Hat Co.Lab: Open Source Stories", + "excerpt":"Na Red Hat, acreditamos no potencial da tecnologia para educar, ensinar, evoluir e transformar o mundo. Foi com esse propósito que a Red Hat, em parceria com a prefeitura de Boston, junto à organização Sociedad Latina, iniciou o projeto Co.Lab com um objetivo: ensinar às crianças e jovens os fundamentos...","categories": [], + "tags": ["iot","pt","redhat"], + "url": "/colab/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Happy new year!", + "excerpt":" ","categories": [], + "tags": ["en","es","redhat","pt"], + "url": "/newyear/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Certified Calico Operator", + "excerpt":"I would like to strongly recomend the Certified Calico Operator: Level 1 course for everyone interested in Kubernetes networking. This free and self-paced course will arm you with the knowledge you need to understand how Kubernetes networking works, how to configure and manage a Calico network, and how to secure...","categories": [], + "tags": ["cert","en","iac","networks","nfv","openshift","sdn"], + "url": "/calico/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: Multicloud Architecture - 2nd edition", + "excerpt":"A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. Além de ser uma solução inovadora, a Cloud...","categories": [], + "tags": ["aws","classes","fiap","pt"], + "url": "/shift-multicloud-2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Aviatrix Certified Engineer - Multicloud", + "excerpt":"I would like to strongly recomend the Aviatrix Certified Engineer - Multi-Cloud Network Associate Course for anyone interested in public cloud networking (in AWS, Azure, GCP and OCI) and multicloud arquitecture. Training and exam are free using code ACEHOLIDAY through February 28th. UPDATE 1: Training and exam are free using...","categories": [], + "tags": ["aws","azure","cert","en","iac","networks","sdn","terraform"], + "url": "/aviatrix/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA 5G - 1st edition", + "excerpt":"PROCESSO SELETIVO PARA CURSO DE FORMAÇÃO HCIA 5G - Turma 01/2021 Oportunidade ímpar à comunidade: formação GRATUITA para certificação em redes 5G. A Coordenação do projeto Instituto Metrópole Digital - UFRN – 5G Training RN abre inscrições para o processo seletivo para participação na primeira turma do curso de formação...","categories": [], + "tags": ["cert","classes","huawei","iot","networks","nfv","pt","sdn"], + "url": "/hcia-5g/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Azure series I: Virtual machines", + "excerpt":"Serie de artigos sobre Microsoft Azure. Lab 1 - Virtual Machines Criando a instancia Usaremos a imagem oficial Ubuntu Server para aprender alguns conceitos importantes de máquinas virtuais: flavors security groups cloud-init Acessar o serviço Virtual machine: Sempre que for criar novos recursos, selecione como subscription Azure for students e...","categories": [], + "tags": ["azure","classes","fiap","pt","series"], + "url": "/azure1-vm/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Azure series II: Containers", + "excerpt":"Serie de artigos sobre Microsoft Azure. Lab 2 - Containers Criando a instância Usaremos a imagem josecastillolema/api hospedada no Docker Hub para aprender alguns conceitos importantes dos Azure Containers: Deploy de containers no Azure Mapeamento de portas Memory limits Acessar o serviço Container Instances: Parametrização da instância: Imagem: josecastillolema/api hospedada...","categories": [], + "tags": ["azure","classes","fiap","pt","series"], + "url": "/azure2-container/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Azure series III: Disks", + "excerpt":"Serie de artigos sobre Microsoft Azure. Lab 2 - Azure Disks Em este lab sobre disks aprenderemos alguns conceitos importantes do armazenamento em bloco: Criação de volumes Anexar volumes a instâncias Configurar volumes dentro das instâncias Formatação Criação do sistema de arquivos Montar o volume Pre-reqs Na maquina virtual do...","categories": [], + "tags": ["azure","classes","fiap","pt","series"], + "url": "/azure3-disk/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP MBA em Engenharia de Dados (ABD)", + "excerpt":" DataBase as a Service - DBaaS ","categories": [], + "tags": ["aws","azure","classes","fiap","pt"], + "url": "/fiap-abd/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series XIII: Relational Database Service (RDS)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 5 - AWS RDS Em este lab sobre Relational Database Service (RDS) aprenderemos alguns conceitos importantes na criação de serviços de DBaaS NoSQL: Criação de instâncias RDS Plataformas/entornos disponíveis Logging Monitoramento Criação da instância RDS Acessar o serviço RDS: Criar um novo...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws13-rds/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Azure series IV: Blob storage", + "excerpt":"Serie de artigos sobre Microsoft Azure. Lab 4 - Blob storage Em este lab sobre Azure Blob Storage aprenderemos alguns conceitos importantes do armazenamento de objetos: Criação de containers Criação de objetos (blobs) Controle de permissões de acesso Hospedagem de sites estáticos Criação do container Accessar o serviço Storage account:...","categories": [], + "tags": ["azure","classes","fiap","pt","series"], + "url": "/azure4-blob/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Azure series V: App services", + "excerpt":"Serie de artigos sobre Microsoft Azure. Lab 5 - App Service Plans Em este lab sobre App Service Plans aprenderemos alguns conceitos importantes da camada de plataforma da Azure: Deploy de aplicações Plataformas/entornos de execução disponíveis Logging Monitoramento Estratégias de release Blue-Green Canary Pre-reqs Uma VM com a imagem Ubuntu...","categories": [], + "tags": ["azure","classes","fiap","pt","series"], + "url": "/azure5-app/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 3rd edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-3/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series VI: CloudFormation", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 14 - AWS CloudFormation Em este lab sobre CloudFormation aprenderemos alguns conceitos importantes do paradigma de Infrastructure as Code (IaC): Criação de stacks Parametrização Monitoramento Criaremos um stack que configura um servidor WordPress. Criação do stack Accessar o serviço CloudFormation e criar...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws6-cloudformation/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA 5G - 2nd edition", + "excerpt":"A Coordenação do projeto IMD/UFRN – 5G Training RN abre inscrições para o processo seletivo para participação na segunda turma do curso de formação HCIA 5G, promovido em parceria entre o IMD e a Huawei Technologies Co. LTD. São 100 vagas disponíveis, gratuito e a distância. Venha obter formação gratuita...","categories": [], + "tags": ["cert","classes","huawei","iot","networks","nfv","pt","sdn"], + "url": "/hcia-5g-2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Azure series VI: Azure Pipeline", + "excerpt":"Serie de artigos sobre Microsoft Azure. Lab 6 - Azure Pipelines Em este lab sobre Azure Pipelines aprenderemos alguns conceitos importantes na criação de pipelines: Criação do pipeline Automação de deploy no Azure Pipelines Pre-reqs Um application service no ar, seguindo os passos do lab 05 - Application Services Criação...","categories": [], + "tags": ["azure","classes","fiap","pt","series"], + "url": "/azure6-pipeline/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Red Hat Summit 2021", + "excerpt":" Chegou o Red Hat Summit 2021, agora em série. Registre-se agora sem custo e aproveite as oportunidades de inovação, colaboração e aprendizagem que só o principal evento de código aberto do mundo pode oferecer. Inscreva-se já: https://red.ht/3vyU5Wv #RHSummit ","categories": [], + "tags": ["ansible","events","openshift","pt","redhat"], + "url": "/rh-summit21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA-Routing & Switching - 15th edition", + "excerpt":"Informamos que estão abertas as inscrições do 15.º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5 até o dia 26/11/2020 às 12h, totalmente gratuito e virtual. As inscrições podem ser realizadas por este link. O curso ocorrerá dos dias 27/03/21...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-15/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Microsoft Azure Virtual Training Days", + "excerpt":"By participating in any of the following Microsoft Virtual Training Days: Microsoft Azure Virtual Training Day: Fundamentals Microsoft Azure Virtual Training Day: Data Fundamentals Microsoft Azure Virtual Training Day: AI Fundamentals You’ll be eligible to take the following certifications exam at no cost: Microsoft Azure Fundamentals (AZ-900) Microsoft Azure Data...","categories": [], + "tags": ["azure","cert","en"], + "url": "/azure-fundamentals/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Confluent Fundamentals Accreditation - Apache Kafka", + "excerpt":"I would like to strongly recomend the Confluent Fundamentals for Apache Kafka® course and Confluent Fundamentals Accreditation certification for anyone interested learning more about the Apache Kafka project. Training and exam certification are free. Course Objectives Gain an understanding of Apache Kafka® and the Confluent Platform Explore use cases Receive...","categories": [], + "tags": ["cert","en","iac","openshift","redhat"], + "url": "/kafka/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Webinar: Working with ONF to transform mobile and broadband networks in LATAM 2021", + "excerpt":"Don’t miss this virtual event sponsored by the ONF CALA Ambassador team. In this webinar you will learn about the Open Networking Foundation (ONF), a non-profit, operator-led consortium that is focused on driving transformation of network infrastructure and carrier business models around the world. The ONF serves as the umbrella...","categories": [], + "tags": ["en","es","events","networks","nfv","onf","pt","sdn","webinar"], + "url": "/onf-webinar-21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "GitLab Certified Associate", + "excerpt":"Usually priced at USD $650 it’s available for free until April 30, 2021. Steps required: Create account on the GitLab Learn platform 1.1 purple login button 1.2 purple signup button Add the associate test pathway to the basket In Payment step apply discount code E6B8A234458AE3D795 Once signed up you have...","categories": [], + "tags": ["cert","en","iac"], + "url": "/gitlab/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Microsoft Power Platform Virtual Training Day", + "excerpt":"By participating in the following Microsoft Virtual Training Days: Microsoft Power Platform Virtual Training Day: Fundamentals You’ll be eligible to take the following certification exam at no cost: Microsoft Certified: Power Platform Fundamentals (PL-900) Power Platform Fundamentals Microsoft Power Platform Virtual Training Day: Fundamentals will cover everything you need to...","categories": [], + "tags": ["azure","cert","en"], + "url": "/power-fundamentals/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Notes for HCIA-IA", + "excerpt":"Some of the notes I prepared studying for the Huawei Certified ICT Associate - Artificial Intelligence (HCIA-IA) exam. Notes Deep learning I used the Coggle platform, a collaborative mind maps & flow charts tool. Huawei Cloud Enterprise Intelligent (EI) Services These were made by my studying collegues using Miro, an...","categories": [], + "tags": ["cert","en","huawei"], + "url": "/hcia-ia-notes/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: Multicloud Architecture - 3rd edition", + "excerpt":"A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. Além de ser uma solução inovadora, a Cloud...","categories": [], + "tags": ["aws","classes","fiap","pt"], + "url": "/shift-multicloud-3/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA-Routing & Switching - 16th edition", + "excerpt":"Informamos que estão abertas as inscrições do 16º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5, totalmente gratuito e virtual. As inscrições podem ser realizadas por este link. Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-16/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Community Builder", + "excerpt":"AWS Community Builders program I am glad to be part of the AWS Community Builders program. The program offers technical resources, mentorship, and networking opportunities to AWS enthusiasts and emerging thought leaders who are passionate about sharing knowledge and connecting with the technical community. Throughout the program, subject matter experts...","categories": [], + "tags": ["aws","en"], + "url": "/aws-community-builder/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "GitOps Summit 2021", + "excerpt":"Virtual Experience June 22, 2021 #GitOpsSummit Cloud native technologies enable organizations to scale rapidly and deliver software faster than ever before. GitOps, operation by pull request, is a powerful developer workflow that enables organizations to unlock the promise of cloud native continuous delivery. The GitOps Summit brings together topflight talent...","categories": [], + "tags": ["en","events"], + "url": "/gitops-summit-21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP Meetup #9 - Kubernetes & Service Mesh", + "excerpt":"Descrição do evento De acordo com o Gartner, mais de 85% das organizações executarão aplicativos em contêineres no Kubernetes até 2025. Por isso alguns profissionais definem que o Kubernetes será o “sistema operacional” da nuvem durante a transformação de aplicações para a Arquitetura de Microsserviços. Práticas DevOps estão sendo adotadas,...","categories": [], + "tags": ["events","fiap","iac","openshift","pt"], + "url": "/fiap-meetup/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "edX: Introduction to Magma", + "excerpt":"Introduction to Magma: Cloud Native Wireless Networking Learn about the Magma project, an open source implementation of a mobile network core. Magma supports diverse radio technologies, including LTE, 5G and WiFi, and is particularly relevant for extending network access into remote, sparsely populated areas. DURATION 10 weeks DEDICATION 1-2 hours...","categories": [], + "tags": ["en","networks","nfv","sdn"], + "url": "/edx-magma/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 4rd edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-4/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Developing", + "excerpt":"Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-dev/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Cognitive Class @ai", + "excerpt":"Cognitive Class @ai is a platform for learning leading-edge technologies: blockchain, data science, AI, Cloud, Serverless, Docker, Kubernetes and more … Earn certificates and badges Free Learning paths Big data fundamentals Data science fundamentals Scala programming for data science Deep learning Hadoop fundamentals Spark fundamentals Containers, k8s and Istio on...","categories": [], + "tags": ["cert","en","iot","networks","openshift"], + "url": "/cognitive-class/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Running FRR in K8s/OpenShift", + "excerpt":"FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. We will be using this FRR image for establishing Bidirectional Forwarding Detection (BFD) sessions. First, let’s define the proper config map: apiVersion: v1 data: daemons: | bgpd=no ospfd=no ospf6d=no ripd=no ripngd=no isisd=no pimd=no ldpd=no...","categories": [], + "tags": ["en","networks","openshift","redhat"], + "url": "/frr-k8s/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Educate: Cadastro na plataforma", + "excerpt":"Para acompanhar alguns cursos da FIAP, uma vez aprovado no processo seletivo é necessária a criação de uma conta na plataforma AWS Educate. A plataforma on-line do AWS Educate fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e acesso ao console AWS...","categories": [], + "tags": ["aws","classes","fiap","pt"], + "url": "/aws-educate-login/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA-Routing & Switching - 17th edition", + "excerpt":"Informamos que estão abertas as inscrições do 17º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5, totalmente gratuito e virtual. As inscrições podem ser realizadas por este link. Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-17/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 5th edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-5/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Linux Foundation Training & Certification courses", + "excerpt":"Linux Foundation Training & Certification provides free online-learning courses on a range of open source topics from Linux to blockchain, networking to cloud, and everything in between. Earn certificates and badges Free Learning path Inclusive Speaker Orientation (LFC101) Inclusive Open Source Community Orientation (LFC102) A Beginner’s Guide to Open Source...","categories": [], + "tags": ["cert","en"], + "url": "/lf-courses/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "PerfConf Fall 2021", + "excerpt":"Proceedings ICNI2 OVN Telco 5G perf/scale There has been an effort in the past months to test OVN Intelligent Container Network Interface 2 (ICNI2) implementations at scale. As part of the testing, FRRouting was used to simulate comercial load balancers and to establish BFD sessions with OVN. The ideia is...","categories": [], + "tags": ["en","events","networks","nfv","openshift","redhat","sdn"], + "url": "/perfcon21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Essentials for Istio by Solo.io", + "excerpt":"Get certified Istio is the most popular service mesh deployed into production across the cloud-native ecosystem, and for good reason. It’s feature rich, open-source, and most importantly, battle proven. Istio provides the foundational pieces to implement zero-trust networking, get deeper observability into a distributed system, and smart routing control for...","categories": [], + "tags": ["cert","en","iac","openshift"], + "url": "/soloio-istio/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Developing - 2nd edition", + "excerpt":"Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-dev-2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Tendências de mercado na área de TIC", + "excerpt":" ","categories": [], + "tags": ["cert","classes","events","huawei","pt","webinar"], + "url": "/tendencias-tic/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "SEMINF 2021: 5G e os impactos na atuação do profisional de TI", + "excerpt":"II SEMANA ACADÊMICA DE INFORMÁTICA - SEMINF 2021 5G E OS IMPACTOS NA ATUAÇÃO DO PROFISSIONAL DE TI A II Semana Acadêmica de Informática - SEMINF 2021 acontecerá nos dias 18 de outubro a 22 de outubro de 2021, na modalidade virtual, tendo como tema: 5G e os Impactos na...","categories": [], + "tags": ["events","networks","pt","webinar"], + "url": "/seminf21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: Multicloud Architecture - 4th edition", + "excerpt":"A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços. Além de ser uma solução inovadora, a Cloud...","categories": [], + "tags": ["aws","classes","fiap","pt"], + "url": "/shift-multicloud-4/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Community Day Brasil 2021", + "excerpt":" Contagem regressiva para o AWS Community Day Brasil 2021, o maior encontro de grupos de usuários AWS do Brasil! 06/11/2021 às 13hs! As inscrições ainda podem ser feitas aquí. ","categories": [], + "tags": ["aws","events","pt","webinar"], + "url": "/aws-community-day-21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Microsoft Ignite Cloud Skills Challenge", + "excerpt":"Complete one challenge and earn a free Microsoft Certification exam. Select one challenge that’s right for you – there are 12 challenges to choose from. Once you complete that challenge you will earn a free Microsoft Certification exam which will get delivered on December 7th, 2021. The challenge ends on...","categories": [], + "tags": ["azure","cert","en","events"], + "url": "/microsoft-ignite/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei ICT Academy Instructor Workshop Brazil 2021", + "excerpt":" No dia 09 de Novembro, será realizado um Worshop ao vivo sobre o programa Huawei ICT Academy, com apresentação de alguns casos de universidades parceiras. Participe e aprenda um pouco mais sobre como podemos trabalhar juntos. ","categories": [], + "tags": ["cert","classes","events","huawei","pt","webinar"], + "url": "/huawey-academy-workshop/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS series XI: Elastic Kubernetes Service (EKS)", + "excerpt":"Serie de artigos sobre Amazon Web Services. Lab 15 - AWS EKS Criando o cluster Vamos criar um cluster Kubernetes gerenciado para aprender alguns conceitos importantes do Elastic Kubernetes Service: Geração do arquivo kubeconfig Uso do cliente kubectl Acessar o serviço EKS: Escolher a opção de criação de um novo...","categories": [], + "tags": ["aws","classes","fiap","pt","series"], + "url": "/aws11-eks/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "PHYSICS EU project", + "excerpt":"The project PHYSICS (oPtimized HYbrid Space-time servIce Continuum in faaS) is a research project funded by the European Union’s Horizon 2020 research and innovation program under grant agreement No. 101017047. The project began in January 2021 with 14 international partners and is scheduled to end in December 2023. Partners include...","categories": [], + "tags": ["en","networks","redhat"], + "url": "/physics/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA-Routing & Switching - 18th edition", + "excerpt":"Informamos que estão abertas as inscrições do 18º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5, totalmente gratuito e virtual. As inscrições podem ser realizadas por este link. Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-18/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei ICT Job Fair Brazil 2021", + "excerpt":" ","categories": [], + "tags": ["cert","classes","events","huawei","pt"], + "url": "/huawey-job-fair-21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Gremlin Certified Chaos Engineering Practitioner (GCCEP)", + "excerpt":"Chaos Engineering continues to grow in popularity and is rapidly becoming a job requirement. To help Engineering and Testing teams meet the need, take a look at Gremlin Chaos Engineering Practitioner Certificate Program! The Certificate Program is now the easiest way to demonstrate your Chaos Engineering expertise and increase your...","categories": [], + "tags": ["cert","en","iac","openshift","redhat"], + "url": "/gremlin-caos/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Open vSwitch and OVN 2021 Fall Conference", + "excerpt":"The Open vSwitch and OVN 2021 Fall Conference will be held online Dec. 7 and 8. Talks will be pre-recorded and played back during the conference. It will be used an online system that allows for text-based discussion and Q&A while the talk is being played. It will also be...","categories": [], + "tags": ["en","events","networks","nfv","openshift","openstack","redhat","sdn"], + "url": "/ovn21/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Certified Calico Operator: eBPF", + "excerpt":"I would like to strongly recomend the Certified Calico Operator: eBPF course for everyone interested in eBPF networking. The new CCO-L2-EBPF (Certified Calico Operator: eBPF) course specifically addresses the strengths of eBPF and when it is, or is not, the right choice. It will also help you see how easy...","categories": [], + "tags": ["cert","en","iac","networks","nfv","openshift","sdn"], + "url": "/calico-ebpf/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "GitOps certified for Argo", + "excerpt":"I would like to strongly recomend the GitOps Fundamentals course for everyone interested in GitOps best practices. After you finish this course you will know the fundamentals of GitOps and have practical knowledge of Argo CD. What the Course Covers What is GitOps and why you should adopt it Benefits...","categories": [], + "tags": ["cert","en","iac","openshift"], + "url": "/gitops-fundamentals/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Istio and Envoy Fundamentals by Tetrate", + "excerpt":"I would like to strongly recomend the Istio Fundamentals and Envoy Fundamentals courses from the Tetrate Academy for everyone interested in service mesh arquitectures. Istio Fundamentals A course that enables users to learn Istio easily with concept text, labs, and quizzes. Istio is an open-source service mesh platform that helps...","categories": [], + "tags": ["cert","en","iac","openshift"], + "url": "/istio-fundamentals/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Happy new year!", + "excerpt":" ","categories": [], + "tags": ["en","es","redhat","pt"], + "url": "/newyear22/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Skill Builder", + "excerpt":"Since October 19th, former aws.training site has moved to AWS Training and Certification’s new learning center, AWS Skill Builder. Besides lots of great material and courses, they offer free AWS Certification Official Practice Question Sets. AWS Certification Official Practice Question Sets feature 20 questions developed by AWS to demonstrate the...","categories": [], + "tags": ["aws","cert","en"], + "url": "/skillbuilder/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Kasten - Kubernetes data protection", + "excerpt":"I would like to strongly recomend the Kasten courses from the Learning.kaste.io platform to everyone interested in Kubernetes data protection. Labs Introductory KubeCon + CloudNativeCon Special Edition Lab Deploy K10 Backup a data service Delete data Recover K10 Module #1 Build your first Kubernetes Cluster Learn Kubernetes Structure Understand abstractions...","categories": [], + "tags": ["cert","en","iac","openshift"], + "url": "/kasten/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Kudos to ExamTopics", + "excerpt":"I have been using the mocks from ExamTopics latelly to prepare to several certification exams and I have to say I found them the best material around. I personally prefer them over exam reviews/practice tests from paid platforms, for the following reasons: the community around free comments for questions: I...","categories": [], + "tags": ["cert","en"], + "url": "/examtopics/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Certification preparation roadmap", + "excerpt":"I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) practice exams. For the practice exams I heavily rely on ExamTopics. AWS Do the corresponding AWS Academy course Do the corresponding...","categories": [], + "tags": ["aws","azure","cert","en","huawei","redhat"], + "url": "/cert-roadmap/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Curso de Especialização - Tecnologias Habilitadoras para Internet do Futuro", + "excerpt":" ","categories": [], + "tags": ["aws","classes","networks","pt","sdn"], + "url": "/maua-sdn/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 6th edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-6/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Developing - 3rd edition", + "excerpt":"Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-dev-3/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "MT101x: Magma Technical Certification Exam", + "excerpt":"The purpose of the Magma certification test is to evaluate the technical abilities of engineers to deploy and operate Magma. The test will consist of 25 questions that will test your knowledge of the three main Magma components: the access gateway, the Orc8r, and the network management system. During this...","categories": [], + "tags": ["cert","en","networks","nfv","sdn"], + "url": "/magma-cert/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Kyverno Fundamentals Certification", + "excerpt":"I would like to strongly recomend the Kyverno Fundamentals Certification course for everyone interested in Kubernetes security. Kyverno is a policy engine designed for Kubernetes. With Kyverno, policies are managed as Kubernetes resources and no new language is required to write policies. This allows using familiar tools such as kubectl,...","categories": [], + "tags": ["cert","en","iac","openshift"], + "url": "/kyverno-fundamentals/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IPT curta duração - Cloud Computing", + "excerpt":"Curso: CLOUD COMPUTING IPT – USP CURSOS DE ESPECIALIZAÇÃO Carga horária: 40 horas Fundamentos de Computação em Nuvem Microsoft Azure, Amazon AWS e outros players IaaS - Infra como Serviço Storage como Serviço Redes em Nuvem Alocação de Recursos Manutenção e Operação – Abordagem Hands-on – – Aulas Síncronas –...","categories": [], + "tags": ["aws","azure","classes","pt"], + "url": "/ipt-cloud/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "LOKI", + "excerpt":" ","categories": [], + "tags": ["es","openshift","openstack","redhat"], + "url": "/loki/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Huawei Routing & Switching vs Datacom", + "excerpt":" Nesta apresentação serão mostradas as diferenças entre a antiga trilha de certificação Routing & Swithing e sua substituta, Datacom. Será um evento online de uma hora de duração e quem realizar a inscrição pelo link receberá um certificado de participação no evento. ","categories": [], + "tags": ["cert","classes","events","huawei","pt","webinar"], + "url": "/huawey-rs-vs-datacom/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Microsoft Certified Trainer (MCT) program", + "excerpt":"Become a Microsoft Certified Trainer Microsoft Certified Trainers (MCTs) are the premier technical and instructional experts in Microsoft technologies. Join this exclusive group of worldwide Microsoft technical training professionals and reap the benefits of MCT training certification and membership. You will get exclusive benefits as an MCT including access to...","categories": [], + "tags": ["azure","cert","en"], + "url": "/mct/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IaC series: Ansible na AWS", + "excerpt":"Serie de artigos sobre Infraestructure as a Code (IaC). Lab 15 - Ansible Ansible Pre-reqs Uma VM com a imagem Amazon Linux que será usada como destino do playbook O terminal do AWS Academy Learner Lab será usado como bastion para rodar os playbooks do Ansible Instalação (no terminal do...","categories": [], + "tags": ["ansible","aws","classes","fiap","iac","pt","series"], + "url": "/iac-ansible-aws/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IaC series: Terraform na AWS", + "excerpt":"Serie de artigos sobre Infraestructure as a Code (IaC). Lab 14 - Terraform AWS Provider O Terraform é uma ferramenta para construir, alterar e controlar a infraestrutura de forma segura e eficiente. O Terraform pode gerenciar provedores de serviços existentes e populares como OpenStack, Azure, AWS, Digital Ocean, entre outras,...","categories": [], + "tags": ["aws","classes","fiap","iac","pt","series","terraform"], + "url": "/iac-terraform-aws/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Microsoft Innovative Educator (MIE) programs", + "excerpt":"About the Microsoft Innovative Educator Programs The Microsoft Innovative Educator (MIE) programs recognize global educator visionaries who are using technology to pave the way for their peers for better learning and student outcomes. These are a variety of programs to help both educators who are just beginning this journey, as...","categories": [], + "tags": ["azure","cert","classes","en"], + "url": "/mie/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "SDRAN-in-a-Box", + "excerpt":"SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/test environment for developers/users in ONF SD-RAN community. RiaB deploys the complete SD-RAN infrastructure over Kubernetes: the EPC (OMEC) an emulated RAN (CU/DU/UE) the...","categories": [], + "tags": ["ansible","aws","en","networks","nfv","onf","sdn"], + "url": "/riab/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Aether-in-a-Box", + "excerpt":"Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run basic tests to validate the installation. AiaB can be set up with a 4G or 5G SD-CORE. In either case, SD-CORE configuration can be done with...","categories": [], + "tags": ["ansible","aws","en","networks","nfv","onf","sdn"], + "url": "/aiab/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 7th edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-7/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA Datacom - 19th edition", + "excerpt":"Informamos que estão abertas as inscrições do 19º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Datacom V1.0, totalmente gratuito e virtual. As inscrições podem ser realizadas por este link. Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-19/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Exames de Certificação AWS com desconto", + "excerpt":" A AWS está com descontos de 50% a 85% nas certificações: AWS Certified Cloud Practitioner - 85% de desconto AWS Certified Developer Associate - 50% de desconto AWS Certified Solutions Architect Associate - 50% de desconto Mais informações no seguinte link. Passo a passo de como obter o desconto: ","categories": [], + "tags": ["aws","cert","pt"], + "url": "/aws-certs-desconto/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Developing - 4th edition", + "excerpt":"Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-dev-4/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Learning Badges", + "excerpt":"What is an AWS Learning Badge? AWS Learning badges are credentials that offer these benefits: AWS digital badges demonstrate your knowledge and skills for specific AWS cloud topics, such as Object Storage AWS digital badges are shareable on social networks to help you stand out to recruiters and prospective hiring...","categories": [], + "tags": ["aws","cert","en"], + "url": "/aws-learning-badges/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Digital credentials for Red Hat Certified Professionals", + "excerpt":"Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat technologies and to support customer success. A digital credential is earned upon meeting defined criteria, and Red Hat digital credentials can represent many types of achievements. A Red Hat...","categories": [], + "tags": ["ansible","cert","en","openshift","openstack","redhat","sds"], + "url": "/rh-creddly/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Microsoft Security Virtual Training Day", + "excerpt":"By participating in the following Microsoft Virtual Training Days: Microsoft Security Virtual Training Day: Security, Compliance, and Identity Fundamentals You’ll be eligible to take the following certification exam at no cost: Microsoft Security, Compliance, and Identity Fundamentals (SC-900) Security Fundamentals Learn the basic concepts of security, compliance and identity at...","categories": [], + "tags": ["azure","cert","en"], + "url": "/security-fundamentals/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Red Hat Summit 2022", + "excerpt":" When you join IT leaders and peers at our no-cost virtual event, you can chart your hybrid cloud strategy and our open source future. Check out the available sessions to explore ways you can participate in the Red Hat® Summit experience taking place May 10-11. Virtual registration is live. ","categories": [], + "tags": ["ansible","en","events","openshift","redhat"], + "url": "/rh-summit22/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Evolução tecnológica do Wi-Fi 6", + "excerpt":" Evento on-line promovido pela Huawei e FiberX, onde será apresentado o seguinte tema: Evolução Tecnológica do Wi-fi 6. O evento ocorrerá em 26/04/2022 às 16h. Será um evento online de uma hora de duração e quem realizar a inscrição pelo link receberá um certificado de participação no evento. ","categories": [], + "tags": ["events","huawei","pt","webinar"], + "url": "/wifi6/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Programa EU CAPACITO", + "excerpt":"Em conjunto com o EU CAPACITO, programa liderado pelo Instituto IT Mídia, a FIAP oferece 20 Nano Courses gratuitos. São cursos de 40 a 160 horas nas áreas de Tecnologia, Inovação e Negócios. Cadastre-se e escolha os seus. Blockchain Advanced (100 horas) Business Intelligence (40 horas) Customer Experience Management (40...","categories": [], + "tags": ["classes","fiap","pt"], + "url": "/eu-capacito/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "II CATI: Congresso acadêmico de tecnologia da informação", + "excerpt":"Nuvens híbridas e soluções Red Hat ","categories": [], + "tags": ["events","pt","webinar"], + "url": "/cati22/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Estruturando redes com Múltiplos Fornecedores como uma Rede Neutra", + "excerpt":"Este evento vai, ao mesmo tempo, mostrar como estruturar múltiplos serviços, de múltiplos fabricantes e rentabilizar esta estrutura unificada ao alugá-la para terceiros. Tudo com uma gestão simples, centralizada e econômica. Programa: Venko - Desafios na Construção de Redes Multi-Vendor TIP/ONF - Padronização e Soluções Abertas Intraway - Solução de...","categories": [], + "tags": ["events","networks","nfv","onf","pt","sdn"], + "url": "/venko/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "PerfConf Spring 2022", + "excerpt":"Proceedings MetalLB Perf&Scale Testing MetalLB is a load-balancer implementation for bare metal Kubernetes clusters, using standard routing protocols (like BGP). For OCP 4.10, MetalLB speaker’s implementation was reimplemented into FRR and support for BGP was added as a GA feature. In this talk, we will present the results of the...","categories": [], + "tags": ["en","events","networks","nfv","openshift","redhat","sdn"], + "url": "/perfcon22/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS - Mulheres em Cloud", + "excerpt":"Sabemos que a tecnologia tem um poder transformador quando aliada à educação e podemos usá-la como ferramenta nos impactos positivos na luta de igualdade social. A AWS apoia uma força de trabalho STEM (abordagem interdisciplinar inovadora que engloba temas como ciências, tecnologia, engenharia e matemática) como uma comunidade global, diversificada...","categories": [], + "tags": ["aws","classes","fiap","pt"], + "url": "/women-cloud/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Red Hat Giveback Program", + "excerpt":"The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contributions which impact Red Hat. ","categories": [], + "tags": ["en","redhat"], + "url": "/rh-giveback/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Partner Network", + "excerpt":"The AWS Partner Network (APN) is a global community of partners that leverages programs, expertise, and resources to build, market, and sell customer offerings. This diverse network features 100,000 partners from more than 150 countries. As an AWS Partner, you are uniquely positioned to help customers take full advantage of...","categories": [], + "tags": ["aws","cert","en"], + "url": "/apn/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Educate relaunch", + "excerpt":"AWS Educate is now open to any individual, regardless of where they are in their education, technical experience, or career journey. AWS Educate offers hundreds of hours of self-paced training and resources for new-to-cloud learners—including hands-on labs in the AWS Management Console. The platform guides you to targeted training content...","categories": [], + "tags": ["aws","cert","en"], + "url": "/educate-relaunch/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "baseline-operator", + "excerpt":"baseline-operator The baseline-operator provides a way to run stress-ng workloads on Kubernetes in various deployment configurations. It is intended to create an artificial baseline load in a Kubernetes cluster in order to be able to run other Kubernetes tests in more realistic conditions (performance, cluster upgrade, etc.). Use Create a...","categories": [], + "tags": ["en","openshift"], + "url": "/baseline-operator/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 8th edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-8/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Red Hat Research", + "excerpt":"About Red Hat Research connects Red Hat engineers with professors, researchers, and students to bring great research ideas into open source communities. Our activities around the world have produced grants from government and industry, papers at top conferences, and results that have landed in open source projects of all kinds....","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/rh-research/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Developing - 5th edition", + "excerpt":"Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-dev-5/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "HCIA Datacom - 20th edition", + "excerpt":"Informamos que estão abertas as inscrições do 20º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Datacom V1.0, totalmente gratuito e virtual. As inscrições podem ser realizadas por este link. Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os...","categories": [], + "tags": ["cert","classes","huawei","networks","pt"], + "url": "/hcia-20/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "ICOS EU project", + "excerpt":"The project The unstoppable proliferation of novel computing and sensing device technologies, and the ever-growing demand for data-intensive applications in the edge and cloud, are driving the next wave of transformation in computing systems architecture. The resulting paradigm shift in computing is centered around dynamic, intelligent and yet seamless interconnection...","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/icos/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "PHYSICS 4th General Assembly", + "excerpt":"The 4th PHYSICS project General Assembly meeting was held July 4-6, 2022, hosted by RYAX in Athens, Greece. During the meeting, partners analyzed the project’s growth and had the opportunity to participate in person or virtually in discussions about the next goals of the project. All the work packages of...","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/physics-ga4/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Foundations - 9th edition", + "excerpt":"O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01). O curso oferece uma visão geral detalhada dos...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-foundations-9/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "ICOS 1st General Assembly", + "excerpt":"22 leading European organizations from 11 countries join forces to tackle the main challenges of the IoT-edge-cloud paradigm, proposing an approach to embed a set of functionalities and define a brand new IoT-edge-Cloud Operating System (ICOS). Barcelona, Spain. November 2022. Coordinated by the Research and Innovation hub of the Atos...","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/icos-ga1/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "FIAP SHIFT: AWS Academy Cloud Developing - 6th edition", + "excerpt":"Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas...","categories": [], + "tags": ["aws","cert","classes","fiap","pt"], + "url": "/shift-aws-dev-6/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "AWS Training and Certification - AWS Certified Global Community", + "excerpt":"The AWS Certified Global community is a network of certified AWS professionals. Interact, participate in challenges, get advice from peers and industry experts, win swag, and more. Last week I was featured in the Expert’s Exclusive series, where each week it is published an interview with one of the community...","categories": [], + "tags": ["aws","cert","en"], + "url": "/aws-certified-global-community/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "RHR talks: PHYSICS EU project", + "excerpt":"Join Red Hat Research for the next Research Days event, PHYSICS EU Project: Advancing FaaS applications in the cloud continuum on November 16, 2022, from 3PM to 4:30PM CEST. The Function-as-a-Service (Faas) paradigm offers cloud service providers and application designers speed, simplicity, and efficiency, so long as they have accessible...","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/rhr-talks-physics/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "TIP Academy", + "excerpt":"TIP Academy is an online Academy managed by the Telecom Infra Project (TIP) supporting the development of organizations in the telecommunications and IT industry. It provides an open, community-based learning and knowledge-sharing space for organizations and telco professionals, building an ecosystem around open, disaggregated solutions. Courses Why Open RAN? This...","categories": [], + "tags": ["cert","en","networks","nfv","onf","sdn"], + "url": "/tip-academy/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Happy new year!", + "excerpt":" ","categories": [], + "tags": ["en","es","redhat","pt"], + "url": "/newyear23/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Running OVN-Kubernetes on a preexisting kind cluster", + "excerpt":"OVN-Kubernetes is a CNI for Kubernetes based on the Open Virtual Network (OVN) project. kind (Kubernetes in Docker) deployment of OVN kubernetes is a fast and easy means to quickly install and test kubernetes with OVN kubernetes CNI. The value proposition is really for developers who want to reproduce an...","categories": [], + "tags": ["en","networks","openshift","redhat"], + "url": "/ovnk8s-kind/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "The impact of upstreaming research contributions", + "excerpt":"Originally published at ICOS blog on January 13, 2023 and at opensource.com on February 3, 2023. By Cara Delia and Leslie Hawthorn, Red Hat Open Source Program Office, Jose Castillo Lema, Red Hat Performance & Scale Engineering Horizon Europe emphasizes open science and open source technology. The program evolved from...","categories": [], + "tags": ["en","redhat","research"], + "url": "/icos-blog/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "CODECO project kick off", + "excerpt":"Kick off of the Horizon Europe CODECO in the Munich Highlight Towers, on 16th and 17th of January 2023. The CODECO project proposes a unique, smart, and cross-layer orchestration between the decentralised data flow, computation, and networking services, to address Edge-Cloud challenges derived from the rising Internet and IoT service...","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/codeco-kickoff/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Kubernetes control plane scale testing with Kubemark", + "excerpt":"Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kubernetes Test Rig and DevConf.cz 2022 Testing at Scale with Cluster API and Kubemark (demo). Kubemark is a performance testing tool which allows users to run experiments on simulated...","categories": [], + "tags": ["en","networks","openshift","redhat"], + "url": "/kubemark/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "OVN-Kubernetes Multiple External Gateway local setup", + "excerpt":"Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting (FRR) pod acting as external gateway. Kind setup First let us create a local kind cluster with ONV-Kubernetes as CNI: $ git clone https://github.com/ovn-org/ovn-kubernetes.git $...","categories": [], + "tags": ["en","networks","openshift","redhat"], + "url": "/icni2/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Legends of Linux Trivia", + "excerpt":"How well do you know Linux? Red Hat is offering three nifty badges for Linux lovers and badge collectors alike. Successfully complete a single Red Hat quiz to earn the badge of your choice below. Or complete them all to earn all three. Sounds pretty easy, right? Well, there is...","categories": [], + "tags": ["cert","en","redhat"], + "url": "/linux-trivia/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "PerfConf Spring 2023", + "excerpt":"Proceedings (Control-plane) testing at scale with Cluster API and Kubemark Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes (that run as pods in an external management cluster). What this means is that the nodes do not actually run...","categories": [], + "tags": ["en","events","networks","openshift","redhat","sdn"], + "url": "/perfcon23/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "RHR talks: Fluid Network Control and Data Plane Research", + "excerpt":"Join Red Hat Research for the next Research Days event, Fluid Network Control and Data Plane Research on April 19, 2023 from 17PM to 18:30PM CEST. New 5G and 6G technologies are raising the top speed for a wireless device up to 1 Tbps, and experts predict 6G will be...","categories": [], + "tags": ["en","networks","redhat","research"], + "url": "/rhr-talks/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "IFFE Máster en Big Data y Analítica de Negocio (MBD)", + "excerpt":"IFFE Máster en Big Data y Analítica de Negocio (MBD) Herramientas analíticas en AWS Cada proyecto se refiere a clases y/o labs realizados en aula. Siéntase libre de desarrollar estos ejemplos, mientras sean válidos, aceptaré pull requests 😄. Lab 01: IaaS - Simple Storage Service (S3) Lab 02: PaaS -...","categories": [], + "tags": ["aws","classes","es","iffe"], + "url": "/iffe-mbd/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "DevConf.CZ 2023 - Writing a K8s Operator for Knative Functions", + "excerpt":"About DevConf.CZ is an annual, free, Red Hat sponsored community conference for developers, admins, DevOps engineers, testers, documentation writers and other contributors to open source technologies. At DevConf.CZ, FLOSS communities sync, share, and hack on upstream projects together. DevConf.cz Mini is a bi-annual, highly focused, local, in-person version of DevConf.cz....","categories": [], + "tags": ["en","events","openshift","redhat","research"], + "url": "/devconf23/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "NetSoft 2023 - Network Softwarization in the Era of Complexity", + "excerpt":"About The 9th IEEE International Conference on Network Softwarization (IEEE NetSoft 2023) will be held in Madrid, Spain from June 19 to June 23, 2023. The conference will be hosted by University Carlos III of Madrid, one of the best Spanish universities in many technical areas, in its downtown campus...","categories": [], + "tags": ["en","events","networks","nfv","redhat","research","sdn"], + "url": "/netsoft23/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Telecom cloud-native development: an industry point of view", + "excerpt":"Telcos are increasingly moving from physical/virtual to cloud-native network functions in the context of 5G adoption. In this talk we will describe the telecom network transformation journey, benefits of cloud-native deployments, technical requirements/constraints of the underlying cloud service managers, the role of open source technologies and the use of the...","categories": [], + "tags": ["en","events","networks","nfv","research","sdn"], + "url": "/imdea/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "My Linux desktop", + "excerpt":"dotfiles My Linux desktop setup on Fedora Sericea. Desktop Window manager: Sway via baseOS Only use wayland applications; xwayland apps are not properly scaled swaywm/sway#2966, drag and drop does not work swaywm/sway#6460 and have a glitched behaviour uppon minimized on system tray swaywm/sway#6905. Display setup: wdisplays via rpm-ostree Browser Primary:...","categories": [], + "tags": ["en","redhat"], + "url": "/dotfiles/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Kubemark on OpenShift", + "excerpt":"Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings....","categories": [], + "tags": ["en","networks","openshift","redhat"], + "url": "/kubemark-ocp/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + },{ + "title": "Development workflows on inmutable distros: rootless setup", + "excerpt":"Continuation of Samsai notes on Toolbox-based Emacs Flatpak workflow. I have been using inmutable OS distributions for a while (Fedora Silverblue and Sericea, see my dotfiles). They have the following characteristics: System root (baseOS) is mostly immutable System software installation/updates are handled as images and applied on reboot For installing...","categories": [], + "tags": ["en","redhat"], + "url": "/dev-inmutable-distros/", + "teaser": "/assets/images/favicon_io/android-chrome-512x512.png" + }] diff --git a/docs/assets/js/lunr/lunr.js b/docs/assets/js/lunr/lunr.js new file mode 100644 index 0000000000..6aa370fbcb --- /dev/null +++ b/docs/assets/js/lunr/lunr.js @@ -0,0 +1,3475 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ + +;(function(){ + +/** + * A convenience function for configuring and constructing + * a new lunr Index. + * + * A lunr.Builder instance is created and the pipeline setup + * with a trimmer, stop word filter and stemmer. + * + * This builder object is yielded to the configuration function + * that is passed as a parameter, allowing the list of fields + * and other builder parameters to be customised. + * + * All documents _must_ be added within the passed config function. + * + * @example + * var idx = lunr(function () { + * this.field('title') + * this.field('body') + * this.ref('id') + * + * documents.forEach(function (doc) { + * this.add(doc) + * }, this) + * }) + * + * @see {@link lunr.Builder} + * @see {@link lunr.Pipeline} + * @see {@link lunr.trimmer} + * @see {@link lunr.stopWordFilter} + * @see {@link lunr.stemmer} + * @namespace {function} lunr + */ +var lunr = function (config) { + var builder = new lunr.Builder + + builder.pipeline.add( + lunr.trimmer, + lunr.stopWordFilter, + lunr.stemmer + ) + + builder.searchPipeline.add( + lunr.stemmer + ) + + config.call(builder, builder) + return builder.build() +} + +lunr.version = "2.3.9" +/*! + * lunr.utils + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils + */ +lunr.utils = {} + +/** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf lunr.utils + * @function + */ +lunr.utils.warn = (function (global) { + /* eslint-disable no-console */ + return function (message) { + if (global.console && console.warn) { + console.warn(message) + } + } + /* eslint-enable no-console */ +})(this) + +/** + * Convert an object to a string. + * + * In the case of `null` and `undefined` the function returns + * the empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {Any} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf lunr.utils + */ +lunr.utils.asString = function (obj) { + if (obj === void 0 || obj === null) { + return "" + } else { + return obj.toString() + } +} + +/** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ +lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone +} +lunr.FieldRef = function (docRef, fieldName, stringValue) { + this.docRef = docRef + this.fieldName = fieldName + this._stringValue = stringValue +} + +lunr.FieldRef.joiner = "/" + +lunr.FieldRef.fromString = function (s) { + var n = s.indexOf(lunr.FieldRef.joiner) + + if (n === -1) { + throw "malformed field ref string" + } + + var fieldRef = s.slice(0, n), + docRef = s.slice(n + 1) + + return new lunr.FieldRef (docRef, fieldRef, s) +} + +lunr.FieldRef.prototype.toString = function () { + if (this._stringValue == undefined) { + this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef + } + + return this._stringValue +} +/*! + * lunr.Set + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A lunr set. + * + * @constructor + */ +lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } +} + +/** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function () { + return this + }, + + contains: function () { + return true + } +} + +/** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } +} + +/** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ +lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] +} + +/** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + +lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) +} + +/** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + +lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) +} +/** + * A function to calculate the inverse document frequency for + * a posting. This is shared between the builder and the index + * + * @private + * @param {object} posting - The posting for a given term + * @param {number} documentCount - The total number of documents. + */ +lunr.idf = function (posting, documentCount) { + var documentsWithTerm = 0 + + for (var fieldName in posting) { + if (fieldName == '_index') continue // Ignore the term index, its not a field + documentsWithTerm += Object.keys(posting[fieldName]).length + } + + var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) + + return Math.log(1 + Math.abs(x)) +} + +/** + * A token wraps a string representation of a token + * as it is passed through the text processing pipeline. + * + * @constructor + * @param {string} [str=''] - The string token being wrapped. + * @param {object} [metadata={}] - Metadata associated with this token. + */ +lunr.Token = function (str, metadata) { + this.str = str || "" + this.metadata = metadata || {} +} + +/** + * Returns the token string that is being wrapped by this object. + * + * @returns {string} + */ +lunr.Token.prototype.toString = function () { + return this.str +} + +/** + * A token update function is used when updating or optionally + * when cloning a token. + * + * @callback lunr.Token~updateFunction + * @param {string} str - The string representation of the token. + * @param {Object} metadata - All metadata associated with this token. + */ + +/** + * Applies the given function to the wrapped string token. + * + * @example + * token.update(function (str, metadata) { + * return str.toUpperCase() + * }) + * + * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. + * @returns {lunr.Token} + */ +lunr.Token.prototype.update = function (fn) { + this.str = fn(this.str, this.metadata) + return this +} + +/** + * Creates a clone of this token. Optionally a function can be + * applied to the cloned token. + * + * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. + * @returns {lunr.Token} + */ +lunr.Token.prototype.clone = function (fn) { + fn = fn || function (s) { return s } + return new lunr.Token (fn(this.str, this.metadata), this.metadata) +} +/*! + * lunr.tokenizer + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A function for splitting a string into tokens ready to be inserted into + * the search index. Uses `lunr.tokenizer.separator` to split strings, change + * the value of this property to change how strings are split into tokens. + * + * This tokenizer will convert its parameter to a string by calling `toString` and + * then will split this string on the character in `lunr.tokenizer.separator`. + * Arrays will have their elements converted to strings and wrapped in a lunr.Token. + * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * + * @static + * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token + * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} + */ +lunr.tokenizer = function (obj, metadata) { + if (obj == null || obj == undefined) { + return [] + } + + if (Array.isArray(obj)) { + return obj.map(function (t) { + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) + }) + } + + var str = obj.toString().toLowerCase(), + len = str.length, + tokens = [] + + for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + var char = str.charAt(sliceEnd), + sliceLength = sliceEnd - sliceStart + + if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { + + if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + + tokens.push( + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens +} + +/** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ +lunr.tokenizer.separator = /[\s\-]+/ +/*! + * lunr.Pipeline + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ +lunr.Pipeline = function () { + this._stack = [] +} + +lunr.Pipeline.registeredFunctions = Object.create(null) + +/** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + +/** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ +lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn +} + +/** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ +lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } +} + +/** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ +lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline +} + +/** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ +lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) +} + +/** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) +} + +/** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) +} + +/** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ +lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) +} + +/** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ +lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + var memo = [] + + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) + + if (result === null || result === void 0 || result === '') continue + + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo + } + + return tokens +} + +/** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. + * @returns {string[]} + */ +lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) + + return this.run([token]).map(function (t) { + return t.toString() + }) +} + +/** + * Resets the pipeline by removing any existing processors. + * + */ +lunr.Pipeline.prototype.reset = function () { + this._stack = [] +} + +/** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ +lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) +} +/*! + * lunr.Vector + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ +lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] +} + + +/** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ +lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } +} + +/** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ +lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) +} + +/** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ +lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } +} + +/** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ +lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) +} + +/** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ +lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct +} + +/** + * Calculates the similarity between this vector and another vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ +lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / this.magnitude() || 0 +} + +/** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output +} + +/** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toJSON = function () { + return this.elements +} +/* eslint-disable */ +/*! + * lunr.stemmer + * Copyright (C) 2020 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + * @function + */ +lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } +})(); + +lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') +/*! + * lunr.stopWordFilter + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @function + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ +lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } +} + +/** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @function + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ +lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' +]) + +lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') +/*! + * lunr.trimmer + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ +lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) +} + +lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') +/*! + * lunr.TokenSet + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ +lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 +} + +/** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ +lunr.TokenSet._nextId = 1 + +/** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ +lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root +} + +/** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } +} + +/** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ +lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // deletion + // just removing the last character from the str + if (frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } + + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + + return root +} + +/** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * When a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + } + } + + return root +} + +/** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * + * @returns {string[]} + */ +lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words +} + +/** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ +lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str +} + +/** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output +} +lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} +} + +lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word +} + +lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) +} + +lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } +} +/*! + * lunr.Index + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.fieldVectors - Field vectors + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ +lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline +} + +/** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + +/** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + * @example terms with presence modifiers + * -foo +bar baz + */ + +/** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) +} + +/** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + +/** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null), + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null, + clauseMatches = lunr.Set.empty + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting), + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) + + /* + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. + * + */ + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue + } + + /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) + + /** + * If we've already seen this term, field combo then we've already collected + * the matching documents and metadata, no need to go through all that again + */ + if (termFieldCache[termField]) { + continue + } + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + metadata = fieldPosting[matchingDocumentRef], + fieldMatch + + if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { + matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) + } else { + fieldMatch.add(expandedTerm, field, metadata) + } + + } + + termFieldCache[termField] = true + } + } + } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = [], + matches = Object.create(null) + + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector), + docMatch + + if ((docMatch = matches[docRef]) !== undefined) { + docMatch.score += score + docMatch.matchData.combine(matchingFields[fieldRef]) + } else { + var match = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + matches[docRef] = match + results.push(match) + } + } + + /* + * Sort the results objects by score, highest first. + */ + return results.sort(function (a, b) { + return b.score - a.score + }) +} + +/** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ +lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } +} + +/** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ +lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = Object.create(null), + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) +} +/*! + * lunr.Builder + * Copyright (C) 2020 Oliver Nightingale + */ + +/** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ +lunr.Builder = function () { + this._ref = "id" + this._fields = Object.create(null) + this._documents = Object.create(null) + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] +} + +/** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ +lunr.Builder.prototype.ref = function (ref) { + this._ref = ref +} + +/** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + +/** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' + */ +lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} +} + +/** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } +} + +/** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.k1 = function (number) { + this._k1 = number +} + +/** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * + * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. + */ +lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + + this._documents[docRef] = attributes || {} + this.documentCount += 1 + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } +} + +/** + * Calculates the average document length for this index + * + * @private + */ +lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] + } + + this.averageFieldLength = accumulator +} + +/** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ +lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length, + termIdfCache = Object.create(null) + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + fieldName = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf, score, scoreWithPrecision + + if (termIdfCache[term] === undefined) { + idf = lunr.idf(this.invertedIndex[term], this.documentCount) + termIdfCache[term] = idf + } else { + idf = termIdfCache[term] + } + + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors +} + +/** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ +lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) +} + +/** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ +lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) +} + +/** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ +lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) +} +/** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata || {}) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } +} + +/** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } +} + +/** + * Add metadata for a term/field pair to this instance of match data. + * + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + */ +lunr.MatchData.prototype.add = function (term, field, metadata) { + if (!(term in this.metadata)) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = metadata + return + } + + if (!(field in this.metadata[term])) { + this.metadata[term][field] = metadata + return + } + + var metadataKeys = Object.keys(metadata) + + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + + if (key in this.metadata[term][field]) { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) + } else { + this.metadata[term][field][key] = metadata[key] + } + } +} +/** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ +lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields +} + +/** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ + +lunr.Query.wildcard = new String ("*") +lunr.Query.wildcard.NONE = 0 +lunr.Query.wildcard.LEADING = 1 +lunr.Query.wildcard.TRAILING = 2 + +/** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ +lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 +} + +/** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. + */ + +/** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ +lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + + this.clauses.push(clause) + + return this +} + +/** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ +lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true +} + +/** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) + */ +lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + + var clause = options || {} + clause.term = term.toString() + + this.clause(clause) + + return this +} +lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end +} + +lunr.QueryParseError.prototype = new Error +lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] +} + +lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } +} + +lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') +} + +lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos +} + +lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 +} + +lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char +} + +lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start +} + +lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos +} + +lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 +} + +lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } +} + +lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length +} + +lunr.QueryLexer.EOS = 'EOS' +lunr.QueryLexer.FIELD = 'FIELD' +lunr.QueryLexer.TERM = 'TERM' +lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' +lunr.QueryLexer.BOOST = 'BOOST' +lunr.QueryLexer.PRESENCE = 'PRESENCE' + +lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } +} + +lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } +} + +// This matches the separator used when tokenising fields +// within a document. These should match otherwise it is +// not possible to search for some tokens within a document. +// +// It is possible for the user to change the separator on the +// tokenizer so it _might_ clash with any other of the special +// characters already used within the search string, e.g. :. +// +// This means that it is possible to change the separator in +// such a way that makes some words unsearchable using a search +// string. +lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + +lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } +} + +lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 +} + +lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseClause + + while (state) { + state = state(this) + } + + return this.query +} + +lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] +} + +lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme +} + +lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} +} + +lunr.QueryParser.parseClause = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } +} + +lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like enviroments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + root.lunr = factory() + } + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) +})(); diff --git a/docs/assets/js/lunr/lunr.min.js b/docs/assets/js/lunr/lunr.min.js new file mode 100644 index 0000000000..cdc94cd390 --- /dev/null +++ b/docs/assets/js/lunr/lunr.min.js @@ -0,0 +1,6 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9 + * Copyright (C) 2020 Oliver Nightingale + * @license MIT + */ +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/assets/js/main.min.js b/docs/assets/js/main.min.js new file mode 100644 index 0000000000..6b5bb60236 --- /dev/null +++ b/docs/assets/js/main.min.js @@ -0,0 +1,6 @@ +/*! + * Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose + * Copyright 2013-2021 Michael Rose - mademistakes.com | @mmistakes + * Licensed under MIT + */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";function m(e){return null!=e&&e===e.window}var t=[],n=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},l=t.push,o=t.indexOf,r={},i=r.toString,v=r.hasOwnProperty,a=v.toString,u=a.call(Object),y={},b=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},T=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function x(e,t,n){var r,o,i=(n=n||T).createElement("script");if(i.text=e,t)for(r in c)(o=t[r]||t.getAttribute&&t.getAttribute(r))&&i.setAttribute(r,o);n.head.appendChild(i).parentNode.removeChild(i)}function h(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?r[i.call(e)]||"object":typeof e}var f="3.6.0",E=function(e,t){return new E.fn.init(e,t)};function d(e){var t=!!e&&"length"in e&&e.length,n=h(e);return!b(e)&&!m(e)&&("array"===n||0===t||"number"==typeof t&&0>10|55296,1023&e|56320))}function r(){C()}var e,d,x,i,o,p,h,m,w,l,u,C,T,a,E,g,s,c,v,S="sizzle"+ +new Date,y=n.document,k=0,b=0,A=le(),N=le(),j=le(),I=le(),L=function(e,t){return e===t&&(u=!0),0},D={}.hasOwnProperty,t=[],O=t.pop,H=t.push,P=t.push,q=t.slice,M=function(e,t){for(var n=0,r=e.length;n+~]|"+$+")"+$+"*"),Q=new RegExp($+"|>"),Y=new RegExp(F),V=new RegExp("^"+R+"$"),G={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+B),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+$+"*(even|odd|(([+-]|)(\\d*)n|)"+$+"*(?:([+-]|)"+$+"*(\\d+)|))"+$+"*\\)|)","i"),bool:new RegExp("^(?:"+_+")$","i"),needsContext:new RegExp("^"+$+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+$+"*((?:-\\d)?\\d*)"+$+"*\\)|)(?=[^-]|$)","i")},K=/HTML$/i,Z=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,ee=/^[^{]+\{\s*\[native \w/,te=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ne=/[+~]/,re=new RegExp("\\\\[\\da-fA-F]{1,6}"+$+"?|\\\\([^\\r\\n\\f])","g"),oe=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},ae=ye(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{P.apply(t=q.call(y.childNodes),y.childNodes),t[y.childNodes.length].nodeType}catch(e){P={apply:t.length?function(e,t){H.apply(e,q.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(t,e,n,r){var o,i,a,s,l,u,c=e&&e.ownerDocument,f=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==f&&9!==f&&11!==f)return n;if(!r&&(C(e),e=e||T,E)){if(11!==f&&(s=te.exec(t)))if(u=s[1]){if(9===f){if(!(i=e.getElementById(u)))return n;if(i.id===u)return n.push(i),n}else if(c&&(i=c.getElementById(u))&&v(e,i)&&i.id===u)return n.push(i),n}else{if(s[2])return P.apply(n,e.getElementsByTagName(t)),n;if((u=s[3])&&d.getElementsByClassName&&e.getElementsByClassName)return P.apply(n,e.getElementsByClassName(u)),n}if(d.qsa&&!I[t+" "]&&(!g||!g.test(t))&&(1!==f||"object"!==e.nodeName.toLowerCase())){if(u=t,c=e,1===f&&(Q.test(t)||X.test(t))){for((c=ne.test(t)&&me(e.parentNode)||e)===e&&d.scope||((a=e.getAttribute("id"))?a=a.replace(oe,ie):e.setAttribute("id",a=S)),o=(l=p(t)).length;o--;)l[o]=(a?"#"+a:":scope")+" "+ve(l[o]);u=l.join(",")}try{return P.apply(n,c.querySelectorAll(u)),n}catch(e){I(t,!0)}finally{a===S&&e.removeAttribute("id")}}}return m(t.replace(z,"$1"),e,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>x.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function ue(e){return e[S]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split("|"),r=n.length;r--;)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function he(a){return ue(function(i){return i=+i,ue(function(e,t){for(var n,r=a([],e.length,i),o=r.length;o--;)e[n=r[o]]&&(e[n]=!(t[n]=e[n]))})})}function me(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in d=se.support={},o=se.isXML=function(e){var t=e&&e.namespaceURI,e=e&&(e.ownerDocument||e).documentElement;return!K.test(t||e&&e.nodeName||"HTML")},C=se.setDocument=function(e){var t,e=e?e.ownerDocument||e:y;return e!=T&&9===e.nodeType&&e.documentElement&&(a=(T=e).documentElement,E=!o(T),y!=T&&(t=T.defaultView)&&t.top!==t&&(t.addEventListener?t.addEventListener("unload",r,!1):t.attachEvent&&t.attachEvent("onunload",r)),d.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=ee.test(T.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!T.getElementsByName||!T.getElementsByName(S).length}),d.getById?(x.filter.ID=function(e){var t=e.replace(re,f);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&E){e=t.getElementById(e);return e?[e]:[]}}):(x.filter.ID=function(e){var t=e.replace(re,f);return function(e){e=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}},x.find.ID=function(e,t){if(void 0!==t.getElementById&&E){var n,r,o,i=t.getElementById(e);if(i){if((n=i.getAttributeNode("id"))&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if((n=i.getAttributeNode("id"))&&n.value===e)return[i]}return[]}}),x.find.TAG=d.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"!==e)return i;for(;n=i[o++];)1===n.nodeType&&r.push(n);return r},x.find.CLASS=d.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],g=[],(d.qsa=ee.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+$+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+$+"*(?:value|"+_+")"),e.querySelectorAll("[id~="+S+"-]").length||g.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||g.push("\\["+$+"*name"+$+"*="+$+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||g.push(".#.+[+~]"),e.querySelectorAll("\\\f"),g.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+$+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&g.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(d.matchesSelector=ee.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),g=g.length&&new RegExp(g.join("|")),s=s.length&&new RegExp(s.join("|")),t=ee.test(a.compareDocumentPosition),v=t||ee.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},L=t?function(e,t){if(e===t)return u=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==y&&v(y,e)?-1:t==T||t.ownerDocument==y&&v(y,t)?1:l?M(l,e)-M(l,t):0:4&n?-1:1)}:function(e,t){if(e===t)return u=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],s=[t];if(!o||!i)return e==T?-1:t==T?1:o?-1:i?1:l?M(l,e)-M(l,t):0;if(o===i)return de(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?de(a[r],s[r]):a[r]==y?-1:s[r]==y?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),d.matchesSelector&&E&&!I[t+" "]&&(!s||!s.test(t))&&(!g||!g.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){I(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(re,f),e[3]=(e[3]||e[4]||e[5]||"").replace(re,f),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&Y.test(n)&&(t=p(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(re,f).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=A[e+" "];return t||(t=new RegExp("(^|"+$+")"+e+"("+$+"|$)"))&&A(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=se.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){if(!e)return this;if(n=n||L,"string"!=typeof e)return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this);if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:I.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:T,!0)),N.test(r[1])&&E.isPlainObject(t))for(var r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(e=T.getElementById(r[2]))&&(this[0]=e,this.length=1),this}).prototype=E.fn;var L=E(T),D=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,de=/^$|^module$|\/(?:java|ecma)script/i;f=T.createDocumentFragment().appendChild(T.createElement("div")),(p=T.createElement("input")).setAttribute("type","radio"),p.setAttribute("checked","checked"),p.setAttribute("name","t"),f.appendChild(p),y.checkClone=f.cloneNode(!0).cloneNode(!0).lastChild.checked,f.innerHTML="",y.noCloneChecked=!!f.cloneNode(!0).lastChild.defaultValue,f.innerHTML="",y.option=!!f.lastChild;var pe={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function he(e,t){var n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&A(e,t)?E.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n",""]);var ge=/<|&#?\w+;/;function ve(e,t,n,r,o){for(var i,a,s,l,u,c=t.createDocumentFragment(),f=[],d=0,p=e.length;d\s*$/g;function Ae(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Ne(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function je(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,o,i;if(1===t.nodeType){if(V.hasData(e)&&(i=V.get(e).events))for(o in V.remove(t,"handle events"),i)for(n=0,r=i[o].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",o=function(e){r.remove(),o=null,e&&t("error"===e.type?404:200,e.type)}),T.head.appendChild(r[0])},abort:function(){o&&o()}}});var Yt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||E.expando+"_"+At.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,o,i,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=b(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Nt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return i||E.error(r+" was not called"),i[0]},e.dataTypes[0]="json",o=C[r],C[r]=function(){i=arguments},n.always(function(){void 0===o?E(C).removeProp(r):C[r]=o,e[r]&&(e.jsonpCallback=t.jsonpCallback,Yt.push(r)),i&&b(o)&&o(i[0]),i=o=void 0}),"script"}),y.createHTMLDocument=((f=T.implementation.createHTMLDocument("").body).innerHTML="
",2===f.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=T.implementation.createHTMLDocument("")).createElement("base")).href=T.location.href,t.head.appendChild(r)):t=T),r=!n&&[],(n=N.exec(e))?[t.createElement(n[1])]:(n=ve([e],t,r),r&&r.length&&E(r).remove(),E.merge([],n.childNodes)));var r},E.fn.load=function(e,t,n){var r,o,i,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,i||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,o,i,a,s=E.css(e,"position"),l=E(e),u={};"static"===s&&(e.style.position="relative"),i=l.offset(),r=E.css(e,"top"),a=E.css(e,"left"),a=("absolute"===s||"fixed"===s)&&-1<(r+a).indexOf("auto")?(o=(s=l.position()).top,s.left):(o=parseFloat(r)||0,parseFloat(a)||0),null!=(t=b(t)?t.call(e,n,E.extend({},i)):t).top&&(u.top=t.top-i.top+o),null!=t.left&&(u.left=t.left-i.left+a),"using"in t?t.using.call(e,u):l.css(u)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n=this[0];return n?n.getClientRects().length?(e=n.getBoundingClientRect(),n=n.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],o={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{for(t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position");)e=e.parentNode;e&&e!==r&&1===e.nodeType&&((o=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),o.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-o.top-E.css(r,"marginTop",!0),left:t.left-o.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var e=this.offsetParent;e&&"static"===E.css(e,"position");)e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,o){var i="pageYOffset"===o;E.fn[t]=function(e){return F(this,function(e,t,n){var r;return m(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n?r?r[o]:e[t]:void(r?r.scrollTo(i?r.pageXOffset:n,i?n:r.pageYOffset):e[t]=n)},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Ye(y.pixelPosition,function(e,t){if(t)return t=Qe(e,n),Fe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,i){E.fn[i]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),o=r||(!0===e||!0===t?"margin":"border");return F(this,function(e,t,n){var r;return m(e)?0===i.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,o):E.style(e,t,n,o)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0x

',t.appendChild(n.childNodes[1])),e&&i.extend(o,e),this.each(function(){var e=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]',"object","embed"];o.customSelector&&e.push(o.customSelector);var r=".fitvidsignore";o.ignore&&(r=r+", "+o.ignore);e=i(this).find(e.join(","));(e=(e=e.not("object object")).not(r)).each(function(e){var t,n=i(this);0').parent(".fluid-width-video-wrapper").css("padding-top",100*t+"%"),n.removeAttr("height").removeAttr("width"))})})}}(window.jQuery||window.Zepto),$(function(){var n,r,e,o,t=$("nav.greedy-nav .greedy-nav__toggle"),i=$("nav.greedy-nav .visible-links"),a=$("nav.greedy-nav .hidden-links"),s=$("nav.greedy-nav"),l=$("nav.greedy-nav .site-logo"),u=$("nav.greedy-nav .site-logo img"),c=$("nav.greedy-nav .site-title"),f=$("nav.greedy-nav button.search__toggle");function d(){function t(e,t){r+=t,n+=1,o.push(r)}r=n=0,e=1e3,o=[],i.children().outerWidth(t),a.children().each(function(){var e;(e=(e=$(this)).clone()).css("visibility","hidden"),i.append(e),t(0,e.outerWidth()),e.remove()})}d();var p,h,m,g,v=$(window).width(),y=v<768?0:v<1024?1:v<1280?2:3;function b(){var e=(v=$(window).width())<768?0:v<1024?1:v<1280?2:3;e!==y&&d(),y=e,h=i.children().length,p=s.innerWidth()-(0!==l.length?l.outerWidth(!0):0)-c.outerWidth(!0)-(0!==f.length?f.outerWidth(!0):0)-(h!==o.length?t.outerWidth(!0):0),m=o[h-1],po[h]&&(a.children().first().appendTo(i),h+=1,b()),t.attr("count",n-h),h===n?t.addClass("hidden"):t.removeClass("hidden")}$(window).resize(function(){b()}),t.on("click",function(){a.toggleClass("hidden"),$(this).toggleClass("close"),clearTimeout(g)}),a.on("mouseleave",function(){g=setTimeout(function(){a.addClass("hidden")},e)}).on("mouseenter",function(){clearTimeout(g)}),0===u.length||u[0].complete||0!==u[0].naturalWidth?b():u.one("load error",b)}),function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(window.jQuery||window.Zepto)}(function(u){function e(){}function c(e,t){h.ev.on("mfp"+e+x,t)}function f(e,t,n,r){var o=document.createElement("div");return o.className="mfp-"+e,n&&(o.innerHTML=n),r?t&&t.appendChild(o):(o=u(o),t&&o.appendTo(t)),o}function d(e,t){h.ev.triggerHandler("mfp"+e,t),h.st.callbacks&&(e=e.charAt(0).toLowerCase()+e.slice(1),h.st.callbacks[e]&&h.st.callbacks[e].apply(h,u.isArray(t)?t:[t]))}function p(e){return e===t&&h.currTemplate.closeBtn||(h.currTemplate.closeBtn=u(h.st.closeMarkup.replace("%title%",h.st.tClose)),t=e),h.currTemplate.closeBtn}function i(){u.magnificPopup.instance||((h=new e).init(),u.magnificPopup.instance=h)}var h,r,m,o,g,t,l="Close",v="BeforeClose",y="MarkupParse",b="Open",x=".mfp",w="mfp-ready",n="mfp-removing",a="mfp-prevent-close",s=!!window.jQuery,C=u(window);e.prototype={constructor:e,init:function(){var e=navigator.appVersion;h.isLowIE=h.isIE8=document.all&&!document.addEventListener,h.isAndroid=/android/gi.test(e),h.isIOS=/iphone|ipad|ipod/gi.test(e),h.supportsTransition=function(){var e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void 0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in e)return!0;return!1}(),h.probablyMobile=h.isAndroid||h.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),m=u(document),h.popupsCache={}},open:function(e){if(!1===e.isObj){h.items=e.items.toArray(),h.index=0;for(var t,n=e.items,r=0;r(e||C.height())},_setFocus:function(){(h.st.focus?h.content.find(h.st.focus).eq(0):h.wrap).focus()},_onFocusIn:function(e){if(e.target!==h.wrap[0]&&!u.contains(h.wrap[0],e.target))return h._setFocus(),!1},_parseMarkup:function(o,e,t){var i;t.data&&(e=u.extend(t.data,e)),d(y,[o,e,t]),u.each(e,function(e,t){return void 0===t||!1===t||void(1<(i=e.split("_")).length?0<(n=o.find(x+"-"+i[0])).length&&("replaceWith"===(r=i[1])?n[0]!==t[0]&&n.replaceWith(t):"img"===r?n.is("img")?n.attr("src",t):n.replaceWith(u("").attr("src",t).attr("class",n.attr("class"))):n.attr(i[1],t)):o.find(x+"-"+e).html(t));var n,r})},_getScrollbarSize:function(){var e;return void 0===h.scrollbarSize&&((e=document.createElement("div")).style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(e),h.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),h.scrollbarSize}},u.magnificPopup={instance:null,proto:e.prototype,modules:[],open:function(e,t){return i(),(e=e?u.extend(!0,{},e):{}).isObj=!0,e.index=t||0,this.instance.open(e)},close:function(){return u.magnificPopup.instance&&u.magnificPopup.instance.close()},registerModule:function(e,t){t.options&&(u.magnificPopup.defaults[e]=t.options),u.extend(this.proto,t.proto),this.modules.push(e)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},u.fn.magnificPopup=function(e){i();var t,n,r,o=u(this);return"string"==typeof e?"open"===e?(t=s?o.data("magnificPopup"):o[0].magnificPopup,n=parseInt(arguments[1],10)||0,r=t.items?t.items[n]:(r=o,(r=t.delegate?o.find(t.delegate):r).eq(n)),h._openClick({mfpEl:r},o,t)):h.isOpen&&h[e].apply(h,Array.prototype.slice.call(arguments,1)):(e=u.extend(!0,{},e),s?o.data("magnificPopup",e):o[0].magnificPopup=e,h.addGroup(o,e)),o};function T(){k&&(S.after(k.addClass(E)).detach(),k=null)}var E,S,k,A="inline";u.magnificPopup.registerModule(A,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){h.types.push(A),c(l+"."+A,function(){T()})},getInline:function(e,t){if(T(),e.src){var n,r=h.st.inline,o=u(e.src);return o.length?((n=o[0].parentNode)&&n.tagName&&(S||(E=r.hiddenClass,S=f(E),E="mfp-"+E),k=o.after(S).detach().removeClass(E)),h.updateStatus("ready")):(h.updateStatus("error",r.tNotFound),o=u("
")),e.inlineElement=o}return h.updateStatus("ready"),h._parseMarkup(t,{},e),t}}});function N(){I&&u(document.body).removeClass(I)}function j(){N(),h.req&&h.req.abort()}var I,L="ajax";u.magnificPopup.registerModule(L,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){h.types.push(L),I=h.st.ajax.cursor,c(l+"."+L,j),c("BeforeChange."+L,j)},getAjax:function(r){I&&u(document.body).addClass(I),h.updateStatus("loading");var e=u.extend({url:r.src,success:function(e,t,n){n={data:e,xhr:n};d("ParseAjax",n),h.appendContent(u(n.data),L),r.finished=!0,N(),h._setFocus(),setTimeout(function(){h.wrap.addClass(w)},16),h.updateStatus("ready"),d("AjaxContentAdded")},error:function(){N(),r.finished=r.loadError=!0,h.updateStatus("error",h.st.ajax.tError.replace("%url%",r.src))}},h.st.ajax.settings);return h.req=u.ajax(e),""}}});var D;u.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var e=h.st.image,t=".image";h.types.push("image"),c(b+t,function(){"image"===h.currItem.type&&e.cursor&&u(document.body).addClass(e.cursor)}),c(l+t,function(){e.cursor&&u(document.body).removeClass(e.cursor),C.off("resize"+x)}),c("Resize"+t,h.resizeImage),h.isLowIE&&c("AfterChange",h.resizeImage)},resizeImage:function(){var e,t=h.currItem;t&&t.img&&h.st.image.verticalFit&&(e=0,h.isLowIE&&(e=parseInt(t.img.css("padding-top"),10)+parseInt(t.img.css("padding-bottom"),10)),t.img.css("max-height",h.wH-e))},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,D&&clearInterval(D),e.isCheckingImgSize=!1,d("ImageHasSize",e),e.imgHidden&&(h.content&&h.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(t){var n=0,r=t.img[0],o=function(e){D&&clearInterval(D),D=setInterval(function(){0
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){h.types.push(P),c("BeforeChange",function(e,t,n){t!==n&&(t===P?H():n===P&&H(!0))}),c(l+"."+P,function(){H()})},getIframe:function(e,t){var n=e.src,r=h.st.iframe;u.each(r.patterns,function(){if(-1',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var i=h.st.gallery,e=".mfp-gallery";if(h.direction=!0,!i||!i.enabled)return!1;g+=" mfp-gallery",c(b+e,function(){i.navigateByImgClick&&h.wrap.on("click"+e,".mfp-img",function(){if(1=h.index,h.index=e,h.updateItemHTML()},preloadNearbyImages:function(){for(var e=h.st.gallery.preload,t=Math.min(e[0],h.items.length),n=Math.min(e[1],h.items.length),r=1;r<=(h.direction?n:t);r++)h._preloadItem(h.index+r);for(r=1;r<=(h.direction?t:n);r++)h._preloadItem(h.index-r)},_preloadItem:function(e){var t;e=q(e),h.items[e].preloaded||((t=h.items[e]).parsed||(t=h.parseEl(e)),d("LazyLoad",t),"image"===t.type&&(t.img=u('').on("load.mfploader",function(){t.hasSize=!0}).on("error.mfploader",function(){t.hasSize=!0,t.loadError=!0,d("LazyLoadError",t)}).attr("src",t.src)),t.preloaded=!0)}}});var _="retina";u.magnificPopup.registerModule(_,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){var n,r;1t.durationMax?t.durationMax:t.durationMin&&e=l)return b.cancelScroll(!0),e=t,n=g,0===(t=r)&&document.body.focus(),n||(t.focus(),document.activeElement!==t&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),x.scrollTo(0,e)),E("scrollStop",m,r,o),!(y=f=null)},h=function(e){var t,n,r;u+=e-(f=f||e),d=i+s*(n=d=1<(d=0===c?0:u/c)?1:d,"easeInQuad"===(t=m).easing&&(r=n*n),"easeOutQuad"===t.easing&&(r=n*(2-n)),"easeInOutQuad"===t.easing&&(r=n<.5?2*n*n:(4-2*n)*n-1),"easeInCubic"===t.easing&&(r=n*n*n),"easeOutCubic"===t.easing&&(r=--n*n*n+1),"easeInOutCubic"===t.easing&&(r=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),"easeInQuart"===t.easing&&(r=n*n*n*n),"easeOutQuart"===t.easing&&(r=1- --n*n*n*n),"easeInOutQuart"===t.easing&&(r=n<.5?8*n*n*n*n:1-8*--n*n*n*n),"easeInQuint"===t.easing&&(r=n*n*n*n*n),"easeOutQuint"===t.easing&&(r=1+--n*n*n*n*n),"easeInOutQuint"===t.easing&&(r=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),(r=t.customEasing?t.customEasing(n):r)||n),x.scrollTo(0,Math.floor(d)),p(d,a)||(y=x.requestAnimationFrame(h),f=e)},0===x.pageYOffset&&x.scrollTo(0,0),t=r,e=m,g||history.pushState&&e.updateURL&&history.pushState({smoothScroll:JSON.stringify(e),anchor:t.id},document.title,t===document.documentElement?"#top":"#"+t.id),"matchMedia"in x&&x.matchMedia("(prefers-reduced-motion)").matches?x.scrollTo(0,Math.floor(a)):(E("scrollStart",m,r,o),b.cancelScroll(!0),x.requestAnimationFrame(h)))};function t(e){if(!e.defaultPrevented&&!(0!==e.button||e.metaKey||e.ctrlKey||e.shiftKey)&&"closest"in e.target&&(o=e.target.closest(r))&&"a"===o.tagName.toLowerCase()&&!e.target.closest(v.ignore)&&o.hostname===x.location.hostname&&o.pathname===x.location.pathname&&/#/.test(o.href)){var t,n;try{n=a(decodeURIComponent(o.hash))}catch(e){n=a(o.hash)}if("#"===n){if(!v.topOnEmptyHash)return;t=document.documentElement}else t=document.querySelector(n);(t=t||"#top"!==n?t:document.documentElement)&&(e.preventDefault(),n=v,history.replaceState&&n.updateURL&&!history.state&&(e=(e=x.location.hash)||"",history.replaceState({smoothScroll:JSON.stringify(n),anchor:e||x.pageYOffset},document.title,e||x.location.href)),b.animateScroll(t,o))}}function i(e){var t;null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(v)&&("string"==typeof(t=history.state.anchor)&&t&&!(t=document.querySelector(a(history.state.anchor)))||b.animateScroll(t,null,{updateURL:!1}))}b.destroy=function(){v&&(document.removeEventListener("click",t,!1),x.removeEventListener("popstate",i,!1),b.cancelScroll(),y=n=o=v=null)};return function(){if(!("querySelector"in document&&"addEventListener"in x&&"requestAnimationFrame"in x&&"closest"in x.Element.prototype))throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.";b.destroy(),v=w(S,e||{}),n=v.header?document.querySelector(v.header):null,document.addEventListener("click",t,!1),v.updateURL&&v.popstate&&x.addEventListener("popstate",i,!1)}(),b}}),function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof exports?module.exports=t(e):e.Gumshoe=t(e)}("undefined"!=typeof global?global:"undefined"!=typeof window?window:this,function(c){"use strict";function f(e,t,n){n.settings.events&&(n=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n}),t.dispatchEvent(n))}function n(e){var t=0;if(e.offsetParent)for(;e;)t+=e.offsetTop,e=e.offsetParent;return 0<=t?t:0}function d(e){e&&e.sort(function(e,t){return n(e.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)}function p(e,t){var n,r,o=e[e.length-1];if(n=o,r=t,!(!s()||!a(n.content,r,!0)))return o;for(var i=e.length-1;0<=i;i--)if(a(e[i].content,t))return e[i]}function h(e,t){var n;!e||(n=e.nav.closest("li"))&&(n.classList.remove(t.navClass),e.content.classList.remove(t.contentClass),r(n,t),f("gumshoeDeactivate",n,{link:e.nav,content:e.content,settings:t}))}var m={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},r=function(e,t){!t.nested||(e=e.parentNode.closest("li"))&&(e.classList.remove(t.nestedClass),r(e,t))},g=function(e,t){!t.nested||(e=e.parentNode.closest("li"))&&(e.classList.add(t.nestedClass),g(e,t))};return function(e,t){var n,o,i,r,a,s={setup:function(){n=document.querySelectorAll(e),o=[],Array.prototype.forEach.call(n,function(e){var t=document.getElementById(decodeURIComponent(e.hash.substr(1)));t&&o.push({nav:e,content:t})}),d(o)}};s.detect=function(){var e,t,n,r=p(o,a);r?i&&r.content===i.content||(h(i,a),t=a,!(e=r)||(n=e.nav.closest("li"))&&(n.classList.add(t.navClass),e.content.classList.add(t.contentClass),g(n,t),f("gumshoeActivate",n,{link:e.nav,content:e.content,settings:t})),i=r):i&&(h(i,a),i=null)};function l(e){r&&c.cancelAnimationFrame(r),r=c.requestAnimationFrame(s.detect)}function u(e){r&&c.cancelAnimationFrame(r),r=c.requestAnimationFrame(function(){d(o),s.detect()})}s.destroy=function(){i&&h(i,a),c.removeEventListener("scroll",l,!1),a.reflow&&c.removeEventListener("resize",u,!1),a=r=i=n=o=null};return a=function(){var n={};return Array.prototype.forEach.call(arguments,function(e){for(var t in e){if(!e.hasOwnProperty(t))return;n[t]=e[t]}}),n}(m,t||{}),s.setup(),s.detect(),c.addEventListener("scroll",l,!1),a.reflow&&c.addEventListener("resize",u,!1),s}}),$(function(){$("#main").fitVids();function e(){(0===$(".author__urls-wrapper").find("button").length?1024<$(window).width():!$(".author__urls-wrapper").find("button").is(":visible"))?$(".sidebar").addClass("sticky"):$(".sidebar").removeClass("sticky")}e(),$(window).resize(function(){e()}),$(".author__urls-wrapper").find("button").on("click",function(){$(".author__urls").toggleClass("is--visible"),$(".author__urls-wrapper").find("button").toggleClass("open")}),$(document).keyup(function(e){27===e.keyCode&&$(".initial-content").hasClass("is--hidden")&&($(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"))}),$(".search__toggle").on("click",function(){$(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"),setTimeout(function(){$(".search-content").find("input").focus()},400)});new SmoothScroll('a[href*="#"]',{offset:20,speed:400,speedAsDuration:!0,durationMax:500});0<$("nav.toc").length&&new Gumshoe("nav.toc a",{navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:20,reflow:!0,events:!0}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']").has("> img").addClass("image-popup"),$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'Image #%curr% could not be loaded.'},removalDelay:500,mainClass:"mfp-zoom-in",callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim")}},closeOnContentClick:!0,midClick:!0}),$(".page__content").find("h1, h2, h3, h4, h5, h6").each(function(){var e,t=$(this).attr("id");t&&((e=document.createElement("a")).className="header-link",e.href="#"+t,e.innerHTML='Permalink',e.title="Permalink",$(this).append(e))})}); \ No newline at end of file diff --git a/docs/assets/js/plugins/gumshoe.js b/docs/assets/js/plugins/gumshoe.js new file mode 100644 index 0000000000..713b6eb303 --- /dev/null +++ b/docs/assets/js/plugins/gumshoe.js @@ -0,0 +1,484 @@ +/*! + * gumshoejs v5.1.1 + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ + +(function (root, factory) { + if ( typeof define === 'function' && define.amd ) { + define([], (function () { + return factory(root); + })); + } else if ( typeof exports === 'object' ) { + module.exports = factory(root); + } else { + root.Gumshoe = factory(root); + } +})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) { + + 'use strict'; + + // + // Defaults + // + + var defaults = { + + // Active classes + navClass: 'active', + contentClass: 'active', + + // Nested navigation + nested: false, + nestedClass: 'active', + + // Offset & reflow + offset: 0, + reflow: false, + + // Event support + events: true + + }; + + + // + // Methods + // + + /** + * Merge two or more objects together. + * @param {Object} objects The objects to merge together + * @returns {Object} Merged values of defaults and options + */ + var extend = function () { + var merged = {}; + Array.prototype.forEach.call(arguments, (function (obj) { + for (var key in obj) { + if (!obj.hasOwnProperty(key)) return; + merged[key] = obj[key]; + } + })); + return merged; + }; + + /** + * Emit a custom event + * @param {String} type The event type + * @param {Node} elem The element to attach the event to + * @param {Object} detail Any details to pass along with the event + */ + var emitEvent = function (type, elem, detail) { + + // Make sure events are enabled + if (!detail.settings.events) return; + + // Create a new event + var event = new CustomEvent(type, { + bubbles: true, + cancelable: true, + detail: detail + }); + + // Dispatch the event + elem.dispatchEvent(event); + + }; + + /** + * Get an element's distance from the top of the Document. + * @param {Node} elem The element + * @return {Number} Distance from the top in pixels + */ + var getOffsetTop = function (elem) { + var location = 0; + if (elem.offsetParent) { + while (elem) { + location += elem.offsetTop; + elem = elem.offsetParent; + } + } + return location >= 0 ? location : 0; + }; + + /** + * Sort content from first to last in the DOM + * @param {Array} contents The content areas + */ + var sortContents = function (contents) { + if(contents) { + contents.sort((function (item1, item2) { + var offset1 = getOffsetTop(item1.content); + var offset2 = getOffsetTop(item2.content); + if (offset1 < offset2) return -1; + return 1; + })); + } + }; + + /** + * Get the offset to use for calculating position + * @param {Object} settings The settings for this instantiation + * @return {Float} The number of pixels to offset the calculations + */ + var getOffset = function (settings) { + + // if the offset is a function run it + if (typeof settings.offset === 'function') { + return parseFloat(settings.offset()); + } + + // Otherwise, return it as-is + return parseFloat(settings.offset); + + }; + + /** + * Get the document element's height + * @private + * @returns {Number} + */ + var getDocumentHeight = function () { + return Math.max( + document.body.scrollHeight, document.documentElement.scrollHeight, + document.body.offsetHeight, document.documentElement.offsetHeight, + document.body.clientHeight, document.documentElement.clientHeight + ); + }; + + /** + * Determine if an element is in view + * @param {Node} elem The element + * @param {Object} settings The settings for this instantiation + * @param {Boolean} bottom If true, check if element is above bottom of viewport instead + * @return {Boolean} Returns true if element is in the viewport + */ + var isInView = function (elem, settings, bottom) { + var bounds = elem.getBoundingClientRect(); + var offset = getOffset(settings); + if (bottom) { + return parseInt(bounds.bottom, 10) < (window.innerHeight || document.documentElement.clientHeight); + } + return parseInt(bounds.top, 10) <= offset; + }; + + /** + * Check if at the bottom of the viewport + * @return {Boolean} If true, page is at the bottom of the viewport + */ + var isAtBottom = function () { + if (window.innerHeight + window.pageYOffset >= getDocumentHeight()) return true; + return false; + }; + + /** + * Check if the last item should be used (even if not at the top of the page) + * @param {Object} item The last item + * @param {Object} settings The settings for this instantiation + * @return {Boolean} If true, use the last item + */ + var useLastItem = function (item, settings) { + if (isAtBottom() && isInView(item.content, settings, true)) return true; + return false; + }; + + /** + * Get the active content + * @param {Array} contents The content areas + * @param {Object} settings The settings for this instantiation + * @return {Object} The content area and matching navigation link + */ + var getActive = function (contents, settings) { + var last = contents[contents.length-1]; + if (useLastItem(last, settings)) return last; + for (var i = contents.length - 1; i >= 0; i--) { + if (isInView(contents[i].content, settings)) return contents[i]; + } + }; + + /** + * Deactivate parent navs in a nested navigation + * @param {Node} nav The starting navigation element + * @param {Object} settings The settings for this instantiation + */ + var deactivateNested = function (nav, settings) { + + // If nesting isn't activated, bail + if (!settings.nested) return; + + // Get the parent navigation + var li = nav.parentNode.closest('li'); + if (!li) return; + + // Remove the active class + li.classList.remove(settings.nestedClass); + + // Apply recursively to any parent navigation elements + deactivateNested(li, settings); + + }; + + /** + * Deactivate a nav and content area + * @param {Object} items The nav item and content to deactivate + * @param {Object} settings The settings for this instantiation + */ + var deactivate = function (items, settings) { + + // Make sure their are items to deactivate + if (!items) return; + + // Get the parent list item + var li = items.nav.closest('li'); + if (!li) return; + + // Remove the active class from the nav and content + li.classList.remove(settings.navClass); + items.content.classList.remove(settings.contentClass); + + // Deactivate any parent navs in a nested navigation + deactivateNested(li, settings); + + // Emit a custom event + emitEvent('gumshoeDeactivate', li, { + link: items.nav, + content: items.content, + settings: settings + }); + + }; + + + /** + * Activate parent navs in a nested navigation + * @param {Node} nav The starting navigation element + * @param {Object} settings The settings for this instantiation + */ + var activateNested = function (nav, settings) { + + // If nesting isn't activated, bail + if (!settings.nested) return; + + // Get the parent navigation + var li = nav.parentNode.closest('li'); + if (!li) return; + + // Add the active class + li.classList.add(settings.nestedClass); + + // Apply recursively to any parent navigation elements + activateNested(li, settings); + + }; + + /** + * Activate a nav and content area + * @param {Object} items The nav item and content to activate + * @param {Object} settings The settings for this instantiation + */ + var activate = function (items, settings) { + + // Make sure their are items to activate + if (!items) return; + + // Get the parent list item + var li = items.nav.closest('li'); + if (!li) return; + + // Add the active class to the nav and content + li.classList.add(settings.navClass); + items.content.classList.add(settings.contentClass); + + // Activate any parent navs in a nested navigation + activateNested(li, settings); + + // Emit a custom event + emitEvent('gumshoeActivate', li, { + link: items.nav, + content: items.content, + settings: settings + }); + + }; + + /** + * Create the Constructor object + * @param {String} selector The selector to use for navigation items + * @param {Object} options User options and settings + */ + var Constructor = function (selector, options) { + + // + // Variables + // + + var publicAPIs = {}; + var navItems, contents, current, timeout, settings; + + + // + // Methods + // + + /** + * Set variables from DOM elements + */ + publicAPIs.setup = function () { + + // Get all nav items + navItems = document.querySelectorAll(selector); + + // Create contents array + contents = []; + + // Loop through each item, get it's matching content, and push to the array + Array.prototype.forEach.call(navItems, (function (item) { + + // Get the content for the nav item + var content = document.getElementById(decodeURIComponent(item.hash.substr(1))); + if (!content) return; + + // Push to the contents array + contents.push({ + nav: item, + content: content + }); + + })); + + // Sort contents by the order they appear in the DOM + sortContents(contents); + + }; + + /** + * Detect which content is currently active + */ + publicAPIs.detect = function () { + + // Get the active content + var active = getActive(contents, settings); + + // if there's no active content, deactivate and bail + if (!active) { + if (current) { + deactivate(current, settings); + current = null; + } + return; + } + + // If the active content is the one currently active, do nothing + if (current && active.content === current.content) return; + + // Deactivate the current content and activate the new content + deactivate(current, settings); + activate(active, settings); + + // Update the currently active content + current = active; + + }; + + /** + * Detect the active content on scroll + * Debounced for performance + */ + var scrollHandler = function (event) { + + // If there's a timer, cancel it + if (timeout) { + window.cancelAnimationFrame(timeout); + } + + // Setup debounce callback + timeout = window.requestAnimationFrame(publicAPIs.detect); + + }; + + /** + * Update content sorting on resize + * Debounced for performance + */ + var resizeHandler = function (event) { + + // If there's a timer, cancel it + if (timeout) { + window.cancelAnimationFrame(timeout); + } + + // Setup debounce callback + timeout = window.requestAnimationFrame((function () { + sortContents(contents); + publicAPIs.detect(); + })); + + }; + + /** + * Destroy the current instantiation + */ + publicAPIs.destroy = function () { + + // Undo DOM changes + if (current) { + deactivate(current, settings); + } + + // Remove event listeners + window.removeEventListener('scroll', scrollHandler, false); + if (settings.reflow) { + window.removeEventListener('resize', resizeHandler, false); + } + + // Reset variables + contents = null; + navItems = null; + current = null; + timeout = null; + settings = null; + + }; + + /** + * Initialize the current instantiation + */ + var init = function () { + + // Merge user options into defaults + settings = extend(defaults, options || {}); + + // Setup variables based on the current DOM + publicAPIs.setup(); + + // Find the currently active content + publicAPIs.detect(); + + // Setup event listeners + window.addEventListener('scroll', scrollHandler, false); + if (settings.reflow) { + window.addEventListener('resize', resizeHandler, false); + } + + }; + + + // + // Initialize and return the public APIs + // + + init(); + return publicAPIs; + + }; + + + // + // Return the Constructor + // + + return Constructor; + +})); \ No newline at end of file diff --git a/docs/assets/js/plugins/jquery.ba-throttle-debounce.js b/docs/assets/js/plugins/jquery.ba-throttle-debounce.js new file mode 100644 index 0000000000..fa30bdfffe --- /dev/null +++ b/docs/assets/js/plugins/jquery.ba-throttle-debounce.js @@ -0,0 +1,252 @@ +/*! + * jQuery throttle / debounce - v1.1 - 3/7/2010 + * http://benalman.com/projects/jquery-throttle-debounce-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ + +// Script: jQuery throttle / debounce: Sometimes, less is more! +// +// *Version: 1.1, Last updated: 3/7/2010* +// +// Project Home - http://benalman.com/projects/jquery-throttle-debounce-plugin/ +// GitHub - http://github.com/cowboy/jquery-throttle-debounce/ +// Source - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.js +// (Minified) - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.min.js (0.7kb) +// +// About: License +// +// Copyright (c) 2010 "Cowboy" Ben Alman, +// Dual licensed under the MIT and GPL licenses. +// http://benalman.com/about/license/ +// +// About: Examples +// +// These working examples, complete with fully commented code, illustrate a few +// ways in which this plugin can be used. +// +// Throttle - http://benalman.com/code/projects/jquery-throttle-debounce/examples/throttle/ +// Debounce - http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/ +// +// About: Support and Testing +// +// Information about what version or versions of jQuery this plugin has been +// tested with, what browsers it has been tested in, and where the unit tests +// reside (so you can test it yourself). +// +// jQuery Versions - none, 1.3.2, 1.4.2 +// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome 4-5, Opera 9.6-10.1. +// Unit Tests - http://benalman.com/code/projects/jquery-throttle-debounce/unit/ +// +// About: Release History +// +// 1.1 - (3/7/2010) Fixed a bug in where trailing callbacks +// executed later than they should. Reworked a fair amount of internal +// logic as well. +// 1.0 - (3/6/2010) Initial release as a stand-alone project. Migrated over +// from jquery-misc repo v0.4 to jquery-throttle repo v1.0, added the +// no_trailing throttle parameter and debounce functionality. +// +// Topic: Note for non-jQuery users +// +// jQuery isn't actually required for this plugin, because nothing internal +// uses any jQuery methods or properties. jQuery is just used as a namespace +// under which these methods can exist. +// +// Since jQuery isn't actually required for this plugin, if jQuery doesn't exist +// when this plugin is loaded, the method described below will be created in +// the `Cowboy` namespace. Usage will be exactly the same, but instead of +// $.method() or jQuery.method(), you'll need to use Cowboy.method(). + +(function(window,undefined){ + '$:nomunge'; // Used by YUI compressor. + + // Since jQuery really isn't required for this plugin, use `jQuery` as the + // namespace only if it already exists, otherwise use the `Cowboy` namespace, + // creating it if necessary. + var $ = window.jQuery || window.Cowboy || ( window.Cowboy = {} ), + + // Internal method reference. + jq_throttle; + + // Method: jQuery.throttle + // + // Throttle execution of a function. Especially useful for rate limiting + // execution of handlers on events like resize and scroll. If you want to + // rate-limit execution of a function to a single time, see the + // method. + // + // In this visualization, | is a throttled-function call and X is the actual + // callback execution: + // + // > Throttled with `no_trailing` specified as false or unspecified: + // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| + // > X X X X X X X X X X X X + // > + // > Throttled with `no_trailing` specified as true: + // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| + // > X X X X X X X X X X + // + // Usage: + // + // > var throttled = jQuery.throttle( delay, [ no_trailing, ] callback ); + // > + // > jQuery('selector').bind( 'someevent', throttled ); + // > jQuery('selector').unbind( 'someevent', throttled ); + // + // This also works in jQuery 1.4+: + // + // > jQuery('selector').bind( 'someevent', jQuery.throttle( delay, [ no_trailing, ] callback ) ); + // > jQuery('selector').unbind( 'someevent', callback ); + // + // Arguments: + // + // delay - (Number) A zero-or-greater delay in milliseconds. For event + // callbacks, values around 100 or 250 (or even higher) are most useful. + // no_trailing - (Boolean) Optional, defaults to false. If no_trailing is + // true, callback will only execute every `delay` milliseconds while the + // throttled-function is being called. If no_trailing is false or + // unspecified, callback will be executed one final time after the last + // throttled-function call. (After the throttled-function has not been + // called for `delay` milliseconds, the internal counter is reset) + // callback - (Function) A function to be executed after delay milliseconds. + // The `this` context and all arguments are passed through, as-is, to + // `callback` when the throttled-function is executed. + // + // Returns: + // + // (Function) A new, throttled, function. + + $.throttle = jq_throttle = function( delay, no_trailing, callback, debounce_mode ) { + // After wrapper has stopped being called, this timeout ensures that + // `callback` is executed at the proper times in `throttle` and `end` + // debounce modes. + var timeout_id, + + // Keep track of the last time `callback` was executed. + last_exec = 0; + + // `no_trailing` defaults to falsy. + if ( typeof no_trailing !== 'boolean' ) { + debounce_mode = callback; + callback = no_trailing; + no_trailing = undefined; + } + + // The `wrapper` function encapsulates all of the throttling / debouncing + // functionality and when executed will limit the rate at which `callback` + // is executed. + function wrapper() { + var that = this, + elapsed = +new Date() - last_exec, + args = arguments; + + // Execute `callback` and update the `last_exec` timestamp. + function exec() { + last_exec = +new Date(); + callback.apply( that, args ); + }; + + // If `debounce_mode` is true (at_begin) this is used to clear the flag + // to allow future `callback` executions. + function clear() { + timeout_id = undefined; + }; + + if ( debounce_mode && !timeout_id ) { + // Since `wrapper` is being called for the first time and + // `debounce_mode` is true (at_begin), execute `callback`. + exec(); + } + + // Clear any existing timeout. + timeout_id && clearTimeout( timeout_id ); + + if ( debounce_mode === undefined && elapsed > delay ) { + // In throttle mode, if `delay` time has been exceeded, execute + // `callback`. + exec(); + + } else if ( no_trailing !== true ) { + // In trailing throttle mode, since `delay` time has not been + // exceeded, schedule `callback` to execute `delay` ms after most + // recent execution. + // + // If `debounce_mode` is true (at_begin), schedule `clear` to execute + // after `delay` ms. + // + // If `debounce_mode` is false (at end), schedule `callback` to + // execute after `delay` ms. + timeout_id = setTimeout( debounce_mode ? clear : exec, debounce_mode === undefined ? delay - elapsed : delay ); + } + }; + + // Set the guid of `wrapper` function to the same of original callback, so + // it can be removed in jQuery 1.4+ .unbind or .die by using the original + // callback as a reference. + if ( $.guid ) { + wrapper.guid = callback.guid = callback.guid || $.guid++; + } + + // Return the wrapper function. + return wrapper; + }; + + // Method: jQuery.debounce + // + // Debounce execution of a function. Debouncing, unlike throttling, + // guarantees that a function is only executed a single time, either at the + // very beginning of a series of calls, or at the very end. If you want to + // simply rate-limit execution of a function, see the + // method. + // + // In this visualization, | is a debounced-function call and X is the actual + // callback execution: + // + // > Debounced with `at_begin` specified as false or unspecified: + // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| + // > X X + // > + // > Debounced with `at_begin` specified as true: + // > ||||||||||||||||||||||||| (pause) ||||||||||||||||||||||||| + // > X X + // + // Usage: + // + // > var debounced = jQuery.debounce( delay, [ at_begin, ] callback ); + // > + // > jQuery('selector').bind( 'someevent', debounced ); + // > jQuery('selector').unbind( 'someevent', debounced ); + // + // This also works in jQuery 1.4+: + // + // > jQuery('selector').bind( 'someevent', jQuery.debounce( delay, [ at_begin, ] callback ) ); + // > jQuery('selector').unbind( 'someevent', callback ); + // + // Arguments: + // + // delay - (Number) A zero-or-greater delay in milliseconds. For event + // callbacks, values around 100 or 250 (or even higher) are most useful. + // at_begin - (Boolean) Optional, defaults to false. If at_begin is false or + // unspecified, callback will only be executed `delay` milliseconds after + // the last debounced-function call. If at_begin is true, callback will be + // executed only at the first debounced-function call. (After the + // throttled-function has not been called for `delay` milliseconds, the + // internal counter is reset) + // callback - (Function) A function to be executed after delay milliseconds. + // The `this` context and all arguments are passed through, as-is, to + // `callback` when the debounced-function is executed. + // + // Returns: + // + // (Function) A new, debounced, function. + + $.debounce = function( delay, at_begin, callback ) { + return callback === undefined + ? jq_throttle( delay, at_begin, false ) + : jq_throttle( delay, callback, at_begin !== false ); + }; + +})(this); diff --git a/docs/assets/js/plugins/jquery.fitvids.js b/docs/assets/js/plugins/jquery.fitvids.js new file mode 100644 index 0000000000..5c2f85c992 --- /dev/null +++ b/docs/assets/js/plugins/jquery.fitvids.js @@ -0,0 +1,82 @@ +/*jshint browser:true */ +/*! +* FitVids 1.1 +* +* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com +* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ +* Released under the WTFPL license - http://sam.zoy.org/wtfpl/ +* +*/ + +;(function( $ ){ + + 'use strict'; + + $.fn.fitVids = function( options ) { + var settings = { + customSelector: null, + ignore: null + }; + + if(!document.getElementById('fit-vids-style')) { + // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js + var head = document.head || document.getElementsByTagName('head')[0]; + var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}'; + var div = document.createElement("div"); + div.innerHTML = '

x

'; + head.appendChild(div.childNodes[1]); + } + + if ( options ) { + $.extend( settings, options ); + } + + return this.each(function(){ + var selectors = [ + 'iframe[src*="player.vimeo.com"]', + 'iframe[src*="youtube.com"]', + 'iframe[src*="youtube-nocookie.com"]', + 'iframe[src*="kickstarter.com"][src*="video.html"]', + 'object', + 'embed' + ]; + + if (settings.customSelector) { + selectors.push(settings.customSelector); + } + + var ignoreList = '.fitvidsignore'; + + if(settings.ignore) { + ignoreList = ignoreList + ', ' + settings.ignore; + } + + var $allVideos = $(this).find(selectors.join(',')); + $allVideos = $allVideos.not('object object'); // SwfObj conflict patch + $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. + + $allVideos.each(function(count){ + var $this = $(this); + if($this.parents(ignoreList).length > 0) { + return; // Disable FitVids on this video. + } + if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } + if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width')))) + { + $this.attr('height', 9); + $this.attr('width', 16); + } + var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), + width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), + aspectRatio = height / width; + if(!$this.attr('id')){ + var videoID = 'fitvid' + count; + $this.attr('id', videoID); + } + $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%'); + $this.removeAttr('height').removeAttr('width'); + }); + }); + }; +// Works with either jQuery or Zepto +})( window.jQuery || window.Zepto ); \ No newline at end of file diff --git a/docs/assets/js/plugins/jquery.greedy-navigation.js b/docs/assets/js/plugins/jquery.greedy-navigation.js new file mode 100644 index 0000000000..b29931fa3e --- /dev/null +++ b/docs/assets/js/plugins/jquery.greedy-navigation.js @@ -0,0 +1,127 @@ +/* +GreedyNav.js - https://github.com/lukejacksonn/GreedyNav +Licensed under the MIT license - http://opensource.org/licenses/MIT +Copyright (c) 2015 Luke Jackson http://lukejacksonn.com +*/ + +$(function() { + + var $btn = $("nav.greedy-nav .greedy-nav__toggle"); + var $vlinks = $("nav.greedy-nav .visible-links"); + var $hlinks = $("nav.greedy-nav .hidden-links"); + var $nav = $("nav.greedy-nav"); + var $logo = $('nav.greedy-nav .site-logo'); + var $logoImg = $('nav.greedy-nav .site-logo img'); + var $title = $("nav.greedy-nav .site-title"); + var $search = $('nav.greedy-nav button.search__toggle'); + + var numOfItems, totalSpace, closingTime, breakWidths; + + // This function measures both hidden and visible links and sets the navbar breakpoints + // This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items + // Please note that "CSS width breakpoints" (which are only 4) !== "navbar breakpoints" (which are as many as the number of items on the navbar) + function measureLinks(){ + numOfItems = 0; + totalSpace = 0; + closingTime = 1000; + breakWidths = []; + + // Adds the width of a navItem in order to create breakpoints for the navbar + function addWidth(i, w) { + totalSpace += w; + numOfItems += 1; + breakWidths.push(totalSpace); + } + + // Measures the width of hidden links by making a temporary clone of them and positioning under visible links + function hiddenWidth(obj){ + var clone = obj.clone(); + clone.css("visibility","hidden"); + $vlinks.append(clone); + addWidth(0, clone.outerWidth()); + clone.remove(); + } + // Measure both visible and hidden links widths + $vlinks.children().outerWidth(addWidth); + $hlinks.children().each(function(){hiddenWidth($(this))}); + } + // Get initial state + measureLinks(); + + var winWidth = $( window ).width(); + // Set the last measured CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px. + var lastBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3; + + var availableSpace, numOfVisibleItems, requiredSpace, timer; + + function check() { + + winWidth = $( window ).width(); + // Set the current CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px. + var curBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3; + // If current breakpoint is different from last measured breakpoint, measureLinks again + if(curBreakpoint !== lastBreakpoint) measureLinks(); + // Set the last measured CSS width breakpoint with the current breakpoint + lastBreakpoint = curBreakpoint; + + // Get instant state + numOfVisibleItems = $vlinks.children().length; + // Decrease the width of visible elements from the nav innerWidth to find out the available space for navItems + availableSpace = /* nav */ $nav.innerWidth() + - /* logo */ ($logo.length !== 0 ? $logo.outerWidth(true) : 0) + - /* title */ $title.outerWidth(true) + - /* search */ ($search.length !== 0 ? $search.outerWidth(true) : 0) + - /* toggle */ (numOfVisibleItems !== breakWidths.length ? $btn.outerWidth(true) : 0); + requiredSpace = breakWidths[numOfVisibleItems - 1]; + + // There is not enought space + if (requiredSpace > availableSpace) { + $vlinks.children().last().prependTo($hlinks); + numOfVisibleItems -= 1; + check(); + // There is more than enough space. If only one element is hidden, add the toggle width to the available space + } else if (availableSpace + (numOfVisibleItems === breakWidths.length - 1?$btn.outerWidth(true):0) > breakWidths[numOfVisibleItems]) { + $hlinks.children().first().appendTo($vlinks); + numOfVisibleItems += 1; + check(); + } + // Update the button accordingly + $btn.attr("count", numOfItems - numOfVisibleItems); + if (numOfVisibleItems === numOfItems) { + $btn.addClass('hidden'); + } else $btn.removeClass('hidden'); + } + + // Window listeners + $(window).resize(function() { + check(); + }); + + $btn.on('click', function() { + $hlinks.toggleClass('hidden'); + $(this).toggleClass('close'); + clearTimeout(timer); + }); + + $hlinks.on('mouseleave', function() { + // Mouse has left, start the timer + timer = setTimeout(function() { + $hlinks.addClass('hidden'); + }, closingTime); + }).on('mouseenter', function() { + // Mouse is back, cancel the timer + clearTimeout(timer); + }) + + // check if page has a logo + if($logoImg.length !== 0){ + // check if logo is not loaded + if(!($logoImg[0].complete || $logoImg[0].naturalWidth !== 0)){ + // if logo is not loaded wait for logo to load or fail to check + $logoImg.one("load error", check); + // if logo is already loaded just check + } else check(); + // if page does not have a logo just check + } else check(); + +}); diff --git a/docs/assets/js/plugins/jquery.magnific-popup.js b/docs/assets/js/plugins/jquery.magnific-popup.js new file mode 100644 index 0000000000..7d1d197849 --- /dev/null +++ b/docs/assets/js/plugins/jquery.magnific-popup.js @@ -0,0 +1,1860 @@ +/*! Magnific Popup - v1.1.0 - 2016-02-20 +* http://dimsemenov.com/plugins/magnific-popup/ +* Copyright (c) 2016 Dmitry Semenov; */ +;(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS + factory(require('jquery')); + } else { + // Browser globals + factory(window.jQuery || window.Zepto); + } + }(function($) { + + /*>>core*/ + /** + * + * Magnific Popup Core JS file + * + */ + + + /** + * Private static constants + */ + var CLOSE_EVENT = 'Close', + BEFORE_CLOSE_EVENT = 'BeforeClose', + AFTER_CLOSE_EVENT = 'AfterClose', + BEFORE_APPEND_EVENT = 'BeforeAppend', + MARKUP_PARSE_EVENT = 'MarkupParse', + OPEN_EVENT = 'Open', + CHANGE_EVENT = 'Change', + NS = 'mfp', + EVENT_NS = '.' + NS, + READY_CLASS = 'mfp-ready', + REMOVING_CLASS = 'mfp-removing', + PREVENT_CLOSE_CLASS = 'mfp-prevent-close'; + + + /** + * Private vars + */ + /*jshint -W079 */ + var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this' + MagnificPopup = function(){}, + _isJQ = !!(window.jQuery), + _prevStatus, + _window = $(window), + _document, + _prevContentType, + _wrapClasses, + _currPopupType; + + + /** + * Private functions + */ + var _mfpOn = function(name, f) { + mfp.ev.on(NS + name + EVENT_NS, f); + }, + _getEl = function(className, appendTo, html, raw) { + var el = document.createElement('div'); + el.className = 'mfp-'+className; + if(html) { + el.innerHTML = html; + } + if(!raw) { + el = $(el); + if(appendTo) { + el.appendTo(appendTo); + } + } else if(appendTo) { + appendTo.appendChild(el); + } + return el; + }, + _mfpTrigger = function(e, data) { + mfp.ev.triggerHandler(NS + e, data); + + if(mfp.st.callbacks) { + // converts "mfpEventName" to "eventName" callback and triggers it if it's present + e = e.charAt(0).toLowerCase() + e.slice(1); + if(mfp.st.callbacks[e]) { + mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]); + } + } + }, + _getCloseBtn = function(type) { + if(type !== _currPopupType || !mfp.currTemplate.closeBtn) { + mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) ); + _currPopupType = type; + } + return mfp.currTemplate.closeBtn; + }, + // Initialize Magnific Popup only when called at least once + _checkInstance = function() { + if(!$.magnificPopup.instance) { + /*jshint -W020 */ + mfp = new MagnificPopup(); + mfp.init(); + $.magnificPopup.instance = mfp; + } + }, + // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr + supportsTransitions = function() { + var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist + v = ['ms','O','Moz','Webkit']; // 'v' for vendor + + if( s['transition'] !== undefined ) { + return true; + } + + while( v.length ) { + if( v.pop() + 'Transition' in s ) { + return true; + } + } + + return false; + }; + + + + /** + * Public functions + */ + MagnificPopup.prototype = { + + constructor: MagnificPopup, + + /** + * Initializes Magnific Popup plugin. + * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed + */ + init: function() { + var appVersion = navigator.appVersion; + mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener; + mfp.isAndroid = (/android/gi).test(appVersion); + mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion); + mfp.supportsTransition = supportsTransitions(); + + // We disable fixed positioned lightbox on devices that don't handle it nicely. + // If you know a better way of detecting this - let me know. + mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) ); + _document = $(document); + + mfp.popupsCache = {}; + }, + + /** + * Opens popup + * @param data [description] + */ + open: function(data) { + + var i; + + if(data.isObj === false) { + // convert jQuery collection to array to avoid conflicts later + mfp.items = data.items.toArray(); + + mfp.index = 0; + var items = data.items, + item; + for(i = 0; i < items.length; i++) { + item = items[i]; + if(item.parsed) { + item = item.el[0]; + } + if(item === data.el[0]) { + mfp.index = i; + break; + } + } + } else { + mfp.items = $.isArray(data.items) ? data.items : [data.items]; + mfp.index = data.index || 0; + } + + // if popup is already opened - we just update the content + if(mfp.isOpen) { + mfp.updateItemHTML(); + return; + } + + mfp.types = []; + _wrapClasses = ''; + if(data.mainEl && data.mainEl.length) { + mfp.ev = data.mainEl.eq(0); + } else { + mfp.ev = _document; + } + + if(data.key) { + if(!mfp.popupsCache[data.key]) { + mfp.popupsCache[data.key] = {}; + } + mfp.currTemplate = mfp.popupsCache[data.key]; + } else { + mfp.currTemplate = {}; + } + + + + mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); + mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos; + + if(mfp.st.modal) { + mfp.st.closeOnContentClick = false; + mfp.st.closeOnBgClick = false; + mfp.st.showCloseBtn = false; + mfp.st.enableEscapeKey = false; + } + + + // Building markup + // main containers are created only once + if(!mfp.bgOverlay) { + + // Dark overlay + mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() { + mfp.close(); + }); + + mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) { + if(mfp._checkIfClose(e.target)) { + mfp.close(); + } + }); + + mfp.container = _getEl('container', mfp.wrap); + } + + mfp.contentContainer = _getEl('content'); + if(mfp.st.preloader) { + mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading); + } + + + // Initializing modules + var modules = $.magnificPopup.modules; + for(i = 0; i < modules.length; i++) { + var n = modules[i]; + n = n.charAt(0).toUpperCase() + n.slice(1); + mfp['init'+n].call(mfp); + } + _mfpTrigger('BeforeOpen'); + + + if(mfp.st.showCloseBtn) { + // Close button + if(!mfp.st.closeBtnInside) { + mfp.wrap.append( _getCloseBtn() ); + } else { + _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) { + values.close_replaceWith = _getCloseBtn(item.type); + }); + _wrapClasses += ' mfp-close-btn-in'; + } + } + + if(mfp.st.alignTop) { + _wrapClasses += ' mfp-align-top'; + } + + + + if(mfp.fixedContentPos) { + mfp.wrap.css({ + overflow: mfp.st.overflowY, + overflowX: 'hidden', + overflowY: mfp.st.overflowY + }); + } else { + mfp.wrap.css({ + top: _window.scrollTop(), + position: 'absolute' + }); + } + if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) { + mfp.bgOverlay.css({ + height: _document.height(), + position: 'absolute' + }); + } + + + + if(mfp.st.enableEscapeKey) { + // Close on ESC key + _document.on('keyup' + EVENT_NS, function(e) { + if(e.keyCode === 27) { + mfp.close(); + } + }); + } + + _window.on('resize' + EVENT_NS, function() { + mfp.updateSize(); + }); + + + if(!mfp.st.closeOnContentClick) { + _wrapClasses += ' mfp-auto-cursor'; + } + + if(_wrapClasses) + mfp.wrap.addClass(_wrapClasses); + + + // this triggers recalculation of layout, so we get it once to not to trigger twice + var windowHeight = mfp.wH = _window.height(); + + + var windowStyles = {}; + + if( mfp.fixedContentPos ) { + if(mfp._hasScrollBar(windowHeight)){ + var s = mfp._getScrollbarSize(); + if(s) { + windowStyles.marginRight = s; + } + } + } + + if(mfp.fixedContentPos) { + if(!mfp.isIE7) { + windowStyles.overflow = 'hidden'; + } else { + // ie7 double-scroll bug + $('body, html').css('overflow', 'hidden'); + } + } + + + + var classesToadd = mfp.st.mainClass; + if(mfp.isIE7) { + classesToadd += ' mfp-ie7'; + } + if(classesToadd) { + mfp._addClassToMFP( classesToadd ); + } + + // add content + mfp.updateItemHTML(); + + _mfpTrigger('BuildControls'); + + // remove scrollbar, add margin e.t.c + $('html').css(windowStyles); + + // add everything to DOM + mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) ); + + // Save last focused element + mfp._lastFocusedEl = document.activeElement; + + // Wait for next cycle to allow CSS transition + setTimeout(function() { + + if(mfp.content) { + mfp._addClassToMFP(READY_CLASS); + mfp._setFocus(); + } else { + // if content is not defined (not loaded e.t.c) we add class only for BG + mfp.bgOverlay.addClass(READY_CLASS); + } + + // Trap the focus in popup + _document.on('focusin' + EVENT_NS, mfp._onFocusIn); + + }, 16); + + mfp.isOpen = true; + mfp.updateSize(windowHeight); + _mfpTrigger(OPEN_EVENT); + + return data; + }, + + /** + * Closes the popup + */ + close: function() { + if(!mfp.isOpen) return; + _mfpTrigger(BEFORE_CLOSE_EVENT); + + mfp.isOpen = false; + // for CSS3 animation + if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) { + mfp._addClassToMFP(REMOVING_CLASS); + setTimeout(function() { + mfp._close(); + }, mfp.st.removalDelay); + } else { + mfp._close(); + } + }, + + /** + * Helper for close() function + */ + _close: function() { + _mfpTrigger(CLOSE_EVENT); + + var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' '; + + mfp.bgOverlay.detach(); + mfp.wrap.detach(); + mfp.container.empty(); + + if(mfp.st.mainClass) { + classesToRemove += mfp.st.mainClass + ' '; + } + + mfp._removeClassFromMFP(classesToRemove); + + if(mfp.fixedContentPos) { + var windowStyles = {marginRight: ''}; + if(mfp.isIE7) { + $('body, html').css('overflow', ''); + } else { + windowStyles.overflow = ''; + } + $('html').css(windowStyles); + } + + _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS); + mfp.ev.off(EVENT_NS); + + // clean up DOM elements that aren't removed + mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style'); + mfp.bgOverlay.attr('class', 'mfp-bg'); + mfp.container.attr('class', 'mfp-container'); + + // remove close button from target element + if(mfp.st.showCloseBtn && + (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) { + if(mfp.currTemplate.closeBtn) + mfp.currTemplate.closeBtn.detach(); + } + + + if(mfp.st.autoFocusLast && mfp._lastFocusedEl) { + $(mfp._lastFocusedEl).focus(); // put tab focus back + } + mfp.currItem = null; + mfp.content = null; + mfp.currTemplate = null; + mfp.prevHeight = 0; + + _mfpTrigger(AFTER_CLOSE_EVENT); + }, + + updateSize: function(winHeight) { + + if(mfp.isIOS) { + // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2 + var zoomLevel = document.documentElement.clientWidth / window.innerWidth; + var height = window.innerHeight * zoomLevel; + mfp.wrap.css('height', height); + mfp.wH = height; + } else { + mfp.wH = winHeight || _window.height(); + } + // Fixes #84: popup incorrectly positioned with position:relative on body + if(!mfp.fixedContentPos) { + mfp.wrap.css('height', mfp.wH); + } + + _mfpTrigger('Resize'); + + }, + + /** + * Set content of popup based on current index + */ + updateItemHTML: function() { + var item = mfp.items[mfp.index]; + + // Detach and perform modifications + mfp.contentContainer.detach(); + + if(mfp.content) + mfp.content.detach(); + + if(!item.parsed) { + item = mfp.parseEl( mfp.index ); + } + + var type = item.type; + + _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]); + // BeforeChange event works like so: + // _mfpOn('BeforeChange', function(e, prevType, newType) { }); + + mfp.currItem = item; + + if(!mfp.currTemplate[type]) { + var markup = mfp.st[type] ? mfp.st[type].markup : false; + + // allows to modify markup + _mfpTrigger('FirstMarkupParse', markup); + + if(markup) { + mfp.currTemplate[type] = $(markup); + } else { + // if there is no markup found we just define that template is parsed + mfp.currTemplate[type] = true; + } + } + + if(_prevContentType && _prevContentType !== item.type) { + mfp.container.removeClass('mfp-'+_prevContentType+'-holder'); + } + + var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]); + mfp.appendContent(newContent, type); + + item.preloaded = true; + + _mfpTrigger(CHANGE_EVENT, item); + _prevContentType = item.type; + + // Append container back after its content changed + mfp.container.prepend(mfp.contentContainer); + + _mfpTrigger('AfterChange'); + }, + + + /** + * Set HTML content of popup + */ + appendContent: function(newContent, type) { + mfp.content = newContent; + + if(newContent) { + if(mfp.st.showCloseBtn && mfp.st.closeBtnInside && + mfp.currTemplate[type] === true) { + // if there is no markup, we just append close button element inside + if(!mfp.content.find('.mfp-close').length) { + mfp.content.append(_getCloseBtn()); + } + } else { + mfp.content = newContent; + } + } else { + mfp.content = ''; + } + + _mfpTrigger(BEFORE_APPEND_EVENT); + mfp.container.addClass('mfp-'+type+'-holder'); + + mfp.contentContainer.append(mfp.content); + }, + + + /** + * Creates Magnific Popup data object based on given data + * @param {int} index Index of item to parse + */ + parseEl: function(index) { + var item = mfp.items[index], + type; + + if(item.tagName) { + item = { el: $(item) }; + } else { + type = item.type; + item = { data: item, src: item.src }; + } + + if(item.el) { + var types = mfp.types; + + // check for 'mfp-TYPE' class + for(var i = 0; i < types.length; i++) { + if( item.el.hasClass('mfp-'+types[i]) ) { + type = types[i]; + break; + } + } + + item.src = item.el.attr('data-mfp-src'); + if(!item.src) { + item.src = item.el.attr('href'); + } + } + + item.type = type || mfp.st.type || 'inline'; + item.index = index; + item.parsed = true; + mfp.items[index] = item; + _mfpTrigger('ElementParse', item); + + return mfp.items[index]; + }, + + + /** + * Initializes single popup or a group of popups + */ + addGroup: function(el, options) { + var eHandler = function(e) { + e.mfpEl = this; + mfp._openClick(e, el, options); + }; + + if(!options) { + options = {}; + } + + var eName = 'click.magnificPopup'; + options.mainEl = el; + + if(options.items) { + options.isObj = true; + el.off(eName).on(eName, eHandler); + } else { + options.isObj = false; + if(options.delegate) { + el.off(eName).on(eName, options.delegate , eHandler); + } else { + options.items = el; + el.off(eName).on(eName, eHandler); + } + } + }, + _openClick: function(e, el, options) { + var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick; + + + if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) { + return; + } + + var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn; + + if(disableOn) { + if($.isFunction(disableOn)) { + if( !disableOn.call(mfp) ) { + return true; + } + } else { // else it's number + if( _window.width() < disableOn ) { + return true; + } + } + } + + if(e.type) { + e.preventDefault(); + + // This will prevent popup from closing if element is inside and popup is already opened + if(mfp.isOpen) { + e.stopPropagation(); + } + } + + options.el = $(e.mfpEl); + if(options.delegate) { + options.items = el.find(options.delegate); + } + mfp.open(options); + }, + + + /** + * Updates text on preloader + */ + updateStatus: function(status, text) { + + if(mfp.preloader) { + if(_prevStatus !== status) { + mfp.container.removeClass('mfp-s-'+_prevStatus); + } + + if(!text && status === 'loading') { + text = mfp.st.tLoading; + } + + var data = { + status: status, + text: text + }; + // allows to modify status + _mfpTrigger('UpdateStatus', data); + + status = data.status; + text = data.text; + + mfp.preloader.html(text); + + mfp.preloader.find('a').on('click', function(e) { + e.stopImmediatePropagation(); + }); + + mfp.container.addClass('mfp-s-'+status); + _prevStatus = status; + } + }, + + + /* + "Private" helpers that aren't private at all + */ + // Check to close popup or not + // "target" is an element that was clicked + _checkIfClose: function(target) { + + if($(target).hasClass(PREVENT_CLOSE_CLASS)) { + return; + } + + var closeOnContent = mfp.st.closeOnContentClick; + var closeOnBg = mfp.st.closeOnBgClick; + + if(closeOnContent && closeOnBg) { + return true; + } else { + + // We close the popup if click is on close button or on preloader. Or if there is no content. + if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) { + return true; + } + + // if click is outside the content + if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) { + if(closeOnBg) { + // last check, if the clicked element is in DOM, (in case it's removed onclick) + if( $.contains(document, target) ) { + return true; + } + } + } else if(closeOnContent) { + return true; + } + + } + return false; + }, + _addClassToMFP: function(cName) { + mfp.bgOverlay.addClass(cName); + mfp.wrap.addClass(cName); + }, + _removeClassFromMFP: function(cName) { + this.bgOverlay.removeClass(cName); + mfp.wrap.removeClass(cName); + }, + _hasScrollBar: function(winHeight) { + return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) ); + }, + _setFocus: function() { + (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus(); + }, + _onFocusIn: function(e) { + if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) { + mfp._setFocus(); + return false; + } + }, + _parseMarkup: function(template, values, item) { + var arr; + if(item.data) { + values = $.extend(item.data, values); + } + _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] ); + + $.each(values, function(key, value) { + if(value === undefined || value === false) { + return true; + } + arr = key.split('_'); + if(arr.length > 1) { + var el = template.find(EVENT_NS + '-'+arr[0]); + + if(el.length > 0) { + var attr = arr[1]; + if(attr === 'replaceWith') { + if(el[0] !== value[0]) { + el.replaceWith(value); + } + } else if(attr === 'img') { + if(el.is('img')) { + el.attr('src', value); + } else { + el.replaceWith( $('').attr('src', value).attr('class', el.attr('class')) ); + } + } else { + el.attr(arr[1], value); + } + } + + } else { + template.find(EVENT_NS + '-'+key).html(value); + } + }); + }, + + _getScrollbarSize: function() { + // thx David + if(mfp.scrollbarSize === undefined) { + var scrollDiv = document.createElement("div"); + scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; + document.body.appendChild(scrollDiv); + mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + } + return mfp.scrollbarSize; + } + + }; /* MagnificPopup core prototype end */ + + + + + /** + * Public static functions + */ + $.magnificPopup = { + instance: null, + proto: MagnificPopup.prototype, + modules: [], + + open: function(options, index) { + _checkInstance(); + + if(!options) { + options = {}; + } else { + options = $.extend(true, {}, options); + } + + options.isObj = true; + options.index = index || 0; + return this.instance.open(options); + }, + + close: function() { + return $.magnificPopup.instance && $.magnificPopup.instance.close(); + }, + + registerModule: function(name, module) { + if(module.options) { + $.magnificPopup.defaults[name] = module.options; + } + $.extend(this.proto, module.proto); + this.modules.push(name); + }, + + defaults: { + + // Info about options is in docs: + // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options + + disableOn: 0, + + key: null, + + midClick: false, + + mainClass: '', + + preloader: true, + + focus: '', // CSS selector of input to focus after popup is opened + + closeOnContentClick: false, + + closeOnBgClick: true, + + closeBtnInside: true, + + showCloseBtn: true, + + enableEscapeKey: true, + + modal: false, + + alignTop: false, + + removalDelay: 0, + + prependTo: null, + + fixedContentPos: 'auto', + + fixedBgPos: 'auto', + + overflowY: 'auto', + + closeMarkup: '', + + tClose: 'Close (Esc)', + + tLoading: 'Loading...', + + autoFocusLast: true + + } + }; + + + + $.fn.magnificPopup = function(options) { + _checkInstance(); + + var jqEl = $(this); + + // We call some API method of first param is a string + if (typeof options === "string" ) { + + if(options === 'open') { + var items, + itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup, + index = parseInt(arguments[1], 10) || 0; + + if(itemOpts.items) { + items = itemOpts.items[index]; + } else { + items = jqEl; + if(itemOpts.delegate) { + items = items.find(itemOpts.delegate); + } + items = items.eq( index ); + } + mfp._openClick({mfpEl:items}, jqEl, itemOpts); + } else { + if(mfp.isOpen) + mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1)); + } + + } else { + // clone options obj + options = $.extend(true, {}, options); + + /* + * As Zepto doesn't support .data() method for objects + * and it works only in normal browsers + * we assign "options" object directly to the DOM element. FTW! + */ + if(_isJQ) { + jqEl.data('magnificPopup', options); + } else { + jqEl[0].magnificPopup = options; + } + + mfp.addGroup(jqEl, options); + + } + return jqEl; + }; + + /*>>core*/ + + /*>>inline*/ + + var INLINE_NS = 'inline', + _hiddenClass, + _inlinePlaceholder, + _lastInlineElement, + _putInlineElementsBack = function() { + if(_lastInlineElement) { + _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach(); + _lastInlineElement = null; + } + }; + + $.magnificPopup.registerModule(INLINE_NS, { + options: { + hiddenClass: 'hide', // will be appended with `mfp-` prefix + markup: '', + tNotFound: 'Content not found' + }, + proto: { + + initInline: function() { + mfp.types.push(INLINE_NS); + + _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() { + _putInlineElementsBack(); + }); + }, + + getInline: function(item, template) { + + _putInlineElementsBack(); + + if(item.src) { + var inlineSt = mfp.st.inline, + el = $(item.src); + + if(el.length) { + + // If target element has parent - we replace it with placeholder and put it back after popup is closed + var parent = el[0].parentNode; + if(parent && parent.tagName) { + if(!_inlinePlaceholder) { + _hiddenClass = inlineSt.hiddenClass; + _inlinePlaceholder = _getEl(_hiddenClass); + _hiddenClass = 'mfp-'+_hiddenClass; + } + // replace target inline element with placeholder + _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass); + } + + mfp.updateStatus('ready'); + } else { + mfp.updateStatus('error', inlineSt.tNotFound); + el = $('
'); + } + + item.inlineElement = el; + return el; + } + + mfp.updateStatus('ready'); + mfp._parseMarkup(template, {}, item); + return template; + } + } + }); + + /*>>inline*/ + + /*>>ajax*/ + var AJAX_NS = 'ajax', + _ajaxCur, + _removeAjaxCursor = function() { + if(_ajaxCur) { + $(document.body).removeClass(_ajaxCur); + } + }, + _destroyAjaxRequest = function() { + _removeAjaxCursor(); + if(mfp.req) { + mfp.req.abort(); + } + }; + + $.magnificPopup.registerModule(AJAX_NS, { + + options: { + settings: null, + cursor: 'mfp-ajax-cur', + tError: 'The content could not be loaded.' + }, + + proto: { + initAjax: function() { + mfp.types.push(AJAX_NS); + _ajaxCur = mfp.st.ajax.cursor; + + _mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest); + _mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest); + }, + getAjax: function(item) { + + if(_ajaxCur) { + $(document.body).addClass(_ajaxCur); + } + + mfp.updateStatus('loading'); + + var opts = $.extend({ + url: item.src, + success: function(data, textStatus, jqXHR) { + var temp = { + data:data, + xhr:jqXHR + }; + + _mfpTrigger('ParseAjax', temp); + + mfp.appendContent( $(temp.data), AJAX_NS ); + + item.finished = true; + + _removeAjaxCursor(); + + mfp._setFocus(); + + setTimeout(function() { + mfp.wrap.addClass(READY_CLASS); + }, 16); + + mfp.updateStatus('ready'); + + _mfpTrigger('AjaxContentAdded'); + }, + error: function() { + _removeAjaxCursor(); + item.finished = item.loadError = true; + mfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src)); + } + }, mfp.st.ajax.settings); + + mfp.req = $.ajax(opts); + + return ''; + } + } + }); + + /*>>ajax*/ + + /*>>image*/ + var _imgInterval, + _getTitle = function(item) { + if(item.data && item.data.title !== undefined) + return item.data.title; + + var src = mfp.st.image.titleSrc; + + if(src) { + if($.isFunction(src)) { + return src.call(mfp, item); + } else if(item.el) { + return item.el.attr(src) || ''; + } + } + return ''; + }; + + $.magnificPopup.registerModule('image', { + + options: { + markup: '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
'+ + '
', + cursor: 'mfp-zoom-out-cur', + titleSrc: 'title', + verticalFit: true, + tError: 'The image could not be loaded.' + }, + + proto: { + initImage: function() { + var imgSt = mfp.st.image, + ns = '.image'; + + mfp.types.push('image'); + + _mfpOn(OPEN_EVENT+ns, function() { + if(mfp.currItem.type === 'image' && imgSt.cursor) { + $(document.body).addClass(imgSt.cursor); + } + }); + + _mfpOn(CLOSE_EVENT+ns, function() { + if(imgSt.cursor) { + $(document.body).removeClass(imgSt.cursor); + } + _window.off('resize' + EVENT_NS); + }); + + _mfpOn('Resize'+ns, mfp.resizeImage); + if(mfp.isLowIE) { + _mfpOn('AfterChange', mfp.resizeImage); + } + }, + resizeImage: function() { + var item = mfp.currItem; + if(!item || !item.img) return; + + if(mfp.st.image.verticalFit) { + var decr = 0; + // fix box-sizing in ie7/8 + if(mfp.isLowIE) { + decr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10); + } + item.img.css('max-height', mfp.wH-decr); + } + }, + _onImageHasSize: function(item) { + if(item.img) { + + item.hasSize = true; + + if(_imgInterval) { + clearInterval(_imgInterval); + } + + item.isCheckingImgSize = false; + + _mfpTrigger('ImageHasSize', item); + + if(item.imgHidden) { + if(mfp.content) + mfp.content.removeClass('mfp-loading'); + + item.imgHidden = false; + } + + } + }, + + /** + * Function that loops until the image has size to display elements that rely on it asap + */ + findImageSize: function(item) { + + var counter = 0, + img = item.img[0], + mfpSetInterval = function(delay) { + + if(_imgInterval) { + clearInterval(_imgInterval); + } + // decelerating interval that checks for size of an image + _imgInterval = setInterval(function() { + if(img.naturalWidth > 0) { + mfp._onImageHasSize(item); + return; + } + + if(counter > 200) { + clearInterval(_imgInterval); + } + + counter++; + if(counter === 3) { + mfpSetInterval(10); + } else if(counter === 40) { + mfpSetInterval(50); + } else if(counter === 100) { + mfpSetInterval(500); + } + }, delay); + }; + + mfpSetInterval(1); + }, + + getImage: function(item, template) { + + var guard = 0, + + // image load complete handler + onLoadComplete = function() { + if(item) { + if (item.img[0].complete) { + item.img.off('.mfploader'); + + if(item === mfp.currItem){ + mfp._onImageHasSize(item); + + mfp.updateStatus('ready'); + } + + item.hasSize = true; + item.loaded = true; + + _mfpTrigger('ImageLoadComplete'); + + } + else { + // if image complete check fails 200 times (20 sec), we assume that there was an error. + guard++; + if(guard < 200) { + setTimeout(onLoadComplete,100); + } else { + onLoadError(); + } + } + } + }, + + // image error handler + onLoadError = function() { + if(item) { + item.img.off('.mfploader'); + if(item === mfp.currItem){ + mfp._onImageHasSize(item); + mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); + } + + item.hasSize = true; + item.loaded = true; + item.loadError = true; + } + }, + imgSt = mfp.st.image; + + + var el = template.find('.mfp-img'); + if(el.length) { + var img = document.createElement('img'); + img.className = 'mfp-img'; + if(item.el && item.el.find('img').length) { + img.alt = item.el.find('img').attr('alt'); + } + item.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError); + img.src = item.src; + + // without clone() "error" event is not firing when IMG is replaced by new IMG + // TODO: find a way to avoid such cloning + if(el.is('img')) { + item.img = item.img.clone(); + } + + img = item.img[0]; + if(img.naturalWidth > 0) { + item.hasSize = true; + } else if(!img.width) { + item.hasSize = false; + } + } + + mfp._parseMarkup(template, { + title: _getTitle(item), + img_replaceWith: item.img + }, item); + + mfp.resizeImage(); + + if(item.hasSize) { + if(_imgInterval) clearInterval(_imgInterval); + + if(item.loadError) { + template.addClass('mfp-loading'); + mfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) ); + } else { + template.removeClass('mfp-loading'); + mfp.updateStatus('ready'); + } + return template; + } + + mfp.updateStatus('loading'); + item.loading = true; + + if(!item.hasSize) { + item.imgHidden = true; + template.addClass('mfp-loading'); + mfp.findImageSize(item); + } + + return template; + } + } + }); + + /*>>image*/ + + /*>>zoom*/ + var hasMozTransform, + getHasMozTransform = function() { + if(hasMozTransform === undefined) { + hasMozTransform = document.createElement('p').style.MozTransform !== undefined; + } + return hasMozTransform; + }; + + $.magnificPopup.registerModule('zoom', { + + options: { + enabled: false, + easing: 'ease-in-out', + duration: 300, + opener: function(element) { + return element.is('img') ? element : element.find('img'); + } + }, + + proto: { + + initZoom: function() { + var zoomSt = mfp.st.zoom, + ns = '.zoom', + image; + + if(!zoomSt.enabled || !mfp.supportsTransition) { + return; + } + + var duration = zoomSt.duration, + getElToAnimate = function(image) { + var newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'), + transition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing, + cssObj = { + position: 'fixed', + zIndex: 9999, + left: 0, + top: 0, + '-webkit-backface-visibility': 'hidden' + }, + t = 'transition'; + + cssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition; + + newImg.css(cssObj); + return newImg; + }, + showMainContent = function() { + mfp.content.css('visibility', 'visible'); + }, + openTimeout, + animatedImg; + + _mfpOn('BuildControls'+ns, function() { + if(mfp._allowZoom()) { + + clearTimeout(openTimeout); + mfp.content.css('visibility', 'hidden'); + + // Basically, all code below does is clones existing image, puts in on top of the current one and animated it + + image = mfp._getItemToZoom(); + + if(!image) { + showMainContent(); + return; + } + + animatedImg = getElToAnimate(image); + + animatedImg.css( mfp._getOffset() ); + + mfp.wrap.append(animatedImg); + + openTimeout = setTimeout(function() { + animatedImg.css( mfp._getOffset( true ) ); + openTimeout = setTimeout(function() { + + showMainContent(); + + setTimeout(function() { + animatedImg.remove(); + image = animatedImg = null; + _mfpTrigger('ZoomAnimationEnded'); + }, 16); // avoid blink when switching images + + }, duration); // this timeout equals animation duration + + }, 16); // by adding this timeout we avoid short glitch at the beginning of animation + + + // Lots of timeouts... + } + }); + _mfpOn(BEFORE_CLOSE_EVENT+ns, function() { + if(mfp._allowZoom()) { + + clearTimeout(openTimeout); + + mfp.st.removalDelay = duration; + + if(!image) { + image = mfp._getItemToZoom(); + if(!image) { + return; + } + animatedImg = getElToAnimate(image); + } + + animatedImg.css( mfp._getOffset(true) ); + mfp.wrap.append(animatedImg); + mfp.content.css('visibility', 'hidden'); + + setTimeout(function() { + animatedImg.css( mfp._getOffset() ); + }, 16); + } + + }); + + _mfpOn(CLOSE_EVENT+ns, function() { + if(mfp._allowZoom()) { + showMainContent(); + if(animatedImg) { + animatedImg.remove(); + } + image = null; + } + }); + }, + + _allowZoom: function() { + return mfp.currItem.type === 'image'; + }, + + _getItemToZoom: function() { + if(mfp.currItem.hasSize) { + return mfp.currItem.img; + } else { + return false; + } + }, + + // Get element postion relative to viewport + _getOffset: function(isLarge) { + var el; + if(isLarge) { + el = mfp.currItem.img; + } else { + el = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem); + } + + var offset = el.offset(); + var paddingTop = parseInt(el.css('padding-top'),10); + var paddingBottom = parseInt(el.css('padding-bottom'),10); + offset.top -= ( $(window).scrollTop() - paddingTop ); + + + /* + + Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa. + + */ + var obj = { + width: el.width(), + // fix Zepto height+padding issue + height: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop + }; + + // I hate to do this, but there is no another option + if( getHasMozTransform() ) { + obj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)'; + } else { + obj.left = offset.left; + obj.top = offset.top; + } + return obj; + } + + } + }); + + + + /*>>zoom*/ + + /*>>iframe*/ + + var IFRAME_NS = 'iframe', + _emptyPage = '//about:blank', + + _fixIframeBugs = function(isShowing) { + if(mfp.currTemplate[IFRAME_NS]) { + var el = mfp.currTemplate[IFRAME_NS].find('iframe'); + if(el.length) { + // reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug + if(!isShowing) { + el[0].src = _emptyPage; + } + + // IE8 black screen bug fix + if(mfp.isIE8) { + el.css('display', isShowing ? 'block' : 'none'); + } + } + } + }; + + $.magnificPopup.registerModule(IFRAME_NS, { + + options: { + markup: '
'+ + '
'+ + ''+ + '
', + + srcAction: 'iframe_src', + + // we don't care and support only one default type of URL by default + patterns: { + youtube: { + index: 'youtube.com', + id: 'v=', + src: '//www.youtube.com/embed/%id%?autoplay=1' + }, + vimeo: { + index: 'vimeo.com/', + id: '/', + src: '//player.vimeo.com/video/%id%?autoplay=1' + }, + gmaps: { + index: '//maps.google.', + src: '%id%&output=embed' + } + } + }, + + proto: { + initIframe: function() { + mfp.types.push(IFRAME_NS); + + _mfpOn('BeforeChange', function(e, prevType, newType) { + if(prevType !== newType) { + if(prevType === IFRAME_NS) { + _fixIframeBugs(); // iframe if removed + } else if(newType === IFRAME_NS) { + _fixIframeBugs(true); // iframe is showing + } + }// else { + // iframe source is switched, don't do anything + //} + }); + + _mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() { + _fixIframeBugs(); + }); + }, + + getIframe: function(item, template) { + var embedSrc = item.src; + var iframeSt = mfp.st.iframe; + + $.each(iframeSt.patterns, function() { + if(embedSrc.indexOf( this.index ) > -1) { + if(this.id) { + if(typeof this.id === 'string') { + embedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length); + } else { + embedSrc = this.id.call( this, embedSrc ); + } + } + embedSrc = this.src.replace('%id%', embedSrc ); + return false; // break; + } + }); + + var dataObj = {}; + if(iframeSt.srcAction) { + dataObj[iframeSt.srcAction] = embedSrc; + } + mfp._parseMarkup(template, dataObj, item); + + mfp.updateStatus('ready'); + + return template; + } + } + }); + + + + /*>>iframe*/ + + /*>>gallery*/ + /** + * Get looped index depending on number of slides + */ + var _getLoopedId = function(index) { + var numSlides = mfp.items.length; + if(index > numSlides - 1) { + return index - numSlides; + } else if(index < 0) { + return numSlides + index; + } + return index; + }, + _replaceCurrTotal = function(text, curr, total) { + return text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total); + }; + + $.magnificPopup.registerModule('gallery', { + + options: { + enabled: false, + arrowMarkup: '', + preload: [0,2], + navigateByImgClick: true, + arrows: true, + + tPrev: 'Previous (Left arrow key)', + tNext: 'Next (Right arrow key)', + tCounter: '%curr% of %total%' + }, + + proto: { + initGallery: function() { + + var gSt = mfp.st.gallery, + ns = '.mfp-gallery'; + + mfp.direction = true; // true - next, false - prev + + if(!gSt || !gSt.enabled ) return false; + + _wrapClasses += ' mfp-gallery'; + + _mfpOn(OPEN_EVENT+ns, function() { + + if(gSt.navigateByImgClick) { + mfp.wrap.on('click'+ns, '.mfp-img', function() { + if(mfp.items.length > 1) { + mfp.next(); + return false; + } + }); + } + + _document.on('keydown'+ns, function(e) { + if (e.keyCode === 37) { + mfp.prev(); + } else if (e.keyCode === 39) { + mfp.next(); + } + }); + }); + + _mfpOn('UpdateStatus'+ns, function(e, data) { + if(data.text) { + data.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length); + } + }); + + _mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) { + var l = mfp.items.length; + values.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : ''; + }); + + _mfpOn('BuildControls' + ns, function() { + if(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) { + var markup = gSt.arrowMarkup, + arrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS), + arrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS); + + arrowLeft.click(function() { + mfp.prev(); + }); + arrowRight.click(function() { + mfp.next(); + }); + + mfp.container.append(arrowLeft.add(arrowRight)); + } + }); + + _mfpOn(CHANGE_EVENT+ns, function() { + if(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout); + + mfp._preloadTimeout = setTimeout(function() { + mfp.preloadNearbyImages(); + mfp._preloadTimeout = null; + }, 16); + }); + + + _mfpOn(CLOSE_EVENT+ns, function() { + _document.off(ns); + mfp.wrap.off('click'+ns); + mfp.arrowRight = mfp.arrowLeft = null; + }); + + }, + next: function() { + mfp.direction = true; + mfp.index = _getLoopedId(mfp.index + 1); + mfp.updateItemHTML(); + }, + prev: function() { + mfp.direction = false; + mfp.index = _getLoopedId(mfp.index - 1); + mfp.updateItemHTML(); + }, + goTo: function(newIndex) { + mfp.direction = (newIndex >= mfp.index); + mfp.index = newIndex; + mfp.updateItemHTML(); + }, + preloadNearbyImages: function() { + var p = mfp.st.gallery.preload, + preloadBefore = Math.min(p[0], mfp.items.length), + preloadAfter = Math.min(p[1], mfp.items.length), + i; + + for(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) { + mfp._preloadItem(mfp.index+i); + } + for(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) { + mfp._preloadItem(mfp.index-i); + } + }, + _preloadItem: function(index) { + index = _getLoopedId(index); + + if(mfp.items[index].preloaded) { + return; + } + + var item = mfp.items[index]; + if(!item.parsed) { + item = mfp.parseEl( index ); + } + + _mfpTrigger('LazyLoad', item); + + if(item.type === 'image') { + item.img = $('').on('load.mfploader', function() { + item.hasSize = true; + }).on('error.mfploader', function() { + item.hasSize = true; + item.loadError = true; + _mfpTrigger('LazyLoadError', item); + }).attr('src', item.src); + } + + + item.preloaded = true; + } + } + }); + + /*>>gallery*/ + + /*>>retina*/ + + var RETINA_NS = 'retina'; + + $.magnificPopup.registerModule(RETINA_NS, { + options: { + replaceSrc: function(item) { + return item.src.replace(/\.\w+$/, function(m) { return '@2x' + m; }); + }, + ratio: 1 // Function or number. Set to 1 to disable. + }, + proto: { + initRetina: function() { + if(window.devicePixelRatio > 1) { + + var st = mfp.st.retina, + ratio = st.ratio; + + ratio = !isNaN(ratio) ? ratio : ratio(); + + if(ratio > 1) { + _mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) { + item.img.css({ + 'max-width': item.img[0].naturalWidth / ratio, + 'width': '100%' + }); + }); + _mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) { + item.src = st.replaceSrc(item, ratio); + }); + } + } + + } + } + }); + + /*>>retina*/ + _checkInstance(); })); \ No newline at end of file diff --git a/docs/assets/js/plugins/smooth-scroll.js b/docs/assets/js/plugins/smooth-scroll.js new file mode 100644 index 0000000000..c4179a731f --- /dev/null +++ b/docs/assets/js/plugins/smooth-scroll.js @@ -0,0 +1,650 @@ +/*! + * smooth-scroll v16.1.2 + * Animate scrolling to anchor links + * (c) 2020 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/smooth-scroll + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + define([], (function () { + return factory(root); + })); + } else if (typeof exports === 'object') { + module.exports = factory(root); + } else { + root.SmoothScroll = factory(root); + } +})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) { + + 'use strict'; + + // + // Default settings + // + + var defaults = { + + // Selectors + ignore: '[data-scroll-ignore]', + header: null, + topOnEmptyHash: true, + + // Speed & Duration + speed: 500, + speedAsDuration: false, + durationMax: null, + durationMin: null, + clip: true, + offset: 0, + + // Easing + easing: 'easeInOutCubic', + customEasing: null, + + // History + updateURL: true, + popstate: true, + + // Custom Events + emitEvents: true + + }; + + + // + // Utility Methods + // + + /** + * Check if browser supports required methods + * @return {Boolean} Returns true if all required methods are supported + */ + var supports = function () { + return ( + 'querySelector' in document && + 'addEventListener' in window && + 'requestAnimationFrame' in window && + 'closest' in window.Element.prototype + ); + }; + + /** + * Merge two or more objects together. + * @param {Object} objects The objects to merge together + * @returns {Object} Merged values of defaults and options + */ + var extend = function () { + var merged = {}; + Array.prototype.forEach.call(arguments, (function (obj) { + for (var key in obj) { + if (!obj.hasOwnProperty(key)) return; + merged[key] = obj[key]; + } + })); + return merged; + }; + + /** + * Check to see if user prefers reduced motion + * @param {Object} settings Script settings + */ + var reduceMotion = function () { + if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) { + return true; + } + return false; + }; + + /** + * Get the height of an element. + * @param {Node} elem The element to get the height of + * @return {Number} The element's height in pixels + */ + var getHeight = function (elem) { + return parseInt(window.getComputedStyle(elem).height, 10); + }; + + /** + * Escape special characters for use with querySelector + * @author Mathias Bynens + * @link https://github.com/mathiasbynens/CSS.escape + * @param {String} id The anchor ID to escape + */ + var escapeCharacters = function (id) { + + // Remove leading hash + if (id.charAt(0) === '#') { + id = id.substr(1); + } + + var string = String(id); + var length = string.length; + var index = -1; + var codeUnit; + var result = ''; + var firstCodeUnit = string.charCodeAt(0); + while (++index < length) { + codeUnit = string.charCodeAt(index); + // Note: there’s no need to special-case astral symbols, surrogate + // pairs, or lone surrogates. + + // If the character is NULL (U+0000), then throw an + // `InvalidCharacterError` exception and terminate these steps. + if (codeUnit === 0x0000) { + throw new InvalidCharacterError( + 'Invalid character: the input contains U+0000.' + ); + } + + if ( + // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is + // U+007F, […] + (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F || + // If the character is the first character and is in the range [0-9] + // (U+0030 to U+0039), […] + (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) || + // If the character is the second character and is in the range [0-9] + // (U+0030 to U+0039) and the first character is a `-` (U+002D), […] + ( + index === 1 && + codeUnit >= 0x0030 && codeUnit <= 0x0039 && + firstCodeUnit === 0x002D + ) + ) { + // http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point + result += '\\' + codeUnit.toString(16) + ' '; + continue; + } + + // If the character is not handled by one of the above rules and is + // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or + // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to + // U+005A), or [a-z] (U+0061 to U+007A), […] + if ( + codeUnit >= 0x0080 || + codeUnit === 0x002D || + codeUnit === 0x005F || + codeUnit >= 0x0030 && codeUnit <= 0x0039 || + codeUnit >= 0x0041 && codeUnit <= 0x005A || + codeUnit >= 0x0061 && codeUnit <= 0x007A + ) { + // the character itself + result += string.charAt(index); + continue; + } + + // Otherwise, the escaped character. + // http://dev.w3.org/csswg/cssom/#escape-a-character + result += '\\' + string.charAt(index); + + } + + // Return sanitized hash + return '#' + result; + + }; + + /** + * Calculate the easing pattern + * @link https://gist.github.com/gre/1650294 + * @param {String} type Easing pattern + * @param {Number} time Time animation should take to complete + * @returns {Number} + */ + var easingPattern = function (settings, time) { + var pattern; + + // Default Easing Patterns + if (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity + if (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity + if (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration + if (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity + if (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity + if (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration + if (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity + if (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity + if (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration + if (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity + if (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity + if (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration + + // Custom Easing Patterns + if (!!settings.customEasing) pattern = settings.customEasing(time); + + return pattern || time; // no easing, no acceleration + }; + + /** + * Determine the document's height + * @returns {Number} + */ + var getDocumentHeight = function () { + return Math.max( + document.body.scrollHeight, document.documentElement.scrollHeight, + document.body.offsetHeight, document.documentElement.offsetHeight, + document.body.clientHeight, document.documentElement.clientHeight + ); + }; + + /** + * Calculate how far to scroll + * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405 + * @param {Element} anchor The anchor element to scroll to + * @param {Number} headerHeight Height of a fixed header, if any + * @param {Number} offset Number of pixels by which to offset scroll + * @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page + * @returns {Number} + */ + var getEndLocation = function (anchor, headerHeight, offset, clip) { + var location = 0; + if (anchor.offsetParent) { + do { + location += anchor.offsetTop; + anchor = anchor.offsetParent; + } while (anchor); + } + location = Math.max(location - headerHeight - offset, 0); + if (clip) { + location = Math.min(location, getDocumentHeight() - window.innerHeight); + } + return location; + }; + + /** + * Get the height of the fixed header + * @param {Node} header The header + * @return {Number} The height of the header + */ + var getHeaderHeight = function (header) { + return !header ? 0 : (getHeight(header) + header.offsetTop); + }; + + /** + * Calculate the speed to use for the animation + * @param {Number} distance The distance to travel + * @param {Object} settings The plugin settings + * @return {Number} How fast to animate + */ + var getSpeed = function (distance, settings) { + var speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed); + if (settings.durationMax && speed > settings.durationMax) return settings.durationMax; + if (settings.durationMin && speed < settings.durationMin) return settings.durationMin; + return parseInt(speed, 10); + }; + + var setHistory = function (options) { + + // Make sure this should run + if (!history.replaceState || !options.updateURL || history.state) return; + + // Get the hash to use + var hash = window.location.hash; + hash = hash ? hash : ''; + + // Set a default history + history.replaceState( + { + smoothScroll: JSON.stringify(options), + anchor: hash ? hash : window.pageYOffset + }, + document.title, + hash ? hash : window.location.href + ); + + }; + + /** + * Update the URL + * @param {Node} anchor The anchor that was scrolled to + * @param {Boolean} isNum If true, anchor is a number + * @param {Object} options Settings for Smooth Scroll + */ + var updateURL = function (anchor, isNum, options) { + + // Bail if the anchor is a number + if (isNum) return; + + // Verify that pushState is supported and the updateURL option is enabled + if (!history.pushState || !options.updateURL) return; + + // Update URL + history.pushState( + { + smoothScroll: JSON.stringify(options), + anchor: anchor.id + }, + document.title, + anchor === document.documentElement ? '#top' : '#' + anchor.id + ); + + }; + + /** + * Bring the anchored element into focus + * @param {Node} anchor The anchor element + * @param {Number} endLocation The end location to scroll to + * @param {Boolean} isNum If true, scroll is to a position rather than an element + */ + var adjustFocus = function (anchor, endLocation, isNum) { + + // Is scrolling to top of page, blur + if (anchor === 0) { + document.body.focus(); + } + + // Don't run if scrolling to a number on the page + if (isNum) return; + + // Otherwise, bring anchor element into focus + anchor.focus(); + if (document.activeElement !== anchor) { + anchor.setAttribute('tabindex', '-1'); + anchor.focus(); + anchor.style.outline = 'none'; + } + window.scrollTo(0 , endLocation); + + }; + + /** + * Emit a custom event + * @param {String} type The event type + * @param {Object} options The settings object + * @param {Node} anchor The anchor element + * @param {Node} toggle The toggle element + */ + var emitEvent = function (type, options, anchor, toggle) { + if (!options.emitEvents || typeof window.CustomEvent !== 'function') return; + var event = new CustomEvent(type, { + bubbles: true, + detail: { + anchor: anchor, + toggle: toggle + } + }); + document.dispatchEvent(event); + }; + + + // + // SmoothScroll Constructor + // + + var SmoothScroll = function (selector, options) { + + // + // Variables + // + + var smoothScroll = {}; // Object for public APIs + var settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval; + + + // + // Methods + // + + /** + * Cancel a scroll-in-progress + */ + smoothScroll.cancelScroll = function (noEvent) { + cancelAnimationFrame(animationInterval); + animationInterval = null; + if (noEvent) return; + emitEvent('scrollCancel', settings); + }; + + /** + * Start/stop the scrolling animation + * @param {Node|Number} anchor The element or position to scroll to + * @param {Element} toggle The element that toggled the scroll event + * @param {Object} options + */ + smoothScroll.animateScroll = function (anchor, toggle, options) { + + // Cancel any in progress scrolls + smoothScroll.cancelScroll(); + + // Local settings + var _settings = extend(settings || defaults, options || {}); // Merge user options with defaults + + // Selectors and variables + var isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false; + var anchorElem = isNum || !anchor.tagName ? null : anchor; + if (!isNum && !anchorElem) return; + var startLocation = window.pageYOffset; // Current location on the page + if (_settings.header && !fixedHeader) { + // Get the fixed header if not already set + fixedHeader = document.querySelector(_settings.header); + } + var headerHeight = getHeaderHeight(fixedHeader); + var endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to + var distance = endLocation - startLocation; // distance to travel + var documentHeight = getDocumentHeight(); + var timeLapsed = 0; + var speed = getSpeed(distance, _settings); + var start, percentage, position; + + /** + * Stop the scroll animation when it reaches its target (or the bottom/top of page) + * @param {Number} position Current position on the page + * @param {Number} endLocation Scroll to location + * @param {Number} animationInterval How much to scroll on this loop + */ + var stopAnimateScroll = function (position, endLocation) { + + // Get the current location + var currentLocation = window.pageYOffset; + + // Check if the end location has been reached yet (or we've hit the end of the document) + if (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) { + + // Clear the animation timer + smoothScroll.cancelScroll(true); + + // Bring the anchored element into focus + adjustFocus(anchor, endLocation, isNum); + + // Emit a custom event + emitEvent('scrollStop', _settings, anchor, toggle); + + // Reset start + start = null; + animationInterval = null; + + return true; + + } + }; + + /** + * Loop scrolling animation + */ + var loopAnimateScroll = function (timestamp) { + if (!start) { start = timestamp; } + timeLapsed += timestamp - start; + percentage = speed === 0 ? 0 : (timeLapsed / speed); + percentage = (percentage > 1) ? 1 : percentage; + position = startLocation + (distance * easingPattern(_settings, percentage)); + window.scrollTo(0, Math.floor(position)); + if (!stopAnimateScroll(position, endLocation)) { + animationInterval = window.requestAnimationFrame(loopAnimateScroll); + start = timestamp; + } + }; + + /** + * Reset position to fix weird iOS bug + * @link https://github.com/cferdinandi/smooth-scroll/issues/45 + */ + if (window.pageYOffset === 0) { + window.scrollTo(0, 0); + } + + // Update the URL + updateURL(anchor, isNum, _settings); + + // If the user prefers reduced motion, jump to location + if (reduceMotion()) { + window.scrollTo(0, Math.floor(endLocation)); + return; + } + + // Emit a custom event + emitEvent('scrollStart', _settings, anchor, toggle); + + // Start scrolling animation + smoothScroll.cancelScroll(true); + window.requestAnimationFrame(loopAnimateScroll); + + }; + + /** + * If smooth scroll element clicked, animate scroll + */ + var clickHandler = function (event) { + + // Don't run if event was canceled but still bubbled up + // By @mgreter - https://github.com/cferdinandi/smooth-scroll/pull/462/ + if (event.defaultPrevented) return; + + // Don't run if right-click or command/control + click or shift + click + if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey) return; + + // Check if event.target has closest() method + // By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/ + if (!('closest' in event.target)) return; + + // Check if a smooth scroll link was clicked + toggle = event.target.closest(selector); + if (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return; + + // Only run if link is an anchor and points to the current page + if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return; + + // Get an escaped version of the hash + var hash; + try { + hash = escapeCharacters(decodeURIComponent(toggle.hash)); + } catch(e) { + hash = escapeCharacters(toggle.hash); + } + + // Get the anchored element + var anchor; + if (hash === '#') { + if (!settings.topOnEmptyHash) return; + anchor = document.documentElement; + } else { + anchor = document.querySelector(hash); + } + anchor = !anchor && hash === '#top' ? document.documentElement : anchor; + + // If anchored element exists, scroll to it + if (!anchor) return; + event.preventDefault(); + setHistory(settings); + smoothScroll.animateScroll(anchor, toggle); + + }; + + /** + * Animate scroll on popstate events + */ + var popstateHandler = function (event) { + + // Stop if history.state doesn't exist (ex. if clicking on a broken anchor link). + // fixes `Cannot read property 'smoothScroll' of null` error getting thrown. + if (history.state === null) return; + + // Only run if state is a popstate record for this instantiation + if (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return; + + // Only run if state includes an anchor + + // if (!history.state.anchor && history.state.anchor !== 0) return; + + // Get the anchor + var anchor = history.state.anchor; + if (typeof anchor === 'string' && anchor) { + anchor = document.querySelector(escapeCharacters(history.state.anchor)); + if (!anchor) return; + } + + // Animate scroll to anchor link + smoothScroll.animateScroll(anchor, null, {updateURL: false}); + + }; + + /** + * Destroy the current initialization. + */ + smoothScroll.destroy = function () { + + // If plugin isn't already initialized, stop + if (!settings) return; + + // Remove event listeners + document.removeEventListener('click', clickHandler, false); + window.removeEventListener('popstate', popstateHandler, false); + + // Cancel any scrolls-in-progress + smoothScroll.cancelScroll(); + + // Reset variables + settings = null; + anchor = null; + toggle = null; + fixedHeader = null; + eventTimeout = null; + animationInterval = null; + + }; + + /** + * Initialize Smooth Scroll + * @param {Object} options User settings + */ + var init = function () { + + // feature test + if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.'; + + // Destroy any existing initializations + smoothScroll.destroy(); + + // Selectors and variables + settings = extend(defaults, options || {}); // Merge user options with defaults + fixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header + + // When a toggle is clicked, run the click handler + document.addEventListener('click', clickHandler, false); + + // If updateURL and popState are enabled, listen for pop events + if (settings.updateURL && settings.popstate) { + window.addEventListener('popstate', popstateHandler, false); + } + + }; + + + // + // Initialize plugin + // + + init(); + + + // + // Public APIs + // + + return smoothScroll; + + }; + + return SmoothScroll; + +})); diff --git a/docs/assets/js/vanilla-back-to-top.min.js b/docs/assets/js/vanilla-back-to-top.min.js new file mode 100644 index 0000000000..6be04a760b --- /dev/null +++ b/docs/assets/js/vanilla-back-to-top.min.js @@ -0,0 +1 @@ +"use strict";function addBackToTop(){var o,t,e,n,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=i.backgroundColor,d=void 0===r?"#000":r,a=i.cornerOffset,c=void 0===a?20:a,s=i.diameter,l=void 0===s?56:s,u=i.ease,p=void 0===u?function(o){return.5*(1-Math.cos(Math.PI*o))}:u,m=i.id,h=void 0===m?"back-to-top":m,b=i.innerHTML,v=void 0===b?'':b,f=i.onClickScrollTo,x=void 0===f?0:f,w=i.scrollContainer,g=void 0===w?document.body:w,k=i.scrollDuration,y=void 0===k?100:k,T=i.showWhenScrollTopIs,M=void 0===T?1:T,z=i.size,E=void 0===z?l:z,C=i.textColor,L=void 0===C?"#fff":C,N=i.zIndex,I=void 0===N?1:N,A=g===document.body,B=A&&document.documentElement;o=Math.round(.43*E),t=Math.round(.29*E),e="#"+h+"{background:"+d+";-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;bottom:"+c+"px;-webkit-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);-moz-box-shadow:0 2px 5px 0 rgba(0,0,0,.26);box-shadow:0 2px 5px 0 rgba(0,0,0,.26);color:"+L+";cursor:pointer;display:block;height:"+E+"px;opacity:1;outline:0;position:fixed;right:"+c+"px;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-transition:bottom .2s,opacity .2s;-o-transition:bottom .2s,opacity .2s;-moz-transition:bottom .2s,opacity .2s;transition:bottom .2s,opacity .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:"+E+"px;z-index:"+I+"}#"+h+" svg{display:block;fill:currentColor;height:"+o+"px;margin:"+t+"px auto 0;width:"+o+"px}#"+h+".hidden{bottom:-"+E+"px;opacity:0}",(n=document.createElement("style")).appendChild(document.createTextNode(e)),document.head.insertAdjacentElement("afterbegin",n);var D=function(){var o=document.createElement("div");return o.id=h,o.className="hidden",o.innerHTML=v,o.addEventListener("click",function(o){o.preventDefault(),function(){var o="function"==typeof x?x():x,t=window,e=t.performance,n=t.requestAnimationFrame;if(y<=0||void 0===e||void 0===n)return q(o);var i=e.now(),r=j(),d=r-o;n(function o(t){var e=Math.min((t-i)/y,1);q(r-Math.round(p(e)*d)),e<1&&n(o)})}()}),document.body.appendChild(o),o}(),H=!0;function S(){j()>=M?function(){if(!H)return;D.className="",H=!1}():function(){if(H)return;D.className="hidden",H=!0}()}function j(){return g.scrollTop||B&&document.documentElement.scrollTop||0}function q(o){g.scrollTop=o,B&&(document.documentElement.scrollTop=o)}(A?window:g).addEventListener("scroll",S),S()} \ No newline at end of file diff --git a/docs/assets/js/vendor/jquery/jquery-3.6.0.js b/docs/assets/js/vendor/jquery/jquery-3.6.0.js new file mode 100644 index 0000000000..fc6c299b73 --- /dev/null +++ b/docs/assets/js/vendor/jquery/jquery-3.6.0.js @@ -0,0 +1,10881 @@ +/*! + * jQuery JavaScript Library v3.6.0 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright OpenJS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2021-03-02T17:08Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.6.0", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.6 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2021-02-16 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +} +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the primary Deferred + primary = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + primary.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( primary.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return primary.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); + } + + return primary.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + which: true +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, parserErrorElem; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) {} + + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ).filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ).map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + +originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Aviatrix Certified Engineer - Multi-Cloud Network Associate Course for anyone interested in public cloud networking (in AWS, Azure, GCP and OCI) and multicloud arquitecture.

+ +

Training and exam are free using code ACEHOLIDAY through February 28th.

+ +

UPDATE 1: Training and exam are free using code ACEMULTICLOUD through September 30th.

+ +

What the Course Covers

+
    +
  • Introduction +
      +
    • Introductory Survey
    • +
    • About ACE Associate Training
    • +
    • About Aviatrix
    • +
    +
  • +
  • Public Cloud Networking +
      +
    • Networking Principles in the Cloud
    • +
    • AWS Networking 101
    • +
    • Azure Networking 101
    • +
    • GCP Networking 101
    • +
    • OCI Networking 101
    • +
    +
  • +
  • Multi-Cloud Network Architecture +
      +
    • What is the MCNA?
    • +
    +
  • +
  • Aviatrix Platform +
      +
    • Feature Overview - Part 1
    • +
    • Feature Overview - Part 2
    • +
    +
  • +
  • Operations, Visibility, and Troubleshooting +
      +
    • Day 2 Operations
    • +
    • CoPilot Demo
    • +
    • Aviatrix Controller Deployment
    • +
    +
  • +
  • Customer Case Study +
      +
    • Real Aviatrix Customer Walk-Through - Single Region
    • +
    • Real Aviatrix Customer Walk-Through - Multi-Region Multi-Cloud
    • +
    +
  • +
  • Conclusion +
      +
    • Course Feedback Survey
    • +
    • How to take the Exam
    • +
    • Scheduling the Exam
    • +
    +
  • +
+ +

Free certification

+ +

At the end of the course, you can earn a certificate by scheduling and passing a final exam.

+ +

+ +

+ +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-academy/index.html b/docs/aws-academy/index.html new file mode 100644 index 0000000000..20b2675c79 --- /dev/null +++ b/docs/aws-academy/index.html @@ -0,0 +1,895 @@ + + + + + + +AWS Academy - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Benefícios do programa

+
    +
  • Acesso ao currículo criado pela AWS: O currículo pronto para ensino permite que as instituições membro incorporem a instrução em seu catálogo de cursos. As atualizações regulares da AWS refletem o ritmo da inovação e as melhores práticas da computação em nuvem.
  • +
  • Crie habilidades alinhadas à AWS Certification: os alunos adquirem habilidades de computação na Nuvem AWS por meio de experiência prática e podem se preparar para a AWS Certification com simulados gratuitos e descontos de 50% para os exames completos.
  • +
  • Aumente a força de trabalho da Nuvem AWS: Com o currículo da AWS Academy, os alunos obtêm experiência prática trabalhando em ambientes ao vivo, o que os ajuda a ganhar a experiência do mundo real necessária para conseguir emprego no setor.
  • +
+ +

Cursos

+ +

Cloud Foundations

+ +

AWS Academy Cloud Foundations (ACF)

+ +

O curso é introdutório e oferece uma visão geral detalhada dos seguintes tópicos:

+
    +
  • conceitos da nuvem
  • +
  • principais serviços da AWS
  • +
  • segurança
  • +
  • arquitetura
  • +
  • definição de preço
  • +
  • suporte
  • +
+ +

O curso possui 20 horas de conteúdo e prepara os alunos para conseguir a certificação AWS Certified Cloud Practitioner (CLF-C01).

+ +

Na FIAP ofertamos este curso (1ª edição, 2ª edição, 3ª edição, 4ª edição, 5ª edição, 6ª edição, 7ª edição, 8ª edição e 9ª edição) na modalidade SHIFT.

+ +

+ +
+ + +

AWS Academy Introduction to Cloud

+ +
Semester 1 (AICS1)
+ +

Neste curso, os alunos irão estudar serviços de computação em nuvem, aplicativos e +casos de uso. Você vai mergulhar nas melhores práticas de computação em nuvem e aprender como +a computação em nuvem ajuda os usuários a desenvolver uma infraestrutura global para apoiar +para usar casos em escala, enquanto desenvolve e inventa tecnologias inovadoras, a través de 60 horas de conteúdo.

+ +
+ + +
Semester 2 (AICS2)
+ +

Neste curso, os alunos exploram serviços, aplicativos e casos de uso de computação em nuvem. Os alunos mergulham nas melhores práticas de computação em nuvem e aprendem como a computação em nuvem ajuda os usuários a desenvolver uma infraestrutura global para oferecer suporte a casos de uso em escala, ao mesmo tempo que desenvolve e inventa tecnologias inovadoras.

+ +

Este curso é uma extensão do AWS Academy Introduction to Cloud: Semester 1. O curso fornece aos alunos instrução em sala de aula que apresenta as habilidades de computação em nuvem e acelera os alunos em direção às próximas etapas em sua jornada educacional.

+ +

+ +
+ + +

Desenvolvimento

+ +

AWS Academy Cloud Developing (ACD)

+ +

Esse curso de nível intermediário ajudará os estudantes a ganharem experiência técnica em desenvolvimento com tecnologia de nuvens. Ele também os ajudará a se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Ao completar, os alunos estarão aptos a desenvolver com AWS SDK e identificar as melhores práticas para construir e implantar aplicativos na nuvem AWS. Esse curso tem aproximadamente 40 horas de conteúdo fornecido por meio de palestras e laboratórios práticos.

+ +

Recomendamos que os alunos cursem o AWS Academy Cloud Foundations ou equivalente, antes de iniciar este curso.

+ +

Na FIAP ofertamos este curso (1ª edição, 2ª edição, 3ª edição, 4ª edição, 5ª edição e 6ª edição) na modalidade SHIFT.

+ +

+ +
+ + +

Arquitetura

+ +

AWS Academy Cloud Architecting (ACA)

+ +

O curso de nível intermediário cobre os fundamentos na construção da infraestrutura de TI na AWS e ajuda os estudantes a desenvolverem habilidades que eles precisam para obter a certificação AWS Certified Solutions Architect – Associate (SAA-C02). Este curso tem aproximadamente 40 horas de conteúdo entregue por meio de palestras, laboratórios práticos e trabalho em projetos.

+ +

Recomendamos que os alunos cursem o AWS Academy Cloud Foundations ou equivalente, antes de iniciar este curso.

+ +

+ +
+ + +

Operações

+ +

AWS Academy Cloud Operations (ACO)

+ +

Esse curso de nível intermediário preparará os alunos para buscar DevOps sob demanda, suporte e papéis de operações nas nuvens no nível de entrada. Ele também os irá ajudar a se preparar para exame de certificação AWS Certified SysOps Administrator – Associate. Por meio de estudos de casos, demonstrações e atividades de laboratório, os alunos aprenderão como resolver problemas em cenários diversos e automatizar a implantação de redes e sistemas na AWS. Este curso tem aproximadamente 40 horas de conteúdo fornecido por meio de palestras e laboratórios práticos.

+ +

Recomendamos que os alunos cursem o AWS Academy Cloud Foundations ou equivalente, antes de iniciar este curso.

+ +

+ +
+ + +

Machine learning

+ +

AWS Academy Machine Learning Foundation (AML)

+ +

Este curso introdutório apresenta aos alunos os conceitos e a terminologia de inteligência artificial (IA) e machine learning (ML). Ao final deste curso, os alunos poderão selecionar e aplicar serviços de ML para resolver problemas de negócios. Eles também poderão rotular, criar, treinar e implantar um modelo de ML personalizado. Este curso tem aproximadamente 20 horas de conteúdo entregue por meio de palestras, laboratórios práticos e trabalho em projetos.

+ +

+ +
+ + +

Análise de dados

+ +

AWS Academy Data Analytics (ADA)

+ +

Estes exercícios de laboratório ensinam os alunos a conduzir a análise de Big Data com exemplos práticos do mundo real. Os laboratórios e os recursos de aprendizado foram projetados para complementar os cursos de análise de dados existentes em uma instituição e fornecer aos alunos uma experiência prática ao trabalhar com dados em escala. Voltado para estudantes interessados em seguir carreiras em análise de dados, o AWS Academy Data Analytics requer uma base sólida em conceitos e habilidades de TI e contém 7.5 horas de conteúdo.

+ +

Na FIAP ofertamos este curso aos alunos do MBA em Engenharia de dados.

+ +

+ +
+ + +

Datacenters

+ +

AWS Academy Engineering Operations Technicians (AEOT)

+ +

Este curso fornece uma visão geral dos conceitos e habilidades fundamentais necessários para a função de técnico em operações de engenharia em um ambiente de datacenter. Os alunos aprenderão sobre tópicos como noções básicas de datacenter, infraestrutura física de data center, fundamentos elétricos e baterias e geradores de datacenter.

+ +

+ +
+ + +

AWS Academy Data Center Technician (DCT)

+ +

Este curso foi desenvolvido para ajudar os alunos a desenvolver conhecimentos técnicos em operações de datacenter. Embora este seja um curso fundamental, os alunos devem ter conhecimento geral dos conceitos de engenharia mecânica e elétrica.

+ +

+ +
+ + +

AWS Academy Learner Labs

+ +

Ambientes com laboratórios práticos de longa duração onde os educadores podem inserir suas próprias atividades e convidar seus alunos para ganharem experiência usando produtos da AWS selecionados.

+ +

Foundation (LLFS)

+ +
    +
  • Disponível para todos os educadores AWS Academy que concluírem nosso curso de Orientação do educador
  • +
  • Acesso a mais de 40 produtos da AWS
  • +
+ +

Associate

+
    +
  • Disponível para todos os educadores credenciados
  • +
  • Os educadores devem ser credenciados para ensinar pelo menos um curso do nível Associate da AWS Academy para criar um Learner Lab no nível Associate da AWS Academy
  • +
  • Inclui acesso a mais de 100 produtos da AWS
  • +
+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-cert-challenge/index.html b/docs/aws-cert-challenge/index.html new file mode 100644 index 0000000000..816b1dbbe2 --- /dev/null +++ b/docs/aws-cert-challenge/index.html @@ -0,0 +1,726 @@ + + + + + + +AWS Global Certification Challenge - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

A AWS está oferecendo de forma gratuita a certificação AWS Cloud Practitioner, que normalmente tem um valor de $200, como parte da iniciativa AWS re:Invent 2020 durante os meses de outubro e novembro de este ano.

+ +

Segue o link para a solicitação do voucher, que demora até 3 dias úteis, e o blog do AWS Training com todas as informações sobre o programa.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-certified-global-community/index.html b/docs/aws-certified-global-community/index.html new file mode 100644 index 0000000000..5649d23adf --- /dev/null +++ b/docs/aws-certified-global-community/index.html @@ -0,0 +1,729 @@ + + + + + + +AWS Training and Certification - AWS Certified Global Community - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

The AWS Certified Global community is a network of certified AWS professionals. Interact, participate in challenges, get advice from peers and industry experts, win swag, and more.

+ +

+ +

Last week I was featured in the Expert’s Exclusive series, where each week it is published an interview with one of the community champions.

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-certs-desconto/index.html b/docs/aws-certs-desconto/index.html new file mode 100644 index 0000000000..a7c4702cd0 --- /dev/null +++ b/docs/aws-certs-desconto/index.html @@ -0,0 +1,733 @@ + + + + + + +Exames de Certificação AWS com desconto - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

A AWS está com descontos de 50% a 85% nas certificações:

+
    +
  • AWS Certified Cloud Practitioner - 85% de desconto
  • +
  • AWS Certified Developer Associate - 50% de desconto
  • +
  • AWS Certified Solutions Architect Associate - 50% de desconto
  • +
+ +

Mais informações no seguinte link.

+ +

Passo a passo de como obter o desconto: +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-community-builder/index.html b/docs/aws-community-builder/index.html new file mode 100644 index 0000000000..20761f6ba3 --- /dev/null +++ b/docs/aws-community-builder/index.html @@ -0,0 +1,746 @@ + + + + + + +AWS Community Builder - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

AWS Community Builders program

+

+ +

I am glad to be part of the AWS Community Builders program. The program offers technical resources, mentorship, and networking opportunities to AWS enthusiasts and emerging thought leaders who are passionate about sharing knowledge and connecting with the technical community.

+ +

Throughout the program, subject matter experts will provide mentorship and share insights, including information about the latest services, as well as best practices for creating technical content, increasing reach, and sharing AWS knowledge across online and in-person communities. The program will accept a limited number of members per year. All AWS builders are welcome and encouraged to apply.

+ +

Program members are expected to participate in mentorship opportunities, continue to share or produce educational and technical content, actively engage with and help build the AWS community, and demonstrate continued interest in learning more about AWS.

+ +

The AWS Community Builders Directory can be found here.

+ +

Benefits of joining the program

+ +
    +
  • Access to AWS product teams and information about new services and features
  • +
  • Mentorship from AWS subject matter experts on a variety of topics
  • +
  • AWS Promotional Credits and other helpful resources to support content creation
  • +
  • Opportunities to connect with and learn from like-minded developers
  • +
+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-community-day-21/index.html b/docs/aws-community-day-21/index.html new file mode 100644 index 0000000000..9d38ed47f1 --- /dev/null +++ b/docs/aws-community-day-21/index.html @@ -0,0 +1,731 @@ + + + + + + +AWS Community Day Brasil 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + +

Contagem regressiva para o AWS Community Day Brasil 2021, o maior encontro de grupos de usuários AWS do Brasil!

+ +

06/11/2021 às 13hs!

+ +

As inscrições ainda podem ser feitas aquí.

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-educate-login/index.html b/docs/aws-educate-login/index.html new file mode 100644 index 0000000000..c354b8421f --- /dev/null +++ b/docs/aws-educate-login/index.html @@ -0,0 +1,811 @@ + + + + + + +AWS Educate: Cadastro na plataforma - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Para acompanhar alguns cursos da FIAP, uma vez aprovado no processo seletivo é necessária a criação de uma conta na plataforma AWS Educate.

+ +

A plataforma on-line do AWS Educate fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e acesso ao console AWS com 50$ de créditos e labs online.

+ +

O passo mais critico é o 2. É fundamental preencher uma data de término de graduação futura, caso contrario a AWS entende que o curso já concluiu e a aplicação será reprovada.

+ +

Cadastro na plataforma

+ +
    +
  1. +

    O instrutor envia o convite do curso: +

    +
  2. +
  3. +

    No cadastro, colocar uma data de término de graduação futura (caso contrário, a aplicação será reprovada): +

    +
  4. +
  5. +

    Aceitar os termos do programa: +

    +
  6. +
+ +

Confirmação do email

+ +
    +
  1. +

    Concluir o cadastro e aguardar pelo email de verificação de email: +

    +
  2. +
  3. +

    Verificar o endereço de email no seguinte link e aguardar pela aprovação da conta: + +

    +
  4. +
+ +

Ativação da conta

+ +
    +
  1. +

    A aprovação da conta será notificada por email: +

    +
  2. +
  3. +

    Criar uma senha para o seu usuário: +

    +
  4. +
+ +

Acesso a plataforma

+ +
    +
  1. Após a definição da senha, acessar o portal da plataforma: +
  2. +
+ +

Acesso ao console AWS

+ +
    +
  1. +

    Navegar ate My Classrooms: +

    +
  2. +
  3. +

    Aceitar os termos de uso dos laboratórios e da plataforma Vocareum: + +

    +
  4. +
  5. +

    Conferir os créditos restantes e acessar o console AWS: +

    +
  6. +
  7. +

    Console da AWS: +

    +
  8. +
+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-educate/index.html b/docs/aws-educate/index.html new file mode 100644 index 0000000000..13e58121ac --- /dev/null +++ b/docs/aws-educate/index.html @@ -0,0 +1,800 @@ + + + + + + +AWS Educate - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Recursos e benefícios

+
    +
  • Acesso ao AWS Educate Student Portal.
  • +
  • Accesso ao console AWS com 50$ de créditos e labs online.
  • +
  • Cloud Career Pathways: Explore trajetórias profissionais na nuvem para saber mais sobre as principais competências de nuvem nas carreiras de tecnologia mais procuradas. Desde Cientista de machine learning até Desenvolvedor de aplicativos, cada trajetória alinha-se a uma função específica e inclui mais de 25 horas de conteúdo autoguiado acompanhado de testes de conhecimento. Ganhe distintivos pelas trajetórias concluídas e compartilhe com potenciais empregadores no AWS Educate Job Board.
  • +
  • AWS Educate Badges: Desbloqueie um distintivo do AWS Educate em uma das áreas de interesse de maior crescimento do setor, incluindo Alexa, jogos e Internet das Coisas (IoT). Cada distintivo apresenta 10-15 horas de conteúdo individualizado para expandir seu conjunto de habilidades na nuvem.
  • +
  • Salas de aula do AWS Educate: Uma sala de aula virtual para os estudantes aprenderem sobre a nuvem em um ambiente prático. Cada sala de aula utiliza um conjunto distinto de serviços que são ideais para o aprendizado de vários tópicos sobre a nuvem, como Big Data ou machine learning.
  • +
  • Desenvolvimento profissional: Expanda suas competências de nuvem por meio de cursos do AWS Educate ou de programas AWS Training and Certification. Outros recursos incluem vídeos instrutivos e laboratórios autoguiados. Descontos podem estar disponíveis para alguns treinamentos.
  • +
  • AWS Educate Job Board: Acesse milhares de empregos e estágios na nuvem da Amazon e outras empresas no mundo inteiro no AWS Educate Job Board. Personalize seu portfólio online com credenciais de trajetórias e ganhe distintivos para atrair recrutadores ou empresas em busca de alguém.
  • +
+ +

Cloud Career Pathways

+
    +
  • Introdução à computação na nuvem
  • +
  • Machine learning
  • +
  • Cientista de dados
  • +
  • Desenvolvedor de aplicativos
  • +
  • Desenvolvimento na Web
  • +
  • Engenheiro de software
  • +
  • Especialista em segurança cibernética
  • +
  • Engenheiro de DevOps
  • +
  • Arquiteto de soluções
  • +
  • Associado de suporte à nuvem
  • +
  • Engenheiro de suporte à nuvem
  • +
  • Integração de dados
  • +
+ +

AWS Educate Badges

+
    +
  • AWS DeepLens
  • +
  • Jogos
  • +
  • AWS DeepRacer
  • +
  • Datapalooza
  • +
  • Amazon Sumerian
  • +
  • AWS RoboMaker
  • +
  • Internet das Coisas
  • +
  • Alexa
  • +
  • Startups da AWS
  • +
+ +

Cadastro na plataforma

+ +
    +
  1. +

    Acessar www.awseducate.com

    +
  2. +
  3. +

    Seleccionar Join AWS Educate

    +
  4. +
  5. +

    Selecionar o rol de estudante

    +
  6. +
  7. +

    Preencher o formulario, usando o mail da FIAP (RMxyzw@fiap.com.br) e colocando uma data de término do curso/graduação no futuro.

    +
  8. +
  9. +

    Aguardar o mail de confirmação

    +
  10. +
+ +

Cadastro na plataforma via convite do instrutor

+ +

Seguir os passos descritos em AWS Educate: Cadastro na plataforma

+ +

+

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws-learning-badges/index.html b/docs/aws-learning-badges/index.html new file mode 100644 index 0000000000..5be278f8a9 --- /dev/null +++ b/docs/aws-learning-badges/index.html @@ -0,0 +1,746 @@ + + + + + + +AWS Learning Badges - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

What is an AWS Learning Badge?

+ +

AWS Learning badges are credentials that offer these benefits:

+
    +
  • AWS digital badges demonstrate your knowledge and skills for specific AWS cloud topics, such as Object Storage
  • +
  • AWS digital badges are shareable on social networks to help you stand out to recruiters and prospective hiring managers
  • +
  • AWS digital badges are free to earn and share
  • +
+ +

What types of AWS Learning Badges are available?

+ +

AWS Learning badges are aligned to select AWS Skill Builder learning plans, such as:

+ + + +

More AWS digital badges will be made available over time.

+ +
+ + +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws1-ec2/index.html b/docs/aws1-ec2/index.html new file mode 100644 index 0000000000..a5c07f30d6 --- /dev/null +++ b/docs/aws1-ec2/index.html @@ -0,0 +1,949 @@ + + + + + + +AWS series I: Elastic Computing (EC2) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 1 - AWS EC2

+ +

Criando a instancia

+

Usaremos a imagem oficial Amazon Linux para aprender alguns conceitos importantes do Amazon Elastic Computing:

+ + +
    +
  1. +

    Acessar o serviço EC2: +

    +
  2. +
  3. +

    Lançar o assistente de criaçao de instancias: +

    +
  4. +
  5. +

    Escolher a imagem do Amazon Linux 2 AMI: +

    +
  6. +
  7. +

    Escolher o flavor t2.micro: +

    +
  8. +
  9. +

    Usaremos um script de cloud-init para customizar a instância: +

    +
  10. +
  11. +

    Confirmar criaçao da instância: +

    +
  12. +
  13. +

    Criaçao da chave para poder acessar a instância via SSH de forma segura: +

    +
  14. +
  15. +

    Validar a criacao da instância: +

    +
  16. +
+ +

Accessando à instancia

+ +
    +
  1. +

    [Linux/MAC] Seguiremos as próprias indicações do EC2: +

    + +

    [Windows] Usaremos o PuTTY, seguindo as seguintes instruções. Como alternativa ao PuTTy, o MobaXterm é uma excelente opçao.

    +
  2. +
  3. [Linux/MAC] Em um terminal local: +
    $ chmod 400 fiap.pem
    +$ ssh -i "fiap.pem" ec2-user@ec2-52-91-146-116.compute-1.amazonaws.com
    +
    +   __|  __|_  )
    +   _|  (     /   Amazon Linux 2 AMI
    +  ___|\___|___|
    +
    +https://aws.amazon.com/amazon-linux-2/
    +[ec2-user@ip-172-31-50-1 ~]$
    +
    + +

    [Windows] Seguir as instruções do PuTTY: https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/putty.html

    +
  4. +
  5. Uma vez logado na maquina virtual, confirmar que o script de cloud-init rodou com sucesso: +
    $ ls /tmp/
    +CloudInitFunciona
    +
    +
  6. +
+ +

Instalando um servidor web

+ +
    +
  1. Instalar o pacote httpd: +
    [ec2-user@ip-172-31-50-1 ~]$ sudo yum install -y httpd
    +Failed to set locale, defaulting to C
    +Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
    +amzn2-core                                                                                                                     | 2.4 kB  00:00:00     
    +Resolving Dependencies
    +--> Running transaction check
    +---> Package httpd.x86_64 0:2.4.43-1.amzn2 will be installed
    +--> Processing Dependency: httpd-tools = 2.4.43-1.amzn2 for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: httpd-filesystem = 2.4.43-1.amzn2 for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: system-logos-httpd for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: mod_http2 for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: httpd-filesystem for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: /etc/mime.types for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.43-1.amzn2.x86_64
    +--> Running transaction check
    +---> Package apr.x86_64 0:1.6.3-5.amzn2.0.2 will be installed
    +---> Package apr-util.x86_64 0:1.6.1-5.amzn2.0.2 will be installed
    +--> Processing Dependency: apr-util-bdb(x86-64) = 1.6.1-5.amzn2.0.2 for package: apr-util-1.6.1-5.amzn2.0.2.x86_64
    +---> Package generic-logos-httpd.noarch 0:18.0.0-4.amzn2 will be installed
    +---> Package httpd-filesystem.noarch 0:2.4.43-1.amzn2 will be installed
    +---> Package httpd-tools.x86_64 0:2.4.43-1.amzn2 will be installed
    +---> Package mailcap.noarch 0:2.1.41-2.amzn2 will be installed
    +---> Package mod_http2.x86_64 0:1.15.3-2.amzn2 will be installed
    +--> Running transaction check
    +---> Package apr-util-bdb.x86_64 0:1.6.1-5.amzn2.0.2 will be installed
    +--> Finished Dependency Resolution
    +
    +Dependencies Resolved
    +
    +======================================================================================================================================================
    + Package                                  Arch                        Version                                   Repository                       Size
    +======================================================================================================================================================
    +Installing:
    + httpd                                    x86_64                      2.4.43-1.amzn2                            amzn2-core                      1.3 M
    +Installing for dependencies:
    + apr                                      x86_64                      1.6.3-5.amzn2.0.2                         amzn2-core                      118 k
    + apr-util                                 x86_64                      1.6.1-5.amzn2.0.2                         amzn2-core                       99 k
    + apr-util-bdb                             x86_64                      1.6.1-5.amzn2.0.2                         amzn2-core                       19 k
    + generic-logos-httpd                      noarch                      18.0.0-4.amzn2                            amzn2-core                       19 k
    + httpd-filesystem                         noarch                      2.4.43-1.amzn2                            amzn2-core                       23 k
    + httpd-tools                              x86_64                      2.4.43-1.amzn2                            amzn2-core                       87 k
    + mailcap                                  noarch                      2.1.41-2.amzn2                            amzn2-core                       31 k
    + mod_http2                                x86_64                      1.15.3-2.amzn2                            amzn2-core                      146 k
    +
    +Transaction Summary
    +======================================================================================================================================================
    +Install  1 Package (+8 Dependent packages)
    +
    +Total download size: 1.8 M
    +Installed size: 5.1 M
    +Downloading packages:
    +(1/9): apr-util-1.6.1-5.amzn2.0.2.x86_64.rpm                                                                                   |  99 kB  00:00:00     
    +(2/9): apr-util-bdb-1.6.1-5.amzn2.0.2.x86_64.rpm                                                                               |  19 kB  00:00:00     
    +(3/9): apr-1.6.3-5.amzn2.0.2.x86_64.rpm                                                                                        | 118 kB  00:00:00     
    +(4/9): generic-logos-httpd-18.0.0-4.amzn2.noarch.rpm                                                                           |  19 kB  00:00:00     
    +(5/9): httpd-filesystem-2.4.43-1.amzn2.noarch.rpm                                                                              |  23 kB  00:00:00     
    +(6/9): httpd-2.4.43-1.amzn2.x86_64.rpm                                                                                         | 1.3 MB  00:00:00     
    +(7/9): httpd-tools-2.4.43-1.amzn2.x86_64.rpm                                                                                   |  87 kB  00:00:00     
    +(8/9): mailcap-2.1.41-2.amzn2.noarch.rpm                                                                                       |  31 kB  00:00:00     
    +(9/9): mod_http2-1.15.3-2.amzn2.x86_64.rpm                                                                                     | 146 kB  00:00:00     
    +------------------------------------------------------------------------------------------------------------------------------------------------------
    +Total                                                                                                                 6.2 MB/s | 1.8 MB  00:00:00     
    +Running transaction check
    +Running transaction test
    +Transaction test succeeded
    +Running transaction
    +  Installing : apr-1.6.3-5.amzn2.0.2.x86_64                                                                                                       1/9 
    +  Installing : apr-util-bdb-1.6.1-5.amzn2.0.2.x86_64                                                                                              2/9 
    +  Installing : apr-util-1.6.1-5.amzn2.0.2.x86_64                                                                                                  3/9 
    +  Installing : httpd-tools-2.4.43-1.amzn2.x86_64                                                                                                  4/9 
    +  Installing : generic-logos-httpd-18.0.0-4.amzn2.noarch                                                                                          5/9 
    +  Installing : mailcap-2.1.41-2.amzn2.noarch                                                                                                      6/9 
    +  Installing : httpd-filesystem-2.4.43-1.amzn2.noarch                                                                                             7/9 
    +  Installing : mod_http2-1.15.3-2.amzn2.x86_64                                                                                                    8/9 
    +  Installing : httpd-2.4.43-1.amzn2.x86_64                                                                                                        9/9 
    +  Verifying  : apr-util-1.6.1-5.amzn2.0.2.x86_64                                                                                                  1/9 
    +  Verifying  : apr-util-bdb-1.6.1-5.amzn2.0.2.x86_64                                                                                              2/9 
    +  Verifying  : httpd-2.4.43-1.amzn2.x86_64                                                                                                        3/9 
    +  Verifying  : mod_http2-1.15.3-2.amzn2.x86_64                                                                                                    4/9 
    +  Verifying  : httpd-filesystem-2.4.43-1.amzn2.noarch                                                                                             5/9 
    +  Verifying  : apr-1.6.3-5.amzn2.0.2.x86_64                                                                                                       6/9 
    +  Verifying  : mailcap-2.1.41-2.amzn2.noarch                                                                                                      7/9 
    +  Verifying  : generic-logos-httpd-18.0.0-4.amzn2.noarch                                                                                          8/9 
    +  Verifying  : httpd-tools-2.4.43-1.amzn2.x86_64                                                                                                  9/9 
    +
    +Installed:
    +  httpd.x86_64 0:2.4.43-1.amzn2                                                                                                                       
    +
    +Dependency Installed:
    +  apr.x86_64 0:1.6.3-5.amzn2.0.2                      apr-util.x86_64 0:1.6.1-5.amzn2.0.2              apr-util-bdb.x86_64 0:1.6.1-5.amzn2.0.2        
    +  generic-logos-httpd.noarch 0:18.0.0-4.amzn2         httpd-filesystem.noarch 0:2.4.43-1.amzn2         httpd-tools.x86_64 0:2.4.43-1.amzn2            
    +  mailcap.noarch 0:2.1.41-2.amzn2                     mod_http2.x86_64 0:1.15.3-2.amzn2               
    +
    +Complete!
    +
    +
  2. +
  3. Habilitar o serviço httpd: +
    [ec2-user@ip-172-31-50-1 ~]$ sudo service httpd start  
    +Redirecting to /bin/systemctl start httpd.service
    +
    +
  4. +
  5. Criar um site de teste, no arquivo /var/www/html/index.html (como usuário admin): +
    <h1>
    +   FIAP!!!
    +</h1>
    +
    +
  6. +
  7. Testar localmente o servidor web: +
    [ec2-user@ip-172-31-50-1 ~]$ curl localhost
    +<h1>
    +        FIAP!!!
    +</h1>
    +
    +
  8. +
  9. +

    Obter o IP público da VM: +

    +
  10. +
  11. +

    Testar accesso pelo IP público: +

    +
  12. +
  13. +

    Como era esperado, o acesso web não funcionou pois a porta HTTP (TCP/80) deve ser liberada nos security groups. Incluir uma liberação para esta porta no security group associado à instância: +

    +
  14. +
  15. Testar novamente o acesso pelo IP público: +
  16. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws10-apigw/index.html b/docs/aws10-apigw/index.html new file mode 100644 index 0000000000..0845fff6c7 --- /dev/null +++ b/docs/aws10-apigw/index.html @@ -0,0 +1,813 @@ + + + + + + +AWS series X: API Gateway - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 11 - Amazon API Gateway

+ +

Em este lab sobre API Gateway aprenderemos alguns conceitos do API gateway da plataforma da AWS:

+
    +
  • Configuração de rotas
  • +
  • Throttling (limitação do número de requisições por segundo)
  • +
  • Monitoramento
  • +
+ +

Pre-reqs

+ +
    +
  • Dois URLs accessíveis. Por exemplo, dois apps no Beanstalk: +
      +
    • http://springboot-env.eba-7znjbf9p.us-eats-1.elasticbeanstalk.com +
    • +
    • http://springboot-env-1.eba-7zbhbf9p.us-east-1.elasticbeanstalk.com +
    • +
    +
  • +
+ +

Configuração do serviço

+ +
    +
  1. +

    Acessar o serviço API Gateway: +

    +
  2. +
  3. +

    Criar uma nova API HTTP: +

    +
  4. +
  5. +

    Configurar o nome da API e as integrações, apontando para as duas URLs dos prereqs usando o método GET: +

    +
  6. +
  7. +

    Configurar as rotas, /v1 apontando para uma URL e /v2 apontando para a outra: +

    +
  8. +
  9. +

    Sem modificações na configuração padrão de stages: +

    +
  10. +
  11. +

    Revisar as configurações e confirmar a criação: +

    +
  12. +
  13. +

    Aguardar a criação da API: +

    +
  14. +
+ +

Validando o serviço

+ +
    +
  1. +

    Testar a URL da API, a seguinte mensagem é normal pois não foi configurada a rota /: +

    +
  2. +
  3. +

    Testar as rotas v1 e v2 da API: +

    + +

    +
  4. +
  5. +

    Existe a possibilidade de limitar o número de requisições por segundo da API (throttling): +

    +
  6. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws11-eks/index.html b/docs/aws11-eks/index.html new file mode 100644 index 0000000000..aafc25e6bf --- /dev/null +++ b/docs/aws11-eks/index.html @@ -0,0 +1,796 @@ + + + + + + +AWS series XI: Elastic Kubernetes Service (EKS) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 15 - AWS EKS

+ +

Criando o cluster

+

Vamos criar um cluster Kubernetes gerenciado para aprender alguns conceitos importantes do Elastic Kubernetes Service:

+
    +
  • Geração do arquivo kubeconfig
  • +
  • Uso do cliente kubectl
  • +
+ +
    +
  1. +

    Acessar o serviço EKS: +

    +
  2. +
  3. +

    Escolher a opção de criação de um novo cluster: +

    +
  4. +
  5. +

    Definir um nome para o cluster, e se tiver usando as contas do AWS Academy selecionar LabRole como Cluster Service Role: +

    +
  6. +
  7. +

    Na aba de Networking, deixar só selecionadas as subredes correspondes as zonas de disponibilidade us-east-1a, us-east-1a e us-east-1c. +Remover as subredes correspondentes a us-east-1d, us-east-1e e us-east-1f. +Para saber em qual zona de disponibilidade foram provisionadas as subredes consultar o módulo VPC. +

    + +

    +
  8. +
  9. +

    Manter o default na aba de logging: +

    +
  10. +
  11. +

    Aguardar varios minutos até o cluster ficar em estado Active: +

    +
  12. +
  13. +

    Vamos a abrir um console CloudShell para acessar o cluster: +

    +
  14. +
  15. Gerar o kubeconfig do cluster (é um arquivo com as credencias e a URL do cluster): +
     $ aws eks --region us-east-1 update-kubeconfig --name fiapCluster
    +
    +
  16. +
  17. Instalar o kubectl (CLI para interagir com o cluster): +
    $ curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.13/bin/linux/amd64/kubectl
    +$ chmod +x kubectl
    +
    +
  18. +
  19. Testar o acesso: +
    $ ./kubectl get svc
    +
    +
  20. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws12-dynamodb/index.html b/docs/aws12-dynamodb/index.html new file mode 100644 index 0000000000..75ba88a208 --- /dev/null +++ b/docs/aws12-dynamodb/index.html @@ -0,0 +1,1471 @@ + + + + + + +AWS series XII: DynamoDB - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 8 - AWS DynamoDB

+ +

Em este lab sobre DynamoDB aprenderemos alguns conceitos importantes na criação de DBaaS NoSQL:

+
    +
  • Criação de tabelas
  • +
  • Inserção/consulta de dados via console
  • +
  • Inserção/consulta via código python
  • +
+ +

Aproveitaremos para ver alguns conceitos importantes sobre Identity and Access Management (IAM):

+
    +
  • Autenticação usando arquivo de credenciais
  • +
  • Autenticação usando roles
  • +
+ +

Aproveitaremos também para mostrar as três formas de interação com a AWS:

+
    +
  • Console WEB
  • +
  • Command line (comando aws)
  • +
  • SDK Python (biblioteca python3-boto3)
  • +
+ +

Pre-reqs

+ +
    +
  • +

    Uma VM com a imagem Amazon Linux

    +
  • +
  • +

    No console da AWS Academy, accessar as credenciais da conta para acesso programático: +

    +
  • +
  • Copiar as credenciais no arquivo ~/.aws/credentials dentro da VM: +
      $ cat ~/.aws/credentials 
    +  [default]
    +  aws_access_key_id=<copy here>
    +  aws_secret_access_key=<copy here>
    +  aws_session_token=<copy here>
    +
    +
  • +
  • Configuramos a região correta (ignorar o resto dos campos): +
     $ aws configure
    + AWS Access Key ID [****************Q5QG]: 
    + AWS Secret Access Key [****************aqWs]: 
    + Default region name [None]: us-east-1
    + Default output format [None]:
    +
    +
  • +
  • Listar VMs (em formato json): +
     $ aws ec2 describe-instances
    + {
    +     "Reservations": [
    +         {
    +             "Groups": [],
    +             "Instances": [
    +                 {
    +                     "AmiLaunchIndex": 0,
    +                     "ImageId": "ami-0914bc04e5495b889",
    +                     "InstanceId": "i-0eea6b50a48d07613",
    +                     "InstanceType": "t2.micro",
    +                     "LaunchTime": "2020-09-18T00:17:13.000Z",
    +                     "Monitoring": {
    +                         "State": "disabled"
    +                     },
    +                     "Placement": {
    +                         "AvailabilityZone": "us-east-1c",
    +                         "GroupName": "",
    +                         "Tenancy": "default"
    +                     },
    +                     "PrivateDnsName": "",
    +                     "ProductCodes": [],
    +                     "PublicDnsName": "",
    +                     "State": {
    +                         "Code": 48,
    +                         "Name": "terminated"
    +                     },
    +                     "StateTransitionReason": "User initiated (2020-09-20 20:10:17 GMT)",
    +                     "Architecture": "x86_64",
    +                     "BlockDeviceMappings": [],
    +                     "ClientToken": "cb65d27a-49cb-d46d-a7ca-1b8368d22330",
    +                     "EbsOptimized": false,
    +                     "EnaSupport": true,
    +                     "Hypervisor": "xen",
    +                     "NetworkInterfaces": [],
    +                     "RootDeviceName": "/dev/xvda",
    +                     "RootDeviceType": "ebs",
    +                     "SecurityGroups": [],
    +                     "StateReason": {
    +                         "Code": "Client.UserInitiatedShutdown",
    +                         "Message": "Client.UserInitiatedShutdown: User initiated shutdown"
    +                     },
    +                     "Tags": [
    +                         {
    +                             "Key": "aws:cloudformation:stack-id",
    +                             "Value": "arn:aws:cloudformation:us-east-1:440730077537:stack/awseb-e-32fei49nnj-stack/35d81f30-f944-11ea-9cb6-0eb23bbe71c5"
    +                         },
    +                         {
    +                             "Key": "elasticbeanstalk:environment-id",
    +                             "Value": "e-32fei49nnj"
    +                         },
    +                         {
    +                             "Key": "Name",
    +                             "Value": "Fiapapp-env"
    +                         },
    +                         {
    +                             "Key": "aws:cloudformation:stack-name",
    +                             "Value": "awseb-e-32fei49nnj-stack"
    +                         },
    +                         {
    +                             "Key": "elasticbeanstalk:environment-name",
    +                             "Value": "Fiapapp-env"
    +                         },
    +                         {
    +                             "Key": "aws:autoscaling:groupName",
    +                             "Value": "awseb-e-32fei49nnj-stack-AWSEBAutoScalingGroup-17NY3APZ43NN7"
    +                         },
    +                         {
    +                             "Key": "aws:cloudformation:logical-id",
    +                             "Value": "AWSEBAutoScalingGroup"
    +                         }
    +                     ],
    +                     "VirtualizationType": "hvm",
    +                     "CpuOptions": {
    +                         "CoreCount": 1,
    +                         "ThreadsPerCore": 1
    +                     },
    +                     "CapacityReservationSpecification": {
    +                         "CapacityReservationPreference": "open"
    +                     },
    +                     "HibernationOptions": {
    +                         "Configured": false
    +                     },
    +                     "MetadataOptions": {
    +                         "State": "pending",
    +                         "HttpTokens": "optional",
    +                         "HttpPutResponseHopLimit": 1,
    +                         "HttpEndpoint": "enabled"
    +                     }
    +                 }
    +             ],
    +             "OwnerId": "440730077537",
    +             "RequesterId": "940372691376",
    +             "ReservationId": "r-04e5222922400810c"
    +         },
    +         {
    +             "Groups": [],
    +             "Instances": [
    +                 {
    +                     "AmiLaunchIndex": 0,
    +                     "ImageId": "ami-0817d428a6fb68645",
    +                     "InstanceId": "i-02a7e6dfe99d1f769",
    +                     "InstanceType": "t2.micro",
    +                     "KeyName": "fiap",
    +                     "LaunchTime": "2020-09-20T20:11:49.000Z",
    +                     "Monitoring": {
    +                         "State": "disabled"
    +                     },
    +                     "Placement": {
    +                         "AvailabilityZone": "us-east-1a",
    +                         "GroupName": "",
    +                         "Tenancy": "default"
    +                     },
    +                     "PrivateDnsName": "ip-172-31-40-37.ec2.internal",
    +                     "PrivateIpAddress": "172.31.40.37",
    +                     "ProductCodes": [],
    +                     "PublicDnsName": "ec2-18-232-70-66.compute-1.amazonaws.com",
    +                     "PublicIpAddress": "18.232.70.66",
    +                     "State": {
    +                         "Code": 16,
    +                         "Name": "running"
    +                     },
    +                     "StateTransitionReason": "",
    +                     "SubnetId": "subnet-17a00f48",
    +                     "VpcId": "vpc-7166990c",
    +                     "Architecture": "x86_64",
    +                     "BlockDeviceMappings": [
    +                         {
    +                             "DeviceName": "/dev/sda1",
    +                             "Ebs": {
    +                                 "AttachTime": "2020-09-20T20:11:49.000Z",
    +                                 "DeleteOnTermination": true,
    +                                 "Status": "attached",
    +                                 "VolumeId": "vol-0b8b82a6443e712cf"
    +                             }
    +                         }
    +                     ],
    +                     "ClientToken": "",
    +                     "EbsOptimized": false,
    +                     "EnaSupport": true,
    +                     "Hypervisor": "xen",
    +                     "NetworkInterfaces": [
    +                         {
    +                             "Association": {
    +                                 "IpOwnerId": "amazon",
    +                                 "PublicDnsName": "ec2-18-232-70-66.compute-1.amazonaws.com",
    +                                 "PublicIp": "18.232.70.66"
    +                             },
    +                             "Attachment": {
    +                                 "AttachTime": "2020-09-20T20:11:49.000Z",
    +                                 "AttachmentId": "eni-attach-00f1dc9a09492b219",
    +                                 "DeleteOnTermination": true,
    +                                 "DeviceIndex": 0,
    +                                 "Status": "attached"
    +                             },
    +                             "Description": "",
    +                             "Groups": [
    +                                 {
    +                                     "GroupName": "launch-wizard-3",
    +                                     "GroupId": "sg-0976be2478d3b8b08"
    +                                 }
    +                             ],
    +                             "Ipv6Addresses": [],
    +                             "MacAddress": "0e:6a:4f:ca:d5:f1",
    +                             "NetworkInterfaceId": "eni-09f8ba40f97bbc142",
    +                             "OwnerId": "440730077537",
    +                             "PrivateDnsName": "ip-172-31-40-37.ec2.internal",
    +                             "PrivateIpAddress": "172.31.40.37",
    +                             "PrivateIpAddresses": [
    +                                 {
    +                                     "Association": {
    +                                         "IpOwnerId": "amazon",
    +                                         "PublicDnsName": "ec2-18-232-70-66.compute-1.amazonaws.com",
    +                                         "PublicIp": "18.232.70.66"
    +                                     },
    +                                     "Primary": true,
    +                                     "PrivateDnsName": "ip-172-31-40-37.ec2.internal",
    +                                     "PrivateIpAddress": "172.31.40.37"
    +                                 }
    +                             ],
    +                             "SourceDestCheck": true,
    +                             "Status": "in-use",
    +                             "SubnetId": "subnet-17a00f48",
    +                             "VpcId": "vpc-7166990c",
    +                             "InterfaceType": "interface"
    +                         }
    +                     ],
    +                     "RootDeviceName": "/dev/sda1",
    +                     "RootDeviceType": "ebs",
    +                     "SecurityGroups": [
    +                         {
    +                             "GroupName": "launch-wizard-3",
    +                             "GroupId": "sg-0976be2478d3b8b08"
    +                         }
    +                     ],
    +                     "SourceDestCheck": true,
    +                     "VirtualizationType": "hvm",
    +                     "CpuOptions": {
    +                         "CoreCount": 1,
    +                         "ThreadsPerCore": 1
    +                     },
    +                     "CapacityReservationSpecification": {
    +                         "CapacityReservationPreference": "open"
    +                     },
    +                     "HibernationOptions": {
    +                         "Configured": false
    +                     },
    +                     "MetadataOptions": {
    +                         "State": "applied",
    +                         "HttpTokens": "optional",
    +                         "HttpPutResponseHopLimit": 1,
    +                         "HttpEndpoint": "enabled"
    +                     }
    +                 }
    +             ],
    +             "OwnerId": "440730077537",
    +             "ReservationId": "r-06e3113829e85cdc6"
    +         }
    +     ]
    + }
    +
    +
  • +
  • Listar VMs (em formato tabela): +
     $ aws ec2 describe-instances --output table
    + ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + |                                                                        DescribeInstances                                                                       |
    + +----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    + ||                                                                         Reservations                                                                         ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + ||  OwnerId                                                         |  440730077537                                                                             ||
    + ||  RequesterId                                                     |  940372691376                                                                             ||
    + ||  ReservationId                                                   |  r-04e5222922400810c                                                                      ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + |||                                                                          Instances                                                                         |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + |||  AmiLaunchIndex                                       |  0                                                                                                 |||
    + |||  Architecture                                         |  x86_64                                                                                            |||
    + |||  ClientToken                                          |  cb65d27a-49cb-d46d-a7ca-1b8368d22330                                                              |||
    + |||  EbsOptimized                                         |  False                                                                                             |||
    + |||  EnaSupport                                           |  True                                                                                              |||
    + |||  Hypervisor                                           |  xen                                                                                               |||
    + |||  ImageId                                              |  ami-0914bc04e5495b889                                                                             |||
    + |||  InstanceId                                           |  i-0eea6b50a48d07613                                                                               |||
    + |||  InstanceType                                         |  t2.micro                                                                                          |||
    + |||  LaunchTime                                           |  2020-09-18T00:17:13.000Z                                                                          |||
    + |||  PrivateDnsName                                       |                                                                                                    |||
    + |||  PublicDnsName                                        |                                                                                                    |||
    + |||  RootDeviceName                                       |  /dev/xvda                                                                                         |||
    + |||  RootDeviceType                                       |  ebs                                                                                               |||
    + |||  StateTransitionReason                                |  User initiated (2020-09-20 20:10:17 GMT)                                                          |||
    + |||  VirtualizationType                                   |  hvm                                                                                               |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + ||||                                                             CapacityReservationSpecification                                                             ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||  CapacityReservationPreference                                                                                             |  open                       ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||                                                                        CpuOptions                                                                        ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||  CoreCount                                                                                                             |  1                              ||||
    + ||||  ThreadsPerCore                                                                                                        |  1                              ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||                                                                    HibernationOptions                                                                    ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||  Configured                                                                                 |  False                                                     ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||                                                                      MetadataOptions                                                                     ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||  HttpEndpoint                                                                                            |  enabled                                      ||||
    + ||||  HttpPutResponseHopLimit                                                                                 |  1                                            ||||
    + ||||  HttpTokens                                                                                              |  optional                                     ||||
    + ||||  State                                                                                                   |  pending                                      ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||                                                                        Monitoring                                                                        ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||  State                                                          |  disabled                                                                              ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||                                                                         Placement                                                                        ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||  AvailabilityZone                                                                        |  us-east-1c                                                   ||||
    + ||||  GroupName                                                                               |                                                               ||||
    + ||||  Tenancy                                                                                 |  default                                                      ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||                                                                           State                                                                          ||||
    + |||+-------------------------------------------------------+--------------------------------------------------------------------------------------------------+|||
    + ||||  Code                                                 |  48                                                                                              ||||
    + ||||  Name                                                 |  terminated                                                                                      ||||
    + |||+-------------------------------------------------------+--------------------------------------------------------------------------------------------------+|||
    + ||||                                                                        StateReason                                                                       ||||
    + |||+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+|||
    + ||||  Code                 |  Client.UserInitiatedShutdown                                                                                                    ||||
    + ||||  Message              |  Client.UserInitiatedShutdown: User initiated shutdown                                                                           ||||
    + |||+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+|||
    + ||||                                                                           Tags                                                                           ||||
    + |||+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+|||
    + ||||                Key                |                                                        Value                                                         ||||
    + |||+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+|||
    + ||||  aws:cloudformation:stack-id      |  arn:aws:cloudformation:us-east-1:440730077537:stack/awseb-e-32fei49nnj-stack/35d81f30-f944-11ea-9cb6-0eb23bbe71c5   ||||
    + ||||  elasticbeanstalk:environment-id  |  e-32fei49nnj                                                                                                        ||||
    + ||||  Name                             |  Fiapapp-env                                                                                                         ||||
    + ||||  aws:cloudformation:stack-name    |  awseb-e-32fei49nnj-stack                                                                                            ||||
    + ||||  elasticbeanstalk:environment-name|  Fiapapp-env                                                                                                         ||||
    + ||||  aws:autoscaling:groupName        |  awseb-e-32fei49nnj-stack-AWSEBAutoScalingGroup-17NY3APZ43NN7                                                        ||||
    + ||||  aws:cloudformation:logical-id    |  AWSEBAutoScalingGroup                                                                                               ||||
    + |||+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+|||
    + ||                                                                         Reservations                                                                         ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + ||  OwnerId                                                         |  440730077537                                                                             ||
    + ||  RequesterId                                                     |                                                                                           ||
    + ||  ReservationId                                                   |  r-06e3113829e85cdc6                                                                      ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + |||                                                                          Instances                                                                         |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + |||  AmiLaunchIndex                                       |  0                                                                                                 |||
    + |||  Architecture                                         |  x86_64                                                                                            |||
    + |||  ClientToken                                          |                                                                                                    |||
    + |||  EbsOptimized                                         |  False                                                                                             |||
    + |||  EnaSupport                                           |  True                                                                                              |||
    + |||  Hypervisor                                           |  xen                                                                                               |||
    + |||  ImageId                                              |  ami-0817d428a6fb68645                                                                             |||
    + |||  InstanceId                                           |  i-02a7e6dfe99d1f769                                                                               |||
    + |||  InstanceType                                         |  t2.micro                                                                                          |||
    + |||  KeyName                                              |  fiap                                                                                              |||
    + |||  LaunchTime                                           |  2020-09-20T20:11:49.000Z                                                                          |||
    + |||  PrivateDnsName                                       |  ip-172-31-40-37.ec2.internal                                                                      |||
    + |||  PrivateIpAddress                                     |  172.31.40.37                                                                                      |||
    + |||  PublicDnsName                                        |  ec2-18-232-70-66.compute-1.amazonaws.com                                                          |||
    + |||  PublicIpAddress                                      |  18.232.70.66                                                                                      |||
    + |||  RootDeviceName                                       |  /dev/sda1                                                                                         |||
    + |||  RootDeviceType                                       |  ebs                                                                                               |||
    + |||  SourceDestCheck                                      |  True                                                                                              |||
    + |||  StateTransitionReason                                |                                                                                                    |||
    + |||  SubnetId                                             |  subnet-17a00f48                                                                                   |||
    + |||  VirtualizationType                                   |  hvm                                                                                               |||
    + |||  VpcId                                                |  vpc-7166990c                                                                                      |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + ||||                                                                    BlockDeviceMappings                                                                   ||||
    + |||+-------------------------------------------------------------------------------+--------------------------------------------------------------------------+|||
    + ||||  DeviceName                                                                   |  /dev/sda1                                                               ||||
    + |||+-------------------------------------------------------------------------------+--------------------------------------------------------------------------+|||
    + |||||                                                                           Ebs                                                                          |||||
    + ||||+-------------------------------------------------------------------+------------------------------------------------------------------------------------+||||
    + |||||  AttachTime                                                       |  2020-09-20T20:11:49.000Z                                                          |||||
    + |||||  DeleteOnTermination                                              |  True                                                                              |||||
    + |||||  Status                                                           |  attached                                                                          |||||
    + |||||  VolumeId                                                         |  vol-0b8b82a6443e712cf                                                             |||||
    + ||||+-------------------------------------------------------------------+------------------------------------------------------------------------------------+||||
    + ||||                                                             CapacityReservationSpecification                                                             ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||  CapacityReservationPreference                                                                                             |  open                       ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||                                                                        CpuOptions                                                                        ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||  CoreCount                                                                                                             |  1                              ||||
    + ||||  ThreadsPerCore                                                                                                        |  1                              ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||                                                                    HibernationOptions                                                                    ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||  Configured                                                                                 |  False                                                     ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||                                                                      MetadataOptions                                                                     ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||  HttpEndpoint                                                                                            |  enabled                                      ||||
    + ||||  HttpPutResponseHopLimit                                                                                 |  1                                            ||||
    + ||||  HttpTokens                                                                                              |  optional                                     ||||
    + ||||  State                                                                                                   |  applied                                      ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||                                                                        Monitoring                                                                        ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||  State                                                          |  disabled                                                                              ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||                                                                     NetworkInterfaces                                                                    ||||
    + |||+--------------------------------------------------------------+-------------------------------------------------------------------------------------------+|||
    + ||||  Description                                                 |                                                                                           ||||
    + ||||  InterfaceType                                               |  interface                                                                                ||||
    + ||||  MacAddress                                                  |  0e:6a:4f:ca:d5:f1                                                                        ||||
    + ||||  NetworkInterfaceId                                          |  eni-09f8ba40f97bbc142                                                                    ||||
    + ||||  OwnerId                                                     |  440730077537                                                                             ||||
    + ||||  PrivateDnsName                                              |  ip-172-31-40-37.ec2.internal                                                             ||||
    + ||||  PrivateIpAddress                                            |  172.31.40.37                                                                             ||||
    + ||||  SourceDestCheck                                             |  True                                                                                     ||||
    + ||||  Status                                                      |  in-use                                                                                   ||||
    + ||||  SubnetId                                                    |  subnet-17a00f48                                                                          ||||
    + ||||  VpcId                                                       |  vpc-7166990c                                                                             ||||
    + |||+--------------------------------------------------------------+-------------------------------------------------------------------------------------------+|||
    + |||||                                                                       Association                                                                      |||||
    + ||||+-----------------------------------------+--------------------------------------------------------------------------------------------------------------+||||
    + |||||  IpOwnerId                              |  amazon                                                                                                      |||||
    + |||||  PublicDnsName                          |  ec2-18-232-70-66.compute-1.amazonaws.com                                                                    |||||
    + |||||  PublicIp                               |  18.232.70.66                                                                                                |||||
    + ||||+-----------------------------------------+--------------------------------------------------------------------------------------------------------------+||||
    + |||||                                                                       Attachment                                                                       |||||
    + ||||+--------------------------------------------------------------+-----------------------------------------------------------------------------------------+||||
    + |||||  AttachTime                                                  |  2020-09-20T20:11:49.000Z                                                               |||||
    + |||||  AttachmentId                                                |  eni-attach-00f1dc9a09492b219                                                           |||||
    + |||||  DeleteOnTermination                                         |  True                                                                                   |||||
    + |||||  DeviceIndex                                                 |  0                                                                                      |||||
    + |||||  Status                                                      |  attached                                                                               |||||
    + ||||+--------------------------------------------------------------+-----------------------------------------------------------------------------------------+||||
    + |||||                                                                         Groups                                                                         |||||
    + ||||+----------------------------------------------------+---------------------------------------------------------------------------------------------------+||||
    + |||||  GroupId                                           |  sg-0976be2478d3b8b08                                                                             |||||
    + |||||  GroupName                                         |  launch-wizard-3                                                                                  |||||
    + ||||+----------------------------------------------------+---------------------------------------------------------------------------------------------------+||||
    + |||||                                                                   PrivateIpAddresses                                                                   |||||
    + ||||+---------------------------------------------------------+----------------------------------------------------------------------------------------------+||||
    + |||||  Primary                                                |  True                                                                                        |||||
    + |||||  PrivateDnsName                                         |  ip-172-31-40-37.ec2.internal                                                                |||||
    + |||||  PrivateIpAddress                                       |  172.31.40.37                                                                                |||||
    + ||||+---------------------------------------------------------+----------------------------------------------------------------------------------------------+||||
    + ||||||                                                                      Association                                                                     ||||||
    + |||||+----------------------------------------+-------------------------------------------------------------------------------------------------------------+|||||
    + ||||||  IpOwnerId                             |  amazon                                                                                                     ||||||
    + ||||||  PublicDnsName                         |  ec2-18-232-70-66.compute-1.amazonaws.com                                                                   ||||||
    + ||||||  PublicIp                              |  18.232.70.66                                                                                               ||||||
    + |||||+----------------------------------------+-------------------------------------------------------------------------------------------------------------+|||||
    + ||||                                                                         Placement                                                                        ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||  AvailabilityZone                                                                        |  us-east-1a                                                   ||||
    + ||||  GroupName                                                                               |                                                               ||||
    + ||||  Tenancy                                                                                 |  default                                                      ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||                                                                      SecurityGroups                                                                      ||||
    + |||+-----------------------------------------------------+----------------------------------------------------------------------------------------------------+|||
    + ||||  GroupId                                            |  sg-0976be2478d3b8b08                                                                              ||||
    + ||||  GroupName                                          |  launch-wizard-3                                                                                   ||||
    + |||+-----------------------------------------------------+----------------------------------------------------------------------------------------------------+|||
    + ||||                                                                           State                                                                          ||||
    + |||+----------------------------------------------------------------+-----------------------------------------------------------------------------------------+|||
    + ||||  Code                                                          |  16                                                                                     ||||
    + ||||  Name                                                          |  running                                                                                ||||
    + |||+----------------------------------------------------------------+-----------------------------------------------------------------------------------------+|||
    +
    +
  • +
+ +

Criando o DB no DynamoDB

+ +
    +
  1. +

    Acessar o serviço DynamoDB

    +
  2. +
  3. +

    Criar uma nova tabela: +

    +
  4. +
  5. +

    Configurar o nome da tabela e a chave primaria da mesma: +

    +
  6. +
  7. +

    Aguardar a criação da tabela: +

    +
  8. +
  9. +

    Na aba Items, adicionar um novo item: +

    + +

    +
  10. +
  11. +

    Confirmar a criação do item: +

    +
  12. +
+ +

Accessando via código python

+ +

Usando o arquivo de credenciais

+ +
    +
  1. Na VM, instalar o git: +
     $ sudo yum install -y git
    +
    +
  2. +
  3. Clonar o repostiorio das aulas: +
     $ git clone https://github.com/josecastillolema/fiap.git
    +
    +
  4. +
  5. Navegar ate a pasta dos códigos de este lab: +
     $ cd fiap/shift/multicloud/lab08-paas-dynamo/
    +
    +
  6. +
  7. Conferir o código: +
      +
    • Carrega a tabela Alunos da region us-east-1
    • +
    • Faz um scan de todos os dados da tabela
    • +
    • Insere um novo aluno
    • +
    + +
    from pprint import pprint
    +import boto3
    +
    +dynamodb = boto3.resource('dynamodb', region_name='us-east-1')
    +table = dynamodb.Table('Alunos')
    +
    +def scan(dynamodb, table):
    +   response = table.scan()
    +   data = response['Items']
    +   while 'LastEvaluatedKey' in response:
    +      response = table.scan(ExclusiveStartKey=response['LastEvaluatedKey'])
    +      data.extend(response['Items'])
    +   print (data)
    +
    +def put_aluno(dynamodb, table, rm, mail, nome, tlfne):
    +   response = table.put_item(
    +      Item={
    +         'RM': rm,
    +         'mail': mail,
    +         'nome': nome,
    +         'tfne': tlfne
    +      }
    +   )
    +   return response
    +
    +if __name__ == '__main__':
    +   print("\nTestando scan:")
    +   scan(dynamodb, table)
    +
    +   resp = put_aluno(dynamodb, table, "RM234472", 'rm234472@fiap.com.br', "Jonas Kahnwald", 11636229987)
    +   print("\nIserindo aluno:")
    +   pprint(resp)
    +
    +
  8. +
  9. Instalar as dependências: +
    $ pip3 install boto3
    +
    +
  10. +
  11. Rodar o código: +
    $ python3 dynamodb.py 
    +
    + Testando scan:
    + [{'mail': 'rm234472@fiap.com.br', 'nome': 'Jonas Kahnwald', 'RM': 'RM234472', 'tlfne': Decimal('11636229987')}, {'mail': 'rm338132@fiap.com.br', 'nome': 'Joao Lopez', 'RM': 'RM338132', 'tfne': Decimal('11981041293')}]
    +
    + Iserindo aluno:
    + {'ResponseMetadata': {'HTTPHeaders': {'connection': 'keep-alive',
    +                                       'content-length': '2',
    +                                       'content-type': 'application/x-amz-json-1.0',
    +                                       'date': 'Thu, 30 Jul 2020 17:41:36 GMT',
    +                                       'server': 'Server',
    +                                       'x-amz-crc32': '2745614147',
    +                                       'x-amzn-requestid': 'KDPGDR3S23O19GMPMPOPHCNEO3VV4KQNSO5AEMVJF66Q9ASUAAJG'},
    +                       'HTTPStatusCode': 200,
    +                       'RequestId': 'KDPGDR3S23O19GMPMPOPHCNEO3VV4KQNSO5AEMVJF66Q9ASUAAJG',
    +                       'RetryAttempts': 0}}
    +
    +
  12. +
  13. No console do DynamoDB, conferir que o novo aluno foi inserido: +
  14. +
+ +

Usando IAM roles (recomendado)

+ +
    +
  1. Remover o arquivo de credenciais: +
    $ rm -rf ~/.aws
    +
    +
  2. +
  3. Tentar rodar de novo o código (deberia falhar, pois não estamos mais autenticados): +
    $ python3 dynamodb.py 
    +
    +Testando scan:
    +Traceback (most recent call last):
    +  File "dynamodb2.py", line 28, in <module>
    +    scan(dynamodb, table)
    +  File "dynamodb2.py", line 8, in scan
    +    response = table.scan()
    +  File "/usr/lib/python3/dist-packages/boto3/resources/factory.py", line 520, in do_action
    +    response = action(self, *args, **kwargs)
    +  File "/usr/lib/python3/dist-packages/boto3/resources/action.py", line 83, in __call__
    +    response = getattr(parent.meta.client, operation_name)(**params)
    +  File "/usr/lib/python3/dist-packages/botocore/client.py", line 316, in _api_call
    +    return self._make_api_call(operation_name, kwargs)
    +  File "/usr/lib/python3/dist-packages/botocore/client.py", line 622, in _make_api_call
    +    operation_model, request_dict, request_context)
    +  File "/usr/lib/python3/dist-packages/botocore/client.py", line 641, in _make_request
    +    return self._endpoint.make_request(operation_model, request_dict)
    +  File "/usr/lib/python3/dist-packages/botocore/endpoint.py", line 102, in make_request
    +    return self._send_request(request_dict, operation_model)
    +  File "/usr/lib/python3/dist-packages/botocore/endpoint.py", line 132, in _send_request
    +    request = self.create_request(request_dict, operation_model)
    +  File "/usr/lib/python3/dist-packages/botocore/endpoint.py", line 116, in create_request
    +    operation_name=operation_model.name)
    +  File "/usr/lib/python3/dist-packages/botocore/hooks.py", line 356, in emit
    +    return self._emitter.emit(aliased_event_name, **kwargs)
    +  File "/usr/lib/python3/dist-packages/botocore/hooks.py", line 228, in emit
    +    return self._emit(event_name, kwargs)
    +  File "/usr/lib/python3/dist-packages/botocore/hooks.py", line 211, in _emit
    +    response = handler(**kwargs)
    +  File "/usr/lib/python3/dist-packages/botocore/signers.py", line 90, in handler
    +    return self.sign(operation_name, request)
    +  File "/usr/lib/python3/dist-packages/botocore/signers.py", line 160, in sign
    +    auth.add_auth(request)
    +  File "/usr/lib/python3/dist-packages/botocore/auth.py", line 357, in add_auth
    +    raise NoCredentialsError
    +botocore.exceptions.NoCredentialsError: Unable to locate credentials
    +
    +
  4. +
  5. Nas contas da AWS Academy, basta nexar o role LabInstanceProfile na VM e rodar de novo o código (deberia funcionar): +
  6. +
+ +

+ +
```
+$ python3 dynamodb.py 
+
+Testando scan:
+[{'mail': 'rm234472@fiap.com.br', 'nome': 'Jonas Kahnwald', 'RM': 'RM234472', 'tfne': Decimal('11636229987')}, {'mail': 'rm338132@fiap.com.br', 'nome': 'Joao Lopez', 'RM': 'RM338132', 'tfne': Decimal('11981041293')}]
+
+Iserindo aluno:
+{'ResponseMetadata': {'HTTPHeaders': {'connection': 'keep-alive',
+                                      'content-length': '2',
+                                      'content-type': 'application/x-amz-json-1.0',
+                                      'date': 'Wed, 05 Aug 2020 08:39:34 GMT',
+                                      'server': 'Server',
+                                      'x-amz-crc32': '2745614147',
+                                      'x-amzn-requestid': 'ESPGDHO1356RNOVANUH18ASV6NVV4KQNSO5AEMVJF66Q9ASUAAJG'},
+                      'HTTPStatusCode': 200,
+                      'RequestId': 'ESPGDHO1356RNOVANUH18ASV6NVV4KQNSO5AEMVJF66Q9ASUAAJG',
+                      'RetryAttempts': 0}}
+ ```
+
+ +
    +
  1. +

    Nas contas “normais” da AWS seguir os seguintes passos. Acessar o serviço IAM +

    +
  2. +
  3. +

    Criar um novo role: +

    +
  4. +
  5. +

    Escolher EC2 como serviço que vai utilizar o novo role: +

    +
  6. +
  7. +

    Anexar a policy AmazonDynamoDBFullAccess no novo role: +

    +
  8. +
  9. +

    Configurar tags: +

    +
  10. +
  11. +

    Revisar as configurações e confirmar a criação do role: +

    +
  12. +
+ +

+ +
    +
  1. +

    No console do EC2, anexar o novo role na VM: +

    +
  2. +
  3. +

    Seleccionar o role que acabamos de criar: +

    +
  4. +
  5. +

    Tentar rodar de novo o código (deberia funcionar):

    +
    $ python3 dynamodb.py 
    +
    +Testando scan:
    +[{'mail': 'rm234472@fiap.com.br', 'nome': 'Jonas Kahnwald', 'RM': 'RM234472', 'tfne': Decimal('11636229987')}, {'mail': 'rm338132@fiap.com.br', 'nome': 'Joao Lopez', 'RM': 'RM338132', 'tfne': Decimal('11981041293')}]
    +
    +Iserindo aluno:
    +{'ResponseMetadata': {'HTTPHeaders': {'connection': 'keep-alive',
    +                                      'content-length': '2',
    +                                      'content-type': 'application/x-amz-json-1.0',
    +                                      'date': 'Wed, 05 Aug 2020 08:39:34 GMT',
    +                                      'server': 'Server',
    +                                      'x-amz-crc32': '2745614147',
    +                                      'x-amzn-requestid': 'ESPGDHO1356RNOVANUH18ASV6NVV4KQNSO5AEMVJF66Q9ASUAAJG'},
    +                      'HTTPStatusCode': 200,
    +                      'RequestId': 'ESPGDHO1356RNOVANUH18ASV6NVV4KQNSO5AEMVJF66Q9ASUAAJG',
    +                      'RetryAttempts': 0}}
    +
    +
  6. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws13-rds/index.html b/docs/aws13-rds/index.html new file mode 100644 index 0000000000..1747881288 --- /dev/null +++ b/docs/aws13-rds/index.html @@ -0,0 +1,917 @@ + + + + + + +AWS series XIII: Relational Database Service (RDS) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 5 - AWS RDS

+ +

Em este lab sobre Relational Database Service (RDS) aprenderemos alguns conceitos importantes na criação de serviços de DBaaS NoSQL:

+
    +
  • Criação de instâncias RDS
  • +
  • Plataformas/entornos disponíveis
  • +
  • Logging
  • +
  • Monitoramento
  • +
+ +

Criação da instância RDS

+ +
    +
  1. +

    Acessar o serviço RDS: +

    +
  2. +
  3. +

    Criar um novo database: +

    +
  4. +
  5. +

    Escolher MySQL como backend: +

    +
  6. +
  7. +

    Selecionar a camada gratuita, e configurar nome, usuário e senha para o banco: +

    +
  8. +
  9. +

    Parametrizaçao de storage: +

    +
  10. +
  11. +

    Se formos acessar desde a nossa máquina local, habilitar o acesso público ao banco:

    + +

    +
  12. +
  13. +

    Revisar as configurações e confirmar a criação da instância RDS:

    + +

    +
  14. +
  15. +

    Aguardar a correta criação da instância: +

    +
  16. +
  17. +

    Na descrição da instância, note-se o endpoint e a porta da mesma: +

    +
  18. +
  19. Testemos a conectividade com a instância: +
    $ telnet fiapdb.cpuzlc9blsa2.us-east-1.rds.amazonaws.com 3306         
    +Trying 18.210.97.78...
    +telnet: connect to address 18.210.97.78: Operation timed out
    +telnet: Unable to connect to remote host
    +
    +
  20. +
  21. +

    Como vimos no passo anterior, a instância não está acessível na porta 3306. Precisamos criar um novo security group e liberar a porta. Para isso, acessar o serviço Virtual Private Cloud (VPC): +

    +
  22. +
  23. +

    Criar um novo security group: +

    +
  24. +
  25. +

    Liberar a porta 3306 desde anywhere: +

    +
  26. +
  27. +

    De volta no serviço RDS, vamos atualizar a instância com o novo security group: +

    +
  28. +
  29. +

    Nos ajustes de conetividade, incluir o novo security group: +

    +
  30. +
  31. +

    Aguardar a configuraçao ser aplicada na instância: +

    +
  32. +
  33. Testar novamente a conetividade: +
    $ telnet fiapdb.cpuzlc9blsa2.us-east-1.rds.amazonaws.com 3306
    +Trying 18.210.97.78...
    +Connected to ec2-18-210-97-78.compute-1.amazonaws.com.
    +Escape character is '^]'.
    +8.0.20a#Xm7w(?M:w{%Z-
    +                     /mysql_native_password
    +
    +
  34. +
+ +

Testando o acesso ao banco

+ +

Pre-reqs

+ +
    +
  • mysql (client)
  • +
+ +

Se não tiver os pre-reqs na máquina local pular para o teste em uma VM no EC2.

+ +

Teste local

+ +
    +
  1. Usar o cliente mysql para acessar ao banco: +
    $ mysql -h fiapdb.cpuzlc9blsa2.us-east-1.rds.amazonaws.com -u admin -p
    +Enter password: 
    +Welcome to the MySQL monitor.  Commands end with ; or \g.
    +Your MySQL connection id is 26
    +Server version: 8.0.20 Source distribution
    +
    +Copyright (c) 2000, 2021, Oracle and/or its affiliates.
    +
    +Oracle is a registered trademark of Oracle Corporation and/or its
    +affiliates. Other names may be trademarks of their respective
    +owners.
    +
    +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    +
    +mysql> show databases;
    ++--------------------+
    +| Database           |
    ++--------------------+
    +| information_schema |
    +| mysql              |
    +| performance_schema |
    ++--------------------+
    +3 rows in set (0.15 sec)
    +
    +
  2. +
+ +

Teste em uma VM no EC2

+ +

Se tiver feito o deploy local pode pular esta seção.

+ +
    +
  1. +

    Criar uma VM com a imagem Amazon Linux

    +
  2. +
  3. +

    Logar na VM

    +
  4. +
  5. Instalar o cliente mysql: +
     $ sudo yum install mariadb
    +
    +
  6. +
  7. +

    Usar o cliente mysql para acessar ao banco: + ``` + $ mysql -h fiapdb.cpuzlc9blsa2.us-east-1.rds.amazonaws.com -u admin -p + Enter password: + Welcome to the MySQL monitor. Commands end with ; or \g. + Your MySQL connection id is 26 + Server version: 8.0.20 Source distribution

    + +

    Copyright (c) 2000, 2021, Oracle and/or its affiliates.

    + +

    Oracle is a registered trademark of Oracle Corporation and/or its + affiliates. Other names may be trademarks of their respective + owners.

    + +

    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    + +

    mysql> show databases; + +——————–+ + | Database | + +——————–+ + | information_schema | + | mysql | + | performance_schema | + +——————–+ + 3 rows in set (0.15 sec)

    +
  8. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws14-emr/index.html b/docs/aws14-emr/index.html new file mode 100644 index 0000000000..89c64b4648 --- /dev/null +++ b/docs/aws14-emr/index.html @@ -0,0 +1,832 @@ + + + + + + +AWS series XIV: Elastic MapReduce (EMR) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 12 - Elastic MapReduce

+ +

Em este lab sobre EMR aprenderemos alguns conceitos da plataforma de Big Data as a Service da AWS:

+
    +
  • Criação de cluster
  • +
  • Acesso via WEB e SSH/CLI
  • +
  • Monitoramento
  • +
+ +

Configuração do serviço

+ +
    +
  1. +

    Acessar o serviço EMR: +

    +
  2. +
  3. +

    Iniciar a criação do cluster: +

    +
  4. +
  5. +

    Escolher um nome para o cluster, um bucket do S3 para armacenar os logs, versão do EMR e conjunto de aplicações solicitado: +

    +
  6. +
  7. +

    Escolha de flavor, número de instâncias e chave SSH para acessar o cluster. Quem tiver usando a conta do AWS Educate, lembre-se que só os seguintes flavors estão disponíveis: t2.small, t2.micro, t2.nano, m4.large, c4.large, c5.large, m5.large, t2.medium, m4.xlarge, t2.nano, c4.xlarge, c5.xlarge, t2.2xlarge, m5.2xlarge, t2.large e t2.xlarge. +

    +
  8. +
  9. +

    Aguardar a criação do cluster: +

    + +

    +
  10. +
+ +

Acessando o serviço

+ +
    +
  1. +

    Acessar a interface web do YARN timeline server: +

    +
  2. +
  3. +

    Acessar a interface web do Tez: +

    +
  4. +
  5. Acessar via SSH no master node e fazer uma consulta no Hive. É necessário liberar a porta 22 no security group associado às instâncias criadas no EC2: +
     % ssh -i fiap.pem hadoop@ec2-3-81-126-78.compute-1.amazonaws.com
    +
    + The authenticity of host 'ec2-3-81-126-78.compute-1.amazonaws.com (3.81.126.78)' can't be established.
    + ECDSA key fingerprint is SHA256:Bavwz+doMGvtdOwhJM7+IGCrURgDCL/a/6ISfjROYLM.
    + Are you sure you want to continue connecting (yes/no/[fingerprint])? YES
    + Warning: Permanently added 'ec2-3-81-126-78.compute-1.amazonaws.com,3.81.126.78' (ECDSA) to the list of known hosts.
    + Last login: Sun Sep 20 20:36:00 2020
    +
    +        __|  __|_  )
    +        _|  (     /   Amazon Linux 2 AMI
    +       ___|\___|___|
    +
    + https://aws.amazon.com/amazon-linux-2/
    + 33 package(s) needed for security, out of 90 available
    + Run "sudo yum update" to apply all updates.
    +
    + EEEEEEEEEEEEEEEEEEEE MMMMMMMM           MMMMMMMM RRRRRRRRRRRRRRR    
    + E::::::::::::::::::E M:::::::M         M:::::::M R::::::::::::::R   
    + EE:::::EEEEEEEEE:::E M::::::::M       M::::::::M R:::::RRRRRR:::::R 
    +   E::::E       EEEEE M:::::::::M     M:::::::::M RR::::R      R::::R
    +   E::::E             M::::::M:::M   M:::M::::::M   R:::R      R::::R
    +   E:::::EEEEEEEEEE   M:::::M M:::M M:::M M:::::M   R:::RRRRRR:::::R 
    +   E::::::::::::::E   M:::::M  M:::M:::M  M:::::M   R:::::::::::RR   
    +   E:::::EEEEEEEEEE   M:::::M   M:::::M   M:::::M   R:::RRRRRR::::R  
    +   E::::E             M:::::M    M:::M    M:::::M   R:::R      R::::R
    +   E::::E       EEEEE M:::::M     MMM     M:::::M   R:::R      R::::R
    + EE:::::EEEEEEEE::::E M:::::M             M:::::M   R:::R      R::::R
    + E::::::::::::::::::E M:::::M             M:::::M RR::::R      R::::R
    + EEEEEEEEEEEEEEEEEEEE MMMMMMM             MMMMMMM RRRRRRR      RRRRRR
    +
    + [hadoop@ip-172-31-42-29 ~]$ hive
    +
    + Logging initialized using configuration in file:/etc/hive/conf.dist/hive-log4j2.properties Async: false
    + hive> show databases;
    + OK
    + default
    + Time taken: 0.086 seconds, Fetched: 1 row(s)
    + hive> 
    +
    +
    +
  6. +
  7. Conferir a aba de monitoramento: +
  8. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws15-lambda/index.html b/docs/aws15-lambda/index.html new file mode 100644 index 0000000000..ed6a746a75 --- /dev/null +++ b/docs/aws15-lambda/index.html @@ -0,0 +1,906 @@ + + + + + + +AWS series XV: Lambda - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 13 - Amazon Lambda

+ +

Em este lab sobre Lambda aprenderemos alguns conceitos do modulo de Function as a Service (FaaS) / serverless da plataforma da AWS:

+
    +
  • Criação de funções Lambda
  • +
  • Teste de funções
  • +
  • Criação de triggers (via API Gateway)
  • +
+ +

Pre-reqs

+ +
    +
  • A seguinte tabela, com nome Atmosfera criada no DynamoDB: +
      +
    • sala: primary key, string
    • +
    • temperatura: number
    • +
    • humidade: number
    • +
    + +

    +
  • +
+ +

Configuração do serviço

+ +
    +
  1. +

    Acessar o serviço Lambda: +

    +
  2. +
  3. +

    Criar uma nova função: +

    +
  4. +
  5. +

    Criar uma primera função getTemperatura com Python como runtime: +

    +
  6. +
  7. +

    Nas contas da AWS Academy é necessário mudar o execution role por LabRole: +

    +
  8. +
  9. Configurar o seguinte código para a função: +
     import json
    + import boto3
    + def lambda_handler(event, context):
    +    dynamodb = boto3.resource('dynamodb')
    +    tableTemperatures = dynamodb.Table('Atmosfera')
    +    response = tableTemperatures.scan()
    +    return {
    +       'statusCode': 200,
    +       'body': response['Items'][0]['temperatura']
    +    }
    +
    +

    O código lee o valor temperatura da tabela Atmosfera do DynamoDB.

    +
  10. +
  11. +

    Fazer deploy do código: +

    +
  12. +
  13. +

    Vamos testar o código: +

    +
  14. +
  15. +

    Criamos um evento de testes. A entrada do evento (o arquivo json) é indeferente em este caso específico, pois a API não está lendo entrada: +

    +
  16. +
  17. +

    Executar o evento de testes recém criado testeGetTemperatura: +

    + +

    +
  18. +
  19. +

    Se tiver usando uma conta “normal” da AWS ir para o passo 22, se tiver usando uma conta do AWS Academy continuar normalmente.

    +
  20. +
  21. +

    Agora vamos configurar um trigger para a função: +

    +
  22. +
  23. +

    O trigger será um endpoint em uma nova API do API Gateway chamada api-lambda: +

    +
  24. +
  25. +

    Conferir que o trigger foi criado e asociado à função: +

    +
  26. +
  27. +

    Nos detalhes do trigger podemos ver a URL do endpoint: +

    +
  28. +
  29. Testamos o endpoint (se aparecer a mensagem {"message":"Missing Authentication Token"} aguardar um minuto e repetir o teste): +
  30. +
+ +

Configuração do segundo endpoint usando a mesma API

+ +
    +
  1. +

    Repetir os pasos 2 e 3 para criar uma segunda função getHumidade com Python como runtime: +

    +
  2. +
  3. Configurar o seguinte código para a função e fazer deploy do mesmo: +
    import json
    +import boto3
    +def lambda_handler(event, context):
    +   dynamodb = boto3.resource('dynamodb')
    +   tableTemperatures = dynamodb.Table('Atmosfera')
    +   response = tableTemperatures.scan()
    +   return {
    +      'statusCode': 200,
    +      'body': response['Items'][0]['humidade']
    +   }
    +
    + +

    O código lee o valor humidade da tabela Atmosfera do DynamoDB.

    +
  4. +
  5. +

    Testar a nova função como mostrado nos passos 7, 8 e 9: +

    +
  6. +
  7. +

    Criar um trigger para a função usando a mesma API que no passo 16: +

    +
  8. +
  9. +

    Obter o endpoint nos detalhes do trigger: +

    +
  10. +
  11. Conferir o novo endpoint da API (se aparecer a mensagem {"message":"Missing Authentication Token"} aguardar um minuto e repetir o teste): +
  12. +
+ +

Criação do IAM role em contas “normais” da AWS

+ +
    +
  1. +

    O teste deve falhar, pois a função não tem permissão para acessar o DynamoDB: +

    +
  2. +
  3. +

    No IAM, procurar o role da função: +

    +
  4. +
  5. +

    Adicionar uma nova policy: +

    +
  6. +
  7. +

    A policy AmazonDynamoDBReadOnlyAccess vai dar acesso de leitura ao DynamoDB: +

    +
  8. +
  9. +

    Estado final da role: +

    +
  10. +
  11. +

    Ejecutar de novo o teste, agora deberia funcionar: +

    +
  12. +
  13. +

    Continuar o laboratório normalmente a partir do passo 11

    +
  14. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws2-ebs/index.html b/docs/aws2-ebs/index.html new file mode 100644 index 0000000000..b2ac7eb786 --- /dev/null +++ b/docs/aws2-ebs/index.html @@ -0,0 +1,892 @@ + + + + + + +AWS series II: Elastic Block Service (EBS) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 4 - AWS EBS

+ +

Em este lab sobre Elastic Block Service aprenderemos alguns conceitos importantes do armazenamento em blocos:

+
    +
  • Criação de volumes
  • +
  • Anexar volumes a instâncias
  • +
  • Configurar volumes dentro das instâncias +
      +
    • Formatação
    • +
    • Criação do sistema de arquivos
    • +
    • Montar o volume
    • +
    +
  • +
+ +

Pre-reqs

+ +
    +
  • Na maquina virtual do lab 01 - EC2, conferir os volumes: +
      [ec2-user@ip-172-31-51-147 ~]$ lsblk
    +  NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    +  xvda    202:0    0   8G  0 disk 
    +  `-xvda1 202:1    0   8G  0 part /
    +
    +

    Veja que só existe um volume (do sistema operacional), com um tamanho de 8 GB e uma partição (xvda1). Estas informações podem mudar, o importante e garantir que após a criação de um novo volume e de anexa-lo a instância, novos dispositivos serão listados.

    +
  • +
+ +

Criando o volume

+ +
    +
  1. +

    Ainda no serviço EC2, navegar ate Elastic Block Volume -> Volumes. Importante notar a zona de disponibilidade a onde foi criada a maquina virtual do lab 01: +

    +
  2. +
  3. +

    Criar um novo volume vazio com tamanho de 10 GB, na mesma zona de disponibilidade a onde foi criada a VM do lab 01: +

    +
  4. +
  5. +

    Uma vez o volume for criado, anexar ele à maquina virtual: +

    +
  6. +
  7. +

    Seleccionar o nome da maquina virtual criada no lab01: +

    +
  8. +
  9. +

    Apos uns instantes, conferir a informação sobre anexos do volume: +

    +
  10. +
+ +

Configurando o volume dentro da instancia

+ +
    +
  1. Na maquina virtual, conferir o novo dispositivo, em este caso xvdf, com tamanho 10 GB (o nome pode mudar). Observe-se que ainda não possue nenhuma partição: +
     $ lsblk
    + NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    + xvda    202:0    0   8G  0 disk 
    + `-xvda1 202:1    0   8G  0 part /
    + xvdf    202:80   0  10G  0 disk
    +
    +
  2. +
  3. Usaremos o fdisk para criar uma partição no novo disco: +
    $ sudo fdisk /dev/xvdf
    +
    +Welcome to fdisk (util-linux 2.30.2).
    +Changes will remain in memory only, until you decide to write them.
    +Be careful before using the write command.
    +
    +Device does not contain a recognized partition table.
    +Created a new DOS disklabel with disk identifier 0x8e3e850d.
    +
    +Command (m for help): n
    +Partition type
    +   p   primary (0 primary, 0 extended, 4 free)
    +   e   extended (container for logical partitions)
    +Select (default p): p
    +Partition number (1-4, default 1): 
    +First sector (2048-20971519, default 2048): 
    +Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): 
    +
    +Created a new partition 1 of type 'Linux' and of size 10 GiB.
    +
    +Command (m for help): w
    +The partition table has been altered.
    +Calling ioctl() to re-read partition table.
    +Syncing disks.
    +
    +
    +
  4. +
  5. Conferir a nova partição (em este caso, xvdf1): +
    $ lsblk 
    +NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    +xvda    202:0    0   8G  0 disk 
    +`-xvda1 202:1    0   8G  0 part /
    +xvdf    202:80   0  10G  0 disk 
    +`-xvdf1 202:81   0  10G  0 part
    +
    +
  6. +
  7. Criar o sistema de arquivos: +
    $ sudo mkfs /dev/xvdf1
    +mke2fs 1.42.9 (28-Dec-2013)
    +Filesystem label=
    +OS type: Linux
    +Block size=4096 (log=2)
    +Fragment size=4096 (log=2)
    +Stride=0 blocks, Stripe width=0 blocks
    +655360 inodes, 2621184 blocks
    +131059 blocks (5.00%) reserved for the super user
    +First data block=0
    +Maximum filesystem blocks=2684354560
    +80 block groups
    +32768 blocks per group, 32768 fragments per group
    +8192 inodes per group
    +Superblock backups stored on blocks: 
    +   32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
    +
    +Allocating group tables: done                            
    +Writing inode tables: done                            
    +Writing superblocks and filesystem accounting information: done 
    +
    +
  8. +
  9. Criar a pasta /mnt/volumeExterno para montar o volume: +
    $ sudo mkdir /mnt/volumeExterno
    +
    +
  10. +
  11. Montar o volume na pasta recem criada: +
    $ sudo mount /dev/xvdf1 /mnt/volumeExterno/
    +
    +
  12. +
  13. Listar os arquivos do novo volume (é esperado ter uma pasta chamada lost-found, mesmo que o volume esteja vazio): +
    $ cd /mnt/volumeExterno/
    +$ ls
    +lost+found
    +
    +
  14. +
  15. Criar um arquivo qualquer (como usuário admin): +
    $ cd /mnt/volumeExterno
    +$ cat meuArquivo 
    +sic mundus creatus est
    +
    +
  16. +
  17. Se for necessario usar este mesmo volume com o arquivo recem criado em outra instancia, quais dos seguintes pasos seria necessario refazer? +
      +
    • Formatação
    • +
    • Criação do sistema de arquivos
    • +
    • Montar o volume
    • +
    +
  18. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws3-s3/index.html b/docs/aws3-s3/index.html new file mode 100644 index 0000000000..7817058aac --- /dev/null +++ b/docs/aws3-s3/index.html @@ -0,0 +1,880 @@ + + + + + + +AWS series III: Simple Storage Service (S3) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 5 - AWS S3

+ +

Em este lab sobre Simple Storage Service (S3) aprenderemos alguns conceitos importantes do armazenamento de objetos:

+
    +
  • Criação de buckets
  • +
  • Criação de objetos
  • +
  • Controle de permissões de acesso
  • +
  • Hospedagem de sites estáticos
  • +
+ +

Criação do bucket

+ +
    +
  1. +

    Accessar o serviço S3: +

    +
  2. +
  3. +

    Criar um novo bucket: +

    +
  4. +
  5. +

    Escolher um nome para o bucket. O nome deve ser único globalmente: +

    +
  6. +
  7. +

    Em esta aba podem ser configuradas algumas opções do bucket, como versionamento, logging, etc.: +

    +
  8. +
  9. +

    Habilitar accesso público no bucket: +

    +
  10. +
  11. +

    Confirmar a criação do bucket: +

    +
  12. +
  13. +

    Conferir que o bucket foi criado: +

    +
  14. +
+ +

Criação do objeto

+ +
    +
  1. +

    Fazer o upload de uma imagem qualquer: +

    +
  2. +
  3. +

    Habilitar accesso público no objeto: +

    +
  4. +
  5. +

    Seleccionar o tier Standard: +

    +
  6. +
  7. +

    Confirmar a criação do objeto: +

    +
  8. +
  9. +

    Conferir que o objeto foi criado: +

    +
  10. +
  11. +

    Na descrição do objeto, podemos obter a url do mesmo:

    + + + + + + + + + + + + + + + + + + +
     bucket-name objeto
    https://fiap-mba.s3.amazonaws.comsicmundus.jpg
    +
  12. +
+ +

+ +
    +
  1. Accessar a imagem pela URL do objeto: +
  2. +
+ +

Hospedagem de sites estáticos

+ +
    +
  1. +

    Alterar a configuração do bucket para permitir o armazenamento de sites estáticos: +

    +
  2. +
  3. +

    Introducir o nome do arquivo html principal: +

    +
  4. +
  5. +

    Fazer upload do arquivo index.html (ou de qualquer outro arquivo html) com permissão de accesso público, como descrito na criação de objeto

    +
  6. +
  7. +

    A URL no modo armazenamento de sites estáticos apresenta um novo formato:

    + + + + + + + + + + + + + + + + + + + + +
     bucket-name region 
    https://fiap-mbas3-websiteus-east-1amazonaws.com
    +
  8. +
  9. +

    Acessar o site pela nova URL do bucket: +

    +
  10. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws4-autoscaling/index.html b/docs/aws4-autoscaling/index.html new file mode 100644 index 0000000000..66b41cac7b --- /dev/null +++ b/docs/aws4-autoscaling/index.html @@ -0,0 +1,906 @@ + + + + + + +AWS series IV: Auto Scaling - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 9 - AWS Autoscaling

+ +

Usaremos a imagem oficial Amazon Linux para aprender alguns conceitos importantes de autoscaling:

+
    +
  • launch configuration templates
  • +
  • autoscaling groups
  • +
  • scaling policies
  • +
+ +

Criando o launch template

+ +
    +
  1. +

    Acessar o serviço EC2: +

    +
  2. +
  3. +

    Criar um novo launch template: +

    +
  4. +
  5. +

    Escolher a imagem do Amazon Linux 2 AMI: +

    +
  6. +
  7. +

    Escolher o flavor t2.micro: +

    +
  8. +
  9. +

    Assignar um nome para o launch template: +

    +
  10. +
  11. +

    Revisar e confirmar a criação do lauch template: +

    +
  12. +
  13. +

    Escolher uma chave previamente criada ou criar uma chave nova para acessar às instâncias do autoscaling group: +

    +
  14. +
  15. +

    Aguardar a criação do launch template: +

    +
  16. +
+ +

Criando o autoscaling group

+ +
    +
  1. +

    Criar um novo autoscaling group: +

    +
  2. +
  3. +

    Seleccionar o launch template criado anteriormente: +

    +
  4. +
  5. +

    Assignar um nome e uma subrede para o autoscaling group: +

    +
  6. +
  7. Definir a política de autoscaling: +
      +
    • Uso de CPU como métrica
    • +
    • Scale out a partir de 40% de uso de CPU
    • +
    • Scale in a partir de 40% de uso de CPU
    • +
    • Número mínimo de instâncias: 1
    • +
    • Número máximo de instâncias: 2
    • +
    • 300 segundos de warm up +
    • +
    +
  8. +
  9. +

    Revisar e confirmar a criação do autoscaling group: +

    +
  10. +
  11. +

    Aguardar a criação do autoscaling group: +

    +
  12. +
  13. +

    Conferir a criação do autoscaling group, a princípio só com uma instância: +

    +
  14. +
  15. +

    Conferir as instâncias que fazem parto do autoscaling group: +

    +
  16. +
  17. Conferir a(s) instância(s) no EC2: +
  18. +
+ +

Testando o autoscaling group

+ +
    +
  1. Accessar via SSH à instância: +
    % ssh -i "fiap.pem" ec2-user@ec2-34-230-22-18.compute-1.amazonaws.com
    +
    +       __|  __|_  )
    +       _|  (     /   Amazon Linux 2 AMI
    +      ___|\___|___|
    +
    +https://aws.amazon.com/amazon-linux-2/
    +[ec2-user@ip-172-31-44-183 ~]$
    +
    +
  2. +
  3. Confirmar a baixa carga de CPU usando os comandos uptime e top: +
    $ uptime
    +10:01:32 up 7 min,  1 user,  load average: 0.00, 0.02, 0.00
    +    
    +$ top
    +top - 10:01:55 up 8 min,  1 user,  load average: 0.00, 0.02, 0.00
    +Tasks:  84 total,   1 running,  47 sleeping,   0 stopped,   0 zombie
    +%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    +KiB Mem :  1006940 total,   587088 free,    60240 used,   359612 buff/cache
    +KiB Swap:        0 total,        0 free,        0 used.   806496 avail Mem 
    +
    +
  4. +
  5. Criar carga na CPU: +
    $ yes > /dev/null &
    +[1] 3533
    +
    +
  6. +
  7. Confirmar a alta carga de CPU usando os comandos uptime e top: +
    $ top
    +top - 10:11:42 up 17 min,  1 user,  load average: 1.00, 0.86, 0.47
    +Tasks:  85 total,   2 running,  47 sleeping,   0 stopped,   0 zombie
    +%Cpu(s): 98.7 us,  1.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    +KiB Mem :  1006940 total,   584692 free,    61056 used,   361192 buff/cache
    +KiB Swap:        0 total,        0 free,        0 used.   805612 avail Mem
    +   
    +$ uptime
    +10:44:25 up 36 min,  1 user,  load average: 1.00, 0.94, 0.60
    +
    +
  8. +
  9. +

    Aguardar o scale up.

    + +

    Pode demorar até: +healt check grace period (5 min) + tempo de criação da instância + tempo de status checks +

    +
  10. +
  11. Parar o processo que consome CPU: +
    $ killall yes
    +
    +
  12. +
  13. Confirmar a baixa carga de CPU usando os comandos uptime e top: +
    $ uptime
    +10:01:32 up 7 min,  1 user,  load average: 0.00, 0.02, 0.00
    +    
    +$ top
    +top - 10:01:55 up 8 min,  1 user,  load average: 0.00, 0.02, 0.00
    +Tasks:  84 total,   1 running,  47 sleeping,   0 stopped,   0 zombie
    +%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    +KiB Mem :  1006940 total,   587088 free,    60240 used,   359612 buff/cache
    +KiB Swap:        0 total,        0 free,        0 used.   806496 avail Mem 
    +
    +
  14. +
  15. +

    Aguardar o scale down.

    + +

    Pode demorar até: +warm up (5 min) + healt check grace period (5 min) + tempo de deleção da instância +

    +
  16. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws5-ecs/index.html b/docs/aws5-ecs/index.html new file mode 100644 index 0000000000..7f710082cd --- /dev/null +++ b/docs/aws5-ecs/index.html @@ -0,0 +1,819 @@ + + + + + + +AWS series V: Elastic Container Service (ECS) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 3 - AWS ECS

+ +

Criando a instância

+

Usaremos a imagem josecastillolema/api hospedada no Docker Hub para aprender alguns conceitos importantes do Elastic Container Service:

+
    +
  • Deploy de containers no ECS
  • +
  • Mapeamento de portas
  • +
  • Memory limits
  • +
+ +
    +
  1. +

    Acessar o serviço ECS: +

    +
  2. +
  3. +

    Lançar o assistente de criaçao de containers: +

    +
  4. +
  5. +

    Seleccionar o Fargate para hospedar o container: +

    +
  6. +
  7. +

    Nomear o cluster: +

    +
  8. +
  9. +

    Criar uma imagem customizada: +

    +
  10. +
  11. Parametrização da imagem: +
      +
    • Imagem: josecastillolema/api hospedada no Docker Hub
    • +
    • Limite de memória: 512 MB
    • +
    • Mapeamento de porta: 5000 +
    • +
    +
  12. +
  13. +

    Editar as definições da task e selecionar LabRole como Task execution role (isto é uma limitação específica das contas da AWS Academy): +

    +
  14. +
  15. +

    Na configuração do serviço, desativar o balanceador de carga: +

    +
  16. +
  17. +

    Manter as configurações padrão de rede: +

    +
  18. +
  19. +

    Revisar as configurações: +

    +
  20. +
  21. Confirmar a criação do cluster: +
  22. +
+ +

Acessando a instância

+ +
    +
  1. +

    Mostrar as informações do cluster: +

    +
  2. +
  3. +

    Na aba Tasks, mostrar a informação da única task (em este exemplo 39bb35ae-615...: +

    +
  4. +
  5. +

    Conferir o IP público para acessar o container: +

    +
  6. +
  7. +

    Acessar o container pelo IP público: +

    +
  8. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws6-cloudformation/index.html b/docs/aws6-cloudformation/index.html new file mode 100644 index 0000000000..8576600a89 --- /dev/null +++ b/docs/aws6-cloudformation/index.html @@ -0,0 +1,797 @@ + + + + + + +AWS series VI: CloudFormation - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 14 - AWS CloudFormation

+ +

Em este lab sobre CloudFormation aprenderemos alguns conceitos importantes do paradigma de Infrastructure as Code (IaC):

+
    +
  • Criação de stacks
  • +
  • Parametrização
  • +
  • Monitoramento
  • +
+ +

Criaremos um stack que configura um servidor WordPress.

+ +

Criação do stack

+ +
    +
  1. +

    Accessar o serviço CloudFormation e criar um novo stack: +

    +
  2. +
  3. +

    Fazer upload do template lab14-iaas-cloudformation.yaml +

    +
  4. +
  5. +

    No designer podemos visualizar e editar graficamente o conteúdo do template: +

    +
  6. +
  7. +

    Parametrização do stack: +

    +
  8. +
  9. +

    Opçoes avançadas (sem mudanças): +

    +
  10. +
  11. +

    Revisar e confirmar a criação do stack:

    + +

    +
  12. +
+ +

Accesso ao stack

+ +
    +
  1. +

    Aguardar o stack transicionar ao estado CREATE_COMPLETE: +

    +
  2. +
  3. +

    Confirmar a URL do WordPress: +

    +
  4. +
  5. +

    Accessar o WordPress: +

    +
  6. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws7-eb/index.html b/docs/aws7-eb/index.html new file mode 100644 index 0000000000..2c4e2356a4 --- /dev/null +++ b/docs/aws7-eb/index.html @@ -0,0 +1,914 @@ + + + + + + +AWS series VII: Elastic Beanstalk (EB) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 6 - AWS Elastic Beanstalk

+ +

Em este lab sobre Elastic Beanstalk (EB) aprenderemos alguns conceitos importantes da camada de plataforma da AWS:

+
    +
  • Deploy de aplicações
  • +
  • Plataformas/entornos de execução disponíveis
  • +
  • Logging
  • +
  • Monitoramento
  • +
+ +

Pre-reqs

+ +
    +
  • git
  • +
  • python3
  • +
  • pip3
  • +
+ +

Se não tiver os pre-reqs na máquina local pular para o deploy em uma VM no EC2.

+ +

Deploy local

+ +
    +
  1. Clonar o repositório: +
    $ git clone https://github.com/josecastillolema/fiap
    +
    +
  2. +
  3. +

    Navegar ate o diretorio fiap/scj/cloud/lab06-paas-eb. O diretorio contem os seguintes arquivos:

    + +
      +
    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • +
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.
    • +
    +
  4. +
  5. Instalar as dependências: +
    $ pip3 install -r requirements.txt
    +
    +
  6. +
  7. Executar a aplicacao: +
    $ python3 application.py
    + Serving Flask app "application" (lazy loading)
    + Environment: production
    +   WARNING: Do not use the development server in a production environment.
    +   Use a production WSGI server instead.
    + Debug mode: off
    + Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    +
    +
  8. +
  9. Testar o acesso local: +
  10. +
+ +

Deploy em uma VM no EC2

+ +

Se tiver feito o deploy local pode pular esta seção.

+ +
    +
  1. +

    Criar uma VM com a imagem Amazon Linux

    +
  2. +
  3. +

    Logar na VM

    +
  4. +
  5. Atualizar os repositorios: +
     $ sudo yum update
    +
    +
  6. +
  7. Instalar o pip3 (gestor de pacotes do python3): +
     $ sudo yum install -y python3-pip git
    +
    +
  8. +
  9. Clonar o repositório: +
     $ git clone https://github.com/josecastillolema/fiap
    +
    +
  10. +
  11. Navegar ate o diretorio fiap/shift/multicloud/lab06-paas-eb. O diretorio contem os seguintes arquivos: +
      +
    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • +
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.
    • +
    +
  12. +
  13. Instalar as dependências: +
     $ sudo pip3 install -r requirements.txt --use-feature=2020-resolver
    +
    +
  14. +
  15. Executar a aplicação: +
     $ python3 application.py
    +  Serving Flask app "application" (lazy loading)
    +  Environment: production
    +    WARNING: Do not use the development server in a production environment.
    +    Use a production WSGI server instead.
    +  Debug mode: off
    +  Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
    +
    +
  16. +
  17. Em uma nova terminal testar o acesso local: +
     $ curl localhost:5000
    + <h1>Hola FIAP!</h1>
    +
    +
  18. +
  19. Testar o acesso remoto pela IP pública da VM (lembrando que é necessária a liberacão da porta 5000 no security group da VM):
  20. +
+ +

+ +

Deploy na AWS

+ +
    +
  1. +

    Acessar o serviço Elastic Beanstalk: +

    +
  2. +
  3. +

    Criar um novo environment: +

    +
  4. +
  5. +

    A aplicação é um serviço web: +

    +
  6. +
  7. +

    Configurar o nome da apliação: +

    +
  8. +
  9. +

    Escolher o entorno de execução: +

    +
  10. +
  11. Fazer o upload da aplicação. O arquivo comprimido deve conter os seguintes arquivos: +
      +
    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • +
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.
    • +
    + +

    +
  12. +
  13. +

    Os próximos passos relativos a segurança são específicos das contas AWS Academy

    + +

    a. Antes de criar a aplicaçao, mostrar as opções avançadas: +

    + +

    b. Editar as opções de segurança: +

    + +

    c. Fazer os seguintes ajustes:

    +
      +
    • Service role: LabRole
    • +
    • EC2 key pair: vockey
    • +
    • IAM instance profile: LabInstanceProfile +
    • +
    +
  14. +
  15. +

    Após uns minutos, conferir o estado da aplicação: +

    +
  16. +
  17. Accessar a URL da aplicação: +
  18. +
+ +

Logging e monitoramento

+ +
    +
  1. +

    Se for necessário fazer troubleshooting da aplicação, fazer download dos logs: +

    +
  2. +
  3. +

    Para monitorar a aplicação: +

    +
  4. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws8-eb-springboot/index.html b/docs/aws8-eb-springboot/index.html new file mode 100644 index 0000000000..b758a5a328 --- /dev/null +++ b/docs/aws8-eb-springboot/index.html @@ -0,0 +1,991 @@ + + + + + + +AWS series VIII: Elastic Beanstalk (EB) com Spring Boot - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 10 - AWS Elastic Beanstalk com Spring Boot

+ +

Em este lab sobre Elastic Beanstalk (EB) aprenderemos alguns conceitos importantes da camada de plataforma da AWS:

+
    +
  • Deploy de aplicações
  • +
  • Plataformas/entornos de execução disponíveis
  • +
  • Logging
  • +
  • Monitoramento
  • +
+ +

Deploy local

+ +
    +
  1. Clonar o repositório: +
     git clone https://github.com/josecastillolema/fiap
    +
    +
  2. +
  3. Navegar ate o diretorio fiap/shift/multicloud/lab10-paas-eb. O diretorio contem os seguintes arquivos: +
     $ cd fiap/shift/multicloud/lab10-paas-eb-springboot
    + $ tree .
    + .
    + ├── mvnw
    + ├── mvnw.cmd
    + ├── pom.xml
    + └── src
    +   ├── main
    +   │   ├── java
    +   │   │   └── com
    +   │   │       └── amock
    +   │   │           └── springboot
    +   │   │               └── SpringbootApplication.java
    +   │   └── resources
    +   │       ├── application.properties
    +   │       └── templates
    +   │           └── index.html
    +   └── test
    +       └── java
    +           └── com
    +               └── amock
    +                   └── springboot
    +                       └── SpringbootApplicationTests.java
    +
    +
  4. +
  5. Compilar a aplicação: +
     $ mvn package
    + [INFO] Scanning for projects...
    + [INFO] 
    + [INFO] ------------------------< com.amock:springboot >------------------------
    + [INFO] Building springboot 0.0.1-SNAPSHOT
    + [INFO] --------------------------------[ jar ]---------------------------------
    + [INFO] 
    + [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ springboot ---
    + [INFO] Using 'UTF-8' encoding to copy filtered resources.
    + [INFO] Copying 1 resource
    + [INFO] Copying 1 resource
    + [INFO] 
    + [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ springboot ---
    + [INFO] Changes detected - recompiling the module!
    + [INFO] Compiling 1 source file to /Users/jlema/fiap/scj/java/springboot/target/classes
    + [INFO] 
    + [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ springboot ---
    + [INFO] Using 'UTF-8' encoding to copy filtered resources.
    + [INFO] skip non existing resourceDirectory /Users/jlema/fiap/scj/java/springboot/src/test/resources
    + [INFO] 
    + [INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ springboot ---
    + [INFO] Changes detected - recompiling the module!
    + [INFO] Compiling 1 source file to /Users/jlema/fiap/scj/java/springboot/target/test-classes
    + [INFO] 
    + [INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ springboot ---
    + [INFO] 
    + [INFO] -------------------------------------------------------
    + [INFO]  T E S T S
    + [INFO] -------------------------------------------------------
    + [INFO] Running com.amock.springboot.SpringbootApplicationTests
    + 16:15:52.395 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.402 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
    + 16:15:52.412 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
    + 16:15:52.437 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.amock.springboot.SpringbootApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
    + 16:15:52.469 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.amock.springboot.SpringbootApplicationTests], using SpringBootContextLoader
    + 16:15:52.474 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.amock.springboot.SpringbootApplicationTests]: class path resource [com/amock/springboot/SpringbootApplicationTests-context.xml] does not exist
    + 16:15:52.474 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.amock.springboot.SpringbootApplicationTests]: class path resource [com/amock/springboot/SpringbootApplicationTestsContext.groovy] does not exist
    + 16:15:52.475 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.amock.springboot.SpringbootApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
    + 16:15:52.477 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.amock.springboot.SpringbootApplicationTests]: SpringbootApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
    + 16:15:52.551 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.669 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [/Users/jlema/fiap/scj/java/springboot/target/classes/com/amock/springboot/SpringbootApplication.class]
    + 16:15:52.670 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.amock.springboot.SpringbootApplication for test class com.amock.springboot.SpringbootApplicationTests
    + 16:15:52.931 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.amock.springboot.SpringbootApplicationTests]: using defaults.
    + 16:15:52.931 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
    + 16:15:52.952 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
    + 16:15:52.952 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
    + 16:15:52.953 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@41e36e46, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@15c43bd9, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@3d74bf60, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@4f209819, org.springframework.test.context.support.DirtiesContextTestExecutionListener@15eb5ee5, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@2145b572, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@39529185, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@72f926e6, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@3daa422a, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@31c88ec8]
    + 16:15:52.955 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.956 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.958 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.958 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.960 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.960 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.967 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@6eda5c9 testClass = SpringbootApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@55b7a4e0 testClass = SpringbootApplicationTests, locations = '{}', classes = '{class com.amock.springboot.SpringbootApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@76707e36, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@694e1548, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@15d0c81b, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@7a1ebcd8], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null].
    + 16:15:52.969 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:52.969 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.amock.springboot.SpringbootApplicationTests]
    + 16:15:53.019 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}
    +
    +   .   ____          _            __ _ _
    +  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    + ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    +  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    +   '  |____| .__|_| |_|_| |_\__, | / / / /
    +  =========|_|==============|___/=/_/_/_/
    +  :: Spring Boot ::        (v2.1.4.RELEASE)
    +
    + 2020-09-08 16:15:53.420  INFO 67459 --- [           main] c.a.s.SpringbootApplicationTests         : Starting SpringbootApplicationTests on jlema-mac with PID 67459 (started by jlema in /Users/jlema/fiap/scj/java/springboot)
    + 2020-09-08 16:15:53.422  INFO 67459 --- [           main] c.a.s.SpringbootApplicationTests         : No active profile set, falling back to default profiles: default
    + 2020-09-08 16:15:55.512  INFO 67459 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    + 2020-09-08 16:15:55.886  INFO 67459 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
    + 2020-09-08 16:15:56.088  INFO 67459 --- [           main] c.a.s.SpringbootApplicationTests         : Started SpringbootApplicationTests in 3.043 seconds (JVM running for 4.122)
    + [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.186 s - in com.amock.springboot.SpringbootApplicationTests
    + 2020-09-08 16:15:56.460  INFO 67459 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
    + [INFO] 
    + [INFO] Results:
    + [INFO] 
    + [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    + [INFO] 
    + [INFO] 
    + [INFO] --- maven-jar-plugin:3.1.1:jar (default-jar) @ springboot ---
    + [INFO] Building jar: /Users/jlema/fiap/scj/java/springboot/target/springboot-0.0.1-SNAPSHOT.jar
    + [INFO] 
    + [INFO] --- spring-boot-maven-plugin:2.1.4.RELEASE:repackage (repackage) @ springboot ---
    + [INFO] Replacing main artifact with repackaged archive
    + [INFO] ------------------------------------------------------------------------
    + [INFO] BUILD SUCCESS
    + [INFO] ------------------------------------------------------------------------
    + [INFO] Total time:  9.471 s
    + [INFO] Finished at: 2020-09-08T16:15:58-03:00
    + [INFO] ------------------------------------------------------------------------
    +
    +
  6. +
  7. Ejecutar a aplicação localmente: +
     $ mvn spring-boot:run
    + [INFO] Scanning for projects...
    + [INFO] 
    + [INFO] ------------------------< com.amock:springboot >------------------------
    + [INFO] Building springboot 0.0.1-SNAPSHOT
    + [INFO] --------------------------------[ jar ]---------------------------------
    + [INFO] 
    + [INFO] >>> spring-boot-maven-plugin:2.1.4.RELEASE:run (default-cli) > test-compile @ springboot >>>
    + [INFO] 
    + [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ springboot ---
    + [INFO] Using 'UTF-8' encoding to copy filtered resources.
    + [INFO] Copying 1 resource
    + [INFO] Copying 1 resource
    + [INFO] 
    + [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ springboot ---
    + [INFO] Nothing to compile - all classes are up to date
    + [INFO] 
    + [INFO] --- maven-resources-plugin:3.1.0:testResources (default-testResources) @ springboot ---
    + [INFO] Using 'UTF-8' encoding to copy filtered resources.
    + [INFO] skip non existing resourceDirectory /Users/jlema/fiap/scj/java/springboot/src/test/resources
    + [INFO] 
    + [INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ springboot ---
    + [INFO] Nothing to compile - all classes are up to date
    + [INFO] 
    + [INFO] <<< spring-boot-maven-plugin:2.1.4.RELEASE:run (default-cli) < test-compile @ springboot <<<
    + [INFO] 
    + [INFO] 
    + [INFO] --- spring-boot-maven-plugin:2.1.4.RELEASE:run (default-cli) @ springboot ---
    +
    +   .   ____          _            __ _ _
    +  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    + ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    +  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    +   '  |____| .__|_| |_|_| |_\__, | / / / /
    +  =========|_|==============|___/=/_/_/_/
    +  :: Spring Boot ::        (v2.1.4.RELEASE)
    +
    + 2020-09-08 16:16:13.871  INFO 67475 --- [           main] c.a.springboot.SpringbootApplication     : Starting SpringbootApplication on jlema-mac with PID 67475 (/Users/jlema/fiap/scj/java/springboot/target/classes started by jlema in /Users/jlema/fiap/scj/java/springboot)
    + 2020-09-08 16:16:13.874  INFO 67475 --- [           main] c.a.springboot.SpringbootApplication     : No active profile set, falling back to default profiles: default
    + 2020-09-08 16:16:15.179  INFO 67475 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9093 (http)
    + 2020-09-08 16:16:15.213  INFO 67475 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    + 2020-09-08 16:16:15.214  INFO 67475 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.17]
    + 2020-09-08 16:16:15.357  INFO 67475 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    + 2020-09-08 16:16:15.358  INFO 67475 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1430 ms
    + 2020-09-08 16:16:15.633  INFO 67475 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
    + 2020-09-08 16:16:15.842  INFO 67475 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page template: index
    + 2020-09-08 16:16:15.972  INFO 67475 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9093 (http) with context path ''
    + 2020-09-08 16:16:15.976  INFO 67475 --- [           main] c.a.springboot.SpringbootApplication     : Started SpringbootApplication in 2.476 seconds (JVM running for 5.511)
    + 2020-09-08 16:16:33.667  INFO 67475 --- [nio-9093-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
    + 2020-09-08 16:16:33.667  INFO 67475 --- [nio-9093-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
    + 2020-09-08 16:16:33.673  INFO 67475 --- [nio-9093-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 6 ms
    +
    +
  8. +
  9. Testar o acesso local: +
  10. +
+ +

Deploy na AWS

+ +
    +
  1. +

    Acessar o serviço Elastic Beanstalk: +

    +
  2. +
  3. +

    Criar um novo environment: +

    +
  4. +
  5. +

    A aplicação é um serviço web: +

    +
  6. +
  7. +

    Configurar o nome da apliação: +

    +
  8. +
  9. +

    Escolher o entorno de execução: +

    +
  10. +
  11. +

    Fazer o upload da aplicação. O arquivo .jar se encontra na pasta: fiap/shift/multicloud/lab10-paas-eb/target/springboot-0.0.1-SNAPSHOT.jar +

    +
  12. +
  13. +

    Após uns minutos, conferir o estado da aplicação: +

    +
  14. +
  15. +

    Accessar a URL da aplicação: +

    +
  16. +
+ +

Logging e monitoramento

+ +
    +
  1. +

    Se for necessário fazer troubleshooting da aplicação, fazer download dos logs.

    + +

    Os logs se encontram nos seguintes arquivos:

    +
      +
    • var/log/web.stdout.log: logs do Spring Boot
    • +
    • var/log/nginx/access.log: acessos à aplicação
    • +
    • var/log/nginx/error.log: log de erros +
    • +
    +
  2. +
  3. +

    Para monitorar a aplicação: + +

    +
  4. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/aws9-cp/index.html b/docs/aws9-cp/index.html new file mode 100644 index 0000000000..719e8a624e --- /dev/null +++ b/docs/aws9-cp/index.html @@ -0,0 +1,835 @@ + + + + + + +AWS series IX: CodePipeline - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Amazon Web Services.

+ + + + + +

Lab 7 - AWS CP

+ +

Em este lab sobre Code Pipeline aprenderemos alguns conceitos importantes da criação de pipelines:

+
    +
  • Criação do pipeline
  • +
  • Automação de deploy no Beanstalk
  • +
+ +

Pre-reqs

+ + + +

Criando o pipeline

+ +
    +
  1. +

    Acessar o serviço Code Pipeline: +

    +
  2. +
  3. +

    Criar um novo pipeline: +

    +
  4. +
  5. +

    Em uma conta normal da AWS, nomear o pipeline: +

    + +

    Em uma conta da AWS Academy, selecionar LabRole como Role ARN: +

    +
  6. +
  7. +

    Escolher GitHub como source provider e o repositório criado nos pre-reqs: +

    +
  8. +
  9. +

    Já que usamos uma linguagem interpretada (Python), pulamos a fase de compilação: +

    +
  10. +
  11. +

    Selecionar AWS Elastic Beanstalk como Deploy Provider, apontando para a aplicação dos pre-reqs: +

    +
  12. +
  13. +

    Revisar as configuraçoes e confirmar a criação do pipeline: + +

    +
  14. +
+ +

Validando o pipeline

+ +
    +
  1. Acompanhar o pipeline pelas diversas fases: +
      +
    • Recuperação do código do repositório
    • +
    • Deploy no Beanstalk +
    • +
    +
  2. +
  3. +

    No Beanstalk, confirmar que foi publicada uma nova versão pelo Code Pipeline; +

    +
  4. +
  5. +

    Confirmar que a aplicação está no ar: +

    +
  6. +
  7. +

    Publicar uma nova versão da aplicação no repositório do GitHub: + +

    +
  8. +
  9. +

    Acompanhar o deploy da nova versão no Code Pipeline: +

    +
  10. +
  11. +

    No Beanstalk, confirmar que foi publicada uma nova versão pelo Code Pipeline; +

    +
  12. +
  13. +

    Confirmar que foi publicada a nova versão: +

    +
  14. +
  15. (Desafio) Sustituir o GitHub pelo CodeCommit :)
  16. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure-fundamentals/index.html b/docs/azure-fundamentals/index.html new file mode 100644 index 0000000000..66c79f827d --- /dev/null +++ b/docs/azure-fundamentals/index.html @@ -0,0 +1,831 @@ + + + + + + +Microsoft Azure Virtual Training Days - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

By participating in any of the following Microsoft Virtual Training Days:

+
    +
  • Microsoft Azure Virtual Training Day: Fundamentals
  • +
  • Microsoft Azure Virtual Training Day: Data Fundamentals
  • +
  • Microsoft Azure Virtual Training Day: AI Fundamentals
  • +
+ +

You’ll be eligible to take the following certifications exam at no cost:

+ + +

+ +

Azure Fundamentals

+ +

In this introductory course you will learn about cloud-computing concepts, models, and services, covering topics such as public, private, and hybrid cloud as well as infrastructure as a service, platform as a service, and software as a service.

+ +

Course Objectives

+
    +
  • Get started with Azure
  • +
  • Integrate Azure with your existing networks
  • +
  • Better understand key cloud concepts and core services, including pricing, support, and cloud security
  • +
+ +

Content

+
    +
  • Introduction
  • +
  • Azure Cloud Concepts
  • +
  • Core Azure Services
  • +
  • Azure Solutions and Management Tools
  • +
  • Azure Security and Network Security
  • +
  • Identity, governance, privacy and compliance
  • +
  • Azure Pricing and Lifestyle
  • +
  • Closing Q&A
  • +
+ +

Data Fundamentals

+ +

Learn the fundamentals of core database concepts in a cloud environment. Join us at Microsoft Azure Virtual Training Day: Data Fundamentals to build your foundational knowledge of cloud data services. Explore relational and non-relational data offerings as well as big data and modern data warehouse analytics solutions in Azure.

+ +

Course Objectives

+
    +
  • Learn the roles, tasks, and responsibilities involved in managing data in a cloud environment.
  • +
  • Gain basic skills for working with relational and non-relational cloud data services in Azure, including provisioning and deploying relational and non-relational databases.
  • +
  • Explore processing options for building data analytics solutions, including Azure Synapse Analytics, Azure Databricks, and Azure HDInsight.
  • +
+ +

Content

+
    +
  • Introduction
  • +
  • Explore Core Data Concepts
  • +
  • Explore Relational Data in Azure
  • +
  • Explore Non-relational Data in Azure
  • +
  • Explore modern data warehouse analytics in Azure
  • +
  • Closing Q&A
  • +
+ +

AI Fundamentals

+ +

Discover the solutions it’s possible to create with AI and the Azure services that can help you build those solutions. Join the free Microsoft Azure Virtual Training Day: AI Fundamentals to explore fundamental AI concepts and learn how to get started with AI on Azure.

+ +

Course Objectives

+
    +
  • Get an overview of basic AI concepts and applications.
  • +
  • Create no-code predictive models with Azure Machine Learning.
  • +
  • Learn more about conversational AI, natural language processing, and computer vision in Microsoft Azure.
  • +
+ +

Content

+
    +
  • Introduction
  • +
  • Introduction to AI
  • +
  • Machine Learning
  • +
  • Computer Vision
  • +
  • Natural Language Processing
  • +
  • Conversational AI
  • +
  • Closing Q&A
  • +
+ +

Free certification

+ +

After completing this free trainings you’ll be eligible to take the certifications exam at no cost.

+ +

+ +
+ + +

+ +
+ + +

+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure1-vm/index.html b/docs/azure1-vm/index.html new file mode 100644 index 0000000000..869da920bc --- /dev/null +++ b/docs/azure1-vm/index.html @@ -0,0 +1,1000 @@ + + + + + + +Azure series I: Virtual machines - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Microsoft Azure.

+ + + + + +

Lab 1 - Virtual Machines

+ +

Criando a instancia

+

Usaremos a imagem oficial Ubuntu Server para aprender alguns conceitos importantes de máquinas virtuais:

+ + +
    +
  1. +

    Acessar o serviço Virtual machine: +

    +
  2. +
  3. +

    Sempre que for criar novos recursos, selecione como subscription Azure for students e como resource group 19net. Se o resource group ainda não existe, como é o caso, criar ele: +

    +
  4. +
  5. +

    Configurar um nome para a instãncia, escolher a imagem Ubuntu Server e o flavor Standard_B1: +

    + +

    +
  6. +
  7. +

    Usaremos chave ssh como método de acesso à VM: +

    +
  8. +
  9. +

    A porta 22 no security group precisa estar aberta para poder acessar a instância via SSH: +

    +
  10. +
  11. +

    Configurar Standard HDD como tipo de disco: +

    +
  12. +
  13. +

    Usaremos um script de cloud-init para customizar a instância: +

    +
  14. +
  15. +

    Confirmar criaçao da instância uma vez validada: +

    +
  16. +
  17. +

    Fazer download da chave para poder acessar a instância via SSH de forma segura: +

    +
  18. +
  19. +

    Aguardar a criacao da instância: +

    +
  20. +
+ +

Accessando à instancia

+ +
    +
  1. +

    Note-se o IP público da instância: +

    +
  2. +
  3. +

    [Linux/MAC] Seguiremos as próprias indicações do Azure: +

    + +

    [Windows] Usaremos o PuTTY, seguindo as seguintes instruções. Como alternativa ao PuTTy, o MobaXterm é uma excelente opçao.

    +
  4. +
  5. [Linux/MAC] Em um terminal local: +
    $ chmod 400 aula1_key.pem 
    +$ ssh -i aula1_key.pem  azureuser@168.61.32.71
    +The authenticity of host '168.61.32.71 (168.61.32.71)' can't be established.
    +ECDSA key fingerprint is SHA256:KASB7hYoy0WvdiE+zDEBlyFQ7eoO3bwco32davnUxCA.
    +Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    +Warning: Permanently added '168.61.32.71' (ECDSA) to the list of known hosts.
    +Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1039-azure x86_64)
    +
    + * Documentation:  https://help.ubuntu.com
    + * Management:     https://landscape.canonical.com
    + * Support:        https://ubuntu.com/advantage
    +
    +  System information as of Thu Feb 18 13:57:15 UTC 2021
    +
    +  System load:  0.0               Processes:           107
    +  Usage of /:   4.5% of 28.90GB   Users logged in:     0
    +  Memory usage: 44%               IP address for eth0: 10.0.0.4
    +  Swap usage:   0%
    +
    +0 packages can be updated.
    +0 of these updates are security updates.
    +
    +The programs included with the Ubuntu system are free software;
    +the exact distribution terms for each program are described in the
    +individual files in /usr/share/doc/*/copyright.
    +
    +Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    +applicable law.
    +
    +To run a command as administrator (user "root"), use "sudo <command>".
    +See "man sudo_root" for details.
    +
    +azureuser@aula1:~$ 
    +
    + +

    [Windows] Seguir as instruções do PuTTY: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ssh-from-windows

    +
  6. +
  7. Uma vez logado na maquina virtual, confirmar que o script de cloud-init rodou com sucesso: +
    $ ls /tmp/
    +CloudInitFunciona
    +
    +
  8. +
+ +

Instalando um servidor web

+ +
    +
  1. Instalar o pacote apache2: +
    azureuser@aula1:~$ sudo apt install apache2
    +Reading package lists... Done
    +Building dependency tree       
    +Reading state information... Done
    +The following package was automatically installed and is no longer required:
    +  linux-headers-4.15.0-135
    +Use 'sudo apt autoremove' to remove it.
    +The following additional packages will be installed:
    +  apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
    +  liblua5.2-0 ssl-cert
    +Suggested packages:
    +  www-browser apache2-doc apache2-suexec-pristine | apache2-suexec-custom openssl-blacklist
    +The following NEW packages will be installed:
    +  apache2 apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3
    +  libaprutil1-ldap liblua5.2-0 ssl-cert
    +0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded.
    +Need to get 1729 kB of archives.
    +After this operation, 6985 kB of additional disk space will be used.
    +Do you want to continue? [Y/n] y
    +Get:1 http://azure.archive.ubuntu.com/ubuntu bionic/main amd64 libapr1 amd64 1.6.3-2 [90.9 kB]
    +Get:2 http://azure.archive.ubuntu.com/ubuntu bionic/main amd64 libaprutil1 amd64 1.6.1-2 [84.4 kB]
    +Get:3 http://azure.archive.ubuntu.com/ubuntu bionic/main amd64 libaprutil1-dbd-sqlite3 amd64 1.6.1-2 [10.6 kB]
    +Get:4 http://azure.archive.ubuntu.com/ubuntu bionic/main amd64 libaprutil1-ldap amd64 1.6.1-2 [8764 B]
    +Get:5 http://azure.archive.ubuntu.com/ubuntu bionic/main amd64 liblua5.2-0 amd64 5.2.4-1.1build1 [108 kB]
    +Get:6 http://azure.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apache2-bin amd64 2.4.29-1ubuntu4.14 [1070 kB]
    +Get:7 http://azure.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apache2-utils amd64 2.4.29-1ubuntu4.14 [83.9 kB]
    +Get:8 http://azure.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apache2-data all 2.4.29-1ubuntu4.14 [160 kB]
    +Get:9 http://azure.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apache2 amd64 2.4.29-1ubuntu4.14 [95.1 kB]
    +Get:10 http://azure.archive.ubuntu.com/ubuntu bionic/main amd64 ssl-cert all 1.0.39 [17.0 kB]
    +Fetched 1729 kB in 0s (28.4 MB/s)
    +Preconfiguring packages ...
    +Selecting previously unselected package libapr1:amd64.
    +(Reading database ... 76706 files and directories currently installed.)
    +Preparing to unpack .../0-libapr1_1.6.3-2_amd64.deb ...
    +Unpacking libapr1:amd64 (1.6.3-2) ...
    +Selecting previously unselected package libaprutil1:amd64.
    +Preparing to unpack .../1-libaprutil1_1.6.1-2_amd64.deb ...
    +Unpacking libaprutil1:amd64 (1.6.1-2) ...
    +Selecting previously unselected package libaprutil1-dbd-sqlite3:amd64.
    +Preparing to unpack .../2-libaprutil1-dbd-sqlite3_1.6.1-2_amd64.deb ...
    +Unpacking libaprutil1-dbd-sqlite3:amd64 (1.6.1-2) ...
    +Selecting previously unselected package libaprutil1-ldap:amd64.
    +Preparing to unpack .../3-libaprutil1-ldap_1.6.1-2_amd64.deb ...
    +Unpacking libaprutil1-ldap:amd64 (1.6.1-2) ...
    +Selecting previously unselected package liblua5.2-0:amd64.
    +Preparing to unpack .../4-liblua5.2-0_5.2.4-1.1build1_amd64.deb ...
    +Unpacking liblua5.2-0:amd64 (5.2.4-1.1build1) ...
    +Selecting previously unselected package apache2-bin.
    +Preparing to unpack .../5-apache2-bin_2.4.29-1ubuntu4.14_amd64.deb ...
    +Unpacking apache2-bin (2.4.29-1ubuntu4.14) ...
    +Selecting previously unselected package apache2-utils.
    +Preparing to unpack .../6-apache2-utils_2.4.29-1ubuntu4.14_amd64.deb ...
    +Unpacking apache2-utils (2.4.29-1ubuntu4.14) ...
    +Selecting previously unselected package apache2-data.
    +Preparing to unpack .../7-apache2-data_2.4.29-1ubuntu4.14_all.deb ...
    +Unpacking apache2-data (2.4.29-1ubuntu4.14) ...
    +Selecting previously unselected package apache2.
    +Preparing to unpack .../8-apache2_2.4.29-1ubuntu4.14_amd64.deb ...
    +Unpacking apache2 (2.4.29-1ubuntu4.14) ...
    +Selecting previously unselected package ssl-cert.
    +Preparing to unpack .../9-ssl-cert_1.0.39_all.deb ...
    +Unpacking ssl-cert (1.0.39) ...
    +Setting up libapr1:amd64 (1.6.3-2) ...
    +Setting up apache2-data (2.4.29-1ubuntu4.14) ...
    +Setting up ssl-cert (1.0.39) ...
    +Setting up libaprutil1:amd64 (1.6.1-2) ...
    +Setting up liblua5.2-0:amd64 (5.2.4-1.1build1) ...
    +Setting up libaprutil1-ldap:amd64 (1.6.1-2) ...
    +Setting up libaprutil1-dbd-sqlite3:amd64 (1.6.1-2) ...
    +Setting up apache2-utils (2.4.29-1ubuntu4.14) ...
    +Setting up apache2-bin (2.4.29-1ubuntu4.14) ...
    +Setting up apache2 (2.4.29-1ubuntu4.14) ...
    +Enabling module mpm_event.
    +Enabling module authz_core.
    +Enabling module authz_host.
    +Enabling module authn_core.
    +Enabling module auth_basic.
    +Enabling module access_compat.
    +Enabling module authn_file.
    +Enabling module authz_user.
    +Enabling module alias.
    +Enabling module dir.
    +Enabling module autoindex.
    +Enabling module env.
    +Enabling module mime.
    +Enabling module negotiation.
    +Enabling module setenvif.
    +Enabling module filter.
    +Enabling module deflate.
    +Enabling module status.
    +Enabling module reqtimeout.
    +Enabling conf charset.
    +Enabling conf localized-error-pages.
    +Enabling conf other-vhosts-access-log.
    +Enabling conf security.
    +Enabling conf serve-cgi-bin.
    +Enabling site 000-default.
    +Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.
    +Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /lib/systemd/system/apache-htcacheclean.service.
    +Processing triggers for libc-bin (2.27-3ubuntu1.4) ...
    +Processing triggers for systemd (237-3ubuntu10.44) ...
    +Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
    +Processing triggers for ufw (0.36-0ubuntu0.18.04.1) ...
    +Processing triggers for ureadahead (0.100.0-21) ...
    +
    +
  2. +
  3. Criar um site de teste, no arquivo /var/www/html/index.html (como usuário admin): +
    <h1>
    +   FIAP!!!
    +</h1>
    +
    +
  4. +
  5. Testar localmente o servidor web: +
    azureuser@aula1:~$ curl localhost
    +<h1>
    +   FIAP!!!
    +</h1>
    +
    +
  6. +
  7. +

    Obter o IP público da VM: +

    +
  8. +
  9. +

    Testar accesso pelo IP público: +

    +
  10. +
  11. Como era esperado, o acesso web não funcionou pois a porta HTTP (TCP/80) deve ser liberada nos security groups. Incluir uma liberação para esta porta no security group associado à instância: +
  12. +
+ +

+ +
    +
  1. +

    Validar a criação da regra: +

    +
  2. +
  3. +

    Testar novamente o acesso pelo IP público: +

    +
  4. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure2-container/index.html b/docs/azure2-container/index.html new file mode 100644 index 0000000000..78d6db51ca --- /dev/null +++ b/docs/azure2-container/index.html @@ -0,0 +1,787 @@ + + + + + + +Azure series II: Containers - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Microsoft Azure.

+ + + + + +

Lab 2 - Containers

+ +

Criando a instância

+

Usaremos a imagem josecastillolema/api hospedada no Docker Hub para aprender alguns conceitos importantes dos Azure Containers:

+
    +
  • Deploy de containers no Azure
  • +
  • Mapeamento de portas
  • +
  • Memory limits
  • +
+ +
    +
  1. +

    Acessar o serviço Container Instances: +

    +
  2. +
  3. Parametrização da instância: +
      +
    • Imagem: josecastillolema/api hospedada no Docker Hub
    • +
    • Tipo de imagem: pública
    • +
    • Tipo de sistema operacional: Linux +
    • +
    +
  4. +
  5. +

    Na aba de Networking, liberar a porta 5000/TCP: +

    +
  6. +
  7. +

    Revisar e confirmar a criação do container: +

    +
  8. +
  9. Aguardar a criacao da instância: +
  10. +
+ +

Acessando a instância

+ +
    +
  1. +

    Conferir o IP público para acessar o container: +

    +
  2. +
  3. +

    Acessar o container pelo IP público na porta 5000: +

    +
  4. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure3-disk/index.html b/docs/azure3-disk/index.html new file mode 100644 index 0000000000..de98600ccf --- /dev/null +++ b/docs/azure3-disk/index.html @@ -0,0 +1,941 @@ + + + + + + +Azure series III: Disks - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Microsoft Azure.

+ + + + + +

Lab 2 - Azure Disks

+ +

Em este lab sobre disks aprenderemos alguns conceitos importantes do armazenamento em bloco:

+
    +
  • Criação de volumes
  • +
  • Anexar volumes a instâncias
  • +
  • Configurar volumes dentro das instâncias +
      +
    • Formatação
    • +
    • Criação do sistema de arquivos
    • +
    • Montar o volume
    • +
    +
  • +
+ +

Pre-reqs

+ +
    +
  • Na maquina virtual do lab 01 - Virtual Machine, conferir os volumes: +
      aula1:~$ lsblk
    +  NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    +  sda       8:0    0   30G  0 disk 
    +  ├─sda1    8:1    0 29.9G  0 part /
    +  ├─sda14   8:14   0    4M  0 part 
    +  └─sda15   8:15   0  106M  0 part /boot/efi
    +  sdb       8:16   0    4G  0 disk 
    +  └─sdb1    8:17   0    4G  0 part /mnt
    +  sr0      11:0    1  628K  0 rom
    +
    +

    Veja que só existem dois volumes, sda (do sistema operacional) e sdb, com uns tamanhos de 30 GB e 4 GB. Estas informações podem mudar, o importante e garantir que após a criação de um novo volume e de anexa-lo a instância, novos dispositivos serão listados.

    +
  • +
+ +

Criando o volume

+ +
    +
  1. Na aba Disks da descrição da instância, criar um novo volume vazio de tipo HDD com tamanho de 50 GB e nome dados: +
  2. +
+ +

Configurando o volume dentro da instancia

+ +
    +
  1. Na maquina virtual, conferir o novo dispositivo, em este caso sdc, com tamanho 50 GB (o nome pode mudar). Observe-se que ainda não possue nenhuma partição: +
     aula1:~$ lsblk
    + NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    + sda       8:0    0   30G  0 disk 
    + ├─sda1    8:1    0 29.9G  0 part /
    + ├─sda14   8:14   0    4M  0 part 
    + └─sda15   8:15   0  106M  0 part /boot/efi
    + sdb       8:16   0    4G  0 disk 
    + └─sdb1    8:17   0    4G  0 part /mnt
    + sdc       8:32   0   50G  0 disk 
    + sr0      11:0    1  628K  0 rom 
    +
    +
  2. +
  3. Usaremos o fdisk para criar uma partição no novo disco: +
    aula1$ sudo fdisk /dev/sdc
    +
    +Welcome to fdisk (util-linux 2.30.2).
    +Changes will remain in memory only, until you decide to write them.
    +Be careful before using the write command.
    +
    +Device does not contain a recognized partition table.
    +Created a new DOS disklabel with disk identifier 0x8e3e850d.
    +
    +Command (m for help): n
    +Partition type
    +   p   primary (0 primary, 0 extended, 4 free)
    +   e   extended (container for logical partitions)
    +Select (default p): p
    +Partition number (1-4, default 1): 
    +First sector (2048-104857599, default 2048): 
    +Last sector, +sectors or +size{K,M,G,T,P} (2048-104857599, default 104857599): 
    +
    +Created a new partition 1 of type 'Linux' and of size 50 GiB.
    +
    +Command (m for help): w
    +The partition table has been altered.
    +Calling ioctl() to re-read partition table.
    +Syncing disks.
    +
    +
  4. +
  5. Conferir a nova partição (em este caso, sdc1): +
    aula1:~$ lsblk
    +NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    +sda       8:0    0   30G  0 disk 
    +├─sda1    8:1    0 29.9G  0 part /
    +├─sda14   8:14   0    4M  0 part 
    +└─sda15   8:15   0  106M  0 part /boot/efi
    +sdb       8:16   0    4G  0 disk 
    +└─sdb1    8:17   0    4G  0 part /mnt
    +sdc       8:32   0   50G  0 disk 
    +└─sdc1    8:33   0   50G  0 part 
    +sr0      11:0    1  628K  0 rom
    +
    +
  6. +
  7. Criar o sistema de arquivos: +
     aula1$ sudo mkfs /dev/sdc1
    + mke2fs 1.44.1 (24-Mar-2018)
    + Discarding device blocks: done                            
    + Creating filesystem with 13106944 4k blocks and 3276800 inodes
    + Filesystem UUID: 4d4abdc9-0b70-4b2e-83aa-a2e280c0540a
    + Superblock backups stored on blocks: 
    +   32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    +   4096000, 7962624, 11239424
    +
    + Allocating group tables: done                            
    + Writing inode tables: done                            
    + Writing superblocks and filesystem accounting information: done   
    +
    +
  8. +
  9. Criar a pasta /mnt/volumeExterno para montar o volume: +
     aula1$ sudo mkdir /mnt/volumeExterno
    +
    +
  10. +
  11. Montar o volume na pasta recem criada: +
     aula1$ sudo mount /dev/sdc1 /mnt/volumeExterno/
    +
    +
  12. +
  13. Listar os arquivos do novo volume (é esperado ter uma pasta chamada lost-found, mesmo que o volume esteja vazio): +
     aula1$ cd /mnt/volumeExterno/
    + aula1$ ls
    + lost+found
    +
    +
  14. +
  15. Criar um arquivo qualquer (como usuário admin): +
     aula1$ cd /mnt/volumeExterno
    + aula1$ cat meuArquivo 
    + sic mundus creatus est
    +
    +
  16. +
  17. Se for necessario usar este mesmo volume com o arquivo recem criado em outra instancia, quais dos seguintes pasos seria necessario refazer? +
      +
    • Formatação
    • +
    • Criação do sistema de arquivos
    • +
    • Montar o volume
    • +
    +
  18. +
+ +

Desanexando o volume

+ +
    +
  1. Na aba Disks da descrição da instância, remover o volume de dados:
  2. +
+ +

+ +

+ +

Anexando o volume a uma 2a instância

+ +
    +
  1. +

    Criar uma nova máquina virtual com nome aula2 seguindo os passos do lab 01 - Virtual Machine.

    +
  2. +
  3. Uma vez criada, conferir os volumes: +
    aula2:~$ lsblk 
    +NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    +sda       8:0    0   30G  0 disk 
    +├─sda1    8:1    0 29.9G  0 part /
    +├─sda14   8:14   0    4M  0 part 
    +└─sda15   8:15   0  106M  0 part /boot/efi
    +sdb       8:16   0    4G  0 disk 
    +└─sdb1    8:17   0    4G  0 part /mnt
    +sr0      11:0    1  628K  0 rom
    +
    +
  4. +
  5. +

    Na aba Disks da descrição da nova instância (aula2), anexar o volume dados previamente criado: +

    +
  6. +
  7. Na nova maquina virtual, conferir o novo dispositivo, em este caso sdc, com tamanho 50 GB (o nome pode mudar). Observe-se que já possue uma partição (sdc1): +
    aula2:~$ lsblk 
    +NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    +sda       8:0    0   30G  0 disk 
    +├─sda1    8:1    0 29.9G  0 part /
    +├─sda14   8:14   0    4M  0 part 
    +└─sda15   8:15   0  106M  0 part /boot/efi
    +sdb       8:16   0    4G  0 disk 
    +└─sdb1    8:17   0    4G  0 part /mnt
    +sdc       8:32   0   50G  0 disk 
    +└─sdc1    8:33   0   50G  0 part 
    +sr0      11:0    1  628K  0 rom 
    +
    +
  8. +
  9. Criar a pasta /mnt/volumeExterno para montar o volume: +
    aula2$ sudo mkdir /mnt/volumeExterno
    +
    +
  10. +
  11. Montar o volume na pasta recem criada: +
    aula2$ sudo mount /dev/sdc1 /mnt/volumeExterno/
    +
    +
  12. +
  13. Confirmar que os dados criados na VM aula1 foram persistidos: +
    aula2:~$ cat /mnt/volumeExterno/meuArquivo 
    +sic mundus creatus est
    +
    +
  14. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure4-blob/index.html b/docs/azure4-blob/index.html new file mode 100644 index 0000000000..de13534f2e --- /dev/null +++ b/docs/azure4-blob/index.html @@ -0,0 +1,798 @@ + + + + + + +Azure series IV: Blob storage - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Microsoft Azure.

+ + + + + +

Lab 4 - Blob storage

+ +

Em este lab sobre Azure Blob Storage aprenderemos alguns conceitos importantes do armazenamento de objetos:

+
    +
  • Criação de containers
  • +
  • Criação de objetos (blobs)
  • +
  • Controle de permissões de acesso
  • +
  • Hospedagem de sites estáticos
  • +
+ +

Criação do container

+ +
    +
  1. +

    Accessar o serviço Storage account: +

    +
  2. +
  3. +

    Criar um novo storage account de tipo blob storage e com redundância local (o nome deve ser único na Azure): +

    +
  4. +
  5. +

    Habilitar acesso público: +

    +
  6. +
  7. +

    Revisar e confirmar a criaçao da conta de armazenamento.

    +
  8. +
  9. +

    Aguardar a criação da conta: +

    +
  10. +
  11. +

    Na descriçao da conta, acessar a aba de Containers: +

    +
  12. +
  13. +

    Criar um novo container, de nome imgs e com acesso público: +

    +
  14. +
  15. +

    Dentro do container, fazer upload de uma imagem qualquer: +

    +
  16. +
+ +

Acessando o objeto

+ +
    +
  1. +

    Na descrição do objeto, copiar a URL: +

    +
  2. +
  3. +

    Accessar a imagem pela URL do objeto: +

    +
  4. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure5-app/index.html b/docs/azure5-app/index.html new file mode 100644 index 0000000000..f63e240ae3 --- /dev/null +++ b/docs/azure5-app/index.html @@ -0,0 +1,1050 @@ + + + + + + +Azure series V: App services - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Microsoft Azure.

+ + + + + +

Lab 5 - App Service Plans

+ +

Em este lab sobre App Service Plans aprenderemos alguns conceitos importantes da camada de plataforma da Azure:

+
    +
  • Deploy de aplicações
  • +
  • Plataformas/entornos de execução disponíveis
  • +
  • Logging
  • +
  • Monitoramento
  • +
  • Estratégias de release +
      +
    • Blue-Green
    • +
    • Canary
    • +
    +
  • +
+ +

Pre-reqs

+ +
    +
  • Uma VM com a imagem Ubuntu Linux 18.04
  • +
  • git
  • +
  • python3
  • +
  • pip3
  • +
+ +

Deploy em uma VM

+ +
    +
  1. +

    Criar uma VM com a imagem Ubuntu 18.04

    +
  2. +
  3. +

    Logar na VM

    +
  4. +
  5. Atualizar os repositorios: +
     $ sudo apt update
    +
    +
  6. +
  7. Instalar o pip3 (gestor de pacotes do python3): +
     $ sudo apt install python3-pip -y
    +
    +
  8. +
  9. Clonar o repositório: +
     git clone https://github.com/josecastillolema/fiap
    +
    +
  10. +
  11. Navegar ate o diretorio fiap/net/devops/lab05-paas-app. O diretorio contem os seguintes arquivos: +
      +
    • application.py: Um serviço web escrito em Python que usa a biblioteca Flask.
    • +
    • requirements.txt: As dependências da aplicação. Podem ser instaladas usando pip, o gestor de dependências do Python.
    • +
    +
  12. +
  13. Instalar as dependências: +
     $ sudo pip3 install -r requirements.txt
    +
    +
  14. +
  15. Executar a aplicação: +
     $ FLASK_APP=./application.py FLASK_RUN_HOST=0.0.0.0 flask run &
    +  Serving Flask app "./application.py"
    +  Environment: production
    +    WARNING: Do not use the development server in a production environment.
    +    Use a production WSGI server instead.
    +  Debug mode: off
    +  Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
    +
    +
  16. +
  17. Testar o acesso local: +
     $ curl localhost:5000
    + <h1>Hola FIAP!</h1>
    + MBA! o/
    +
    +
  18. +
  19. +

    Testar o acesso remoto pela IP pública da VM (lembrando que é necessária a liberacão da porta 5000 no security group da VM):

    + +

    +
  20. +
+ +

Criaçao do serviço na Azure

+ +
    +
  1. +

    Acessar o serviço Web Application: +

    +
  2. +
  3. Criar uma nova web application. +
      +
    • Runtime: Python 3.6
    • +
    • SKU: S1 ou algum outro SKU que tenha permissão para usar deployment slots +
    • +
    +
  4. +
  5. +

    Revisar a configuração do serviço: +

    +
  6. +
  7. +

    Aguardar a criação do serviço: +

    +
  8. +
  9. +

    Acessar a URL do serviço criado: +

    +
  10. +
  11. Foi desplegado automaticamente um site de teste: +
  12. +
+ +

Configuraçao do repositório git

+ +

Criaremos um repositório git local para automatizar o deploy da aplicação.

+ +
    +
  1. +

    No Deployment center, na aba de configuraçao criar um repositório git local: +

    +
  2. +
  3. +

    Na aba de credenciais configurar um usuário e senha para poder clonar o repositório: +

    +
  4. +
+ +

Deploy da aplicaçao

+ +

De volta na VM

+ +
    +
  1. Clonar o repositório local criado nos passos anteriores (copiar a URI do repositorio git local no passo anterior) usando as credencias recém criadas: +
     $ git clone https://fiap-app.scm.azurewebsites.net:443/fiap.git
    + Cloning into 'fiap-app'...
    + Username for 'https://fiap.scm.azurewebsites.net:443': jlema
    + Password for 'https://jlema@fiap.scm.azurewebsites.net:443': 
    + warning: You appear to have cloned an empty repository.
    +
    +
  2. +
  3. Copiar os 2 arquivos: +
    $ cp fiap/net/devops/lab05-paas-app/* fiap-app
    +    
    +$ ls fiap-app
    +application.py  requirements.txt
    +
    +
  4. +
  5. Comittar os novos arquivos no repositorio git local da app: +
    $ cd fiap-app
    +    
    +$ git status
    +On branch master
    +
    +No commits yet
    +
    +Untracked files:
    +  (use "git add <file>..." to include in what will be committed)
    +
    + application.py
    + requirements.txt
    +
    +nothing added to commit but untracked files present (use "git add" to track)
    +    
    +$ git add *
    +    
    +$ git commit -m "v1"
    +[master (root-commit) a64c6ae] v1
    + Committer: Ubuntu <jose@joselito.qzy1ejut0yhe3jyjrxopscm2pe.bx.internal.cloudapp.net>
    +Your name and email address were configured automatically based
    +on your username and hostname. Please check that they are accurate.
    +You can suppress this message by setting them explicitly. Run the
    +following command and follow the instructions in your editor to edit
    +your configuration file:
    +
    +    git config --global --edit
    +
    +After doing this, you may fix the identity used for this commit with:
    +
    +    git commit --amend --reset-author
    +
    + 2 files changed, 13 insertions(+)
    + create mode 100644 application.py
    + create mode 100644 requirements.txt
    +     
    +$ git push origin master
    +Username for 'https://fiap.scm.azurewebsites.net:443': jlema
    +Password for 'https://jlema@fiap.scm.azurewebsites.net:443': 
    +Counting objects: 4, done.
    +Compressing objects: 100% (4/4), done.
    +Writing objects: 100% (4/4), 487 bytes | 487.00 KiB/s, done.
    +Total 4 (delta 0), reused 0 (delta 0)
    +remote: Deploy Async
    +remote: Updating branch 'master'.
    +remote: Updating submodules.
    +remote: Preparing deployment for commit id 'a64c6ae136'.
    +remote: Repository path is /home/site/repository
    +remote: Running oryx build...
    +remote: Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
    +remote: You can report issues at https://github.com/Microsoft/Oryx/issues
    +remote: 
    +remote: Oryx Version: 0.2.20210120.1, Commit: 66c7820d7df527aaffabd2563a49ad57930999c9, ReleaseTagName: 20210120.1
    +remote: 
    +remote: Build Operation ID: |Me5qumZrHLs=.51783a9b_
    +remote: Repository Commit : a64c6ae136e87b9f9a83de6e1aa81a8145f997e5
    +remote: 
    +remote: Detecting platforms...
    +remote: Detected following platforms:
    +remote:   python: 3.6.12
    +remote: Warning: An outdated version of python was detected (3.6.12). Consider updating.\nVersions supported by Oryx: https://github.com/microsoft/Oryx
    +remote: 
    +remote: 
    +remote: Using intermediate directory '/tmp/8d8e34659c81cee'.
    +remote: 
    +remote: Copying files to the intermediate directory...
    +remote: Done in 0 sec(s).
    +remote: 
    +remote: Source directory     : /tmp/8d8e34659c81cee
    +remote: Destination directory: /home/site/wwwroot
    +remote: 
    +remote: Python Version: /opt/python/3.6.12/bin/python3.6
    +remote: Python Virtual Environment: antenv3.6
    +remote: Creating virtual environment...
    +remote: ......
    +remote: Activating virtual environment...
    +remote: Running pip install...
    +remote: [21:58:00+0000] Collecting click==6.7 (from -r requirements.txt (line 1))
    +remote: [21:58:01+0000]   Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
    +remote: [21:58:01+0000] Collecting Flask==1.0.2 (from -r requirements.txt (line 2))
    +remote: [21:58:01+0000]   Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
    +remote: [21:58:02+0000] Collecting itsdangerous==0.24 (from -r requirements.txt (line 3))
    +remote: [21:58:02+0000]   Downloading https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz (46kB)
    +remote: [21:58:03+0000] Collecting Jinja2>=2.10.1 (from -r requirements.txt (line 4))
    +remote: [21:58:03+0000]   Downloading https://files.pythonhosted.org/packages/7e/c2/1eece8c95ddbc9b1aeb64f5783a9e07a286de42191b7204d67b7496ddf35/Jinja2-2.11.3-py2.py3-none-any.whl (125kB)
    +remote: [21:58:03+0000] Collecting MarkupSafe==1.0 (from -r requirements.txt (line 5))
    +remote: [21:58:03+0000]   Downloading https://files.pythonhosted.org/packages/4d/de/32d741db316d8fdb7680822dd37001ef7a448255de9699ab4bfcbdf4172b/MarkupSafe-1.0.tar.gz
    +remote: [21:58:04+0000] Collecting Werkzeug>=0.15.3 (from -r requirements.txt (line 6))
    +remote: [21:58:04+0000]   Downloading https://files.pythonhosted.org/packages/cc/94/5f7079a0e00bd6863ef8f1da638721e9da21e5bacee597595b318f71d62e/Werkzeug-1.0.1-py2.py3-none-any.whl (298kB)
    +remote: [21:58:04+0000] Building wheels for collected packages: itsdangerous, MarkupSafe
    +remote: [21:58:04+0000]   Running setup.py bdist_wheel for itsdangerous: started
    +remote: [21:58:06+0000]   Running setup.py bdist_wheel for itsdangerous: finished with status 'done'
    +remote: [21:58:06+0000]   Stored in directory: /usr/local/share/pip-cache/wheels/2c/4a/61/5599631c1554768c6290b08c02c72d7317910374ca602ff1e5
    +remote: [21:58:06+0000]   Running setup.py bdist_wheel for MarkupSafe: started
    +remote: [21:58:09+0000]   Running setup.py bdist_wheel for MarkupSafe: finished with status 'done'
    +remote: [21:58:09+0000]   Stored in directory: /usr/local/share/pip-cache/wheels/33/56/20/ebe49a5c612fffe1c5a632146b16596f9e64676768661e4e46
    +remote: [21:58:09+0000] Successfully built itsdangerous MarkupSafe
    +remote: [21:58:10+0000] Installing collected packages: click, itsdangerous, MarkupSafe, Jinja2, Werkzeug, Flas
    +remote: [21:58:11+0000] Successfully installed Flask-1.0.2 Jinja2-2.11.3 MarkupSafe-1.0 Werkzeug-1.0.1 click-6.7 itsdangerous-0.24
    +remote: You are using pip version 18.1, however version 21.0.1 is available.
    +remote: You should consider upgrading via the 'pip install --upgrade pip' command.
    +remote: 
    +remote: Compressing existing 'antenv3.6' folder...
    +remote: Done in 3 sec(s).
    +remote: Preparing output...
    +remote: 
    +remote: Copying files to destination directory '/home/site/wwwroot'...
    +remote: Done in 0 sec(s).
    +remote: 
    +remote: Removing existing manifest file
    +remote: Creating a manifest file...
    +remote: Manifest file created.
    +remote: 
    +remote: Done in 26 sec(s).
    +remote: Running post deployment command(s)...
    +remote: Triggering recycle (preview mode disabled).
    +remote: Deployment successful.
    +remote: Deployment Logs : 'https://fiap.scm.azurewebsites.net/newui/jsonviewer?view_url=/api/deployments/a64c6ae136e87b9f9a83de6e1aa81a8145f997e5/log'
    +To https://fiap.scm.azurewebsites.net:443/fiap.git
    + * [new branch]      master -> master
    +
    +
  6. +
  7. Confirmar que o deploy ocorreu com sucesso: +
  8. +
+ +

Logging e monitoramento

+ +
    +
  1. +

    Na descrição da aplicaçao podemos consultar algumas métricas básicas: +

    +
  2. +
  3. +

    Para fazer troubleshooting da aplicação, se o endereço da mesma for https://fiap.azurewebsites.net/, acessar https://fiap.scm.azurewebsites.net/: +

    +
  4. +
+ +

Deployment slots

+ +

Para implementar algums estratégias de release (blue-green e canary) usaremos deployment slots:

+ +
    +
  1. +

    Criar um novo slot para o ambiente de homolgação: +

    +
  2. +
  3. +

    Confirmar a URL do slot de homologação. Se o endereço da app for https://fiap.azurewebsites.net/, o endereço do ambiente de homologação será https://fiap-homol.azurewebsites.net/ +

    +
  4. +
  5. +

    Acessar o endereço de homologação e confirmar que Azure fez deploy da aplicação de teste: +

    +
  6. +
  7. +

    Para fazer blue-green, escolher a opçao Swap (Intercambiar): +

    +
  8. +
  9. +

    Para fazer o canary release, ajustar as porcentagens conforme desejado (usar browsers diferentes para testar): +

    +
  10. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/azure6-pipeline/index.html b/docs/azure6-pipeline/index.html new file mode 100644 index 0000000000..93e39f8018 --- /dev/null +++ b/docs/azure6-pipeline/index.html @@ -0,0 +1,855 @@ + + + + + + +Azure series VI: Azure Pipeline - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Microsoft Azure.

+ + + + + +

Lab 6 - Azure Pipelines

+ +

Em este lab sobre Azure Pipelines aprenderemos alguns conceitos importantes na criação de pipelines:

+
    +
  • Criação do pipeline
  • +
  • Automação de deploy no Azure Pipelines
  • +
+ +

Pre-reqs

+ + + +

Acessando e criando a conta no Azure Pipelines

+ +
    +
  1. +

    Acessar o serviço Azure Pipelines: +

    +
  2. +
  3. +

    Logar e autorizar a conta:

    + +

    + +

    +
  4. +
+ +

Criação do pipeline

+ +
    +
  1. +

    Criar um novo projeto: +

    +
  2. +
  3. +

    Escolher GitHub como repositório de código: +

    +
  4. +
  5. +

    Autorizar o acesso do Azure Pipelines ao GitHub: +

    +
  6. +
  7. +

    Selecionar o repositório dos pre-reqs (em este caso azure-devops): +

    +
  8. +
  9. +

    Autorizar o acesso do Azure Pipelines ao repositório selecionado: +

    +
  10. +
  11. +

    Configurar um novo pipeline: +

    +
  12. +
  13. +

    Selecionar a subscription adecuada: +

    +
  14. +
  15. +

    Selecionar o application service dos pre-reqs: +

    +
  16. +
  17. +

    Revisar o template yaml que descreve o pipeline. Apontar para a versão 3.6 do Python. Template completo aqui. +

    +
  18. +
  19. +

    Confirmar a criação do template no repositório do GitHub (automaticamente o pipeline será iniciado): +

    +
  20. +
  21. +

    Aguardar o término da execução do pipeline: +

    +
  22. +
  23. +

    Confirmar o correto deploy da aplicação: +

    +
  24. +
+ +

Invocando o pipeline

+ +
    +
  1. Atualizar o código da aplicaçao no GitHub:
  2. +
+ +

+ +

+ +
    +
  1. +

    Conferir que é criada uma nova execução do pipeline: +

    +
  2. +
  3. +

    Aguardar o término da execução do pipeline: +

    +
  4. +
  5. +

    Confirmar o correto deploy da nova versão da aplicação: +

    +
  6. +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/baseline-operator/index.html b/docs/baseline-operator/index.html new file mode 100644 index 0000000000..dc05201952 --- /dev/null +++ b/docs/baseline-operator/index.html @@ -0,0 +1,904 @@ + + + + + + +baseline-operator - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + + + + + +

GitHub +GitHub language count +GitHub top language +Go Report Card +Docker Image CI

+ +

baseline-operator

+ +

The baseline-operator provides a way to run stress-ng workloads on Kubernetes in various deployment configurations.

+ +

It is intended to create an artificial baseline load in a Kubernetes cluster in order to be able to run other Kubernetes tests in more realistic conditions (performance, cluster upgrade, etc.).

+ +

Use

+ +

Create a baseline CRD, i.e.:

+
apiVersion: perf.baseline.io/v1
+kind: Baseline
+metadata:
+  name: baseline-sample
+spec:
+  cpu: 1                                             # Cores
+  mem: 1G                                            # Size of the virtual memory. Can be defined as a % of the available memory
+  io: 1                                              # Workers continuously calling sync to commit buffer cache to disk
+  sock: 1                                            # Workers exercising socket I/O networking
+  custom: "--timer 1"                                # Other custom params
+  # image: quay.io/cloud-bulldozer/stressng          # Custom image
+  # hostNetwork: true                                # Directly use host network
+  # nodeSelector:                                    # Filter nodes with labels
+  #   stress: "true"
+  # tolerations:                                     # Use the control plane nodes
+  # - key: node-role.kubernetes.io/control-plane
+  #   operator: Exists
+  #   effect: NoSchedule
+  # - key: node-role.kubernetes.io/master
+  #   operator: Exists
+  #   effect: NoSchedule
+
+ +
$ kubectl apply -f config/samples/perf_v1_baseline.yaml
+baseline.perf.baseline.io/baseline-sample configured
+
+$ kubectl get baseline
+NAME              COMMAND                                                                                AGE
+baseline-sample   stress-ng -t 0 --cpu 1 --vm 1 --vm-bytes 1G --io 1 --sock 1 --sock-if eth0 --timer 1   3s
+
+ +

Check for the DaemonSet:

+
$ kubectl get daemonset
+NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
+baseline-sample   1         1         1       1            1           <none>          1m
+
+ +

Check for the Pods:

+
$ kubectl get pods
+NAME                    READY   STATUS    RESTARTS   AGE
+baseline-sample-nnq5b   1/1     Running   0          1m
+
+$ kubectl logs baseline-sample-nnq5b 
+stress-ng: info:  [1] setting to a 0 second run per stressor
+stress-ng: info:  [1] dispatching hogs: 1 cpu, 1 vm, 1 io, 1 sock, 1 timer
+
+ +

Updating the CRD

+ +

Update or remove parameters from the CRD:

+
$ kubectl patch baseline baseline-sample --type merge -p '{"spec":{"cpu":2}}'
+baseline.perf.baseline.io/baseline-sample patched
+
+$ kubectl get po
+NAME                    READY   STATUS              RESTARTS   AGE
+baseline-sample-nnq5b   1/1     Terminating         0          5m
+baseline-sample-xvxc9   0/1     ContainerCreating   0          1s
+
+$ kubectl logs baseline-sample-xvxc9
+stress-ng: info:  [1] setting to a 0 second run per stressor
+stress-ng: info:  [1] dispatching hogs: 2 cpu, 1 vm, 1 io, 1 sock, 1 timer
+
+ +

Some updates (like the above) that get translated into a new command cause the DaemonSet to be recreated.

+ +

Check for the CRD events:

+
$ kubectl describe baseline baseline-sample
+...
+Events:
+  Type    Reason     Age    From      Message
+  ----    ------     ----   ----      -------
+  Normal  Created    5m20s  Baseline  Created daemonset default/baseline-sample
+  Normal  Recreated  4s     Baseline  Rereated daemonset default/baseline-sample
+
+ +

Other fields of the CRD can be updated without the need of a DaemonSet recreation, like i.e.: image, hostNetwork, nodeSelector and tolerations:

+ +
$ kubectl patch baseline baseline-sample --type merge -p '{"spec":{"nodeSelector":{"stress":"true"}}}'
+baseline.perf.baseline.io/baseline-sample patched
+
+$ kubects get daemonset
+NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
+baseline-sample   0         0         0       0            0           stress=true     3m9s
+
+$ kubectl describe baseline baseline-sample
+...
+Events:
+  Type    Reason     Age    From      Message
+  ----    ------     ----   ----      -------
+  Normal  Created    6m20s  Baseline  Created daemonset default/baseline-sample
+  Normal  Recreated  1m10s  Baseline  Rereated daemonset default/baseline-sample
+  Normal  Updated    7s     Baseline  Updated daemonset default/baseline-sample
+
+ +

Node placement

+ +

If you specify node selector(s), then the DaemonSet controller will create Pods on nodes which match that node selector(s):

+
apiVersion: perf.baseline.io/v1
+kind: Baseline
+metadata:
+  name: baseline-sample
+spec:
+  cpu: 1
+  nodeSelector:
+    stress: "true"
+
+ +
$ kubectl get daemonset
+NAME              DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
+baseline-sample   1         1         1       1            1           stress=true     1m
+
+ +

By default, DaemonSet Pods only run in worker nodes. If you want to run stress-ng loads in control plane nodes you can use tolerations:

+
apiVersion: perf.baseline.io/v1
+kind: Baseline
+metadata:
+  name: baseline-sample
+spec:
+  cpu: 1			            
+  tolerations:
+  # these tolerations are to have the daemonset runnable on control plane nodes
+  # remove them if your control plane nodes should not run pods
+  - key: node-role.kubernetes.io/control-plane
+    operator: Exists
+    effect: NoSchedule
+  - key: node-role.kubernetes.io/master
+    operator: Exists
+    effect: NoSchedule
+
+ +

Custom image

+ +

It is possible to select a custom image for stress-ng using the image property:

+
apiVersion: perf.baseline.io/v1
+kind: Baseline
+metadata:
+  name: baseline-sample
+spec:
+  cpu: 1
+  image: quay.io/cloud-bulldozer/stressng
+
+ +

If not defined, defaults to quay.io/jcastillolema/stressng:0.14.01. For network workloads is important for stress-ng version to be >= 0.14.01, which allows to choose the network interface via --sock-if, sockmany-if, --udp-if and udp-flood-if. The default image was compiled through this Dockerfile:

+
FROM quay.io/centos/centos:stream8
+
+WORKDIR /root
+RUN yum install -y libaio-devel libattr-devel libcap-devel libgcrypt-devel libjpeg-devel keyutils-libs-devel lksctp-tools-devel libatomic zlib-devel cmake gcc
+RUN curl -L https://github.com/ColinIanKing/stress-ng/archive/refs/tags/V0.14.01.tar.gz -o V0.14.01.tar.gz && tar -xzvf V0.14.01.tar.gz -C /root --strip-components=1
+RUN make clean && make && mv stress-ng /usr/local/bin
+
+ +

Installation

+ +
$ git clone https://github.com/josecastillolema/baseline-operator
+$ cd baseline-operator
+$ make deploy
+
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/caio-youtube/index.html b/docs/caio-youtube/index.html new file mode 100644 index 0000000000..dca1b0be48 --- /dev/null +++ b/docs/caio-youtube/index.html @@ -0,0 +1,735 @@ + + + + + + +Caio Ferreira - canal de YouTube - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Gostaria de recomendar o canal de YouTube do meu amigo Caio Ferreria.

+ +

No canal podem encontrar videos sobre:

+
    +
  • AWS
  • +
  • Fluxos de pagamento
  • +
  • Restcomm/Mobicents
  • +
+ +

Parabéns pelo canal Caio!

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/calico-ebpf/index.html b/docs/calico-ebpf/index.html new file mode 100644 index 0000000000..a77a6ca113 --- /dev/null +++ b/docs/calico-ebpf/index.html @@ -0,0 +1,785 @@ + + + + + + +Certified Calico Operator: eBPF - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Certified Calico Operator: eBPF course for everyone interested in eBPF networking.

+ +

The new CCO-L2-EBPF (Certified Calico Operator: eBPF) course specifically addresses the strengths of eBPF and when it is, or is not, the right choice. It will also help you see how easy it is to deploy the Calico eBPF data plane if you have made the choice that it is right for you and your cluster.

+ +

This is a level 2 course, which means that you should probably complete the existing level 1 course first, unless you’re very familiar with Calico and Kubernetes already.

+ +

What the Course Covers

+ +
    +
  • Week 1 +
      +
    • Get Started with eBPF
    • +
    • Lab Setup
    • +
    • Writing an eBPF program
    • +
    • Writing a Kernel Probe for Tracing
    • +
    • Understanding the Tools
    • +
    • eBPF in Kubernetes
    • +
    +
  • +
  • Week 2 +
      +
    • GCP Lab Setup
    • +
    • Deploying Calico with eBPF on Upstream Kubernetes
    • +
    • Key Benefits of the Calico eBPF Data Plane
    • +
    +
  • +
  • Week 3 +
      +
    • Deploying Calico with eBPF on OpenShift
    • +
    • Understanding Calico eBPF and CNI Choice
    • +
    • Deploying a Rancher RKE Cluster with eBPF, and connecting to a Rancher Server
    • +
    +
  • +
  • Week 4 +
      +
    • Calico eBPF and WireGuard
    • +
    • Monitoring and Troubleshooting the Calico eBPF Data Plane
    • +
    • Advanced Topics
    • +
    +
  • +
+ +

Free certification

+ +

At the end of the course, you can earn a certificate by passing a final exam.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/calico/index.html b/docs/calico/index.html new file mode 100644 index 0000000000..c6c9978d76 --- /dev/null +++ b/docs/calico/index.html @@ -0,0 +1,778 @@ + + + + + + +Certified Calico Operator - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Certified Calico Operator: Level 1 course for everyone interested in Kubernetes networking.

+ +

This free and self-paced course will arm you with the knowledge you need to understand how Kubernetes networking works, how to configure and manage a Calico network, and how to secure your cluster following today’s best practices, with the confidence you need to run mission critical workloads in production.

+ +

What the Course Covers

+
    +
  • Introduction to Kubernetes Networking
  • +
  • Installing Calico
  • +
  • Everything you need to know about Network Policy, including: +
      +
    • Introduction to Network Policy
    • +
    • Best Practices for Network Policy
    • +
    • Managing Trust Across Teams
    • +
    • Network Policy for Hosts and NodePorts
    • +
    +
  • +
  • Everything you need to know about network connectivity, including: +
      +
    • Pod Connectivity Fundamentals
    • +
    • Calico’s Next Generation eBPF Dataplane
    • +
    • Encrypting Data in Transit
    • +
    • Fun with IP Address Management
    • +
    • Peering with BGP
    • +
    +
  • +
  • Everything you need to know about Kubernetes Services, including: +
      +
    • Introduction to Kubernetes Services
    • +
    • Understanding Kube-Proxy Service Handling
    • +
    • Understanding Calico Native Service Handling
    • +
    • Advertising Services
    • +
    +
  • +
+ +

Free certification

+ +

At the end of the course, you can earn a certificate by passing a final exam.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/categories/index.html b/docs/categories/index.html new file mode 100644 index 0000000000..a545c763ae --- /dev/null +++ b/docs/categories/index.html @@ -0,0 +1,408 @@ + + + + + + +Posts by Category - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

Posts by Category

+ + + + + + + +
    + +
+ + + + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/cati22/index.html b/docs/cati22/index.html new file mode 100644 index 0000000000..11cf9b0d7b --- /dev/null +++ b/docs/cati22/index.html @@ -0,0 +1,723 @@ + + + + + + +II CATI: Congresso acadêmico de tecnologia da informação - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/cert-roadmap/index.html b/docs/cert-roadmap/index.html new file mode 100644 index 0000000000..7ce9f8af90 --- /dev/null +++ b/docs/cert-roadmap/index.html @@ -0,0 +1,798 @@ + + + + + + +Certification preparation roadmap - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) practice exams. For the practice exams I heavily rely on ExamTopics.

+ +

AWS

+ +
    +
  1. Do the corresponding AWS Academy course
  2. +
  3. Do the corresponding practice exam in the AWS Skill Builder platform
  4. +
  5. Reviews/practice the corresponding tests from ExamTopics, carefully reading the discussion forum for each question
  6. +
+ +
+

NOTE

+ +

With AWS Academy courses you earn 50% discount for all AWS certifications

+ +
+ +

Azure/Microsoft

+ +
    +
  1. Do the corresponding Microsoft Learn course
  2. +
  3. Reviews/practice the corresponding tests from ExamTopics, carefully reading the discussion forum for each question
  4. +
+ +
+

NOTE

+ +

Lots of opportunities for doing Azure exams for free:

+ + +
+ +

Huawei

+ +
    +
  1. Do the corresponding Huawei Talent course
  2. +
  3. Reviews/practice the corresponding tests from the Huawei Talent platform itself
  4. +
  5. As a complement, reviews/practice the corresponding tests from ExamTopics, carefully reading the discussion forum for each question
  6. +
+ +
+

NOTE

+ +

Lots of opportunities from the Huawei ICT Academy program for doing Huawei exams for free

+ +
+ +

Red Hat

+ +
    +
  1. Do the corresponding Red Hat Learning Subscription course
  2. +
+ +

As all Red Hat exams are hands-on, and the Red Hat Learning Subscription course includes lots of labs, there is no need for additional material.

+ +
+

NOTE

+ +

With Red Hat Academy courses you earn 50% discount for all Red Hat certifications

+ +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/classes/index.html b/docs/classes/index.html new file mode 100644 index 0000000000..349bb0316a --- /dev/null +++ b/docs/classes/index.html @@ -0,0 +1,683 @@ + + + + + + +GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+ + + + +
+ + +
+ + + + + + + +

GitHub +GitHub language count +GitHub top language +visitors +GitHub last commit

+ +

IFFE

+ +

+ +

Máster en Big Data y Analítica de Negocio (MBD)

+ +

+ +

Herramientas analíticas en AWS

+ +

Cada proyecto se refiere a clases y/o labs realizados en aula.

+ +

Siéntase libre de desarrollar estos ejemplos, mientras sean válidos, aceptaré pull requests 😄.

+ + + +



+ +

+ + + + + + + + + + + + +

+ +

+ + + + + + + + + +

+ +

+ + + + + +

GitHub +GitHub language count +GitHub top language +visitors +GitHub last commit

+ +

FIAP

+ +

MBA

+ +

FIAP MBA

+ +

MBA em Engenharia de Dados (ABD)

+ + +

MBA em Arquitetura de Soluções (ASO)

+ + +

MBA em Big Data / Data Science (BDT)

+ + +

MBA em Blockchain Development & Technologies (BLC)

+ + +

MBA em Cloud Computing (CLD)

+ + +

MBA em Artificial Intelligence & Machine Learning (IA)

+ + +

MBA em Mobile Development (MOB)

+ + +

MBA em Arquitetura e Desenvolvimento na Plataforma .NET (NET)

+ + +

MBA em Full Stack Developer - Microservices, Cloud e IoT (SCJ)

+ + +

MBA Online

+ +

+ +

MBA em Engenharia de Software - Online (AOJO)

+
    +
  • Fase 4: Data Analytics +
      +
    • Data Engineering (Big Data & Analytics)
    • +
    • Cloud Computing & SRE
    • +
    • Leadership and Corporate Accountability
    • +
    +
  • +
+ +

MBA em Arquitetura de Soluções - Online (ASOO)

+ + +

SHIFT

+ +

SHIFT FIAP

+ +

AWS Academy Cloud Foundations

+ +

AWS Academy Cloud Developing

+ +

Multicloud Architecture: Developments, Solutions & Service

+ +



+ +

+ + + + + + + + + + + + +

+ +

+ + + + + + + + + +

+ +

+ + + + +
+ + + + + + +
+ + +
+ + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/codeco-kickoff/index.html b/docs/codeco-kickoff/index.html new file mode 100644 index 0000000000..9af001a69e --- /dev/null +++ b/docs/codeco-kickoff/index.html @@ -0,0 +1,740 @@ + + + + + + +CODECO project kick off - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Kick off of the Horizon Europe CODECO in the Munich Highlight Towers, on 16th and 17th of January 2023.

+ +

The CODECO project proposes a unique, smart, and cross-layer orchestration between the +decentralised data flow, computation, and networking services, to address Edge-Cloud +challenges derived from the rising Internet and IoT service decentralisation. +Coordinated by Fortiss and involving 15 relevant Edge-Cloud partners +across Europe, the project shall develop an ecosystem consisting of open-source toolkits, +large-scale experimentation, training tools and events, use-cases across 4 vertical domains +(Smart Cities, Energy, Manufacturing, Smart Buildings), multiple events integrated into a +unique Innovation and Research Community Engagement Programme.

+ +

Read more about it in the Red Hat Research blog.

+ +

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/cognitive-class/index.html b/docs/cognitive-class/index.html new file mode 100644 index 0000000000..637a387537 --- /dev/null +++ b/docs/cognitive-class/index.html @@ -0,0 +1,852 @@ + + + + + + +Cognitive Class @ai - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Cognitive Class @ai is a platform for learning leading-edge technologies: blockchain, data science, AI, Cloud, Serverless, Docker, Kubernetes and more …

+ +
    +
  • Earn certificates and badges
  • +
  • Free
  • +
+ +

Learning paths

+
    +
  • Big data fundamentals
  • +
  • Data science fundamentals
  • +
  • Scala programming for data science
  • +
  • Deep learning
  • +
  • Hadoop fundamentals
  • +
  • Spark fundamentals
  • +
  • Containers, k8s and Istio on IBM Cloud
  • +
  • Reactive architecture foundations
  • +
  • Lightbend reactive architecture: advanced
  • +
  • Data science with Python
  • +
  • Blockchain for developers
  • +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/colab/index.html b/docs/colab/index.html new file mode 100644 index 0000000000..f898b0f5fa --- /dev/null +++ b/docs/colab/index.html @@ -0,0 +1,738 @@ + + + + + + +Red Hat Co.Lab: Open Source Stories - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Na Red Hat, acreditamos no potencial da tecnologia para educar, ensinar, evoluir e transformar o mundo.

+ +

Foi com esse propósito que a Red Hat, em parceria com a prefeitura de Boston, junto à organização Sociedad Latina, iniciou o projeto Co.Lab com um objetivo: ensinar às crianças e jovens os fundamentos da codificação e a importância da criatividade e da colaboração.

+ +

Agora, o Co.Lab chega ao Brasil!

+ +

O Co.Lab apresenta às crianças e jovens os princípios do código aberto, inspirando-os no seu dia a dia.

+ +

Em uma plataforma digital, você terá acesso a muitos conteúdos referentes à tecnologia open source, workshops e experimentos para crianças e jovens de todas as idades.

+ +

Com hardware e metodologias abertas, pretendemos ensinar os jovens porque a cultura open é a melhor maneira de trabalhar e resolver desafios. Nesta plataforma você encontrará experimentos, palestras e workshops. Frequentemente um novo conteúdo será disponibilizado na plataforma para que você se atualize.

+ +

Convidamos você a explorar o universo das tecnologias abertas e compartilhar muitos aprendizados com seus amigos, filhos e toda a família.

+ +

Essa é a nossa contribuição para um mundo mais conectado, mais aberto e mais inclusivo.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/computehcisriov-role/index.html b/docs/computehcisriov-role/index.html new file mode 100644 index 0000000000..5ccc87277c --- /dev/null +++ b/docs/computehcisriov-role/index.html @@ -0,0 +1,794 @@ + + + + + + +ComputeHCISriov role for Director/TripleO - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

Hyper-converged SR-IOV role for compute nodes.

+ +

Change 700887 proposed and merged upstream: https://review.opendev.org/#/c/700887/

+ +
###############################################################################
+# Role: ComputeHCISriov #
+###############################################################################
+- name: ComputeHCISriov
+ description: |
+ Compute Node with SR-IOV role hosting Ceph OSD too
+ networks:
+ - InternalApi
+ - Tenant
+ - Storage
+ - StorageMgmt
+ - Management
+ default_route_networks: ['Management']
+ disable_upgrade_deployment: True
+ RoleParametersDefault:
+ TunedProfileName: "cpu-partitioning"
+ # CephOSD present so serial has to be 1
+ update_serial: 1
+ ServicesDefault:
+ - OS::TripleO::Services::Aide
+ - OS::TripleO::Services::AuditD
+ - OS::TripleO::Services::BootParams
+ - OS::TripleO::Services::CACerts
+ - OS::TripleO::Services::CephClient
+ - OS::TripleO::Services::CephExternal
+ - OS::TripleO::Services::CephOSD
+ - OS::TripleO::Services::CertmongerUser
+ - OS::TripleO::Services::Collectd
+ - OS::TripleO::Services::ComputeCeilometerAgent
+ - OS::TripleO::Services::ComputeNeutronCorePlugin
+ - OS::TripleO::Services::ComputeNeutronL3Agent
+ - OS::TripleO::Services::ComputeNeutronMetadataAgent
+ - OS::TripleO::Services::ComputeNeutronOvsAgent
+ - OS::TripleO::Services::Docker
+ - OS::TripleO::Services::Fluentd
+ - OS::TripleO::Services::IpaClient
+ - OS::TripleO::Services::Ipsec
+ - OS::TripleO::Services::Iscsid
+ - OS::TripleO::Services::Kernel
+ - OS::TripleO::Services::LoginDefs
+ - OS::TripleO::Services::MetricsQdr
+ - OS::TripleO::Services::MySQLClient
+ - OS::TripleO::Services::NeutronBgpVpnBagpipe
+ - OS::TripleO::Services::NeutronSriovAgent
+ - OS::TripleO::Services::NeutronSriovHostConfig
+ - OS::TripleO::Services::NeutronVppAgent
+ - OS::TripleO::Services::NovaCompute
+ - OS::TripleO::Services::NovaLibvirt
+ - OS::TripleO::Services::NovaLibvirtGuests
+ - OS::TripleO::Services::NovaMigrationTarget
+ - OS::TripleO::Services::Ntp
+ - OS::TripleO::Services::ContainersLogrotateCrond
+ - OS::TripleO::Services::OpenDaylightOvs
+ - OS::TripleO::Services::Rhsm
+ - OS::TripleO::Services::RsyslogSidecar
+ - OS::TripleO::Services::Securetty
+ - OS::TripleO::Services::SensuClient
+ - OS::TripleO::Services::SkydiveAgent
+ - OS::TripleO::Services::Snmp
+ - OS::TripleO::Services::Sshd
+ - OS::TripleO::Services::Timezone
+ - OS::TripleO::Services::TripleoFirewall
+ - OS::TripleO::Services::TripleoPackages
+ - OS::TripleO::Services::Vpp
+ - OS::TripleO::Services::OVNController
+ - OS::TripleO::Services::OVNMetadataAgent
+ - OS::TripleO::Services::Ptp
+
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/computer-networks/index.html b/docs/computer-networks/index.html new file mode 100644 index 0000000000..4944770519 --- /dev/null +++ b/docs/computer-networks/index.html @@ -0,0 +1,775 @@ + + + + + + +Computer Networks - Volume 107 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Volume 107, Part 2, Pages 270-291

+ +

An innovative software-defined WiNeMO architecture for advanced QoS-guaranteed mobile service transport

+ +

DOI:10.1016/j.comnet.2016.04.019

+ +
    +
  • Felipe S. Dantas Silva
  • +
  • Augusto Venâncio Netob
  • +
  • Douglas Maciel
  • +
  • José Castillo-Lema
  • +
  • Flávio Silva
  • +
  • Pedro Frosi
  • +
  • Eduardo Cerqueira.
  • +
+ +

Cite this

+ +

ACM

+

Felipe S. Dantas Silva, Augusto Venâncio Neto, Douglas Maciel, José Castillo-Lema, Flávio Silva, Pedro Frosi, and Eduardo Cerqueira. 2016. An innovative software-defined WiNeMO architecture for advanced QoS-guaranteed mobile service transport. Comput. Netw. 107, P2 (October 2016), 270–291. DOI:https://doi.org/10.1016/j.comnet.2016.04.019

+ +

BibTeX

+ +
@article {10.1016/j.comnet.2016.04.019,
+author = {Silva, Felipe S. Dantas and Neto, Augusto Ven\^{a}ncio and Maciel, Douglas and Castillo-Lema, Jos\'{e} and Silva, Fl\'{a}vio and Frosi, Pedro and Cerqueira, Eduardo},
+title = {An Innovative Software-Defined WiNeMO Architecture for Advanced QoS-Guaranteed Mobile Service Transport},
+year = {2016},
+issue_date = {October 2016},
+publisher = {Elsevier North-Holland, Inc.},
+address = {USA},
+volume = {107},
+number = {P2},
+issn = {1389-1286},
+url = {https://doi.org/10.1016/j.comnet.2016.04.019},
+doi = {10.1016/j.comnet.2016.04.019},
+journal = {Comput. Netw.},
+month = oct,
+pages = {270–291},
+numpages = {22},
+keywords = {Software-defined networking, Mobility management, Load balancing, Quality of experience, Quality of service}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers1-docker/index.html b/docs/containers1-docker/index.html new file mode 100644 index 0000000000..5d3ae8c3db --- /dev/null +++ b/docs/containers1-docker/index.html @@ -0,0 +1,1387 @@ + + + + + + +Containers series I: Docker - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 1 - Docker

+ +

Usaremos a imagem oficial Ubuntu Linux 18.04 ou Amazon Linux para aprender alguns conceitos importantes do Docker:

+
    +
  • instalação
  • +
  • customização de imagens via Dockerfile
  • +
  • upload de imagens no DockerHub
  • +
+ +

Vamos trabalhar com dois terminais abertos (T1 e T2).

+ +

Pre-reqs

+ +

Uma máquina virtual Ubuntu Linux 18.04 na Microsoft Azure ou Amazon Linux na AWS:

+ +
    +
  • +

    Uma maquina virtual na Microsoft Azure com Ubuntu Linux 18.04. Seguir os passos do lab lab 01 - Virtual Machines.

    +
  • +
  • +

    Uma maquina virtual no AWS EC2 com Amazon Linux. Seguir os passos do lab lab 01 - EC2.

    +
  • +
+ +

Instalação

+ +
    +
  1. +

    [T1] Instalação do Docker

    + +

    a. [Só no Ubuntu] Atualização dos repositórios

    +
     $ sudo apt update
    + Hit:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease
    + Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
    + Get:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
    + Get:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]              
    + Get:5 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages [8570 kB]
    + Get:6 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe Translation-en [4941 kB]     
    + Get:7 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/multiverse amd64 Packages [151 kB]
    + Get:8 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/multiverse Translation-en [108 kB]
    + Get:9 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [1011 kB]
    + Get:10 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main Translation-en [341 kB]
    + Get:11 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/restricted amd64 Packages [76.7 kB]
    + Get:12 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/restricted Translation-en [17.1 kB]
    + Get:13 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1092 kB]
    + Get:14 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/universe Translation-en [340 kB]
    + Get:15 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/multiverse amd64 Packages [11.5 kB]
    + Get:16 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/multiverse Translation-en [4832 B]
    + Get:17 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports/main amd64 Packages [7516 B]
    + Get:18 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports/main Translation-en [4764 B]
    + Get:19 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports/universe amd64 Packages [7736 B]
    + Get:20 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-backports/universe Translation-en [4588 B]
    + Get:21 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [783 kB] 
    + Get:22 http://security.ubuntu.com/ubuntu bionic-security/main Translation-en [247 kB]
    + Get:23 http://security.ubuntu.com/ubuntu bionic-security/restricted amd64 Packages [67.8 kB]
    + Get:24 http://security.ubuntu.com/ubuntu bionic-security/restricted Translation-en [15.0 kB]
    + Get:25 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [679 kB]
    + Get:26 http://security.ubuntu.com/ubuntu bionic-security/universe Translation-en [225 kB]
    + Get:27 http://security.ubuntu.com/ubuntu bionic-security/multiverse amd64 Packages [7908 B]
    + Get:28 http://security.ubuntu.com/ubuntu bionic-security/multiverse Translation-en [2816 B]
    + Fetched 19.0 MB in 4s (4815 kB/s)                               
    + Reading package lists... Done
    + Building dependency tree       
    + Reading state information... Done
    + 29 packages can be upgraded. Run 'apt list --upgradable' to see them.
    +
    + +

    b. [Ubuntu] Instalação dos pacotes

    +
     $ sudo apt install docker.io
    + Reading package lists... Done
    + Building dependency tree       
    + Reading state information... Done
    + The following additional packages will be installed:
    +   bridge-utils cgroupfs-mount containerd pigz runc ubuntu-fan
    + Suggested packages:
    +   ifupdown aufs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils
    + The following NEW packages will be installed:
    +   bridge-utils cgroupfs-mount containerd docker.io pigz runc ubuntu-fan
    + 0 upgraded, 7 newly installed, 0 to remove and 29 not upgraded.
    + Need to get 63.8 MB of archives.
    + After this operation, 319 MB of additional disk space will be used.
    + Do you want to continue? [Y/n] y
    + Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 pigz amd64 2.4-1 [57.4 kB]
    + Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 bridge-utils amd64 1.5-15ubuntu1 [30.1 kB]
    + Get:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 cgroupfs-mount all 1.4 [6320 B]
    + Get:4 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 runc amd64 1.0.0~rc10-0ubuntu1~18.04.2 [2000 kB]
    + Get:5 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 containerd amd64 1.3.3-0ubuntu1~18.04.2 [21.7 MB]
    + Get:6 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 docker.io amd64 19.03.6-0ubuntu1~18.04.1 [39.9 MB]
    + Get:7 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 ubuntu-fan all 0.12.10 [34.7 kB]
    + Fetched 63.8 MB in 2s (41.7 MB/s)
    + Preconfiguring packages ...
    + Selecting previously unselected package pigz.
    + (Reading database ... 57065 files and directories currently installed.)
    + Preparing to unpack .../0-pigz_2.4-1_amd64.deb ...
    + Unpacking pigz (2.4-1) ...
    + Selecting previously unselected package bridge-utils.
    + Preparing to unpack .../1-bridge-utils_1.5-15ubuntu1_amd64.deb ...
    + Unpacking bridge-utils (1.5-15ubuntu1) ...
    + Selecting previously unselected package cgroupfs-mount.
    + Preparing to unpack .../2-cgroupfs-mount_1.4_all.deb ...
    + Unpacking cgroupfs-mount (1.4) ...
    + Selecting previously unselected package runc.
    + Preparing to unpack .../3-runc_1.0.0~rc10-0ubuntu1~18.04.2_amd64.deb ...
    + Unpacking runc (1.0.0~rc10-0ubuntu1~18.04.2) ...
    + Selecting previously unselected package containerd.
    + Preparing to unpack .../4-containerd_1.3.3-0ubuntu1~18.04.2_amd64.deb ...
    + Unpacking containerd (1.3.3-0ubuntu1~18.04.2) ...
    + Selecting previously unselected package docker.io.
    + Preparing to unpack .../5-docker.io_19.03.6-0ubuntu1~18.04.1_amd64.deb ...
    + Unpacking docker.io (19.03.6-0ubuntu1~18.04.1) ...
    + Selecting previously unselected package ubuntu-fan.
    + Preparing to unpack .../6-ubuntu-fan_0.12.10_all.deb ...
    + Unpacking ubuntu-fan (0.12.10) ...
    + Setting up runc (1.0.0~rc10-0ubuntu1~18.04.2) ...
    + Setting up cgroupfs-mount (1.4) ...
    + Setting up containerd (1.3.3-0ubuntu1~18.04.2) ...
    + Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service → /lib/systemd/system/containerd.service.
    + Setting up bridge-utils (1.5-15ubuntu1) ...
    + Setting up ubuntu-fan (0.12.10) ...
    + Created symlink /etc/systemd/system/multi-user.target.wants/ubuntu-fan.service → /lib/systemd/system/ubuntu-fan.service.
    + Setting up pigz (2.4-1) ...
    + Setting up docker.io (19.03.6-0ubuntu1~18.04.1) ...
    + Adding group `docker' (GID 115) ...
    + Done.
    + Created symlink /etc/systemd/system/sockets.target.wants/docker.socket → /lib/systemd/system/docker.socket.
    + docker.service is a disabled or a static unit, not starting it.
    + Processing triggers for systemd (237-3ubuntu10.41) ...
    + Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
    + Processing triggers for ureadahead (0.100.0-21) ...
    +
    + +

    [Amazon Linux] Instalação dos pacotes

    +
     $ sudo yum install -y docker
    +
    + +

    [Amazon Linux] Iniciar o serviço:

    +
     $ sudo systemctl start docker
    + $ sudo systemctl enable docker
    +
    + +

    c. Conferir que o usuário não faz parte do grupo docker, e consecuentemente nao tem permissão para rodar comandos docker:

    +
     $ groups
    + ubuntu adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev
    +
    + +

    d. Adicionar o usuário (ubuntu) ao grupo docker:

    + +

    [Ubuntu]

    +
     $ sudo usermod -aG docker ubuntu
    +
    + +

    [Amazon Linux]

    +
     $ sudo usermod -aG docker ec2-user
    +
    + +

    e. Reiniciar a VM para que as mudanças de grupo sejam aplicadas:

    +
     $ sudo reboot
    + Connection to ec2-18-210-19-170.compute-1.amazonaws.com closed by remote host.
    + Connection to ec2-18-210-19-170.compute-1.amazonaws.com closed.
    +
    + +

    f. Após o reboot, confirmar que o usuário pertence ao grupo docker:

    +
     $ groups
    + ubuntu adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev docker
    +
    + +

    g. Rodar um docker version para validar a instalação, e conferir que é mostrada tanto a versão do cliente quanto a do servidor:

    +
      $ docker version
    +  Client:
    +   Version:           19.03.6
    +   API version:       1.40
    +   Go version:        go1.12.17
    +   Git commit:        369ce74a3c
    +   Built:             Fri Feb 28 23:45:43 2020
    +   OS/Arch:           linux/amd64
    +   Experimental:      false
    +
    +  Server:
    +   Engine:
    +    Version:          19.03.6
    +    API version:      1.40 (minimum version 1.12)
    +    Go version:       go1.12.17
    +    Git commit:       369ce74a3c
    +    Built:            Wed Feb 19 01:06:16 2020
    +    OS/Arch:          linux/amd64
    +    Experimental:     false
    +   containerd:
    +    Version:          1.3.3-0ubuntu1~18.04.2
    +    GitCommit:        
    +   runc:
    +    Version:          spec: 1.0.1-dev
    +    GitCommit:        
    +   docker-init:
    +    Version:          0.18.0
    +    GitCommit:
    +
    +
  2. +
+ +

Primeiros passos

+ +
    +
  1. [T1] Listar as imagens do repositório local (o catálogo deveria estar vazio, pois não baixamos nenhuma imagem ainda): +
     $ docker images
    + REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    +
    +
  2. +
  3. [T1] Buscar imagens dentro do catálogo do DockerHub: +
     $ docker search mongodb
    + NAME                                DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
    + mongo                               MongoDB document databases provide high avai…   7041                [OK]                
    + mongo-express                       Web-based MongoDB admin interface, written w…   735                 [OK]                
    + tutum/mongodb                       MongoDB Docker image – listens in port 27017…   229                                     [OK]
    + bitnami/mongodb                     Bitnami MongoDB Docker Image                    123                                     [OK]
    + frodenas/mongodb                    A Docker Image for MongoDB                      18                                      [OK]
    + centos/mongodb-32-centos7           MongoDB NoSQL database server                   8                                       
    + webhippie/mongodb                   Docker images for MongoDB                       7                                       [OK]
    + centos/mongodb-26-centos7           MongoDB NoSQL database server                   5                                       
    + centos/mongodb-36-centos7           MongoDB NoSQL database server                   5                                       
    + eses/mongodb_exporter               mongodb exporter for prometheus                 4                                       [OK]
    + neowaylabs/mongodb-mms-agent        This Docker image with MongoDB Monitoring Ag…   4                                       [OK]
    + centos/mongodb-34-centos7           MongoDB NoSQL database server                   3                                       
    + quadstingray/mongodb                MongoDB with Memory and User Settings           3                                       [OK]
    + tozd/mongodb                        Base image for MongoDB server.                  2                                       [OK]
    + mongodbsap/mongodbdocker                                                            2                                       
    + zadki3l/mongodb-oplog               Simple mongodb image with single-node replic…   2                                       [OK]
    + ssalaues/mongodb-exporter           MongoDB Replicaset Prometheus Compatible Met…   2                                       
    + xogroup/mongodb_backup_gdrive       Docker image to create a MongoDB database ba…   1                                       [OK]
    + bitnami/mongodb-exporter                                                            1                                       
    + openshift/mongodb-24-centos7        DEPRECATED: A Centos7 based MongoDB v2.4 ima…   1                                       
    + ansibleplaybookbundle/mongodb-apb   An APB to deploy MongoDB.                       1                                       [OK]
    + targetprocess/mongodb_exporter      MongoDB exporter for prometheus                 0                                       [OK]
    + gebele/mongodb                      mongodb                                         0                                       [OK]
    + phenompeople/mongodb                 MongoDB is an open-source, document databas…   0                                       [OK]
    + astronomerio/mongodb-source         Mongodb source.                                 0                                       [OK]
    +
    +
  4. +
  5. [T1] Fazer o download (pull) da imagem do Ubuntu no repositório local: +
     $ docker pull ubuntu
    + Using default tag: latest
    + latest: Pulling from library/ubuntu
    + 692c352adcf2: Pull complete 
    + 97058a342707: Pull complete 
    + 2821b8e766f4: Pull complete 
    + 4e643cc37772: Pull complete 
    + Digest: sha256:55cd38b70425947db71112eb5dddfa3aa3e3ce307754a3df2269069d2278ce47
    + Status: Downloaded newer image for ubuntu:latest
    + docker.io/library/ubuntu:latest
    +
    +
  6. +
  7. [T1] Listar as imagens novamente, conferir que existe a imagem ubuntu: +
     $ docker images
    + REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    + ubuntu              latest              adafef2e596e        11 days ago         73.9MB
    +
    +
  8. +
  9. [T1] Deletar a imagem (opcional): +
     $ docker image rm ubuntu
    +
    +
  10. +
  11. [T1] Rodar um comando de exemplo (hostname) dentro do container: +
     $ docker run ubuntu hostname
    + c293c1989a56
    +
    +
  12. +
  13. [T1] Medir o tempo do comando anterior: +
     $ time docker run ubuntu hostname
    + 7aa02808ccfc
    +
    + real	0m0.812s
    + user	0m0.023s
    + sys	0m0.027s
    +
    +

    Note-se que em menos de um segundo:

    +
      +
    • Docker criou o container
    • +
    • Rodou o comando hostname nele
    • +
    • Printou a sainda
    • +
    • Deletou o container
    • +
    +
  14. +
  15. [T1] Conferir que tanto container quanto o host compartilham o Kernel: +
     $ uname -a
    + Linux ip-172-31-60-180 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:18:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    +
    + $ docker run ubuntu uname -a
    + Linux de0407ee790f 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:18:30 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
    +
    +
  16. +
  17. [T1] Executar a imagem ubuntu em modo interativo. Observe-se que o prompt muda quando logamos no container: usuário root com hostname 5b83d8b5b521 (o ID do container em este caso). +
    $ docker run -it ubuntu
    +root@d8924e5138b3:/#
    +
    +
  18. +
  19. [T2] Sem sair do container no 1o terminal, listar os containers em execução no 2o terminal: +
    $ docker ps
    +CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    +d8924e5138b3        ubuntu              "/bin/bash"         14 seconds ago      Up 13 seconds                           xenodochial_allen
    +
    +
  20. +
  21. [T1] Continuando no 1o terminal, criar um arquivo ainda dentro do container e sair do container: +
    root@d8924e5138b3:/# touch meuArquivo
    +    
    +root@d8924e5138b3:/# ls
    +bin   dev  home  lib32  libx32  meuArquivo  opt   root  sbin  sys  usr
    +boot  etc  lib   lib64  media   mnt         proc  run   srv   tmp  var
    +
    +root@d8924e5138b3:/# exit
    +
    +
  22. +
  23. [T1] Conferir que o container não está mais em execução: +
    $ docker ps
    +CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    +
    +
  24. +
  25. [T1] Rodar o container novamente, e confirmar que o arquivo criado não existe mais. Containers são efêmeros, não armazenam nenhum tipo de mudança, sejam arquivos, dados, softwares instalados, etc.: +
    $ docker run -it ubuntu
    +root@5b83d8b5b521:/# ls
    +bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
    +boot  etc  lib   lib64  media   opt  root  sbin  sys  usr
    +
    +root@5b83d8b5b521:/# ls meuArquivo
    +ls: meuArquivo: No such file or directory
    +
    +
  26. +
+ +

Customização de imagens

+ +

Via docker commit

+ +
    +
  1. +

    Customização de imagens via docker commit.

    + +

    Vamos criar uma imagem customizada instalando algum software, por exemplo o nmap (um scanner de portas).

    + +

    a. [T1] Sem sair do container, atualizar os repositórios:

    +
    root@5b83d8b5b521:/# apt update
    +Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
    +Get:2 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
    +Get:3 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [45.2 kB]
    +Get:4 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
    +Get:5 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [33.9 kB]
    +Get:6 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
    +Get:7 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [165 kB]
    +Get:8 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [1078 B]
    +Get:9 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
    +Get:10 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
    +Get:11 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
    +Get:12 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
    +Get:13 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [165 kB]
    +Get:14 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [33.9 kB]
    +Get:15 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [330 kB]
    +Get:16 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [4202 B]
    +Get:17 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [3209 B]
    +Fetched 14.2 MB in 2s (6179 kB/s)                      
    +Reading package lists... Done
    +Building dependency tree       
    +Reading state information... Done
    +1 package can be upgraded. Run 'apt list --upgradable' to see it.
    +
    + +

    b. [T1] Instalar o pacote nmap. O flag -y pula a pregunta de confirmação:

    +
    root@5b83d8b5b521:/# apt install -y nmap
    +Reading package lists... Done
    +Building dependency tree       
    +Reading state information... Done
    +The following additional packages will be installed:
    +  libblas3 liblinear4 liblua5.3-0 libpcap0.8 libssl1.1 lua-lpeg nmap-common
    +Suggested packages:
    +  liblinear-tools liblinear-dev ncat ndiff zenmap
    +The following NEW packages will be installed:
    +  libblas3 liblinear4 liblua5.3-0 libpcap0.8 libssl1.1 lua-lpeg nmap nmap-common
    +0 upgraded, 8 newly installed, 0 to remove and 1 not upgraded.
    +Need to get 7115 kB of archives.
    +After this operation, 31.3 MB of additional disk space will be used.
    +Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 libssl1.1 amd64 1.1.1f-1ubuntu2 [1318 kB]
    +Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libpcap0.8 amd64 1.9.1-3 [128 kB]
    +Get:3 http://archive.ubuntu.com/ubuntu focal/main amd64 libblas3 amd64 3.9.0-1build1 [142 kB]
    +Get:4 http://archive.ubuntu.com/ubuntu focal/universe amd64 liblinear4 amd64 2.3.0+dfsg-3build1 [41.7 kB]
    +Get:5 http://archive.ubuntu.com/ubuntu focal/main amd64 liblua5.3-0 amd64 5.3.3-1.1ubuntu2 [116 kB]
    +Get:6 http://archive.ubuntu.com/ubuntu focal/universe amd64 lua-lpeg amd64 1.0.2-1 [31.4 kB]
    +Get:7 http://archive.ubuntu.com/ubuntu focal/universe amd64 nmap-common all 7.80+dfsg1-2build1 [3676 kB]
    +Get:8 http://archive.ubuntu.com/ubuntu focal/universe amd64 nmap amd64 7.80+dfsg1-2build1 [1662 kB]
    +Fetched 7115 kB in 1s (7120 kB/s)
    +debconf: delaying package configuration, since apt-utils is not installed
    +Selecting previously unselected package libssl1.1:amd64.
    +(Reading database ... 4122 files and directories currently installed.)
    +Preparing to unpack .../0-libssl1.1_1.1.1f-1ubuntu2_amd64.deb ...
    +Unpacking libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
    +Selecting previously unselected package libpcap0.8:amd64.
    +Preparing to unpack .../1-libpcap0.8_1.9.1-3_amd64.deb ...
    +Unpacking libpcap0.8:amd64 (1.9.1-3) ...
    +Selecting previously unselected package libblas3:amd64.
    +Preparing to unpack .../2-libblas3_3.9.0-1build1_amd64.deb ...
    +Unpacking libblas3:amd64 (3.9.0-1build1) ...
    +Selecting previously unselected package liblinear4:amd64.
    +Preparing to unpack .../3-liblinear4_2.3.0+dfsg-3build1_amd64.deb ...
    +Unpacking liblinear4:amd64 (2.3.0+dfsg-3build1) ...
    +Selecting previously unselected package liblua5.3-0:amd64.
    +Preparing to unpack .../4-liblua5.3-0_5.3.3-1.1ubuntu2_amd64.deb ...
    +Unpacking liblua5.3-0:amd64 (5.3.3-1.1ubuntu2) ...
    +Selecting previously unselected package lua-lpeg:amd64.
    +Preparing to unpack .../5-lua-lpeg_1.0.2-1_amd64.deb ...
    +Unpacking lua-lpeg:amd64 (1.0.2-1) ...
    +Selecting previously unselected package nmap-common.
    +Preparing to unpack .../6-nmap-common_7.80+dfsg1-2build1_all.deb ...
    +Unpacking nmap-common (7.80+dfsg1-2build1) ...
    +Selecting previously unselected package nmap.
    +Preparing to unpack .../7-nmap_7.80+dfsg1-2build1_amd64.deb ...
    +Unpacking nmap (7.80+dfsg1-2build1) ...
    +Setting up lua-lpeg:amd64 (1.0.2-1) ...
    +Setting up libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
    +debconf: unable to initialize frontend: Dialog
    +debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
    +debconf: falling back to frontend: Readline
    +debconf: unable to initialize frontend: Readline
    +debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
    +debconf: falling back to frontend: Teletype
    +Setting up libblas3:amd64 (3.9.0-1build1) ...
    +update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode
    +Setting up libpcap0.8:amd64 (1.9.1-3) ...
    +Setting up nmap-common (7.80+dfsg1-2build1) ...
    +Setting up liblua5.3-0:amd64 (5.3.3-1.1ubuntu2) ...
    +Setting up liblinear4:amd64 (2.3.0+dfsg-3build1) ...
    +Setting up nmap (7.80+dfsg1-2build1) ...
    +Processing triggers for libc-bin (2.31-0ubuntu9) ...
    +
    + +

    c. [T1] Conferir a versão instalada:

    +
    root@5b83d8b5b521:/# nmap --version
    +Nmap version 7.80 ( https://nmap.org )
    +Platform: x86_64-pc-linux-gnu
    +Compiled with: liblua-5.3.3 openssl-1.1.1d nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
    +Compiled without:
    +Available nsock engines: epoll poll select
    +
    + +

    d. [T2] No 2o terminal, confirmar o ID do container em execução (no qual acabamos de instalar o nmap):

    +
    $ docker ps
    +CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    +5b83d8b5b521        ubuntu              "/bin/bash"         18 minutes ago      Up 18 minutes                           compassionate_edison
    +
    + +

    e. [T2] Criar uma nova imagem (ubuntu_com_nmap) a partir do container:

    +
    $ docker commit 5b8 ubuntu_com_nmap
    +sha256:287d2c84024a50ba13c9d8304d57df853feea9b3dd9df785313111480a84eecc
    +
    + +

    f. Confirmar a criação da imagem (com um tamanho maior a imagem original):

    +
    $ docker images
    +REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    +ubuntu_com_nmap     latest              287d2c84024a        7 seconds ago       127MB
    +ubuntu              latest              adafef2e596e        11 days ago         73.9MB
    +
    + +

    g. Confirmar que na nova imagem, tem de fato o nmap instalado:

    +
    $ docker run ubuntu_com_nmap nmap --version
    +Nmap version 7.80 ( https://nmap.org )
    +Platform: x86_64-pc-linux-gnu
    +Compiled with: liblua-5.3.3 openssl-1.1.1d nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
    +Compiled without:
    +Available nsock engines: epoll poll select
    +
    + +

    h. Confirmar que a imagem original não foi alterada e não tem o nmap instalado:

    +
    $ docker run ubuntu nmap --version
    +docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"nmap\": executable file not found in $PATH": unknown.
    +
    +
  2. +
+ +

Via Dockerfile

+ +
    +
  1. +

    Customização de imagens via Dockerfile. Este é o metodo recomendado para customizar imagens, pois é mais reproduzível que docker commit.

    + +

    a. Criar o arquivo Dockerfile com o seguinte conteúdo:

    +
    FROM ubuntu
    +    
    +MAINTAINER Jose Castillo <profjose.lema@fiap.com.br>
    +    
    +RUN apt-get update
    +RUN apt-get install -y nmap
    +
    + +

    b. “Compilar” o Dockerfile:

    +
    $ docker build -t ubuntu-com-nmap-viadockerfile .
    +Sending build context to Docker daemon  15.87kB
    +Step 1/4 : FROM ubuntu
    + ---> adafef2e596e
    +Step 2/4 : MAINTAINER Jose Castillo
    + ---> Running in d3894b0f5f25
    +Removing intermediate container d3894b0f5f25
    + ---> 94aab8c83039
    +Step 3/4 : RUN apt-get update
    + ---> Running in 4ea03e5d7f32
    +Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
    +Get:2 http://security.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [1078 B]
    +Get:3 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [45.2 kB]
    +Get:4 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [33.9 kB]
    +Get:5 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [165 kB]
    +Get:6 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]
    +Get:7 http://archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
    +Get:8 http://archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
    +Get:9 http://archive.ubuntu.com/ubuntu focal/multiverse amd64 Packages [177 kB]
    +Get:10 http://archive.ubuntu.com/ubuntu focal/universe amd64 Packages [11.3 MB]
    +Get:11 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages [1275 kB]
    +Get:12 http://archive.ubuntu.com/ubuntu focal/restricted amd64 Packages [33.4 kB]
    +Get:13 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [165 kB]
    +Get:14 http://archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [4202 B]
    +Get:15 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [329 kB]
    +Get:16 http://archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [33.9 kB]
    +Get:17 http://archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [3209 B]
    +Fetched 14.2 MB in 2s (5775 kB/s)
    +Reading package lists...
    +Removing intermediate container 4ea03e5d7f32
    + ---> 3bf3668ec12d
    +Step 4/4 : RUN apt-get install -y nmap
    + ---> Running in 057b00bbe74b
    +Reading package lists...
    +Building dependency tree...
    +Reading state information...
    +The following additional packages will be installed:
    +  libblas3 liblinear4 liblua5.3-0 libpcap0.8 libssl1.1 lua-lpeg nmap-common
    +Suggested packages:
    +  liblinear-tools liblinear-dev ncat ndiff zenmap
    +The following NEW packages will be installed:
    +  libblas3 liblinear4 liblua5.3-0 libpcap0.8 libssl1.1 lua-lpeg nmap
    +  nmap-common
    +0 upgraded, 8 newly installed, 0 to remove and 1 not upgraded.
    +Need to get 7115 kB of archives.
    +After this operation, 31.3 MB of additional disk space will be used.
    +Get:1 http://archive.ubuntu.com/ubuntu focal/main amd64 libssl1.1 amd64 1.1.1f-1ubuntu2 [1318 kB]
    +Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libpcap0.8 amd64 1.9.1-3 [128 kB]
    +Get:3 http://archive.ubuntu.com/ubuntu focal/main amd64 libblas3 amd64 3.9.0-1build1 [142 kB]
    +Get:4 http://archive.ubuntu.com/ubuntu focal/universe amd64 liblinear4 amd64 2.3.0+dfsg-3build1 [41.7 kB]
    +Get:5 http://archive.ubuntu.com/ubuntu focal/main amd64 liblua5.3-0 amd64 5.3.3-1.1ubuntu2 [116 kB]
    +Get:6 http://archive.ubuntu.com/ubuntu focal/universe amd64 lua-lpeg amd64 1.0.2-1 [31.4 kB]
    +Get:7 http://archive.ubuntu.com/ubuntu focal/universe amd64 nmap-common all 7.80+dfsg1-2build1 [3676 kB]
    +Get:8 http://archive.ubuntu.com/ubuntu focal/universe amd64 nmap amd64 7.80+dfsg1-2build1 [1662 kB]
    +debconf: delaying package configuration, since apt-utils is not installed
    +Fetched 7115 kB in 1s (7096 kB/s)
    +Selecting previously unselected package libssl1.1:amd64.
    +(Reading database ... 4122 files and directories currently installed.)
    +Preparing to unpack .../0-libssl1.1_1.1.1f-1ubuntu2_amd64.deb ...
    +Unpacking libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
    +Selecting previously unselected package libpcap0.8:amd64.
    +Preparing to unpack .../1-libpcap0.8_1.9.1-3_amd64.deb ...
    +Unpacking libpcap0.8:amd64 (1.9.1-3) ...
    +Selecting previously unselected package libblas3:amd64.
    +Preparing to unpack .../2-libblas3_3.9.0-1build1_amd64.deb ...
    +Unpacking libblas3:amd64 (3.9.0-1build1) ...
    +Selecting previously unselected package liblinear4:amd64.
    +Preparing to unpack .../3-liblinear4_2.3.0+dfsg-3build1_amd64.deb ...
    +Unpacking liblinear4:amd64 (2.3.0+dfsg-3build1) ...
    +Selecting previously unselected package liblua5.3-0:amd64.
    +Preparing to unpack .../4-liblua5.3-0_5.3.3-1.1ubuntu2_amd64.deb ...
    +Unpacking liblua5.3-0:amd64 (5.3.3-1.1ubuntu2) ...
    +Selecting previously unselected package lua-lpeg:amd64.
    +Preparing to unpack .../5-lua-lpeg_1.0.2-1_amd64.deb ...
    +Unpacking lua-lpeg:amd64 (1.0.2-1) ...
    +Selecting previously unselected package nmap-common.
    +Preparing to unpack .../6-nmap-common_7.80+dfsg1-2build1_all.deb ...
    +Unpacking nmap-common (7.80+dfsg1-2build1) ...
    +Selecting previously unselected package nmap.
    +Preparing to unpack .../7-nmap_7.80+dfsg1-2build1_amd64.deb ...
    +Unpacking nmap (7.80+dfsg1-2build1) ...
    +Setting up lua-lpeg:amd64 (1.0.2-1) ...
    +Setting up libssl1.1:amd64 (1.1.1f-1ubuntu2) ...
    +debconf: unable to initialize frontend: Dialog
    +debconf: (TERM is not set, so the dialog frontend is not usable.)
    +debconf: falling back to frontend: Readline
    +debconf: unable to initialize frontend: Readline
    +debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
    +debconf: falling back to frontend: Teletype
    +Setting up libblas3:amd64 (3.9.0-1build1) ...
    +update-alternatives: using /usr/lib/x86_64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/x86_64-linux-gnu/libblas.so.3 (libblas.so.3-x86_64-linux-gnu) in auto mode
    +Setting up libpcap0.8:amd64 (1.9.1-3) ...
    +Setting up nmap-common (7.80+dfsg1-2build1) ...
    +Setting up liblua5.3-0:amd64 (5.3.3-1.1ubuntu2) ...
    +Setting up liblinear4:amd64 (2.3.0+dfsg-3build1) ...
    +Setting up nmap (7.80+dfsg1-2build1) ...
    +Processing triggers for libc-bin (2.31-0ubuntu9) ...
    +Removing intermediate container 057b00bbe74b
    + ---> 4647bd58aa0e
    +Successfully built 4647bd58aa0e
    +Successfully tagged ubuntu-com-nmap-viadockerfile:latest
    +
    + +

    c. Conferir que a nova imagem foi criada (e tem o mesmo tamanho que a imagem criada via docker commit):

    +
    $ docker images
    +REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
    +ubuntu-com-nmap-viadockerfile   latest              4647bd58aa0e        13 seconds ago      127MB
    +ubuntu_com_nmap                 latest              287d2c84024a        18 minutes ago      127MB
    +ubuntu                          latest              adafef2e596e        11 days ago         73.9MB
    +
    + +

    d. Testar a nova imagem:

    +
    $ docker run ubuntu-com-nmap-viadockerfile nmap --version
    +Nmap version 7.80 ( https://nmap.org )
    +Platform: x86_64-pc-linux-gnu
    +Compiled with: liblua-5.3.3 openssl-1.1.1d nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
    +Compiled without:
    +Available nsock engines: epoll poll select
    +
    +
  2. +
+ +

DockerHub

+ +
    +
  1. +

    Upload da nova imagem no DockerHub:

    + +

    a. Criar uma conta gratuita

    + +

    b. Logar na conta desde o terminal com o usuário recém criado:

    +
    $ docker login
    +Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    +Username: josecastillolema
    +Password: 
    +WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
    +Configure a credential helper to remove this warning. See
    +https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    +
    +Login Succeeded
    +
    + +

    c. Taggear a imagem. O nome da imagem deve ser username/nome da imagem:

    +
    $ docker tag ubuntu-com-nmap-viadockerfile josecastillolema/fiap-bdt
    +
    + +

    d. Fazer o upload (push) da imagem:

    +
    $ docker push josecastillolema/fiap-bdt
    +
    + +

    e. Conferir a imagem no portal do DockerHub: +

    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers2-docker2/index.html b/docs/containers2-docker2/index.html new file mode 100644 index 0000000000..e1732ac8e8 --- /dev/null +++ b/docs/containers2-docker2/index.html @@ -0,0 +1,1125 @@ + + + + + + +Containers series II: Docker - continuação - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 27 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 2 - Docker - continuação

+ +

Executando mysql server

+

Usaremos a imagem oficial mysql para aprender alguns conceitos importantes do Docker:

+
    +
  • variáveis de entorno: docker run -e
  • +
  • mapeamento de portas: docker run -p
  • +
  • persistência de dados: docker run -v
  • +
+ +

Pre-reqs

+ +

Uma máquina virtual com Docker instalado:

+ + + +

Lab

+ +

Vamos trabalhar com dois terminais abertos (T1 e T2).

+ +
    +
  1. [T1] Obtenção da imagem +
     $ docker pull mysql:5.7
    + Using default tag: latest
    + latest: Pulling from library/mysql
    + c499e6d256d6: Pull complete 
    + 22c4cdf4ea75: Pull complete 
    + 6ff5091a5a30: Pull complete 
    + 2fd3d1af9403: Pull complete 
    + 0d9d26127d1d: Pull complete 
    + 54a67d4e7579: Pull complete 
    + fe989230d866: Pull complete 
    + 3a808704d40c: Pull complete 
    + 826517d07519: Pull complete 
    + 69cd125db928: Pull complete 
    + b5c43b8c2879: Pull complete 
    + 1811572b5ea5: Pull complete 
    + Digest: sha256:b69d0b62d02ee1eba8c7aeb32eba1bb678b6cfa4ccfb211a5d7931c7755dc4a8
    + Status: Downloaded newer image for mysql:latest
    + docker.io/library/mysql:latest
    +
    +
  2. +
+ +

Variáveis de entorno (-e)

+ +
    +
  1. [T1] Primeira tentativa executando o servidor MySQL +
    $ docker run mysql:5.7
    +2020-04-05 12:45:11+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 12:45:11+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    +2020-04-05 12:45:11+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 12:45:11+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
    +       You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
    +
    +
  2. +
  3. [T1] Como mostra a mensagem de erro anterior, não e possível executar o container mysql sem configurar alguma das seguintes opções em relação à autenticação: +
      +
    • Uma senha para o usuario root do banco via MYSQL_ROOT_PASSWORD
    • +
    • Permitir uma senha de root vazia via MYSQL_ALLOW_EMPTY_PASSWORD
    • +
    • Criar uma senha de root aleatória via MYSQL_RANDOM_ROOT_PASSWORD
    • +
    + +

    Vamos optar pela primeira opção. Para passar variáveis de entorno ao container usaremos a opção -e. É importante colocar todos os parâmetros opcionais do comando docker run antes do nome da imagem:

    +
     $ docker run -e MYSQL_ROOT_PASSWORD=fiap mysql:5.7
    + 2020-04-05 12:50:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    + 2020-04-05 12:50:57+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    + 2020-04-05 12:50:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    + 2020-04-05 12:50:57+00:00 [Note] [Entrypoint]: Initializing database files
    + 2020-04-05T12:50:57.314246Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    + 2020-04-05T12:50:57.314331Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 41
    + 2020-04-05T12:51:02.282097Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
    + 2020-04-05 12:51:06+00:00 [Note] [Entrypoint]: Database files initialized
    + 2020-04-05 12:51:06+00:00 [Note] [Entrypoint]: Starting temporary server
    + 2020-04-05T12:51:07.201379Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    + 2020-04-05T12:51:07.201523Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 91
    + 2020-04-05T12:51:07.896487Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    + 2020-04-05T12:51:07.905784Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    + 2020-04-05T12:51:07.927215Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server - GPL.
    + 2020-04-05 12:51:07+00:00 [Note] [Entrypoint]: Temporary server started.
    + 2020-04-05T12:51:07.991679Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock'
    + Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
    + Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
    + Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
    + Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
    +
    + 2020-04-05 12:51:11+00:00 [Note] [Entrypoint]: Stopping temporary server
    + 2020-04-05T12:51:11.658536Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.19).
    + 2020-04-05T12:51:13.260962Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
    + 2020-04-05 12:51:13+00:00 [Note] [Entrypoint]: Temporary server stopped
    +
    + 2020-04-05 12:51:13+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
    +
    + 2020-04-05T12:51:14.024204Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    + 2020-04-05T12:51:14.024356Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
    + 2020-04-05T12:51:14.639276Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    + 2020-04-05T12:51:14.648234Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    + 2020-04-05T12:51:14.668536Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
    + 2020-04-05T12:51:14.783305Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
    +
    +
  4. +
+ +

Mapeamento de portas (-p)

+ +
    +
  1. +

    [T2] Conseguimos executar o container, vamos tentar acessar o banco desde o outro terminal. Para isso, precisamos instalar o cliente do MySQL:

    + +

    [Ubuntu]

    +
     $ sudo apt install mysql-client -y
    + Reading package lists... Done
    + Building dependency tree       
    + Reading state information... Done
    + The following additional packages will be installed:
    +   libaio1 mysql-client-5.7 mysql-client-core-5.7 mysql-common
    + The following NEW packages will be installed:
    +   libaio1 mysql-client mysql-client-5.7 mysql-client-core-5.7 mysql-common
    + 0 upgraded, 5 newly installed, 0 to remove and 34 not upgraded.
    + Need to get 8607 kB of archives.
    + After this operation, 61.8 MB of additional disk space will be used.
    + Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libaio1 amd64 0.3.110-5ubuntu0.1 [6476 B]
    + Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 mysql-client-core-5.7 amd64 5.7.29-0ubuntu0.18.04.1 [6642 kB]
    + Get:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 mysql-common all 5.8+1.0.4 [7308 B]
    + Get:4 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 mysql-client-5.7 amd64 5.7.29-0ubuntu0.18.04.1 [1942 kB]
    + Get:5 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 mysql-client all 5.7.29-0ubuntu0.18.04.1 [9828 B]
    + Fetched 8607 kB in 0s (37.9 MB/s)      
    + Selecting previously unselected package libaio1:amd64.
    + (Reading database ... 84272 files and directories currently installed.)
    + Preparing to unpack .../libaio1_0.3.110-5ubuntu0.1_amd64.deb ...
    + Unpacking libaio1:amd64 (0.3.110-5ubuntu0.1) ...
    + Selecting previously unselected package mysql-client-core-5.7.
    + Preparing to unpack .../mysql-client-core-5.7_5.7.29-0ubuntu0.18.04.1_amd64.deb ...
    + Unpacking mysql-client-core-5.7 (5.7.29-0ubuntu0.18.04.1) ...
    + Selecting previously unselected package mysql-common.
    + Preparing to unpack .../mysql-common_5.8+1.0.4_all.deb ...
    + Unpacking mysql-common (5.8+1.0.4) ...
    + Selecting previously unselected package mysql-client-5.7.
    + Preparing to unpack .../mysql-client-5.7_5.7.29-0ubuntu0.18.04.1_amd64.deb ...
    + Unpacking mysql-client-5.7 (5.7.29-0ubuntu0.18.04.1) ...
    + Selecting previously unselected package mysql-client.
    + Preparing to unpack .../mysql-client_5.7.29-0ubuntu0.18.04.1_all.deb ...
    + Unpacking mysql-client (5.7.29-0ubuntu0.18.04.1) ...
    + Setting up mysql-common (5.8+1.0.4) ...
    + update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode
    + Setting up libaio1:amd64 (0.3.110-5ubuntu0.1) ...
    + Setting up mysql-client-core-5.7 (5.7.29-0ubuntu0.18.04.1) ...
    + Setting up mysql-client-5.7 (5.7.29-0ubuntu0.18.04.1) ...
    + Setting up mysql-client (5.7.29-0ubuntu0.18.04.1) ...
    + Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
    + Processing triggers for libc-bin (2.27-3ubuntu1) ...
    +
    + +

    [Amazon Linux]

    +
     $ sudo yum install -y mariadb
    +
    +
  2. +
  3. +

    [T2] Tentemos acessar ao banco (não vai funcionar porque não fizemos o mapeamento de portas).

    + +

    Alguns parametros do cliente MySQL:

    +
      +
    • Hostname do banco via -h
    • +
    • Usuario via -u
    • +
    • Senha via -p. A senha tem que ser digitada sem espacos depois do parametro. +
       $ mysql -h 127.0.0.1 -u root -pfiap
      + mysql: [Warning] Using a password on the command line interface can be insecure.
      + ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
      +
      +
    • +
    +
  4. +
  5. [T2] Listar o container em execução para entender a falta de conectividade. A coluna PORTS mostra que a porta 3306 do container (a padrão do MySQL) não está mapeada a nenhuma porta do host. +
     $ docker ps
    + CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
    + 66696bdd281f        mysql               "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        3306/tcp, 33060/tcp   funny_yonath
    +
    +
  6. +
  7. +

    [T2] Parar o container:

    + +
     $ docker stop 66696bdd281f
    + 66696bdd281f
    +
    +
  8. +
  9. [T1] Vamos adicionar ao nosso comando docker run o parâmetro -p, responsável pelo mapeamento de portas. Recebe um argumento do tipo x:y, a onde x é a porta do lado do host e y a porta do lado do container. +
    $ docker run -e MYSQL_ROOT_PASSWORD=fiap -p 3306:3306 mysql:5.7
    +2020-04-05 13:04:50+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 13:04:50+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    +2020-04-05 13:04:50+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 13:04:50+00:00 [Note] [Entrypoint]: Initializing database files
    +2020-04-05T13:04:50.654920Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:04:50.655015Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 44
    +2020-04-05T13:04:55.455802Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
    +2020-04-05 13:05:00+00:00 [Note] [Entrypoint]: Database files initialized
    +2020-04-05 13:05:00+00:00 [Note] [Entrypoint]: Starting temporary server
    +2020-04-05T13:05:00.502158Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:05:00.502316Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 94
    +2020-04-05T13:05:01.215942Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    +2020-04-05T13:05:01.225111Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    +2020-04-05T13:05:01.246461Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server - GPL.
    +2020-04-05 13:05:01+00:00 [Note] [Entrypoint]: Temporary server started.
    +2020-04-05T13:05:01.290695Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock'
    +Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
    +Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
    +Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
    +Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
    +
    +2020-04-05 13:05:03+00:00 [Note] [Entrypoint]: Stopping temporary server
    +2020-04-05T13:05:03.846009Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.19).
    +2020-04-05T13:05:05.562972Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
    +2020-04-05 13:05:05+00:00 [Note] [Entrypoint]: Temporary server stopped
    +
    +2020-04-05 13:05:05+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
    +
    +2020-04-05T13:05:06.222224Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:05:06.222368Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
    +2020-04-05T13:05:06.859803Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    +2020-04-05T13:05:06.868634Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    +2020-04-05T13:05:06.890778Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
    +2020-04-05T13:05:07.005006Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
    +
    +
  10. +
  11. [T2] Conferir o mapeamento de portas: +
     $ docker ps
    + CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
    + 38e202140601        mysql               "docker-entrypoint.s…"   11 seconds ago      Up 9 seconds        0.0.0.0:3306->3306/tcp, 33060/tcp   awesome_greider
    +
    +
  12. +
  13. [T2] Tentar novamente o acesso ao banco de dados: +
    $ mysql -h 127.0.0.1 -u root -pfiap 
    +Welcome to the MySQL monitor.  Commands end with ; or \g.
    +Your MySQL connection id is 8
    +Server version: 8.0.19 MySQL Community Server - GPL
    +
    +Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    +
    +Oracle is a registered trademark of Oracle Corporation and/or its
    +affiliates. Other names may be trademarks of their respective
    +owners.
    +
    +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    +
    +mysql> exit
    +Bye
    +
    +
  14. +
  15. [T2] Parar o container: +
    $ docker stop 38e202140601
    +38e202140601
    +
    +
  16. +
+ +

Persistência de dados (-v)

+ +
    +
  1. +

    [T1] Conseguimos acessar ao banco. Porem, containers são efêmeros. Qualquer dado criado no banco será perdido após o termino do container.

    + +

    Para conseguir persistência de dados, vamos adicionar ao comando docker run o parâmetro -v. Recebe um argumento do tipo x:y, a onde x é o nome do volume e y a pasta a onde esse volume será mapeado dentro do container.

    +
    $ docker run -e MYSQL_ROOT_PASSWORD=fiap -p 3306:3306 -v voldb:/var/lib/mysql mysql:5.7
    +2020-04-05 13:19:02+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 13:19:02+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    +2020-04-05 13:19:02+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 13:19:02+00:00 [Note] [Entrypoint]: Initializing database files
    +2020-04-05T13:19:02.164095Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:19:02.164181Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 41
    +2020-04-05T13:19:06.841206Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
    +2020-04-05 13:19:11+00:00 [Note] [Entrypoint]: Database files initialized
    +2020-04-05 13:19:11+00:00 [Note] [Entrypoint]: Starting temporary server
    +2020-04-05T13:19:12.009941Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:19:12.010078Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 91
    +2020-04-05T13:19:12.728905Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    +2020-04-05T13:19:12.737985Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    +2020-04-05T13:19:12.759072Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server - GPL.
    +2020-04-05 13:19:12+00:00 [Note] [Entrypoint]: Temporary server started.
    +2020-04-05T13:19:12.813271Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock'
    +Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
    +Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
    +Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
    +Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
    +
    +2020-04-05 13:19:15+00:00 [Note] [Entrypoint]: Stopping temporary server
    +2020-04-05T13:19:15.329084Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.19).
    +2020-04-05T13:19:17.069433Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
    +2020-04-05 13:19:17+00:00 [Note] [Entrypoint]: Temporary server stopped
    +
    +2020-04-05 13:19:17+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
    +
    +2020-04-05T13:19:17.701649Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:19:17.701788Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
    +2020-04-05T13:19:18.349463Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    +2020-04-05T13:19:18.357986Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    +2020-04-05T13:19:18.378623Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
    +2020-04-05T13:19:18.485139Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
    +
    +
  2. +
  3. [T2] Acessar o banco e criar um database: +
    $ mysql -h 127.0.0.1 -u root -pfiap
    +mysql: [Warning] Using a password on the command line interface can be insecure.
    +Welcome to the MySQL monitor.  Commands end with ; or \g.
    +Your MySQL connection id is 8
    +Server version: 8.0.19 MySQL Community Server - GPL
    +
    +Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    +
    +Oracle is a registered trademark of Oracle Corporation and/or its
    +affiliates. Other names may be trademarks of their respective
    +owners.
    +
    +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    +
    +mysql> create database fiap;
    +Query OK, 1 row affected (0.04 sec)
    +
    +mysql> exit
    +Bye
    +
    +
  4. +
  5. [T2] Parar o container: +
    $ docker ps
    +CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
    +27a9ff19cbd0        mysql               "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp   laughing_lovelace
    +$ docker stop 27a9ff19cbd0
    +27a9ff19cbd0
    +
    +
  6. +
  7. [T2] Confirmar que o volume persiste mesmo depois do término do container: +
    $ docker volume ls
    +DRIVER              VOLUME NAME
    +local               voldb
    +
    +
  8. +
  9. [T1] Executar novamente o container, para conferir que os dados foram persistidos: +
    $ docker run -e MYSQL_ROOT_PASSWORD=fiap -p 3306:3306 -v voldb:/var/lib/mysql mysql:5.7
    +2020-04-05 13:28:24+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05 13:28:24+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    +2020-04-05 13:28:24+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    +2020-04-05T13:28:24.792093Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    +2020-04-05T13:28:24.792236Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
    +2020-04-05T13:28:25.434639Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    +2020-04-05T13:28:25.443450Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    +2020-04-05T13:28:25.465214Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
    +2020-04-05T13:28:25.590278Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
    +
    +
  10. +
  11. [T2] Acessar o banco e confirmar que o database criado foi persistido: +
    $ mysql -h 127.0.0.1 -u root -p
    +Enter password: 
    +Welcome to the MySQL monitor.  Commands end with ; or \g.
    +Your MySQL connection id is 8
    +Server version: 8.0.19 MySQL Community Server - GPL
    +
    +Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    +
    +Oracle is a registered trademark of Oracle Corporation and/or its
    +affiliates. Other names may be trademarks of their respective
    +owners.
    +
    +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    +
    +mysql> show databases;
    ++--------------------+
    +| Database           |
    ++--------------------+
    +| information_schema |
    +| fiap               |
    +| mysql              |
    +| performance_schema |
    +| sys                |
    ++--------------------+
    +5 rows in set (0.00 sec)
    +    
    +mysql> exit
    +Bye
    +
    +
  12. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers3-docker-compose/index.html b/docs/containers3-docker-compose/index.html new file mode 100644 index 0000000000..39105f1290 --- /dev/null +++ b/docs/containers3-docker-compose/index.html @@ -0,0 +1,1254 @@ + + + + + + +Containers series III: Docker Compose - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 3 - Docker Compose

+ +

Executando servicos

+

Docker Compose permite definir serviços (que a sua vez são formados por containers) e a comunicação entre os mesmos. Esta comunicação é implementada via DNS nos containers. Além disso, no arquivo de configuração do Docker Compose (docker-compose.yml) é possível definir:

+
    +
  • variáveis de entorno: comando environment
  • +
  • mapeamento de portas: comando ports
  • +
  • persistência de dados: comando volumes
  • +
  • dependências entre os serviços: comandos links e depends on
  • +
+ +

Vamos trabalhar com dois terminais abertos (T1 e T2).

+ +

Instalação

+ +
    +
  1. +

    [T1] Instalação do Docker Compose:

    + +

    [Ubuntu]

    +
     $ sudo apt  install docker-compose -y
    + Reading package lists... Done
    + Building dependency tree       
    + Reading state information... Done
    + The following additional packages will be installed:
    +   golang-docker-credential-helpers libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libsecret-1-0
    +   libsecret-common python python-asn1crypto python-backports.ssl-match-hostname python-cached-property python-certifi
    +   python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty python-dockerpycreds
    +   python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress python-jsonschema
    +   python-minimal python-mock python-openssl python-pbr python-pkg-resources python-requests python-six
    +   python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal
    + Suggested packages:
    +   python-doc python-tk python-cryptography-doc python-cryptography-vectors python-enum34-doc python-funcsigs-doc
    +   python-mock-doc python-openssl-doc python-openssl-dbg python-setuptools python-socks python-ntlm python2.7-doc
    +   binutils binfmt-support
    + The following NEW packages will be installed:
    +   docker-compose golang-docker-credential-helpers libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
    +   libsecret-1-0 libsecret-common python python-asn1crypto python-backports.ssl-match-hostname python-cached-property
    +   python-certifi python-cffi-backend python-chardet python-cryptography python-docker python-dockerpty
    +   python-dockerpycreds python-docopt python-enum34 python-funcsigs python-functools32 python-idna python-ipaddress
    +   python-jsonschema python-minimal python-mock python-openssl python-pbr python-pkg-resources python-requests
    +   python-six python-texttable python-urllib3 python-websocket python-yaml python2.7 python2.7-minimal
    + 0 upgraded, 38 newly installed, 0 to remove and 35 not upgraded.
    + Need to get 6014 kB of archives.
    + After this operation, 26.6 MB of additional disk space will be used.
    + Get:1 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpython2.7-minimal amd64 2.7.17-1~18.04 [335 kB]
    + Get:2 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python2.7-minimal amd64 2.7.17-1~18.04 [1294 kB]
    + Get:3 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-minimal amd64 2.7.15~rc1-1 [28.1 kB]
    + Get:4 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpython2.7-stdlib amd64 2.7.17-1~18.04 [1915 kB]
    + Get:5 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python2.7 amd64 2.7.17-1~18.04 [248 kB]
    + Get:6 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 libpython-stdlib amd64 2.7.15~rc1-1 [7620 B]
    + Get:7 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python amd64 2.7.15~rc1-1 [140 kB]
    + Get:8 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-backports.ssl-match-hostname all 3.5.0.1-1 [7024 B]
    + Get:9 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-pkg-resources all 39.0.1-2 [128 kB]
    + Get:10 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-cached-property all 1.3.1-1 [7568 B]
    + Get:11 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-six all 1.11.0-2 [11.3 kB]
    + Get:12 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 libsecret-common all 0.18.6-1 [4452 B]
    + Get:13 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 libsecret-1-0 amd64 0.18.6-1 [94.6 kB]
    + Get:14 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 golang-docker-credential-helpers amd64 0.5.0-2 [444 kB]
    + Get:15 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-dockerpycreds all 0.2.1-1 [4138 B]
    + Get:16 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-certifi all 2018.1.18-2 [144 kB]
    + Get:17 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-chardet all 3.0.4-1 [80.3 kB]
    + Get:18 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-idna all 2.6-1 [32.4 kB]
    + Get:19 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python-urllib3 all 1.22-1ubuntu0.18.04.1 [85.9 kB]
    + Get:20 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python-requests all 2.18.4-2ubuntu0.1 [58.5 kB]
    + Get:21 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-websocket all 0.44.0-0ubuntu2 [30.7 kB]
    + Get:22 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-ipaddress all 1.0.17-1 [18.2 kB]
    + Get:23 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-docker all 2.5.1-1 [69.0 kB]
    + Get:24 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-dockerpty all 0.4.1-1 [10.8 kB]
    + Get:25 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-docopt all 0.6.2-1build1 [25.6 kB]
    + Get:26 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-enum34 all 1.1.6-2 [34.8 kB]
    + Get:27 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-functools32 all 3.2.3.2-3 [10.8 kB]
    + Get:28 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-funcsigs all 1.0.2-4 [13.5 kB]
    + Get:29 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-pbr all 3.1.1-3ubuntu3 [53.7 kB]
    + Get:30 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-mock all 2.0.0-3 [47.4 kB]
    + Get:31 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-jsonschema all 2.6.0-2 [31.5 kB]
    + Get:32 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 python-texttable all 0.9.1-1 [8160 B]
    + Get:33 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-yaml amd64 3.12-1build2 [115 kB]
    + Get:34 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/universe amd64 docker-compose all 1.17.1-2 [76.3 kB]
    + Get:35 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-asn1crypto all 0.24.0-1 [72.7 kB]
    + Get:36 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-cffi-backend amd64 1.11.5-1 [63.4 kB]
    + Get:37 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python-cryptography amd64 2.1.4-1ubuntu1.3 [221 kB]
    + Get:38 http://us-east-1.ec2.archive.ubuntu.com/ubuntu bionic/main amd64 python-openssl all 17.5.0-1ubuntu1 [41.3 kB]
    + Fetched 6014 kB in 0s (27.4 MB/s)         
    + Extracting templates from packages: 100%
    + Selecting previously unselected package libpython2.7-minimal:amd64.
    + (Reading database ... 111722 files and directories currently installed.)
    + Preparing to unpack .../0-libpython2.7-minimal_2.7.17-1~18.04_amd64.deb ...
    + Unpacking libpython2.7-minimal:amd64 (2.7.17-1~18.04) ...
    + Selecting previously unselected package python2.7-minimal.
    + Preparing to unpack .../1-python2.7-minimal_2.7.17-1~18.04_amd64.deb ...
    + Unpacking python2.7-minimal (2.7.17-1~18.04) ...
    + Selecting previously unselected package python-minimal.
    + Preparing to unpack .../2-python-minimal_2.7.15~rc1-1_amd64.deb ...
    + Unpacking python-minimal (2.7.15~rc1-1) ...
    + Selecting previously unselected package libpython2.7-stdlib:amd64.
    + Preparing to unpack .../3-libpython2.7-stdlib_2.7.17-1~18.04_amd64.deb ...
    + Unpacking libpython2.7-stdlib:amd64 (2.7.17-1~18.04) ...
    + Selecting previously unselected package python2.7.
    + Preparing to unpack .../4-python2.7_2.7.17-1~18.04_amd64.deb ...
    + Unpacking python2.7 (2.7.17-1~18.04) ...
    + Selecting previously unselected package libpython-stdlib:amd64.
    + Preparing to unpack .../5-libpython-stdlib_2.7.15~rc1-1_amd64.deb ...
    + Unpacking libpython-stdlib:amd64 (2.7.15~rc1-1) ...
    + Setting up libpython2.7-minimal:amd64 (2.7.17-1~18.04) ...
    + Setting up python2.7-minimal (2.7.17-1~18.04) ...
    + Linking and byte-compiling packages for runtime python2.7...
    + Setting up python-minimal (2.7.15~rc1-1) ...
    + Selecting previously unselected package python.
    + (Reading database ... 112470 files and directories currently installed.)
    + Preparing to unpack .../00-python_2.7.15~rc1-1_amd64.deb ...
    + Unpacking python (2.7.15~rc1-1) ...
    + Selecting previously unselected package python-backports.ssl-match-hostname.
    + Preparing to unpack .../01-python-backports.ssl-match-hostname_3.5.0.1-1_all.deb ...
    + Unpacking python-backports.ssl-match-hostname (3.5.0.1-1) ...
    + Selecting previously unselected package python-pkg-resources.
    + Preparing to unpack .../02-python-pkg-resources_39.0.1-2_all.deb ...
    + Unpacking python-pkg-resources (39.0.1-2) ...
    + Selecting previously unselected package python-cached-property.
    + Preparing to unpack .../03-python-cached-property_1.3.1-1_all.deb ...
    + Unpacking python-cached-property (1.3.1-1) ...
    + Selecting previously unselected package python-six.
    + Preparing to unpack .../04-python-six_1.11.0-2_all.deb ...
    + Unpacking python-six (1.11.0-2) ...
    + Selecting previously unselected package libsecret-common.
    + Preparing to unpack .../05-libsecret-common_0.18.6-1_all.deb ...
    + Unpacking libsecret-common (0.18.6-1) ...
    + Selecting previously unselected package libsecret-1-0:amd64.
    + Preparing to unpack .../06-libsecret-1-0_0.18.6-1_amd64.deb ...
    + Unpacking libsecret-1-0:amd64 (0.18.6-1) ...
    + Selecting previously unselected package golang-docker-credential-helpers.
    + Preparing to unpack .../07-golang-docker-credential-helpers_0.5.0-2_amd64.deb ...
    + Unpacking golang-docker-credential-helpers (0.5.0-2) ...
    + Selecting previously unselected package python-dockerpycreds.
    + Preparing to unpack .../08-python-dockerpycreds_0.2.1-1_all.deb ...
    + Unpacking python-dockerpycreds (0.2.1-1) ...
    + Selecting previously unselected package python-certifi.
    + Preparing to unpack .../09-python-certifi_2018.1.18-2_all.deb ...
    + Unpacking python-certifi (2018.1.18-2) ...
    + Selecting previously unselected package python-chardet.
    + Preparing to unpack .../10-python-chardet_3.0.4-1_all.deb ...
    + Unpacking python-chardet (3.0.4-1) ...
    + Selecting previously unselected package python-idna.
    + Preparing to unpack .../11-python-idna_2.6-1_all.deb ...
    + Unpacking python-idna (2.6-1) ...
    + Selecting previously unselected package python-urllib3.
    + Preparing to unpack .../12-python-urllib3_1.22-1ubuntu0.18.04.1_all.deb ...
    + Unpacking python-urllib3 (1.22-1ubuntu0.18.04.1) ...
    + Selecting previously unselected package python-requests.
    + Preparing to unpack .../13-python-requests_2.18.4-2ubuntu0.1_all.deb ...
    + Unpacking python-requests (2.18.4-2ubuntu0.1) ...
    + Selecting previously unselected package python-websocket.
    + Preparing to unpack .../14-python-websocket_0.44.0-0ubuntu2_all.deb ...
    + Unpacking python-websocket (0.44.0-0ubuntu2) ...
    + Selecting previously unselected package python-ipaddress.
    + Preparing to unpack .../15-python-ipaddress_1.0.17-1_all.deb ...
    + Unpacking python-ipaddress (1.0.17-1) ...
    + Selecting previously unselected package python-docker.
    + Preparing to unpack .../16-python-docker_2.5.1-1_all.deb ...
    + Unpacking python-docker (2.5.1-1) ...
    + Selecting previously unselected package python-dockerpty.
    + Preparing to unpack .../17-python-dockerpty_0.4.1-1_all.deb ...
    + Unpacking python-dockerpty (0.4.1-1) ...
    + Selecting previously unselected package python-docopt.
    + Preparing to unpack .../18-python-docopt_0.6.2-1build1_all.deb ...
    + Unpacking python-docopt (0.6.2-1build1) ...
    + Selecting previously unselected package python-enum34.
    + Preparing to unpack .../19-python-enum34_1.1.6-2_all.deb ...
    + Unpacking python-enum34 (1.1.6-2) ...
    + Selecting previously unselected package python-functools32.
    + Preparing to unpack .../20-python-functools32_3.2.3.2-3_all.deb ...
    + Unpacking python-functools32 (3.2.3.2-3) ...
    + Selecting previously unselected package python-funcsigs.
    + Preparing to unpack .../21-python-funcsigs_1.0.2-4_all.deb ...
    + Unpacking python-funcsigs (1.0.2-4) ...
    + Selecting previously unselected package python-pbr.
    + Preparing to unpack .../22-python-pbr_3.1.1-3ubuntu3_all.deb ...
    + Unpacking python-pbr (3.1.1-3ubuntu3) ...
    + Selecting previously unselected package python-mock.
    + Preparing to unpack .../23-python-mock_2.0.0-3_all.deb ...
    + Unpacking python-mock (2.0.0-3) ...
    + Selecting previously unselected package python-jsonschema.
    + Preparing to unpack .../24-python-jsonschema_2.6.0-2_all.deb ...
    + Unpacking python-jsonschema (2.6.0-2) ...
    + Selecting previously unselected package python-texttable.
    + Preparing to unpack .../25-python-texttable_0.9.1-1_all.deb ...
    + Unpacking python-texttable (0.9.1-1) ...
    + Selecting previously unselected package python-yaml.
    + Preparing to unpack .../26-python-yaml_3.12-1build2_amd64.deb ...
    + Unpacking python-yaml (3.12-1build2) ...
    + Selecting previously unselected package docker-compose.
    + Preparing to unpack .../27-docker-compose_1.17.1-2_all.deb ...
    + Unpacking docker-compose (1.17.1-2) ...
    + Selecting previously unselected package python-asn1crypto.
    + Preparing to unpack .../28-python-asn1crypto_0.24.0-1_all.deb ...
    + Unpacking python-asn1crypto (0.24.0-1) ...
    + Selecting previously unselected package python-cffi-backend.
    + Preparing to unpack .../29-python-cffi-backend_1.11.5-1_amd64.deb ...
    + Unpacking python-cffi-backend (1.11.5-1) ...
    + Selecting previously unselected package python-cryptography.
    + Preparing to unpack .../30-python-cryptography_2.1.4-1ubuntu1.3_amd64.deb ...
    + Unpacking python-cryptography (2.1.4-1ubuntu1.3) ...
    + Selecting previously unselected package python-openssl.
    + Preparing to unpack .../31-python-openssl_17.5.0-1ubuntu1_all.deb ...
    + Unpacking python-openssl (17.5.0-1ubuntu1) ...
    + Setting up libsecret-common (0.18.6-1) ...
    + Setting up libsecret-1-0:amd64 (0.18.6-1) ...
    + Setting up libpython2.7-stdlib:amd64 (2.7.17-1~18.04) ...
    + Setting up python2.7 (2.7.17-1~18.04) ...
    + Setting up libpython-stdlib:amd64 (2.7.15~rc1-1) ...
    + Setting up golang-docker-credential-helpers (0.5.0-2) ...
    + Setting up python (2.7.15~rc1-1) ...
    + Setting up python-idna (2.6-1) ...
    + Setting up python-texttable (0.9.1-1) ...
    + Setting up python-functools32 (3.2.3.2-3) ...
    + Setting up python-yaml (3.12-1build2) ...
    + Setting up python-asn1crypto (0.24.0-1) ...
    + Setting up python-certifi (2018.1.18-2) ...
    + Setting up python-pkg-resources (39.0.1-2) ...
    + Setting up python-backports.ssl-match-hostname (3.5.0.1-1) ...
    + Setting up python-cffi-backend (1.11.5-1) ...
    + Setting up python-six (1.11.0-2) ...
    + Setting up python-dockerpty (0.4.1-1) ...
    + Setting up python-pbr (3.1.1-3ubuntu3) ...
    + update-alternatives: using /usr/bin/python2-pbr to provide /usr/bin/pbr (pbr) in auto mode
    + Setting up python-enum34 (1.1.6-2) ...
    + Setting up python-funcsigs (1.0.2-4) ...
    + Setting up python-docopt (0.6.2-1build1) ...
    + Setting up python-ipaddress (1.0.17-1) ...
    + Setting up python-cached-property (1.3.1-1) ...
    + Setting up python-urllib3 (1.22-1ubuntu0.18.04.1) ...
    + Setting up python-chardet (3.0.4-1) ...
    + Setting up python-dockerpycreds (0.2.1-1) ...
    + Setting up python-mock (2.0.0-3) ...
    + Setting up python-websocket (0.44.0-0ubuntu2) ...
    + update-alternatives: using /usr/bin/python2-wsdump to provide /usr/bin/wsdump (wsdump) in auto mode
    + Setting up python-cryptography (2.1.4-1ubuntu1.3) ...
    + Setting up python-requests (2.18.4-2ubuntu0.1) ...
    + Setting up python-jsonschema (2.6.0-2) ...
    + update-alternatives: using /usr/bin/python2-jsonschema to provide /usr/bin/jsonschema (jsonschema) in auto mode
    + Setting up python-openssl (17.5.0-1ubuntu1) ...
    + Setting up python-docker (2.5.1-1) ...
    + Setting up docker-compose (1.17.1-2) ...
    + Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
    + Processing triggers for mime-support (3.60ubuntu1) ...
    + Processing triggers for libc-bin (2.27-3ubuntu1) ...
    +
    + +

    [Amazon Linux]

    +
     $ sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    +   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    +                                  Dload  Upload   Total   Spent    Left  Speed
    + 100   152  100   152    0     0   4252      0 --:--:-- --:--:-- --:--:--  4342
    + 100   664  100   664    0     0  16586      0 --:--:-- --:--:-- --:--:-- 16586
    + 100 23.5M  100 23.5M    0     0  84.2M      0 --:--:-- --:--:-- --:--:-- 84.2M
    +    
    + $ sudo chmod +x /usr/local/bin/docker-compose
    + $ docker-compose version
    +
    + +

    [Amazon Linux] + Instalar o git:

    +
     $ sudo yum install -y git
    +
    +
  2. +
  3. [T1] Clonar este repositório e navegar ate a pasta /fiap/bdt/microservices: +
     $ git clone https://github.com/josecastillolema/fiap.git
    + $ cd fiap/bdt/microservices/compose
    + $ pwd
    + /home/ubuntu/fiap/bdt/microservices/compose
    + $ ls
    + api_v1  api_v2  api_v3  docker-compose.yml  mongo  mysql
    +
    +
    +
  4. +
  5. [T1] Mostrar o conteúdo do arquivo docker-compose.yml. São definidos dois serviços: +
      +
    • api: a API escrita em Python, que tem dependência com (consulta) o serviço mysql
    • +
    • mysql: o servidor MySQL, com mapeamento de portas (porta 3306), persistência de dados (pasta /var/lib/mysql) e algumas variáveis de entorno +
       $ cat docker-compose.yml 
      + version: '2'
      + services:
      +api:
      +  build: api_v2/.
      +  ports:
      +    - "4000:5000"
      +  depends_on:
      +    - mysql
      +mysql:
      +  build: mysql/.
      +  ports:
      +    - "3306:3306"
      +  volumes:
      +    - /var/lib/mysql
      +  environment:
      +     MYSQL_ROOT_PASSWORD: senhaFiap
      +     MYSQL_DATABASE: fiapdb
      +
      +
    • +
    +
  6. +
+ +

Uso

+ +
    +
  1. [T1] Criar os serviços definidos no arquivo docker-compose.yml: +
     $ docker-compose up
    + Creating network "compose_default" with the default driver
    + Building mysql
    + Step 1/3 : FROM mysql
    +  ---> 9228ee8bac7a
    + Step 2/3 : MAINTAINER Jose Castillo <profjose.lema@fiap.com.br>
    +  ---> Running in 5f85965fa52d
    + Removing intermediate container 5f85965fa52d
    +  ---> 1035c57e599d
    + Step 3/3 : ADD ./aso.sql /docker-entrypoint-initdb.d
    +  ---> a809a9c5ca56
    + Successfully built a809a9c5ca56
    + Successfully tagged compose_mysql:latest
    + WARNING: Image for service mysql was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
    + Building api
    + Step 1/8 : FROM python:2
    +  ---> 154f4db0c875
    + Step 2/8 : MAINTAINER Jose Castillo <profjose.lema@fiap.com.br>
    +  ---> Using cache
    +  ---> defda7283ddf
    + Step 3/8 : ADD api.py requirements.txt /
    +  ---> abb5e8e662ca
    + Step 4/8 : RUN pip install -r ./requirements.txt
    +  ---> Running in ebd156421186
    + DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
    + Collecting flask
    +   Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
    + Collecting flask-mysql
    +   Downloading Flask_MySQL-1.5.1-py2.py3-none-any.whl (3.8 kB)
    + Collecting flask-cors
    +   Downloading Flask_Cors-3.0.8-py2.py3-none-any.whl (14 kB)
    + Collecting cryptography
    +   Downloading cryptography-2.9-cp27-cp27mu-manylinux2010_x86_64.whl (2.7 MB)
    + Collecting click>=5.1
    +   Downloading click-7.1.1-py2.py3-none-any.whl (82 kB)
    + Collecting itsdangerous>=0.24
    +   Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
    + Collecting Werkzeug>=0.15
    +   Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
    + Collecting Jinja2>=2.10.1
    +   Downloading Jinja2-2.11.1-py2.py3-none-any.whl (126 kB)
    + Collecting PyMySQL
    +   Downloading PyMySQL-0.9.3-py2.py3-none-any.whl (47 kB)
    + Requirement already satisfied: Six in /usr/local/lib/python2.7/site-packages (from flask-cors->-r ./requirements.txt (line 3)) (1.14.0)
    + Collecting ipaddress; python_version < "3"
    +   Downloading ipaddress-1.0.23-py2.py3-none-any.whl (18 kB)
    + Collecting cffi!=1.11.3,>=1.8
    +   Downloading cffi-1.14.0-cp27-cp27mu-manylinux1_x86_64.whl (387 kB)
    + Collecting enum34; python_version < "3"
    +   Downloading enum34-1.1.10-py2-none-any.whl (11 kB)
    + Collecting MarkupSafe>=0.23
    +   Downloading MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl (24 kB)
    + Collecting pycparser
    +   Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
    + Installing collected packages: click, itsdangerous, Werkzeug, MarkupSafe, Jinja2, flask, PyMySQL, flask-mysql, flask-cors, ipaddress, pycparser, cffi, enum34, cryptography
    + Successfully installed Jinja2-2.11.1 MarkupSafe-1.1.1 PyMySQL-0.9.3 Werkzeug-1.0.1 cffi-1.14.0 click-7.1.1 cryptography-2.9 enum34-1.1.10 flask-1.1.2 flask-cors-3.0.8 flask-mysql-1.5.1 ipaddress-1.0.23 itsdangerous-1.1.0 pycparser-2.20
    + Removing intermediate container ebd156421186
    +  ---> 1897edcddbb5
    + Step 5/8 : ENV PORT=5000
    +  ---> Running in 8dd8bb035819
    + Removing intermediate container 8dd8bb035819
    +  ---> 3b92b6fb59a5
    + Step 6/8 : EXPOSE $PORT
    +  ---> Running in 99d862666779
    + Removing intermediate container 99d862666779
    +  ---> 05c77804ed9d
    + Step 7/8 : HEALTHCHECK CMD curl --fail http://localhost:$PORT || exit 1
    +  ---> Running in ecbcbde1d83c
    + Removing intermediate container ecbcbde1d83c
    +  ---> 178843362cde
    + Step 8/8 : CMD [ "./api.py" ]
    +  ---> Running in bfe14e880a4b
    + Removing intermediate container bfe14e880a4b
    +  ---> e401dc1035d7
    + Successfully built e401dc1035d7
    + Successfully tagged compose_api:latest
    + WARNING: Image for service api was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
    + Creating compose_mysql_1 ... 
    + Creating compose_mysql_1 ... done
    + Creating compose_api_1 ... 
    + Creating compose_api_1 ... done
    + Attaching to compose_mysql_1, compose_api_1
    + mysql_1  | 2020-04-08 19:52:56+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    + mysql_1  | 2020-04-08 19:52:57+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
    + mysql_1  | 2020-04-08 19:52:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
    + mysql_1  | 2020-04-08 19:52:57+00:00 [Note] [Entrypoint]: Initializing database files
    + mysql_1  | 2020-04-08T19:52:57.639740Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    + mysql_1  | 2020-04-08T19:52:57.639830Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 41
    + api_1    |  * Serving Flask app "api" (lazy loading)
    + api_1    |  * Environment: production
    + api_1    |    WARNING: This is a development server. Do not use it in a production deployment.
    + api_1    |    Use a production WSGI server instead.
    + api_1    |  * Debug mode: on
    + api_1    |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
    + api_1    |  * Restarting with stat
    + api_1    |  * Debugger is active!
    + api_1    |  * Debugger PIN: 463-518-758
    + mysql_1  | 2020-04-08T19:53:03.024229Z 5 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
    + mysql_1  | 2020-04-08 19:53:08+00:00 [Note] [Entrypoint]: Database files initialized
    + mysql_1  | 2020-04-08 19:53:08+00:00 [Note] [Entrypoint]: Starting temporary server
    + mysql_1  | 2020-04-08T19:53:08.721880Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    + mysql_1  | 2020-04-08T19:53:08.722007Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 91
    + mysql_1  | 2020-04-08T19:53:09.446603Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    + mysql_1  | 2020-04-08T19:53:09.457240Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    + mysql_1  | 2020-04-08T19:53:09.478577Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server - GPL.
    + mysql_1  | 2020-04-08 19:53:09+00:00 [Note] [Entrypoint]: Temporary server started.
    + mysql_1  | 2020-04-08T19:53:09.527830Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock'
    + mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
    + mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
    + mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
    + mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it.
    + mysql_1  | 2020-04-08 19:53:13+00:00 [Note] [Entrypoint]: Creating database fiapdb
    + mysql_1  | 
    + mysql_1  | 2020-04-08 19:53:13+00:00 [Note] [Entrypoint]: /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/aso.sql
    + mysql_1  | 
    + mysql_1  | 
    + mysql_1  | 2020-04-08 19:53:14+00:00 [Note] [Entrypoint]: Stopping temporary server
    + mysql_1  | 2020-04-08T19:53:14.140552Z 12 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.19).
    + mysql_1  | 2020-04-08T19:53:15.777586Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.
    + mysql_1  | 2020-04-08 19:53:16+00:00 [Note] [Entrypoint]: Temporary server stopped
    + mysql_1  | 
    + mysql_1  | 2020-04-08 19:53:16+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
    + mysql_1  | 
    + mysql_1  | 2020-04-08T19:53:16.482021Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
    + mysql_1  | 2020-04-08T19:53:16.482148Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.19) starting as process 1
    + mysql_1  | 2020-04-08T19:53:17.150498Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
    + mysql_1  | 2020-04-08T19:53:17.159715Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
    + mysql_1  | 2020-04-08T19:53:17.180954Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
    + mysql_1  | 2020-04-08T19:53:17.291602Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
    +
    +
  2. +
  3. +

    [T1] (Opcional / Alternativa ao passo 4)

    + +

    O comando anterior pode ser executado com a opção -d. De esta forma os containers são executados no background, e não será necessário usar dois terminais. Porém, temos menos visibilidade no que está acontecendo nos containers:

    +
     $ docker-compose up -d
    + Creating network "compose_default" with the default driver
    + Creating compose_mysql_1 ... 
    + Creating compose_mysql_1 ... done
    + Creating compose_api_1 ... 
    + Creating compose_api_1 ... done
    +
    +
  4. +
+ +

Validação

+ +
    +
  1. [T2] Em um segundo terminal, confirmar que os serviços do Docker Compose foram criados corretamente. E necessário navegar ate pasta que contém o arquivo docker-compose.yml. +
     $ cd fiap/bdt/microservices/compose/
    + $ pwd
    + /home/ubuntu/fiap/bdt/microservices/compose
    + $ docker-compose ps
    +      Name                   Command             State                 Ports              
    + -----------------------------------------------------------------------------------------
    + compose_api_1     ./api.py                      Up      0.0.0.0:4000->5000/tcp           
    + compose_mysql_1   docker-entrypoint.sh mysqld   Up      0.0.0.0:3306->3306/tcp, 33060/tcp
    +
    +
  2. +
  3. [T2] Confirmar que os containers foram criados corretamente: +
     $ docker ps
    + CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                               NAMES
    + 6d7277694bc3        compose_api         "./api.py"               2 minutes ago       Up About a minute (healthy)   0.0.0.0:4000->5000/tcp              compose_api_1
    + 349228f10355        compose_mysql       "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes                  0.0.0.0:3306->3306/tcp, 33060/tcp   compose_mysql_1
    +
    +
  4. +
  5. [T2] Testar a API: +
     $ curl localhost:4000
    + Benvido a API FIAP!
    +
    +
  6. +
  7. [T2] Testar a conexão da API com o banco de dados: +
     $ curl localhost:4000/getDados
    + [{"id": 1234, "name": "Jose Castillo Lema"}]
    +
    +
  8. +
  9. [T2] Conferir a configuração de DNS, usando o ID do container compose_api obtido no passo 7: +
    $ docker exec 6d7277694bc3 ping -c 3 mysql
    +PING mysql (172.18.0.2) 56(84) bytes of data.
    +64 bytes from compose_mysql_1.compose_default (172.18.0.2): icmp_seq=1 ttl=64 time=0.073 ms
    +64 bytes from compose_mysql_1.compose_default (172.18.0.2): icmp_seq=2 ttl=64 time=0.070 ms
    +64 bytes from compose_mysql_1.compose_default (172.18.0.2): icmp_seq=3 ttl=64 time=0.072 ms
    +
    +--- mysql ping statistics ---
    +3 packets transmitted, 3 received, 0% packet loss, time 35ms
    +rtt min/avg/max/mdev = 0.070/0.071/0.073/0.009 ms
    +
    +
  10. +
+ +

Clean-up

+ +
    +
  1. [T2] Remover os serviços (e os containers): +
    $ docker-compose down
    +Stopping compose_api_1   ... done
    +Stopping compose_mysql_1 ... done
    +Removing compose_api_1   ... done
    +Removing compose_mysql_1 ... done
    +Removing network compose_default
    +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers4-docker-swarm/index.html b/docs/containers4-docker-swarm/index.html new file mode 100644 index 0000000000..93c1818345 --- /dev/null +++ b/docs/containers4-docker-swarm/index.html @@ -0,0 +1,969 @@ + + + + + + +Containers series IV: Docker Swarm - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 4 - Docker Swarm

+ +

Orquestrando containers

+

Docker Swarm permite orquestrar containers em um cluster formado por vários servidores. De esta forma conseguimos garantir as seguintes propriedades nos containers gerenciados pelo orquestrador:

+
    +
  • tolerância a falhas: se um dos servidores do cluster cair, o container automaticamente será iniciado em outro servidor do cluster
  • +
  • alta disponibilidade: várias réplicas de cada container podem ser executadas em vários servidores do cluster
  • +
  • escalabilidade: o número de réplicas de cada container pode ser aumentado a qualquer momento em funçao da demanda
  • +
+ +

Vamos trabalhar com duas máquinas virtuais (T1 e T2). Se elas tiver rodando na nuvem, devem pertencer ao mesmo security group (ou ter um security group em común).

+ +

Requisitos

+
    +
  • 2 VMs Ubuntu 18.04 ou Amazon Linux com Docker instalado com no mínimo 2 GB de memória cada (na AWS usar flavor t2.small ou maior)
  • +
  • As duas VMs devem pertencer ao mesmo security group (ou ter um security group em común). Se nao for suficiente, liberar a porta 2377 no security group da VM que for ser manager do cluster. Pode usar o comando telnet para testar a comunicaçao (telnet $ip $porta). Um exemplo de security group para o manager: +
  • +
+ +

Criação do cluster

+ +
    +
  1. [T1] Inicialização do manager: +
     $ docker swarm init
    + Swarm initialized: current node (1y4bix4oby6nq2jxx5ft4rhd0) is now a manager.
    +
    + To add a worker to this swarm, run the following command:
    +
    +     docker swarm join --token SWMTKN-1-5it2k13vtptja3tl2xpgjywr856a4r7siuve20r2ev9h98gfrj-498uqdu6x8o74b816orz6s5gn 172.31.47.198:2377
    +
    + To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    +
    +
  2. +
  3. [T2] Na segunda maquina virtual, inicialização do worker: +
     $ docker swarm join --token SWMTKN-1-5it2k13vtptja3tl2xpgjywr856a4r7siuve20r2ev9h98gfrj-498uqdu6x8o74b816orz6s5gn 172.31.47.198:2377
    + This node joined a swarm as a worker.
    +
    +
  4. +
  5. [T1] Listar os servidores que fazem parte do cluster Docker Swarm desde o manager: +
     $ docker node ls
    + ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    + 4hx9zm7docinufxy1mm62yynm     ip-172-31-32-255    Ready               Active                                  19.03.6
    + 1y4bix4oby6nq2jxx5ft4rhd0 *   ip-172-31-47-198    Ready               Active              Leader              19.03.6
    +
    +
  6. +
  7. [T2] Desde o worker não é possível executar nenhum comando do Docker Swarm, p.ex.: +
     $ docker node ls
    + Error response from daemon: This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager.
    +
    +
  8. +
+ +

Uso

+ +
    +
  1. [T1] Navegar até a pasta fiap/bdt/microservices/swarm/v1 de este repositório git: +
     $ cd fiap/aso/microservices/swarm/v1
    + $ pwd
    + /home/ubuntu/fiap/aso/microservices/swarm/v1
    + $ ls
    + docker-compose.yaml
    +
    +
  2. +
  3. [T1] Mostrar o conteúdo do arquivo docker-compose.yaml. São definidos dois serviços: +
      +
    • api: a API escrita em Python, que tem dependência (consulta) o serviço mysql, com 3 réplicas
    • +
    • mysql: o servidor MySQL, com mapeamento de portas (porta 3306), persistência de dados (pasta /var/lib/mysql) e algumas variáveis de entorno, com 1 réplica
    • +
    + +
     $ cat docker-compose.yaml 
    + version: '3'
    +
    + services:
    +
    +   api:
    +     image: josecastillolema/api
    +     ports:
    +       - "3000:5000"
    +     depends_on:
    +       - mysql
    +     deploy:
    +       replicas: 3
    +       # update_config:
    +       #   parallelism: 1
    +       #   delay: 10is
    +       mode: replicated
    +       restart_policy:
    +         condition: on-failure
    +
    +   mysql:
    +     image: josecastillolema/mysql
    +     ports:
    +       - "3306:3306"
    +     volumes:
    +       - db-data:/var/lib/mysql
    +     environment:
    +       MYSQL_USER: root
    +       MYSQL_DATABASE: fiapdb
    +       MYSQL_ROOT_PASSWORD: senhaFiap
    +     deploy:
    +       replicas: 1
    +       # resources:
    +       #   limits:
    +       #     cpus: "0.1"
    +       #     memory: 50M
    +       restart_policy:
    +         condition: on-failure
    +
    + volumes:
    +   db-data:
    +
    +
  4. +
  5. [T1] Criar o stack definido no arquivo docker-compose.yml: +
     $ docker stack deploy -c docker-compose.yaml stackFiap
    + Creating network stackFiap_default
    + Creating service stackFiap_api
    + Creating service stackFiap_mysql
    +
    +
  6. +
  7. [T1] Conferir que o stack foi criado corretamente: +
     $ docker stack ls
    + NAME                SERVICES            ORCHESTRATOR
    + stackFiap           2                   Swarm
    +
    +
  8. +
  9. [T1] Conferir que os serviços foram criados corretamente: +
     $ docker service ls
    + ID                  NAME                MODE                REPLICAS            IMAGE                           PORTS
    + vlh0cjv5nd65        stackFiap_api       replicated          3/3                 josecastillolema/api:latest     *:3000->5000/tcp
    + tmns8lwyrb9f        stackFiap_mysql     replicated          1/1                 josecastillolema/mysql:latest   *:3306->3306/tcp
    +
    +
  10. +
  11. [T1] Testar a API: +
    $ curl localhost:3000
    +Benvido a API FIAP!
    +
    +
  12. +
  13. [T1] Conferir quais containers foram criados na primeira máquina virtual (em este caso o banco de dados e uma instância da API): +
    $ docker ps
    +CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                   PORTS                 NAMES
    +44cfaf700b20        josecastillolema/mysql:latest   "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes             3306/tcp, 33060/tcp   stackFiap_mysql.1.wr5ia70abxco05ypimayagrm0
    +2239ae187e86        josecastillolema/api:latest     "./api.py"               2 minutes ago       Up 2 minutes (healthy)   5000/tcp              stackFiap_api.1.qedwp50z4l5dhskg66txj91d7
    +
    +
  14. +
  15. [T2] Conferir quais containers foram criados na segunda máquina virtual (em este caso duas instâncias da API): +
    $ docker ps
    +CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                   PORTS               NAMES
    +48fdb1fb8cb7        josecastillolema/api:latest   "./api.py"          2 minutes ago       Up 2 minutes (healthy)   5000/tcp            stackFiap_api.3.rpl9ggawgeo7edietartr7ca0
    +3201f87fc015        josecastillolema/api:latest   "./api.py"          2 minutes ago       Up 2 minutes (healthy)   5000/tcp            stackFiap_api.2.rt2zby2s1s8igdzysd3gbmv9w
    +
    +
  16. +
  17. [T1] Aumentar o numero de replicas da API (scale out): +
    $ docker service scale stackFiap_api=5
    +stackFiap_api scaled to 5
    +overall progress: 5 out of 5 tasks 
    +1/5: running   [==================================================>] 
    +2/5: running   [==================================================>] 
    +3/5: running   [==================================================>] 
    +4/5: running   [==================================================>] 
    +5/5: running   [==================================================>]  
    +verify: Service converged
    +
    +
  18. +
  19. [T1] Confirmar o novo numero de replicas: +
    $ docker service ls
    +ID                  NAME                MODE                REPLICAS            IMAGE                           PORTS
    +vlh0cjv5nd65        stackFiap_api       replicated          5/5                 josecastillolema/api:latest     *:3000->5000/tcp
    +tmns8lwyrb9f        stackFiap_mysql     replicated          1/1                 josecastillolema/mysql:latest   *:3306->3306/tcp
    +
    +
  20. +
  21. [T1] Diminuir o numero de replicas da API (scale in): +
    $ docker service scale stackFiap_api=4
    +stackFiap_api scaled to 4
    +overall progress: 4 out of 4 tasks 
    +1/4: running   [==================================================>] 
    +2/4: running   [==================================================>] 
    +3/4: running   [==================================================>] 
    +4/4: running   [==================================================>] 
    +verify: Service converged 
    +
    +
  22. +
  23. [T1] Vamos desligar o worker (servidor T2). Antes disso, conferir os containers que estão rodando no manager (neste caso, o banco de dados e 2 replicas da API): +
    $ docker ps
    +CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                    PORTS                 NAMES
    +325de1e84b51        josecastillolema/api:latest     "./api.py"               4 minutes ago       Up 4 minutes (healthy)    5000/tcp              stackFiap_api.4.vciwnzaxakavsj2t3p2tlaekc
    +44cfaf700b20        josecastillolema/mysql:latest   "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes             3306/tcp, 33060/tcp   stackFiap_mysql.1.wr5ia70abxco05ypimayagrm0
    +2239ae187e86        josecastillolema/api:latest     "./api.py"               11 minutes ago      Up 11 minutes (healthy)   5000/tcp              stackFiap_api.1.qedwp50z4l5dhskg66txj91d7
    +
    +
  24. +
  25. [T2] Desligar o worker: +
    $ sudo shutdown -h now
    +Connection to ec2-3-85-40-189.compute-1.amazonaws.com closed by remote host.
    +Connection to ec2-3-85-40-189.compute-1.amazonaws.com closed.
    +
    +
  26. +
  27. [T1] Apos uns instantes, confirmar que o worker aparece como down: +
    $ docker node ls
    +ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    +4hx9zm7docinufxy1mm62yynm     ip-172-31-32-255    Down                Active                                  19.03.6
    +1y4bix4oby6nq2jxx5ft4rhd0 *   ip-172-31-47-198    Ready               Active              Leader              19.03.6
    +
    +
  28. +
  29. [T1] Confirmar que os containers que estavam rodando no worker (servidor T2), foram recriados no manager (neste caso, 2 réplicas da API): +
    $ docker ps
    +CONTAINER ID        IMAGE                           COMMAND                  CREATED              STATUS                        PORTS                 NAMES
    +2bbcefe6fc28        josecastillolema/api:latest     "./api.py"               About a minute ago   Up About a minute (healthy)   5000/tcp              stackFiap_api.3.15hrsir7ac5a2eun79wbp6ftf
    +41067e32567d        josecastillolema/api:latest     "./api.py"               About a minute ago   Up About a minute (healthy)   5000/tcp              stackFiap_api.7.ldetjf1ykn7kyaokadcaod0di
    +325de1e84b51        josecastillolema/api:latest     "./api.py"               7 minutes ago        Up 7 minutes (healthy)        5000/tcp              stackFiap_api.4.vciwnzaxakavsj2t3p2tlaekc
    +44cfaf700b20        josecastillolema/mysql:latest   "docker-entrypoint.s…"   14 minutes ago       Up 14 minutes                 3306/tcp, 33060/tcp   stackFiap_mysql.1.wr5ia70abxco05ypimayagrm0
    +2239ae187e86        josecastillolema/api:latest     "./api.py"               15 minutes ago       Up 15 minutes (healthy)       5000/tcp              stackFiap_api.1.qedwp50z4l5dhskg66txj91d7
    +
    +
  30. +
+ +

Clean-up

+ +
    +
  1. [T1] Remover o stack: +
    $ docker stack rm stackFiap
    +Removing service stackFiap_api
    +Removing service stackFiap_mysql
    +Removing network stackFiap_default
    +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers5-k8s-install/index.html b/docs/containers5-k8s-install/index.html new file mode 100644 index 0000000000..1624391600 --- /dev/null +++ b/docs/containers5-k8s-install/index.html @@ -0,0 +1,930 @@ + + + + + + +Containers series V: Kubernetes - Instalação - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 5 - Kubernetes - Instalação

+ +

Orquestrando containers

+

Kubernetes (k8s), da mesma forma que o Docker Swarm, permite orquestrar containers em um cluster formado por vários servidores. De esta forma conseguimos garantir as seguintes propriedades nos containers gerenciados pelo orquestrador:

+
    +
  • tolerância a falhas: se um dos servidores do cluster cair, o container automaticamente será iniciado em outro servidor do cluster
  • +
  • alta disponibilidade: várias réplicas de cada container podem ser executadas em vários servidores do cluster
  • +
  • escalabilidade: o número de réplicas de cada container pode ser aumentado a qualquer momento em funçao da demanda
  • +
+ +

Microk8s é um Kubernetes pequeno, rápido, seguro e com um único nó (all-in-one) que é instalado em praticamente qualquer computador com Linux. Usado para desenvolvimento off-line, criação de protótipos, testes ou uso em uma VM como um k8s pequeno, barato e confiável para CI/CD.

+ +

Pre-reqs

+ +
    +
  • +

    Uma VM com a imagem Ubuntu Linux 18.04

    +
  • +
  • +

    Flavor t2.medium (2 vcpus, 4 GB de memória) ou maior

    +
  • +
+ +

Instalação

+ +
    +
  1. Instalação do microk8s: +
     $ sudo snap install microk8s --classic
    + microk8s v1.18.0 from Canonical✓ installed
    +
    +
  2. +
  3. Ajuste de permissões do usuário ubuntu no grupo microk8s: +
     $ sudo usermod -a -G microk8s ubuntu
    + $ sudo reboot
    +
    +
  4. +
  5. Após o reboot, confirmar que o usuário pertence ao grupo microk8s: +
    $ groups
    +ubuntu adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev microk8s
    +
    +
  6. +
+ +

Validação

+ +
    +
  1. Conferir instalação: +
     $ microk8s.status
    + microk8s is running
    + addons:
    + cilium: disabled
    + dashboard: disabled
    + dns: disabled
    + fluentd: disabled
    + gpu: disabled
    + helm: disabled
    + helm3: disabled
    + ingress: disabled
    + istio: disabled
    + jaeger: disabled
    + knative: disabled
    + kubeflow: disabled
    + linkerd: disabled
    + metallb: disabled
    + metrics-server: disabled
    + prometheus: disabled
    + rbac: disabled
    + registry: disabled
    + storage: disabled
    +
    +
  2. +
  3. Usar o cliente interno do microk8s (microk8s.kubectl): +
     $ microk8s.kubectl get all
    + NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    + service/kubernetes   ClusterIP   10.152.183.1   <none>        443/TCP   4m5s
    +
    +
  4. +
  5. Instalação do cliente externo (kubectl): +
     $ sudo snap install kubectl --classic
    + kubectl 1.18.0 from Canonical✓ installed
    +
    +
  6. +
  7. +

    Configuracão dos parámetros de acesso (URL, credenciais, etc.) do cliente externo:

    + +
     $ microk8s.config > .kube/config
    + $ cat .kube/config 
    + apiVersion: v1
    + clusters:
    + - cluster:
    +     certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURBVENDQWVtZ0F3SUJBZ0lKQUx5UmJTeUd2NjRLTUEwR0NTcUdTSWIzRFFFQkN3VUFNQmN4RlRBVEJnTlYKQkFNTURERXdMakUxTWk0eE9ETXVNVEFlRncweU1EQTBNVFV5TURBek1URmFGdzB5TURBMU1UVXlNREF6TVRGYQpNQmN4RlRBVEJnTlZCQU1NRERFd0xqRTFNaTR4T0RNdU1UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCkFEQ0NBUW9DZ2dFQkFNODM5REltV1VLN2JNMWQ1OVR1SThITnRBbVlOQ2hqSStFa0txa2g5T1lPaWV0c0xjbDIKS2p5Ym5nRTJyOHp4M21YeEtGSmhnZGJxVzNmVHpGOGtxNGNKbVdFc0UxKzFtdFRaRUNFU0lrVmFlK3NUbjMvMwo0VWRYckV3SW5tQjJsMDlCRFNXblRBTHBaVUhnSFRvcUhOQmVzTlVlQ3h6Z0dzUWgranRGSlEzMWp4QnNqQnFNCk1EM1ZNRlFCK2FMUW5pSTM0UTZrNm8zZmR5dTArQlhJNHVYR3hldWFBVzViZStidWlPUlQ3a3hhdnZ4bmNsOE4KTFd0aG4wK2hjKzNEUE1DdXhxT2dra0UvRFZCV2trdklsbHBMeG5RLzU3b1BxUHVFVXRzd1hJeGZRMi9EUTBNdwpzZ1pLT0trNzYrby9nakhmaTNtRjArYTJWaUZPcm9FVTVBTUNBd0VBQWFOUU1FNHdIUVlEVlIwT0JCWUVGUE1LCkMyaXl0QkZxVTM3VU1uRXJHZEYrZnoyeU1COEdBMVVkSXdRWU1CYUFGUE1LQzJpeXRCRnFVMzdVTW5FckdkRisKZnoyeU1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUpRdG5HbGZPVTk5VGdyZgpUNDkxc3hCSUUydVdEVG9Pc3BMVC9hcEFjK1JSdGtlWk1tS1NQNjYzNTFhQnJEamFCem9nblZ6WVNDQWxEU3Y1Cm95bVN3MTBQUms2SGt0QW44YzlFOGFFTHpyOHowZytOVE1sazRDRHNtQTcrN3hpMm1UaEM3bitzMWpXd1Ztd08KUzdRWG05dTIyS2g4MFk4aU1qVHRDdDBTY2I1TFdFVmwyLzRzWHhyQnZiSFBpbllRdjZSdFhvQWxlODFGMmZZLwpjVDg0L0dHNHRJdXd0VlB2b09hS0lKTzZLT1l6a0VzcU81SFdiTnltZ2xpVGxlMEFBLzdEUUprd1c0M0h4clF1CmdoMThrVURtQXpJa2Z0dDV0M1pKVnNJR2xGUnprZXRJK25TVnVYbjhHN0l5NEd5aWdiNmlZcE1EeE9CblhXWG0KbG43L09YZz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
    +     server: https://172.31.47.198:16443
    +   name: microk8s-cluster
    + contexts:
    + - context:
    +     cluster: microk8s-cluster
    +     user: admin
    +   name: microk8s
    + current-context: microk8s
    + kind: Config
    + preferences: {}
    + users:
    + - name: admin
    +   user:
    +     username: admin
    +     password: NldvWW5rZGFzY3I4Tkw4SVY4Y25kV3YrR1lXcnZNek1tc2Z2a2prVStEQT0K\
    +
    +
  8. +
  9. Testar o cliente externo: +
     $ kubectl get all --all-namespaces
    + NAMESPACE   NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    + default     service/kubernetes   ClusterIP   10.152.183.1   <none>        443/TCP   6m46s
    +
    +
  10. +
  11. Habilitar o plugins dns: +
     $ microk8s.enable dns
    + Enabling DNS
    + Applying manifest
    + serviceaccount/coredns created
    + configmap/coredns created
    + deployment.apps/coredns created
    + service/kube-dns created
    + clusterrole.rbac.authorization.k8s.io/coredns created
    + clusterrolebinding.rbac.authorization.k8s.io/coredns created
    + Restarting kubelet
    + DNS is enabled
    + Applying manifest
    + serviceaccount/kubernetes-dashboard created
    + service/kubernetes-dashboard created
    + secret/kubernetes-dashboard-certs created
    + secret/kubernetes-dashboard-csrf created
    + secret/kubernetes-dashboard-key-holder created
    + configmap/kubernetes-dashboard-settings created
    + role.rbac.authorization.k8s.io/kubernetes-dashboard created
    + clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created
    + rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    + clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
    + deployment.apps/kubernetes-dashboard created
    + service/dashboard-metrics-scraper created
    + deployment.apps/dashboard-metrics-scraper created
    + service/monitoring-grafana created
    + service/monitoring-influxdb created
    + service/heapster created
    + deployment.apps/monitoring-influxdb-grafana-v4 created
    + serviceaccount/heapster created
    + clusterrolebinding.rbac.authorization.k8s.io/heapster created
    + configmap/heapster-config created
    + configmap/eventer-config created
    + deployment.apps/heapster-v1.5.2 created
    +
    + If RBAC is not enabled access the dashboard using the default token retrieved with:
    +
    + token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
    + microk8s kubectl -n kube-system describe secret $token
    +
    + In an RBAC enabled setup (microk8s enable RBAC) you need to create a user with restricted
    + permissions as shown in:
    + https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
    +
    +
  12. +
  13. Confirmar que os plugins estão habilitados: +
    $ microk8s.status
    +microk8s is running
    +addons:
    +dashboard: disabled
    +dns: enabled
    +cilium: disabled
    +fluentd: disabled
    +gpu: disabled
    +helm: disabled
    +helm3: disabled
    +ingress: disabled
    +istio: disabled
    +jaeger: disabled
    +knative: disabled
    +kubeflow: disabled
    +linkerd: disabled
    +metallb: disabled
    +metrics-server: disabled
    +prometheus: disabled
    +rbac: disabled
    +registry: disabled
    +storage: disabled
    +
    +
  14. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers6-kompose/index.html b/docs/containers6-kompose/index.html new file mode 100644 index 0000000000..887e2a4968 --- /dev/null +++ b/docs/containers6-kompose/index.html @@ -0,0 +1,884 @@ + + + + + + +Containers series VI: Kompose - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 6 - Kompose

+ +

Kompose permite importar templates do Docker Swarm no Kubernetes.

+ +

Instalação

+ +
    +
  1. +

    Instalação do Kompose

    + +

    a. Obtenção do executável:

    +
     $ curl -L https://github.com/kubernetes/kompose/releases/download/v1.17.0/kompose-linux-amd64 -o kompose
    +   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    +                                  Dload  Upload   Total   Spent    Left  Speed
    + 100   630  100   630    0     0   3500      0 --:--:-- --:--:-- --:--:--  3519
    + 100 50.0M  100 50.0M    0     0  31.3M      0  0:00:01  0:00:01 --:--:-- 37.8M
    +
    +

    b. Ajuste da permissão de escrita:

    +
     $ chmod +x kompose
    +
    +

    c. Mover o executável para a pasta correspondente:

    +
     $ sudo mv ./kompose /usr/local/bin/
    +
    +
  2. +
+ +

Uso

+ +
    +
  1. Clonar este repositório git: +
     $ git clone https://github.com/josecastillolema/fiap
    + Cloning into 'fiap'...
    + remote: Enumerating objects: 121, done.
    + remote: Counting objects: 100% (121/121), done.
    + remote: Compressing objects: 100% (116/116), done.
    + remote: Total 4068 (delta 60), reused 3 (delta 1), pack-reused 3947
    + Receiving objects: 100% (4068/4068), 51.48 MiB | 44.22 MiB/s, done.
    + Resolving deltas: 100% (2059/2059), done.
    +
    +
  2. +
  3. Navegar até a pasta /fiap/bdt/microservices/swarm/v1 de este repositório git: +
     $ cd fiap/bdt/microservices/swarm/v1
    + $ pwd
    + /home/ubuntu/fiap/bdt/microservices/swarm/v1
    + $ ls
    + docker-compose.yaml
    +
    +
  4. +
  5. Conferir o conteúdo do arquivo docker-compose.yml: +
     $ cat docker-compose.yaml 
    + version: '3'
    + services:
    +   api:
    +     image: josecastillolema/api
    +     ports:
    +       - "3000:5000"
    +     depends_on:
    +       - mysql
    +     deploy:
    +       replicas: 3
    +       #update_config:
    +       #  parallelism: 1
    +       #  delay: 10is
    +       mode: replicated
    +       restart_policy:
    +         condition: on-failure
    +   mysql:
    +     image: josecastillolema/mysql
    +     ports:
    +       - "3306:3306"
    +     volumes:
    +       - db-data:/var/lib/mysql
    +     environment:
    +       MYSQL_USER: root
    +       MYSQL_DATABASE: fiapdb
    +       MYSQL_ROOT_PASSWORD: senhaFiap
    +     deploy:
    +       replicas: 1
    +       # resources:
    +       #   limits:
    +       #     cpus: "0.1"
    +       #     memory: 50M
    +       restart_policy:
    +         condition: on-failure
    + volumes:
    +   db-data:
    +
    +
  6. +
  7. Importar o stack definido no arquivo docker-compose.yml dentro do Kubernetes: +
     $ kompose up
    + INFO We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application. If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead. 
    +
    + INFO Deploying application in "default" namespace 
    + INFO Successfully created Service: api            
    + INFO Successfully created Service: mysql          
    + INFO Successfully created Pod: api                
    + INFO Successfully created Pod: mysql              
    + INFO Successfully created PersistentVolumeClaim: db-data of size 100Mi. If your cluster has dynamic storage provisioning, you don't have to do anything. Otherwise you have to create PersistentVolume to make PVC work 
    +
    + Your application has been deployed to Kubernetes. You can run 'kubectl get deployment,svc,pods,pvc' for details.
    +
    +
  8. +
+ +

Validação

+ +
    +
  1. Conferir que o stack foi importado corretamente dentro do Kubernetes: +
     $ kubectl get service/api
    + NAME   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
    + api    ClusterIP   10.152.183.40   <none>        3000/TCP   95s
    +
    +
  2. +
  3. Aguardar os pods ficar em estado running +
     $ kubectl get pod api
    + NAME   READY   STATUS    RESTARTS   AGE
    + api    1/1     Running   0          2m52s
    +
    +
  4. +
  5. Testar a API: +
     $ curl 10.152.183.40:3000
    + Benvido a API FIAP!
    +
    +
  6. +
+ +

Clean-up

+ +
    +
  1. Remover o stack: +
     $ kompose down
    + INFO Deleting application in "default" namespace  
    + INFO Successfully deleted Service: api            
    + INFO Successfully deleted Service: mysql          
    + INFO Successfully deleted Pod: api                
    + INFO Successfully deleted Pod: mysql              
    + INFO Successfully deleted PersistentVolumeClaim: db-data 
    +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/containers7-k8s-use/index.html b/docs/containers7-k8s-use/index.html new file mode 100644 index 0000000000..4cecdd85c8 --- /dev/null +++ b/docs/containers7-k8s-use/index.html @@ -0,0 +1,948 @@ + + + + + + +Containers series VII: Kubernetes - Uso - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes).

+ + + + + +

Lab 7 - Kubernetes - Uso

+ +

Orquestrando containers

+

Existem vários recursos dentro de um cluster Kubernetes:

+
    +
  • pod: conjunto de um ou mais containers
  • +
  • service: cria um endpoint para acessar os pods de uma determinada app
  • +
  • deployment: define as propriedades desejadas de uma app +
      +
    • imagem
    • +
    • variáveis de entorno
    • +
    • volumes
    • +
    • número de réplicas
    • +
    +
  • +
+ +
    +
  1. Navegar até a pasta /fiap/bdt/microservices/kubernetes de este repositório git: +
    + $ cd fiap/bdt/microservices/kubernetes
    + $ pwd
    + /home/ubuntu/fiap/bdt/microservices/kubernetes
    + $ ls
    + api-deployment.yaml  api-service.yaml  mysql-deployment.yaml  mysql-pv.yaml  mysql-service.yaml
    + 
    +
  2. +
  3. Conferir as definições do volume persistente: +
     $ cat mysql-pv.yaml 
    + kind: PersistentVolume
    + apiVersion: v1
    + metadata:
    +   name: mysql-pv-volume
    +   labels:
    +     type: local
    + spec:
    +   storageClassName: manual
    +   capacity:
    +     storage: 1Gi
    +   accessModes:
    +     - ReadWriteOnce
    +   hostPath:
    +     path: "/mnt/data"
    + ---
    + apiVersion: v1
    + kind: PersistentVolumeClaim
    + metadata:
    +   name: mysql-pv-claim
    + spec:
    +   storageClassName: manual
    +   accessModes:
    +     - ReadWriteOnce
    +   resources:
    +     requests:
    +       storage: 1Gi
    +
    +
  4. +
  5. Criar o volume persistente do banco de dados: +
     $ kubectl create -f mysql-pv.yaml
    + persistentvolume/mysql-pv-volume created
    + persistentvolumeclaim/mysql-pv-claim created
    +
    +
  6. +
  7. Conferir as definições do serviço api-deployment: +
     $ cat api-service.yaml
    + apiVersion: v1
    + kind: Service
    + metadata:
    +    name: api-deployment
    + spec:
    +    ports:
    +    - port: 5000
    +      targetPort: 5000
    +    selector:
    +      app: api
    +
    +
  8. +
  9. Criar os serviços: +
     $ kubectl create -f mysql-service.yaml
    + service/mysql created
    + $ kubectl create -f api-service.yaml
    + service/api-deployment created
    +
    +
  10. +
  11. Conferir as definições do deployment api-deployment: +
     $ cat api-deployment.yaml 
    + apiVersion: apps/v1
    + kind: Deployment
    + metadata:
    +    name: api-deployment
    + spec:
    +    replicas: 3
    +    selector:
    +      matchLabels:
    +        app: api
    +    template:
    +      metadata:
    +        labels:
    +          app: api
    +      spec:
    +        containers:
    +        - name: api
    +          image: josecastillolema/api
    +          imagePullPolicy: Always
    +          ports:
    +          - containerPort: 5000
    +
    +
  12. +
  13. Criar os deployments: +
     $ kubectl create -f api-deployment.yaml
    + deployment.apps/api-deployment created
    + $ kubectl create -f mysql-deployment.yaml
    + deployment.apps/mysql created
    +
    +
  14. +
  15. Confirmar a criação dos recursos: +
    $ kubectl get all
    +NAME                                  READY   STATUS    RESTARTS   AGE
    +pod/api-deployment-7bcb964d7c-bmwmx   1/1     Running   0          2m26s
    +pod/api-deployment-7bcb964d7c-n6svh   1/1     Running   0          2m26s
    +pod/api-deployment-7bcb964d7c-tvr6w   1/1     Running   0          2m26s
    +pod/mysql-59f74f847d-rjlxt            1/1     Running   0          2m20s
    +
    +NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    +service/api-deployment   ClusterIP   10.152.183.144   <none>        5000/TCP   2m35s
    +service/kubernetes       ClusterIP   10.152.183.1     <none>        443/TCP    41m
    +service/mysql            ClusterIP   10.152.183.120   <none>        3306/TCP   2m42s
    +
    +NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
    +deployment.apps/api-deployment   3/3     3            3           2m26s
    +deployment.apps/mysql            1/1     1            1           2m20s
    +
    +NAME                                        DESIRED   CURRENT   READY   AGE
    +replicaset.apps/api-deployment-7bcb964d7c   3         3         3       2m26s
    +replicaset.apps/mysql-59f74f847d            1         1         1       2m20s
    +
    +
  16. +
  17. Testar a API: +
     $ curl 10.152.183.144:5000
    + Benvido a API FIAP!
    +
    +
  18. +
  19. Testar a conexão da API com o banco de dados: +
    $ curl 10.152.183.144:5000/getDados
    +[{"id": 1234, "name": "Jose Castillo Lema"}]
    +
    +
  20. +
  21. Escalar o número de replicas da API (scale-up). Para iso, editar o arquivo api-deployment.yaml da seguinte forma: +
    $ cat api-deployment.yaml 
    +apiVersion: apps/v1
    +kind: Deployment
    +metadata:
    +   name: api-deployment
    +spec:
    +   replicas: 5
    +   selector:
    +     matchLabels:
    +       app: api
    +   template:
    +     metadata:
    +       labels:
    +         app: api
    +     spec:
    +       containers:
    +       - name: api
    +         image: josecastillolema/api
    +         imagePullPolicy: Always
    +         ports:
    +         - containerPort: 5000
    +
    +
  22. +
  23. Aplicar os novos parámetros: +
    $ kubectl apply -f api-deployment.yaml
    +Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
    +deployment.apps/api-deployment configured
    +
    +
  24. +
  25. Confirmar o scale-up: +
    $ kubectl get deployment api-deployment
    +NAME             READY   UP-TO-DATE   AVAILABLE   AGE
    +api-deployment   6/6     6            6           12s
    +
    +
  26. +
  27. Remover os recursos criados: +
    $ kubectl delete deployment api-deployment 
    +deployment.apps "api-deployment" deleted
    +
    +$ kubectl delete deployment mysql
    +deployment.apps "mysql" deleted
    +
    +$ kubectl delete service api-deployment
    +service "api-deployment" deleted
    +
    +$ kubectl delete service mysql
    +service "mysql" deleted
    +
    +$ kubectl delete persistentvolumeclaim/mysql-pv-claim
    +persistentvolumeclaim "mysql-pv-claim" deleted
    +
    +$ kubectl delete persistentvolume/mysql-pv-volume 
    +persistentvolume "mysql-pv-volume" deleted
    +
    +
  28. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/dev-inmutable-distros/index.html b/docs/dev-inmutable-distros/index.html new file mode 100644 index 0000000000..337ee0d760 --- /dev/null +++ b/docs/dev-inmutable-distros/index.html @@ -0,0 +1,944 @@ + + + + + + +Development workflows on inmutable distros: rootless setup - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 14 minute read + + + +

+ + +
+ + +
+ + + +
+

Continuation of Samsai notes on Toolbox-based Emacs Flatpak workflow.

+
+ +

I have been using inmutable OS distributions for a while (Fedora Silverblue and Sericea, see my dotfiles). They have the following characteristics:

+
    +
  • System root (baseOS) is mostly immutable
  • +
  • System software installation/updates are handled as images and applied on reboot
  • +
  • For installing desktop applications, Flatpak is the recommended default route
  • +
  • Toolbx can be used to set up containerized Linux environments for developer tools, these containers will mount your home directory and certain important files for GUI programs to work as well
  • +
  • Local user (rootless) installations
  • +
+ +

I personally follow these guidelines when installing new applications:

+
    +
  • If it is a desktop application, prefer Flatpak (and some terminal ones too, i.e.: Neovim and Emacs)
  • +
  • For terminal applications, consider Toolbx or local installations
  • +
  • Do not install desktop applications into Toolbx
  • +
  • Avoid duplication (i.e.: installing the same editors or development environments in several places)
  • +
  • Try to avoid rpm-ostree layering on baseOS as much as possible
  • +
+ +

The development workflow story on inmutable distros hasn’t really been standardized yet, as these distros are quite new. Let’s take a look at several approaches and finally discuss the local (rootless) installation method.

+ +

Layering with rpm-ostree (not a good idea)

+ +

You can also install development tools directly on the inmutable distros install using package layering with rpm-ostree. So, if you want to, you can install your editor, compilers, build tools and linters straight on the Silverblue install.

+ +

However, this isn’t really how most people view you should use Silverblue. The application installation process is a bit more annoying, although experimental support for installing software without rebooting does exist nowadays. It also makes your system install kind of messy due to large numbers of overlayed packages.

+ +

I wouldn’t take this route because while you aren’t strictly speaking losing all of the benefits of inmutable distros, you are making life quite difficult for yourself compared to just using regular Fedora Workstation for instance. You also don’t get the benefits of separating your system from your application environments and expose yourself to more potential breakages.

+ +

Toolbx approaches

+ +

Single toolbx container for all dev activities

+

The easiest way to have everything working in a predictable and simple manner is to create a single Toolbox container, which has all of the development tools for every single project installed within it. This means that the container contains your text editor of choice, compilers, linters, build tools and all of their dependencies.

+ +

The benefit of this approach is that it is extremely close to how you’d work on any other Linux distribution.

+ +

This approach has several drawbacks:

+
    +
  • All software pilled into one environment
  • +
  • Keeping the text editor inside the Toolbox still results in somewhat poor integration with the host system
  • +
  • Install desktop applications into toolbx containers instead of Flatpak applications
  • +
+ +

A toolbx container per language / project

+ +

Another (better IMO) possibility is to separately set up a Toolbox container for each project you work on. This means that all of your project environments are fully separated from each other and all of them only carry tools and dependencies relevant to the project in question.

+ +

Loss of a Toolbox container limits the damage to a particular project and per-project Toolboxes are fairly simple to recreate.

+ +

Drawbacks:

+
    +
  • Certain parts of your development workflow need to be duplicated. You potentially need to install your text editor and all of its required dependencies and tools in each environment.
  • +
  • Keeping the text editor inside the Toolbox still results in somewhat poor integration with the host system.
  • +
+ +

Flatpak approach

+ +

You can install Flatpak SDKs such as the Rust build tools like this:

+
$ flatpak install org.freedesktop.Sdk.Extension.rust-stable
+
+ +

And then load them into a Flatpak editor using an SDK extension flag:

+
$ FLATPAK_ENABLE_SDK_EXT=rust-stable flatpak run com.visualstudio.code
+
+

or just load every SDK available in your local setup:

+
$ FLATPAK_ENABLE_SDK_EXT=* flatpak run com.visualstudio.code
+
+ +

This causes the tools and libraries from that SDK to be made visible to the Flatpak application. There are Flatpak SDKs for a few languages like Java, Rust, Haskell, PHP and Node, but obviously support for all use-cases does not exist. But if you only plan to develop in languages that already have an SDK ready or are willing to learn how to package more SDKs, then this approach is definitely viable for things like Neovim, Emacs and VSCode Flatpaks.

+ +

Drawbacks:

+
    +
  • Some languages do not have an SDK available
  • +
  • Limited to the language runtime versions available in the SDKs
  • +
  • Duplication of the language runtime (plus you will need to install all the library dependencies on the Flatpak to have proper code support from your editor)
  • +
+ +

Combined approach

+ +

You can also mix approaches such that part of the development activity happens outside Toolbox and part of it inside the Toolbox. The simplest case would be installing your text editor via Flatpak for example and then connecting from that text editor to a Toolbox for project-specific tools like compilers.

+ +

The benefit here is that you can install tools where they make most sense and where they integrate the best. So, you will get your nice app launchers and the ability to keep project environments separate.

+ +

Tools available:

+ + +

User (rootless) installations

+ +

I have not seen much information about this method anywhere and for me as of today it is the prefered approach. Flatpak applications (i.e.: editors) cannot access the root filesystem (i.e.: the preinstalled python package on /usr/bin/python). However they have full access to the home directory (same as Toolbx containers).

+ +

So installing the development runtimes and tools locally (and then configuring your Flatpak editor to use them) provides an excelent out of the box developer experience without the need of Flatpak SDKs nor plugins to enable your editor to access the Toolbx containers.

+ +

Drawbacks:

+
    +
  • It can be more time consuming to set up than normal rpm installs in some scenarios
  • +
  • No automatic updates
  • +
+ +

Let’s take a look at local installs for several platforms.

+ +

OCaml

+ +

We will leverage the OCaml Package Manager (opam) to install the platform (or several versions) and local switches to each project:

+
$ curl https://github.com/ocaml/opam/releases/download/2.1.5/opam-2.1.5-i686-linux -Lo ~/bin/opam && chmod +x ~/bin/opam
+
+ +

From a toolbx container with proper development tools, i.e.: this one incialize the opam environment and install the platform tools:

+
⬢ $ opam init
+⬢ $ opam install dune ocaml-lsp-server odoc ocamlformat utop
+
+ +

Optionally, install some extras for Emacs, Vim and Neovim:

+
⬢ $ opam install ocp-indent ocp-index merlin tuareg
+
+ +

We need to add the opam path (~/bin) to our editor of choice (i.e.: VSCode) path:

+
$ sudo flatpak override --env=PATH='/app/bin:/usr/bin:/home/$USER/bin:/home/$USER/.opam/default/bin' com.visualstudio.code
+
+ +

Finally, open the project in VSCode and choose the corresponding opam switch.

+ +

Using local switches

+ +

It is possible to define a switch within the source of a project to be used specifically in that project. +If a local switch is detected in the current directory or a parent, opam will select it automatically.

+
⬢ $ opam switch create .
+
+ +

Finally, open the project in VSCode and choose the corresponding recommended opam switch.

+ +

Golang

+ +

Download latest version:

+
$ mkdr ~/go
+$ curl https://go.dev/dl/go1.21.3.linux-amd64.tar.gz -Lo ~/go.tar.gz
+$ tar xf ~/go/go.tar.gz
+$ mv ~/go/go ~/go/go-1.21.3
+
+ +

Add the following environment variables to your environment:

+
export GOROOT=$HOME/go/go-1.21.3
+export GOPATH=$HOME/go
+export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
+
+ +

Check installation:

+
$ go version
+go version go1.21.3 linux/amd64
+
+ +

Finally, open VSCode (it should automatically detect the local Golang installation), install the Go VSCode extension and click on ⚠ Analysis Tools Missing to install those.

+ +

+ +

Python

+ +

Local install

+

Install both python and pip in the local user environment.

+ +

From a toolbx container with proper development tools, i.e.: this one download and compile Python:

+
⬢ $ wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
+⬢ $ tar -xf Python-3.?.?.tar.xz
+⬢ $ cd Python-3.?.?.tar.xz
+⬢ $ ./configure --prefix=$HOME
+⬢ $ make install
+⬢ $ ln -s ~/bin/python3 ~/bin/python
+⬢ $ pip install readline
+
+ +

Then you can just pip install any dependencies, open the project in VSCode and choose the corresponding Python environment ~/bin/python. I do not tend to pip install the requirements of the projects thought (only the indispensable ones, like i.e.: ansible), instead prefer the virtual environments approach that will be described next.

+ +

+ +

Using python virtual environments

+ +

Before opening the project in VSCode:

+
$ flatpak run --command=sh com.visualstudio.code
+[📦] python -m venv .
+[📦] source bin/activate
+()[📦] pip install -r requirements.txt
+
+

Then open the project in VSCode and choose the local virtual environment.

+ +

Ansible

+ +

Python local install is a pre-requisite.

+ +

Local ansible installation:

+
python -m pip install --user ansible ansible-lint
+
+

Ansible will be installed on ~/.local/bin, so we need to add this path to our editor of choice (i.e.: VSCode):

+
$ which ansible
+~/.local/bin/ansible
+$ sudo flatpak override --env=PATH='/app/bin:/usr/bin:/home/$USER/.local/bin' com.visualstudio.code
+
+ +

Installed the Ansible extension by Red Hat in VSCode and enabled Lightspeed.

+ +

When opening VSCode it should automatically detect the local Ansible installation.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/devconf23/index.html b/docs/devconf23/index.html new file mode 100644 index 0000000000..a6661c55cc --- /dev/null +++ b/docs/devconf23/index.html @@ -0,0 +1,1225 @@ + + + + + + +DevConf.CZ 2023 - Writing a K8s Operator for Knative Functions - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 21 minute read + + + +

+ + +
+ + +
+ + + +

+ +

About

+ +

DevConf.CZ is an annual, free, Red Hat sponsored community conference for developers, admins, DevOps engineers, testers, documentation writers and other contributors to open source technologies. At DevConf.CZ, FLOSS communities sync, share, and hack on upstream projects together.

+ +

DevConf.cz Mini is a bi-annual, highly focused, local, in-person version of DevConf.cz. It offers an opportunity to return to our conference themes in a smaller setting and establishes a platform for the Czech Republic and EMEA based community to sync, share and hack on upstream projects together.

+ +

There is no admission or ticket charge for DevConf.CZ events. However, you are required to complete a free registration. Watch this site for updates about registration.

+ +

We are committed to fostering an open and welcoming environment at our conference. We set expectations for inclusive behavior through our code of conduct and media policies, and are prepared to enforce these.

+ +

Schedule

+ +

Writing a K8s Operator for Knative Functions

+ +

+ +

Serverless and Function as a Service (FaaS) are getting more and more attention from customers and developers as a way to develop, run and manage applications functionality without the burden of infrastructure related knowledge. All big cloud providers offer them already, e.g., AWS Lambda, Google Cloud Functions or Microsoft Azure Functions. One of the most relevant upstream projects for serverless is Knative, which recently added support for functions (create, build, and deploy) on top of K8s clusters.

+ +

This workshop will introduce you to the the PHYSICS European project and its FaaS model, as well as to building Kubernetes operators. You will implement a K8s Operator, using the operatorsdk framework, to provide the functionality of the Knative CLI. This will allow easier creation, build and deployment of functions with Knative just by creating Kubernetes (CR) objects, and will help you learn the internals about how K8s Operators work in a real life example.

+ +

Friday June 16, 2023 • 2:15pm - 3:35pm CEST

+ +

+ +

Speakers

+ + + + + + +

Workshop

+ +

physics-devconf

+ +

This repository provides an easy way to deploy a KinD cluster with Knative (using this script) on top of a Fedora 37 VM.

+ +

It also provides a couple of sample scripts to deploy a Knative service and a function.

+ +

Index

+ + +

Goals

+ +
    +
  • Get familiar on how to create/test Knative functions
  • +
  • Get familiar with the operator SDK
  • +
+ +

Deploy the environment (VM)

+ +

The VM requires 4 vCPUs and 6GB of memory. It takes approximately 10 minutes to come up:

+
$ vagrant up
+Bringing machine 'default' up with 'libvirt' provider...
+==> default: Checking if box 'fedora/37-cloud-base' version '37.20221105.0' is up to date...
+==> default: Creating image (snapshot of base box volume).
+==> default: Creating domain with the following settings...
+...
+    default: configmap/config-br-defaults configured
+    default: ⑦ Dapr
+    default: ./allocate.sh: line 251: dapr: command not found
+    default: popd
+    default: ~/go/src/github.com/knative/func
+    default:
+    default: cat <<EOF | sudo tee /etc/docker/daemon.json
+    default: {"insecure-registries": ["localhost:50000"]}
+    default: EOF
+    default: {"insecure-registries": ["localhost:50000"]}
+
+ +

The provision script installs:

+
    +
  • Docker
  • +
  • Golang
  • +
  • Pip
  • +
  • Git
  • +
  • Curl
  • +
  • Wget
  • +
  • Cosign
  • +
  • Kubectl
  • +
  • Kn - the Knative client
  • +
  • Func - Knative functions
  • +
  • Kind
  • +
  • Operator-sdk
  • +
+ +

Access the environment

+ +
    +
  1. Login into the virtual machine just created: +
     $ vagrant ssh
    +
    +
  2. +
  3. Check if all the pods are running: +
     $ kubectl get pods -A
    + NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
    + contour-external     contour-56cfd44877-gmzdd                     1/1     Running     0          2m30s
    + contour-external     contour-56cfd44877-wj844                     1/1     Running     0          2m30s
    + contour-external     contour-certgen-v1.22.0-qbbx6                0/1     Completed   0          2m30s
    + contour-external     envoy-4j2vr                                  2/2     Running     0          2m30s
    + contour-internal     contour-865fdc98f9-48vv9                     1/1     Running     0          2m29s
    + contour-internal     contour-865fdc98f9-l22kw                     1/1     Running     0          2m29s
    + contour-internal     contour-certgen-v1.22.0-5t52p                0/1     Completed   0          2m30s
    + contour-internal     envoy-vlxrb                                  2/2     Running     0          2m29s
    + knative-eventing     eventing-controller-64b4b79c45-bxk6f         1/1     Running     0          4m5s
    + knative-eventing     eventing-webhook-86f7dd95db-phc9x            1/1     Running     0          4m5s
    + knative-eventing     imc-controller-769d8b7f66-hx2lj              1/1     Running     0          3m33s
    + knative-eventing     imc-dispatcher-55979cf74b-8n2w9              1/1     Running     0          3m33s
    + knative-eventing     mt-broker-controller-f97f8747-r7nnr          1/1     Running     0          3m21s
    + knative-eventing     mt-broker-filter-77c75d69fb-j4972            1/1     Running     0          3m21s
    + knative-eventing     mt-broker-ingress-d96f6d8b5-g4ng6            1/1     Running     0          3m21s
    + knative-serving      activator-75777fd57c-hwsth                   1/1     Running     0          4m49s
    + knative-serving      autoscaler-57d647d6ff-cs2bx                  1/1     Running     0          4m49s
    + knative-serving      controller-677995dc7b-9tbmj                  1/1     Running     0          4m48s
    + knative-serving      domain-mapping-5676fb7bcf-92xmf              1/1     Running     0          4m48s
    + knative-serving      domainmapping-webhook-fcbd7dff4-5v26r        1/1     Running     0          4m48s
    + knative-serving      net-contour-controller-847758c4bf-kltdx      1/1     Running     0          2m
    + knative-serving      webhook-544b958c69-h7vmz                     1/1     Running     0          4m48s
    + kube-system          coredns-6d4b75cb6d-btqsp                     1/1     Running     0          5m16s
    + kube-system          coredns-6d4b75cb6d-shbkf                     1/1     Running     0          5m16s
    + kube-system          etcd-func-control-plane                      1/1     Running     0          5m35s
    + kube-system          kindnet-mr2xx                                1/1     Running     0          5m16s
    + kube-system          kube-apiserver-func-control-plane            1/1     Running     0          5m30s
    + kube-system          kube-controller-manager-func-control-plane   1/1     Running     0          5m30s
    + kube-system          kube-proxy-vpb8z                             1/1     Running     0          5m16s
    + kube-system          kube-scheduler-func-control-plane            1/1     Running     0          5m32s
    + local-path-storage   local-path-provisioner-6b84c5c67f-575j5      1/1     Running     0          5m16s
    + metallb-system       controller-6c58495cbb-j52ls                  1/1     Running     0          3m3s
    + metallb-system       speaker-v5hd2                                1/1     Running     0          3m3s
    +
    +
  4. +
  5. Check if the local registry is running: +
     $ docker ps
    + CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                                                          NAMES
    + 59be051ba43c   registry:2             "/entrypoint.sh /etc…"   2 minutes ago   Up 2 minutes   127.0.0.1:50000->5000/tcp                                                      func-registry
    + caf78811a6a9   kindest/node:v1.24.6   "/usr/local/bin/entr…"   4 minutes ago   Up 4 minutes   127.0.0.1:39609->6443/tcp, 127.0.0.1:80->30080/tcp, 127.0.0.1:443->30443/tcp   func-control-plane
    +
    +
  6. +
+ +

Create a new (python) function and invoke it

+ +
    +
  1. Create the Knative function: +
     $ func create -l python test-hw
    + Created python function in /home/vagrant/test-hw
    +
    +
  2. +
  3. Take a look around and change the func.py code as follows: +
     $ cd test-hw
    +
    + $ ls
    + app.sh  func.py  func.yaml  Procfile  README.md  requirements.txt  test_func.py
    +
    + $ cat func.py
    +
    +
     from parliament import Context
    + from flask import Request
    + import json
    +
    + # parse request body, json data or URL query parameters
    + def payload_print(req: Request) -> str:
    +     if req.method == "GET":
    +         return "DevConf.cz 2023!"
    +
    + def main(context: Context):
    +     """
    +     Function template
    +     The context parameter contains the Flask request object and any
    +     CloudEvent received with the request.
    +     """
    +
    +     # Add your business logic here
    +     print("Received request")
    +
    +     if 'request' in context.keys():
    +         return payload_print(context.request), 200
    +     else:
    +         print("Empty request", flush=True)
    +         return "{}", 200
    +
    +
  4. +
  5. Build (and push) the function to the internal registry: +
     $ export FUNC_REGISTRY=localhost:50000/kn-user
    + $ func build --push
    + 🙌 Function image built: localhost:50000/kn-user/test-hw:latest
    + 🕕 Pushing function image to the registry "localhost:50000" using the "" user credentials
    +
    +
  6. +
  7. Check that the image has been correctly pushed into the internal registry: +
     $ curl localhost:50000/v2/_catalog
    + {"repositories":["kn-user/test-hw"]}
    +
    +
  8. +
  9. Deploy the function to the kind cluster: +
     $ func deploy --build=false --push=false
    + ✅ Function deployed in namespace "default" and exposed at URL:
    +      http://test-hw.default.127.0.0.1.sslip.io
    +
    +
  10. +
  11. Check that the function has been correctly deployed. A new Knative service (ksvc) object is created, which triggers the Knative controllers to create the other k8s objects (deployment and route). After approximately one minute minute the deployment is scaled down to 0 replicas if not used to spare resources: +
     $ kubectl get ksvc
    + NAME      URL                                         LATESTCREATED   LATESTREADY     READY   REASON
    + test-hw   http://test-hw.default.127.0.0.1.sslip.io   test-hw-00001   test-hw-00001   True
    +
    + $ kubectl get deploy
    + NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    + test-hw-00001-deployment   0/0     0            0           104s
    +
    + $ kubectl get route
    + NAME      URL                                         READY   REASON
    + test-hw   http://test-hw.default.127.0.0.1.sslip.io   True
    +
    + $ kubectl get pods
    + (empty if more than a minute has passed)
    +
    +
  12. +
  13. Invoke the function: +
    $ curl http://test-hw.default.127.0.0.1.sslip.io
    +DevConf.cz 2023!
    +
    +
  14. +
  15. Check that the deployment has been scaled up: +
    $ kubectl get deploy
    +NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    +test-hw-00001-deployment   1/1     1            1           3s
    +
    +
  16. +
+ +

Fork the base operator github repository and deploy locally

+ +
    +
  1. +

    Fork this github repository into your github account: https://github.com/luis5tb/devconf-knative-operator

    +
  2. +
  3. Clone your fork locally inside the VM (change YOUR_USER by yours): +
    $ git clone https://github.com/YOUR_USER/devconf-knative-operator.git
    +
    + +

    In case you want to start an operator from scratch do the next instead (change YOUR_USER by yours):

    +
    $ mkdir devconf-knative-operator
    +$ cd devconf-knative-operator
    +
    +# Create base operator
    +$ operator-sdk init --domain example.com --repo github.com/YOUR_USER/devconf-knative-operator
    +
    +# Add API
    +$ operator-sdk create api --group knf --version v1alpha1 --kind KnativeFunction --resource --controller
    +
    +
  4. +
  5. There are three important files to consider: +
      +
    • controllers/knativefunction_controller.go: implements the operator reconcile loop
    • +
    • api/v1alpha1/knativefunction_types.go: the KnativeFunction CRD definition
    • +
    • config/samples/knf_v1alpha1_knativefunction.yaml: an example KnativeFunction CRD
    • +
    +
  6. +
  7. Let’s take a look at api/v1alpha1/knativefunction_types.go, as you can see it defines an example Foo field: +
    ...
    +type KnativeFunctionSpec struct {
    +    // Foo is an example field of KnativeFunction. Edit knativefunction_types.go to remove/update
    +    Foo string `json:"foo,omitempty"`
    +}
    +...
    +
    +
  8. +
  9. +

    Let’s modify the operator reconcyle loop in controllers/knativefunction_controller.go:

    + +

    Before:

    +
    func (r *KnativeFunctionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
    +    _ = log.FromContext(ctx)
    +
    +    // TODO(user): your logic here
    +
    +    return ctrl.Result{}, nil
    +}
    +
    +

    After:

    +
    func (r *KnativeFunctionReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
    +    log := log.FromContext(ctx)
    +
    +    function := &knfv1alpha1.KnativeFunction{}
    +    log.Info("Received a request to create a new knativefunction", "Foo =", function.Spec.Foo)
    +
    +    return ctrl.Result{}, nil
    +}
    +
    + +
    $ cd devconf-knative-operator
    +
    +# Make code modifications
    +$ go mod tidy
    +$ make manifests
    +$ make generate
    +
    +
  10. +
  11. +

    Test your code by deploying it. You will need two terminals, T1 and T2.

    + +

    [T1] First option is simply doing make install run:

    +
    $ make install run
    +test -s /home/vagrant/devconf-knative-operator/bin/controller-gen && /home/vagrant/devconf-knative-operator/bin/controller-gen --version | grep -q v0.11.1 || \
    +GOBIN=/home/vagrant/devconf-knative-operator/bin go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.11.1
    +/home/vagrant/devconf-knative-operator/bin/controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
    +/home/vagrant/devconf-knative-operator/bin/kustomize build config/crd | kubectl apply -f -
    +Warning: Detected changes to resource knativefunctions.knf.example.com which is currently being deleted.
    +customresourcedefinition.apiextensions.k8s.io/knativefunctions.knf.example.com configured
    +/home/vagrant/devconf-knative-operator/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."
    +go fmt ./...
    +go vet ./...
    +go run ./main.go
    +I0616 08:11:27.582792   10567 request.go:682] Waited for 1.041837981s due to client-side throttling, not priority and fairness, request: GET:https://127.0.0.1:44399/apis/networking.internal.knative.dev/v1alpha1?timeout=32s
    +2023-06-16T08:11:27Z	INFO	controller-runtime.metrics	Metrics server is starting to listen	{"addr": ":8080"}
    +2023-06-16T08:11:27Z	INFO	setup	starting manager
    +2023-06-16T08:11:27Z	INFO	Starting server	{"path": "/metrics", "kind": "metrics", "addr": "[::]:8080"}
    +2023-06-16T08:11:27Z	INFO	Starting server	{"kind": "health probe", "addr": "[::]:8081"}
    +2023-06-16T08:11:27Z	INFO	Starting EventSource	{"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction", "source": "kind source: *v1alpha1.KnativeFunction"}
    +2023-06-16T08:11:27Z	INFO	Starting Controller	{"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction"}
    +2023-06-16T08:11:27Z	INFO	Starting workers	{"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction", "worker count": 1}
    +
    + +

    [T1] Second option, if you want to deploy your controller as a container too:

    +
    # First time only
    +# Edit config/manager/manager.yaml so that it does not try to download the image if present
    +# Add, after "image: controller:latest": imagePullPolicy: IfNotPresent
    +
    +# Then every time you have new code to check do the next
    +# Increase the version (v0.0.X) as neeeded
    +$ make docker-build IMG="example.com/devconf-knative-operator:v0.0.X"
    +$ kind load docker-image example.com/devconf-knative-operator:v0.0.X --name func
    +$ make deploy IMG="example.com/devconf-knative-operator:v0.0.X"
    +
    +# Check the deployment
    +$ kubectl get deployment -n devconf-knative-operator-system
    +
    +# Check the pod
    +$ kubectl get pod -n devconf-knative-operator-system
    +$ kubectl logs -f -n devconf-knative-operator-system POD
    +
    +# Check the logs
    +$ kubectl logs -f -n devconf-knative-operator-system POD
    +
    +
  12. +
  13. [T2] In a second terminal create a sample CRD: +
    $ cat <<EOF | kubectl apply -f -
    +---
    +apiVersion: knf.example.com/v1alpha1
    +kind: KnativeFunction
    +metadata:
    +labels:
    +    app.kubernetes.io/name: knativefunction
    +    app.kubernetes.io/instance: knativefunction-sample
    +    app.kubernetes.io/part-of: devconf-knative-operator
    +    app.kubernetes.io/managed-by: kustomize
    +    app.kubernetes.io/created-by: devconf-knative-operator
    +name: knativefunction-sample
    +spec:
    +   foo: test
    +EOF
    +
    +
  14. +
  15. [T1] In the first terminal you should see something like: +
    2023-06-16T08:12:54Z	INFO	Received a request to create a new knativefunction	{"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction", "KnativeFunction": {"name":"knativefunction-sample","namespace":"default"}, "namespace": "default", "name": "knativefunction-sample", "reconcileID": "9be34733-bca6-4134-bf6d-8f0ed69106bd", "Foo =": "test"}
    +
    +
  16. +
  17. +

    [Challenge] The goal now is to extend the operator to deploy the existing Knative function (from step 6). Once this is accomplished, extend the operator to build, push and deploy any function located on a given github repository.

    + +

    You will need to interact with the K8s API from the controller (knativefunction_controller.go). This example repo contains a Memcached operator that ilustrates how to create K8s objects from the controller (i.e. a Deployment).

    + +

    Make code changes, undeploy and iterate (looping between step 14 and 19 until needed). If the first option was used, just stop the make install run, if the containerized option was chosen, then the next:

    +
    $ kubectl delete -f config/samples/knf_v1alpha1_knativefunction.yaml
    +$ make undeploy
    +
    +
  18. +
+ +

Solution

+ +
    +
  1. +

    Deploy a CR to force the controller to reconcile and get the function deployed. First you need to edit the config/samples/knf_v1alpha1_knativefunction.yaml with the desired options:

    + +
    # Get the previously created function docker image information, with digest
    +$ kubectl get nodes -oyaml | grep test-hw
    +  - localhost:50000/kn-user/test-hw@sha256:79c4568eedb9f3366c6ee6b72980eec2aff9a80796328888e10f834c00beb51f
    +
    +# Modify the config/samples/knf_v1alpha1_knativefunction.yaml using the above as image
    +$ cat config/samples/knf_v1alpha1_knativefunction.yaml
    +apiVersion: knf.example.com/v1alpha1
    +kind: KnativeFunction
    +metadata:
    +  labels:
    +    app.kubernetes.io/name: knativefunction
    +    app.kubernetes.io/instance: knativefunction-sample
    +    app.kubernetes.io/part-of: devconf-knative-operator
    +    app.kubernetes.io/managed-by: kustomize
    +    app.kubernetes.io/created-by: devconf-knative-operator
    +  name: knativefunction-sample
    +spec:
    +  name: test-function
    +  image: localhost:50000/kn-user/test-hw@sha256:79c4568eedb9f3366c6ee6b72980eec2aff9a80796328888e10f834c00beb51f
    +  maxscale: "2"
    +  minscale: "1"
    +  concurrency: 1
    +
    + +

    And then deploy/update/remote it with:

    +
    # Create the CR to force reconcile loop for function registration
    +$ kubectl apply -f config/samples/knf_v1alpha1_knativefunction.yaml
    +
    +# Update the config/samples/knf_v1alpha1_knativefunction.yaml, for instance changing the minScale to 0 and re-apply:
    +$ kubectl apply -f config/samples/knf_v1alpha1_knativefunction.yaml
    +
    +# Delete the CR to remove the function
    +$ kubectl delete -f config/samples/knf_v1alpha1_knativefunction.yaml
    +
    +
  2. +
  3. +

    To check the operator did its job, beside seeing the make install run logs, you can check as before:

    +
    $ kubectl get ksvc
    +NAME           URL                                                LATESTCREATED        LATESTREADY     READY   REASON
    +test-hw        http://test-hw.default.127.0.0.1.sslip.io          test-hw-00001        test-hw-00001   True
    +test-function  http://test-function.default.127.0.0.1.sslip.io    test-function-00001  test-function-00001      True 
    +
    +$ kubectl get deploy
    +NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
    +test-hw-00001-deployment         0/0     0            0           20m
    +test-function-00001-deployment   0/0     0            0           1m38s
    +
    +$ kubectl get route
    +NAME           URL                                              READY   REASON
    +test-hw        http://test-hw.default.127.0.0.1.sslip.io        True
    +test-function  http://test-function.default.127.0.0.1.sslip.io  True 
    +    
    +$ kubectl get knativefunction
    +NAME                     AGE
    +knativefunction-sample   5m8s
    +    
    +$ kubectl get knativefunction knativefunction-sample -o yaml
    +...
    +...
    +status:
    +  deployed: true
    +  route:  http://test-function.default.127.0.0.1.sslip.io
    +
    +$ kubectl get pods
    +(empty if more than a minute has passed)
    +    
    +$ curl http://test-function.default.127.0.0.1.sslip.io
    +DevConf.cz 2023!
    +    
    +$ kubectl get pods
    +NAME                                              READY   STATUS    RESTARTS   AGE
    +test-function-00001-deployment-77f8b87654-6krps   2/2     Running   0          6s
    +
    +
  4. +
+ + + + + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/dotfiles/index.html b/docs/dotfiles/index.html new file mode 100644 index 0000000000..027cae3375 --- /dev/null +++ b/docs/dotfiles/index.html @@ -0,0 +1,924 @@ + + + + + + +My Linux desktop - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +
+ + +
+ + + + + +

dotfiles

+ +

My Linux desktop setup on Fedora Sericea.

+ +

+ +

Desktop

+ +
    +
  • +

    Window manager: Sway via baseOS

    + +

    Only use wayland applications; xwayland apps are not properly scaled swaywm/sway#2966, drag and drop does not work swaywm/sway#6460 and have a glitched behaviour uppon minimized on system tray swaywm/sway#6905.

    +
  • +
  • +

    Display setup: wdisplays via rpm-ostree

    +
  • +
  • Browser +
      +
    • Primary: Firefox via baseOS
    • +
    • +

      Secondary: Chrome via Flatpak

      + +

      With flags --ozone-platform-hint=wayland and --enable-pixel-canvas-recording=enabled.

      +
    • +
    +
  • +
  • +

    Terminal: WezTerm via Flatpak

    + +

    Wayland, grabbable scrollbar and ligature support.

    + +

    Would prefer Foot but having a grabbable scrollbar is a must for now. One workaround would be to setup fast scroll (i.e.: $mod + scroll wheel) but I have not been able to configure it correctly (if anyone has please let me know ). Also Foot does not support ligatures dnkl/foot#57.

    +
  • +
  • +

    IDE: Visual Studio Code via Flatpak

    + +

    With flags --socket=wayland and --ozone-platform-hint=wayland.

    + +

    With Fira Code font with programming ligatures installed via rpm-ostree.

    + +

    Instead of using SDK extensions tend to opt for local language installs (golang, ocaml, etc.).

    + +

    toolbox-vscode to integrate VSCode and toolbx for some SDKs that are not present in Flathub, i.e.: ansible.

    +
  • +
  • +

    File manager: Nautilus via rpm-ostree with NautilusPreviewer (GNOME Sushi) via Flatpak (org.gnome.NautilusPreviewer)

    + +

    Would prefer Thunar or PCMan FM but miss the preview feature.

    +
  • +
  • File sync +
      +
    • Dropbox via Flatpak
    • +
    • Gdrive with rclone via rpm-ostree
    • +
    +
  • +
  • +

    Text editor: Gnome Text Editor via Flatpak

    +
  • +
  • PDF reader +
      +
    • Primary: Zathura via rpm-ostree
    • +
    • Secondary (when I need to annotate PDFs): Evince (GNOME Document Viewer) via Flatpak
    • +
    +
  • +
  • +

    Image viewer: imv via baseOS

    +
  • +
  • +

    Basic photo editing: Drawing via Flatpak

    +
  • +
  • +

    Video player: mpv via Flatpak using the flathub repo

    +
  • +
  • +

    Torrent client: Transmission via Flatpak

    +
  • +
  • +

    WhatsApp client: WhatsApp for Linux via Flatpak

    + +

    Supports wayland.

    +
  • +
  • Office suite: LibreOffice via Flatpak
  • +
+ +

Tools

+ +
    +
  • Shell: bash via baseOS
  • +
  • Terminal multiplexer: tmux in remote systems
  • +
  • Configuration management: Ansible via toolbx
  • +
  • +

    Text editor: neovim via Flatpak, emacs via Flatpak

    + +

    With JetBrains Mono font with programming ligatures installed via rpm-ostree.

    +
  • +
  • Prompt: Starship via local install
  • +
  • Containers: Podman and Toolbx via base OS, Docker in rootless mode via local install + +
  • +
  • Virtualization: kcli via toolbx + +
  • +
  • Kubernetes: Kind and kube-burner via local install
  • +
  • Application management: rpm-ostree and Flatpak via baseOS
  • +
  • Keyboard input: wtype via rpm-ostree
  • +
+ +

Tricks

+ +
    +
  • For ovn-kubernetes: +
     $ sudo modprobe openvswitch
    +
    +
  • +
  • For KubeVirt: +
      +
    • Create the kind cluster as root
    • +
    • The following command will allow the installation of KubeVirt in a rootless cluster but then the VMs won’t be created because rootless docker/podman are unable to create pods in kind with ephemeral storage requests kubernetes-sigs/kind#3359: +
       $ sudo chown $USER /dev/kvm
      +
      +
    • +
    +
  • +
  • For web-burner: +
     $ sudo sysctl -w kernel.keys.maxkeys=5000
    +
    +
  • +
  • Create a kind cluster using rootless podman as provider without the need of setting systemd property Delegate=yes (see https://kind.sigs.k8s.io/docs/user/rootless/): +
     KIND_EXPERIMENTAL_PROVIDER=podman systemd-run --scope --user ~/go/bin/kind create cluster
    +
    +
  • +
+ +

Issues

+ +

If you have managed to get working any of the following please let me know:

+
    +
  • Docker/Podman in rootless mode + +
  • +
  • Firefox +
      +
    • Slack huddles are not available webcompat/web-bugs#82623
    • +
    • + Prime Video does not work (neither Chrome nor Firefox) https://www.primevideo.com/region/na/help?nodeId=GU85HKX66NVFNQ9Y +
    • +
    +
  • +
  • Starship + +
  • +
  • Sway +
      +
    • Share a specific window on Google Meet swaywm/sway#3282
    • +
    • + Drag & Drop from XWayland apps to Wayland ones: it only works occasionally [swaywm/sway#6460](https://github.com/swaywm/sway/issues/6460) +
    • +
    • + XWayland windows gets tiled uppong being reopened from system tray [swaywm/sway#6905](https://github.com/swaywm/sway/issues/6905) +
    • +
    • Fast scroll using $mod + ScrollWheel. Tried with: +
       bindsym --whole-window $mod+button4 exec "wtype -M shift -k Prior"
      + bindsym --whole-window $mod+button5 exec "wtype -M shift -k Next"
      +
      +
        +
      • Problem 1: Only works the first wheel turn, then need to relase and press again $mod
      • +
      • Problem 2: Different apps use different combinations, i.e.: just ScrollWheel or Shift+ScrollWheel
      • +
      +
    • +
    • Persistent workspaces swaywm/sway#7631
    • +
    +
  • +
  • Toolbx + +
  • +
  • Visual Studio Code + +
  • +
+ +

TODO

+ + + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/educate-relaunch/index.html b/docs/educate-relaunch/index.html new file mode 100644 index 0000000000..21d15af147 --- /dev/null +++ b/docs/educate-relaunch/index.html @@ -0,0 +1,732 @@ + + + + + + +AWS Educate relaunch - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

AWS Educate is now open to any individual, regardless of where they are in their education, technical experience, or career journey.

+ +

AWS Educate offers hundreds of hours of self-paced training and resources for new-to-cloud learners—including hands-on labs in the AWS Management Console. The platform guides you to targeted training content based on your knowledge, goals, interests, and age. Check out some of the most popular course offerings.

+ +
+ + +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/edx-magma/index.html b/docs/edx-magma/index.html new file mode 100644 index 0000000000..9eea8ab525 --- /dev/null +++ b/docs/edx-magma/index.html @@ -0,0 +1,812 @@ + + + + + + +edX: Introduction to Magma - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Introduction to Magma: Cloud Native Wireless Networking

+ +

Learn about the Magma project, an open source implementation of a mobile network core. Magma supports diverse radio technologies, including LTE, 5G and WiFi, and is particularly relevant for extending network access into remote, sparsely populated areas.

+ +

DURATION +10 weeks

+ +

DEDICATION +1-2 hours per week

+ +

COST +Free (there is the possibility to add a paying certificate for $149)

+ +

INSTITUTION +Linux Foundation

+ +

About

+ +

Magma leverages open source software and commodity hardware to help operators manage their networks efficiently. It provides a high level of automation, high reliability, and the ability to deliver new network services quickly. It is agnostic to the radio access network technology, supporting any cellular “generation” from 2G to 5G, as well as WiFi and CBRS for unlicensed spectrum. Magma can be federated with existing cellular networks to allow networks to be cost-effectively extended into remote areas.

+ +

This course is designed for technology strategists or decision makers at telcos looking to understand the applicability of Magma to their environment. This course is also aimed at rural ISP operators, systems integrators, and anyone looking to set up a lab environment to experiment with Magma or deploy it in production.

+ +

This course will help you gain an understanding of the overall Magma architecture and how it fits into the bigger picture of cellular network architectures, particularly 4G/LTE and 5G. You will learn to recognize and understand the main functions of a mobile wireless network, understand the key use cases and value proposition of Magma, the overall architecture of Magma at a functional block level, and the functions performed by each of the main Magma components (Access Gateway, Federation Gateway, and Orchestrator). The course will also provide resources to learn more to deploy Magma on standard hardware.

+ +

This course prepares you to fully explore the Magma project. It provides the necessary background to help you determine if Magma is appropriate for your setting, and equips you to start installing and experimenting with the system.

+ +

Objectives

+ +
    +
  • +

    Recognize and understand the main functions of a mobile wireless network

    +
  • +
  • +

    Understand the key use cases and value proposition of Magma

    +
  • +
  • +

    Describe the overall architecture of Magma at a functional block level

    +
  • +
  • +

    Understand the functions performed by each of the following main components: Access Gateway, Federation Gateway, Orchestrator

    +
  • +
  • +

    Know how to learn more to deploy Magma on standard hardware

    +
  • +
+ +

Curriculum

+ +
    +
  • +

    Ch 1. Introduction to Mobile Cellular Networking

    +
  • +
  • +

    Ch 2. Introduction to the Magma Architecture

    +
  • +
  • +

    Ch 3. The Orchestrator

    +
  • +
  • +

    Ch 4. The Access Gateway (AGW)

    +
  • +
  • +

    Ch 5. The Federation Gateway

    +
  • +
  • +

    Ch 6. The Network Management System (NMS)

    +
  • +
  • +

    Ch 7. Summary

    +
  • +
  • +

    Final Exam (verified track only)

    +
  • +
+ +

Registration

+ +

Register now

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/etsi2tosca/index.html b/docs/etsi2tosca/index.html new file mode 100644 index 0000000000..cec6cba181 --- /dev/null +++ b/docs/etsi2tosca/index.html @@ -0,0 +1,839 @@ + + + + + + +Converting ETSI NFV templates into TOSCA profile - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + + + + + +

GitHub +GitHub top language +GitHub Pipenv locked Python version

+ +

etsi2tosca

+

Converts ETSI NFV templates into TOSCA profile.

+ +

Use

+
Usage: etsi2tosca FILE
+
+Converts ETSI NFV templates into TOSCA profile
+
+Options:
+  -h, --help            show this help message and exit
+
+ +

Examples

+ +

Example 1:

+
$ ./etsi2tosca.py samples/opencv_transcoder_vnfd.yaml 
+tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
+
+description: OpenCV Transcoder VNF
+
+metadata:
+  template_name: opencv_transcoder_vnf
+
+topology_template:
+  inputs:
+   ssh-hostname:
+     type: string
+      default: <rw_mgmt_ip>
+
+   ssh-username:
+     type: string
+      default: ubuntu
+
+   ssh-password:
+     type: string
+      default: 5ginfire
+
+   ssh-private-key:
+     type: string
+
+   stream-ip:
+     type: string
+
+   output-port:
+     type: integer
+
+  node_templates:
+    VDU1:
+      type: tosca.nodes.nfv.VDU.Tacker
+      capabilities:
+        nfv_compute:
+          properties:
+            num_cpus: 8
+            mem_size: 8192 MB
+            disk_size: 20 GB
+      properties:
+        image: opencv_transcoder_image
+        mgmt_driver: noop
+        user_data:
+          str_replace:
+            template: {get_file: transcoder_cloud_init.cfg}
+
+    CP0
+      type: tosca.nodes.nfv.CP.Tacker
+      properties:
+        management: false
+        order: 0
+        anti_spoofing_protection: false
+      requirements:
+        - virtualLink:
+            node: VL0
+        - virtualBinding:
+            node: VDU1
+    CP1
+      type: tosca.nodes.nfv.CP.Tacker
+      properties:
+        management: false
+        order: 1
+        anti_spoofing_protection: false
+      requirements:
+        - virtualLink:
+            node: VL1
+        - virtualBinding:
+            node: VDU1
+
+    VL0
+      type: tosca.nodes.nfv.VL
+      properties:
+        network_name: eth0
+        vendor: 5GinFIRE
+
+    VL1
+      type: tosca.nodes.nfv.VL
+      properties:
+        network_name: eth1
+        vendor: 5GinFIRE
+
+ +

Example 2:

+
$ ./etsi2tosca.py samples/opencv_transcoder_vnfd.yaml > opencv_transcoder_vndf_tosca.yaml
+
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/eu-capacito/index.html b/docs/eu-capacito/index.html new file mode 100644 index 0000000000..6f66801a5f --- /dev/null +++ b/docs/eu-capacito/index.html @@ -0,0 +1,748 @@ + + + + + + +Programa EU CAPACITO - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Em conjunto com o EU CAPACITO, programa liderado pelo Instituto IT Mídia, a FIAP oferece 20 Nano Courses gratuitos. São cursos de 40 a 160 horas nas áreas de Tecnologia, Inovação e Negócios.

+ +

Cadastre-se e escolha os seus.

+ +
    +
  • Blockchain Advanced (100 horas)
  • +
  • Business Intelligence (40 horas)
  • +
  • Customer Experience Management (40 horas)
  • +
  • Design Thinking (40 horas)
  • +
  • DevOps & Agile Culture (60 horas)
  • +
  • Inteligência Artificial e Computacional (80 horas)
  • +
  • Mobile Marketing (60 horas)
  • +
  • Python (40 horas)
  • +
  • Soluções Tecnológicas Emergentes (40 horas)
  • +
  • User Experience (60 horas)
  • +
  • Gestão de Infraestrutura de TI (40 horas)
  • +
  • Leadership Communication (60 horas)
  • +
  • Big Data & Analytics (120 horas)
  • +
  • Linux Fundamentos (40 horas)
  • +
  • Cloud Computing & Data Science (160 horas)
  • +
  • Java Fundamentos (80 horas)
  • +
  • Cybersecurity (120 horas)
  • +
  • Design Gráfico (120 horas)
  • +
  • Gestão Financeira de Empresas (40 horas)
  • +
  • Marketing em Plataformas de Social Media (80 horas)
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/examtopics/index.html b/docs/examtopics/index.html new file mode 100644 index 0000000000..6e0ba584a7 --- /dev/null +++ b/docs/examtopics/index.html @@ -0,0 +1,739 @@ + + + + + + +Kudos to ExamTopics - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

I have been using the mocks from ExamTopics latelly to prepare to several certification exams and I have to say I found them the best material around.

+ +

I personally prefer them over exam reviews/practice tests from paid platforms, for the following reasons:

+
    +
  • the community around
  • +
  • free
  • +
  • comments for questions: I learn a lot reading the discussion forum for each question
  • +
  • updated: I found the questions from ExamTopics to be always relevant and updated, as you can infere from the comments
  • +
+ +

At the moment of this writing, they have:

+
    +
  • 109 certification providers
  • +
  • 1292 exams
  • +
  • 126 average daily updates
  • +
  • 2089 online users
  • +
+ +

I believe in certification as a tool to make a positive change, and I hope the ExamTopics community stays relevant and grows over time.

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/feed.xml b/docs/feed.xml new file mode 100644 index 0000000000..729aedd269 --- /dev/null +++ b/docs/feed.xml @@ -0,0 +1,1224 @@ +Jekyll2023-10-28T15:32:31-05:00https://josecastillolema.github.io/feed.xmlGitOpsNetworks, SDN, NFVi, OpenStack, K8s/OpenShift.Jose Castillo LemaDevelopment workflows on inmutable distros: rootless setup2023-10-21T00:00:00-05:002023-10-21T15:00:58-05:00https://josecastillolema.github.io/dev-inmutable-distros<blockquote> + <p>Continuation of <a href="https://samsai.eu/">Samsai</a> notes on <a href="https://samsai.eu/post/toolbox-based-emacs-flatpak-workflow/">Toolbox-based Emacs Flatpak workflow</a>.</p> +</blockquote> + +<p>I have been using inmutable OS distributions for a while (Fedora Silverblue and Sericea, see my <a href="/dotfiles">dotfiles</a>). They have the following characteristics:</p> +<ul> + <li>System root (baseOS) is mostly immutable</li> + <li>System software installation/updates are handled as images and applied on reboot</li> + <li>For installing desktop applications, <a href="https://flatpak.org/">Flatpak</a> is the recommended default route</li> + <li><a href="https://containertoolbx.org/">Toolbx</a> can be used to set up containerized Linux environments for developer tools, these containers will mount your home directory and certain important files for GUI programs to work as well</li> + <li>Local user (rootless) installations</li> +</ul> + +<p>I personally follow these guidelines when installing new applications:</p> +<ul> + <li>If it is a desktop application, prefer Flatpak (and some terminal ones too, i.e.: <a href="https://flathub.org/apps/io.neovim.nvim">Neovim</a> and <a href="https://flathub.org/apps/org.gnu.emacs">Emacs</a>)</li> + <li>For terminal applications, consider Toolbx or local installations</li> + <li>Do not install desktop applications into Toolbx</li> + <li>Avoid duplication (i.e.: installing the same editors or development environments in several places)</li> + <li>Try to avoid <code class="language-plaintext highlighter-rouge">rpm-ostree</code> layering on baseOS as much as possible</li> +</ul> + +<p>The development workflow story on inmutable distros hasn’t really been standardized yet, as these distros are quite new. Let’s take a look at several approaches and <strong>finally discuss the local (rootless) installation method</strong>.</p> + +<h2 id="layering-with-rpm-ostree-not-a-good-idea">Layering with rpm-ostree (not a good idea)</h2> + +<p>You can also install development tools directly on the inmutable distros install using package layering with <code class="language-plaintext highlighter-rouge">rpm-ostree</code>. So, if you want to, you can install your editor, compilers, build tools and linters straight on the Silverblue install.</p> + +<p>However, this isn’t really how most people view you should use Silverblue. The application installation process is a bit more annoying, although experimental support for installing software without rebooting does exist nowadays. It also makes your system install kind of messy due to large numbers of overlayed packages.</p> + +<p>I wouldn’t take this route because while you aren’t strictly speaking losing all of the benefits of inmutable distros, you are making life quite difficult for yourself compared to just using regular Fedora Workstation for instance. You also don’t get the benefits of separating your system from your application environments and expose yourself to more potential breakages.</p> + +<h2 id="toolbx-approaches">Toolbx approaches</h2> + +<h3 id="single-toolbx-container-for-all-dev-activities">Single toolbx container for all dev activities</h3> +<p>The easiest way to have everything working in a predictable and simple manner is to create a single Toolbox container, which has all of the development tools for every single project installed within it. This means that the container contains your text editor of choice, compilers, linters, build tools and all of their dependencies.</p> + +<p>The benefit of this approach is that it is extremely close to how you’d work on any other Linux distribution.</p> + +<p>This approach has several drawbacks:</p> +<ul> + <li>All software pilled into one environment</li> + <li>Keeping the text editor inside the Toolbox still results in somewhat poor integration with the host system</li> + <li>Install desktop applications into toolbx containers instead of Flatpak applications</li> +</ul> + +<h3 id="a-toolbx-container-per-language--project">A toolbx container per language / project</h3> + +<p>Another (better IMO) possibility is to separately set up a Toolbox container for each project you work on. This means that all of your project environments are fully separated from each other and all of them only carry tools and dependencies relevant to the project in question.</p> + +<p>Loss of a Toolbox container limits the damage to a particular project and per-project Toolboxes are fairly simple to recreate.</p> + +<p>Drawbacks:</p> +<ul> + <li>Certain parts of your development workflow need to be duplicated. You potentially need to install your text editor and all of its required dependencies and tools in each environment.</li> + <li>Keeping the text editor inside the Toolbox still results in somewhat poor integration with the host system.</li> +</ul> + +<h2 id="flatpak-approach">Flatpak approach</h2> + +<p>You can install Flatpak SDKs such as the Rust build tools like this:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ flatpak install org.freedesktop.Sdk.Extension.rust-stable +</code></pre></div></div> + +<p>And then load them into a Flatpak editor using an SDK extension flag:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ FLATPAK_ENABLE_SDK_EXT=rust-stable flatpak run com.visualstudio.code +</code></pre></div></div> +<p>or just load every SDK available in your local setup:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ FLATPAK_ENABLE_SDK_EXT=* flatpak run com.visualstudio.code +</code></pre></div></div> + +<p>This causes the tools and libraries from that SDK to be made visible to the Flatpak application. There are Flatpak SDKs for a few languages like Java, Rust, Haskell, PHP and Node, but obviously support for all use-cases does not exist. But if you only plan to develop in languages that already have an SDK ready or are willing to learn how to package more SDKs, then this approach is definitely viable for things like Neovim, Emacs and VSCode Flatpaks.</p> + +<p>Drawbacks:</p> +<ul> + <li>Some languages do not have an SDK available</li> + <li>Limited to the language runtime versions available in the SDKs</li> + <li>Duplication of the language runtime (plus you will need to install all the library dependencies on the Flatpak to have proper code support from your editor)</li> +</ul> + +<h2 id="combined-approach">Combined approach</h2> + +<p>You can also mix approaches such that part of the development activity happens outside Toolbox and part of it inside the Toolbox. The simplest case would be installing your text editor via Flatpak for example and then connecting from that text editor to a Toolbox for project-specific tools like compilers.</p> + +<p>The benefit here is that you can install tools where they make most sense and where they integrate the best. So, you will get your nice app launchers and the ability to keep project environments separate.</p> + +<p>Tools available:</p> +<ul> + <li>For VSCode + <ul> + <li><a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers">Dev Containers extension</a></li> + <li><a href="https://github.com/owtaylor/toolbox-vscode">toolbox-vscode</a>: a script that configures the current toolbox container to work with the Remote Containers Visual Studio Code extension</li> + </ul> + </li> + <li>For Emacs + <ul> + <li><a href="https://github.com/fejfighter/toolbox-tramp">toolbox-tramp</a></li> + </ul> + </li> + <li>For Neovim + <ul> + <li><code class="language-plaintext highlighter-rouge">nvim --remote</code> ?</li> + <li><a href="https://github.com/jamestthompson3/nvim-remote-containers">nvim-remote-containers</a></li> + </ul> + </li> +</ul> + +<h2 id="user-rootless-installations">User (rootless) installations</h2> + +<p>I have not seen much information about this method anywhere and for me as of today it is the prefered approach. Flatpak applications (i.e.: editors) cannot access the root filesystem (i.e.: the preinstalled python package on <code class="language-plaintext highlighter-rouge">/usr/bin/python</code>). However they have full access to the home directory (same as Toolbx containers).</p> + +<p>So installing the development runtimes and tools locally (and then configuring your Flatpak editor to use them) provides an excelent out of the box developer experience without the need of Flatpak SDKs nor plugins to enable your editor to access the Toolbx containers.</p> + +<p>Drawbacks:</p> +<ul> + <li>It can be more time consuming to set up than normal <code class="language-plaintext highlighter-rouge">rpm</code> installs in some scenarios</li> + <li>No automatic updates</li> +</ul> + +<p>Let’s take a look at local installs for several platforms.</p> + +<h3 id="ocaml">OCaml</h3> + +<p>We will leverage the <a href="https://opam.ocaml.org/">OCaml Package Manager (opam)</a> to install the platform (or several versions) and local switches to each project:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ curl https://github.com/ocaml/opam/releases/download/2.1.5/opam-2.1.5-i686-linux -Lo ~/bin/opam &amp;&amp; chmod +x ~/bin/opam +</code></pre></div></div> + +<p>From a toolbx container with proper development tools, i.e.: <a href="https://github.com/josecastillolema/toolbox-images/blob/main/fedora-toolbox-38/Containerfile">this one</a> incialize the opam environment and install the <a href="https://ocaml.org/docs/platform">platform tools</a>:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>⬢ $ opam init +⬢ $ opam install dune ocaml-lsp-server odoc ocamlformat utop +</code></pre></div></div> + +<p>Optionally, install some extras for Emacs, Vim and Neovim:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>⬢ $ opam install ocp-indent ocp-index merlin tuareg +</code></pre></div></div> + +<p>We need to add the opam path (<code class="language-plaintext highlighter-rouge">~/bin</code>) to our editor of choice (i.e.: VSCode) path:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo flatpak override --env=PATH='/app/bin:/usr/bin:/home/$USER/bin:/home/$USER/.opam/default/bin' com.visualstudio.code +</code></pre></div></div> + +<p>Finally, open the project in VSCode and choose the corresponding opam switch.</p> + +<h4 id="using-local-switches">Using local switches</h4> + +<p>It is possible to define a switch within the source of a project to be used specifically in that project. +If a <strong>local switch</strong> is detected in the current directory or a parent, opam will select it automatically.</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>⬢ $ opam switch create . +</code></pre></div></div> + +<p>Finally, open the project in VSCode and choose the corresponding recommended opam switch.</p> + +<h3 id="golang">Golang</h3> + +<p>Download latest version:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdr ~/go +$ curl https://go.dev/dl/go1.21.3.linux-amd64.tar.gz -Lo ~/go.tar.gz +$ tar xf ~/go/go.tar.gz +$ mv ~/go/go ~/go/go-1.21.3 +</code></pre></div></div> + +<p>Add the following environment variables to your environment:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export GOROOT=$HOME/go/go-1.21.3 +export GOPATH=$HOME/go +export PATH=$PATH:$GOROOT/bin:$GOPATH/bin +</code></pre></div></div> + +<p>Check installation:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ go version +go version go1.21.3 linux/amd64 +</code></pre></div></div> + +<p>Finally, open VSCode (it should automatically detect the local Golang installation), install the <a href="https://marketplace.visualstudio.com/items?itemName=golang.Go">Go VSCode extension</a> and click on <code class="language-plaintext highlighter-rouge">⚠ Analysis Tools Missing</code> to install those.</p> + +<p><img src="/assets/images/posts/2023-10-21-dev-inmutable-distros/go.png" alt="" /></p> + +<h3 id="python">Python</h3> + +<h4 id="local-install">Local install</h4> +<p>Install both <code class="language-plaintext highlighter-rouge">python</code> and <code class="language-plaintext highlighter-rouge">pip</code> in the local user environment.</p> + +<p>From a toolbx container with proper development tools, i.e.: <a href="https://github.com/josecastillolema/toolbox-images/blob/main/fedora-toolbox-38/Containerfile">this one</a> download and compile Python:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>⬢ $ wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz +⬢ $ tar -xf Python-3.?.?.tar.xz +⬢ $ cd Python-3.?.?.tar.xz +⬢ $ ./configure --prefix=$HOME +⬢ $ make install +⬢ $ ln -s ~/bin/python3 ~/bin/python +⬢ $ pip install readline +</code></pre></div></div> + +<p>Then you can just pip install any dependencies, open the project in VSCode and choose the corresponding Python environment <code class="language-plaintext highlighter-rouge">~/bin/python</code>. I do not tend to pip install the requirements of the projects thought (only the indispensable ones, like i.e.: ansible), instead prefer the virtual environments approach that will be described next.</p> + +<p><img src="/assets/images/posts/2023-10-21-dev-inmutable-distros/python.png" alt="" /></p> + +<h4 id="using-python-virtual-environments">Using python virtual environments</h4> + +<p>Before opening the project in VSCode:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ flatpak run --command=sh com.visualstudio.code +[📦] python -m venv . +[📦] source bin/activate +()[📦] pip install -r requirements.txt +</code></pre></div></div> +<p>Then open the project in VSCode and choose the local virtual environment.</p> + +<h3 id="ansible">Ansible</h3> + +<p>Python local install is a pre-requisite.</p> + +<p>Local ansible installation:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>python -m pip install --user ansible ansible-lint +</code></pre></div></div> +<p>Ansible will be installed on ~/.local/bin, so we need to add this path to our editor of choice (i.e.: VSCode):</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ which ansible +~/.local/bin/ansible +$ sudo flatpak override --env=PATH='/app/bin:/usr/bin:/home/$USER/.local/bin' com.visualstudio.code +</code></pre></div></div> + +<p>Installed the Ansible extension by Red Hat in VSCode and <a href="https://developers.redhat.com/articles/2023/08/22/enhance-ansible-development-experience-lightspeed">enabled Lightspeed</a>.</p> + +<p>When opening VSCode it should automatically detect the local Ansible installation.</p>Jose Castillo LemaContinuation of Samsai notes on Toolbox-based Emacs Flatpak workflow.Kubemark on OpenShift2023-09-19T00:00:00-05:002023-09-19T15:00:58-05:00https://josecastillolema.github.io/kubemark-ocp<p><a href="https://github.com/kubernetes/kubernetes/tree/master/cmd/kubemark">Kubemark</a> is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, <strong>hollow nodes are extremely light (&lt;30 MiB)</strong>.</p> + +<p>The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks).</p> + +<h2 id="hands-to-work">Hands to work</h2> + +<p>We won’t be using the <a href="https://github.com/kubernetes-sigs/cluster-api-provider-kubemark/">Cluster API Kubemark Provider</a> for this demo, and instead we will be using directly Kubemark itself.</p> + +<p>Let’s assume we have a <strong>working OpenShift cluster</strong> available. We will be leveraging a <a href="https://developers.redhat.com/products/openshift-local/overview">Red Hat OpenShift Local instance</a> (formerly Red Hat CodeReady Containers) for this demo:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❯ oc version +Client Version: 4.13.6 +Kustomize Version: v4.5.7 +Server Version: 4.13.6 +Kubernetes Version: v1.26.6+73ac561 + +❯ oc get node +NAME STATUS ROLES AGE VERSION +crc-2zx29-master-0 Ready control-plane,master,worker 54d v1.26.6+73ac561 +</code></pre></div></div> + +<p>Let’s create a new <strong>project</strong>, <strong>secret</strong> and corresponding <strong>permissions</strong>:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❯ oc new-project kubemark +Now using project "kubemark" on server "https://api.crc.testing:6443". + +❯ oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG +secret/kubeconfig created + +❯ oc adm policy add-scc-to-user privileged -z default +clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "default" +</code></pre></div></div> + +<p>Let’s create the <strong>Kubemark pod</strong> (which in turn will automatically instantiate a new node):</p> +<div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="s">❯ cat &lt;&lt;EOF | oc apply -f -</span> +<span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span> +<span class="na">kind</span><span class="pi">:</span> <span class="s">Pod</span> +<span class="na">metadata</span><span class="pi">:</span> + <span class="na">labels</span><span class="pi">:</span> + <span class="na">app</span><span class="pi">:</span> <span class="s">hollow-node</span> + <span class="na">name</span><span class="pi">:</span> <span class="s">kubemark-node</span> + <span class="na">namespace</span><span class="pi">:</span> <span class="s">kubemark</span> +<span class="na">spec</span><span class="pi">:</span> + <span class="na">containers</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">args</span><span class="pi">:</span> + <span class="pi">-</span> <span class="s">--v=3</span> + <span class="pi">-</span> <span class="s">--morph=kubelet</span> + <span class="pi">-</span> <span class="s">--name=kubemark-node</span> + <span class="pi">-</span> <span class="s">--extended-resources=cpu=1,memory=4G</span> + <span class="na">command</span><span class="pi">:</span> + <span class="pi">-</span> <span class="s">/kubemark</span> + <span class="na">image</span><span class="pi">:</span> <span class="s">quay.io/cluster-api-provider-kubemark/kubemark:v1.26.7</span> + <span class="na">name</span><span class="pi">:</span> <span class="s">hollow-node</span> + <span class="na">securityContext</span><span class="pi">:</span> + <span class="na">privileged</span><span class="pi">:</span> <span class="no">true</span> + <span class="na">volumeMounts</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">mountPath</span><span class="pi">:</span> <span class="s">/kubeconfig</span> + <span class="na">name</span><span class="pi">:</span> <span class="s">kubeconfig</span> + <span class="pi">-</span> <span class="na">mountPath</span><span class="pi">:</span> <span class="s">/run/containerd/containerd.sock</span> + <span class="na">name</span><span class="pi">:</span> <span class="s">containerd-sock</span> + <span class="na">volumes</span><span class="pi">:</span> + <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">kubeconfig</span> + <span class="na">secret</span><span class="pi">:</span> + <span class="na">defaultMode</span><span class="pi">:</span> <span class="m">420</span> + <span class="na">secretName</span><span class="pi">:</span> <span class="s">kubeconfig</span> + <span class="pi">-</span> <span class="na">hostPath</span><span class="pi">:</span> + <span class="na">path</span><span class="pi">:</span> <span class="s">/run/crio/crio.sock</span> + <span class="na">type</span><span class="pi">:</span> <span class="s">Socket</span> + <span class="na">name</span><span class="pi">:</span> <span class="s">containerd-sock</span> +<span class="s">EOF</span> +<span class="s">pod/kubemark-node created</span> +</code></pre></div></div> + +<p>Let’s check the if new node was properly registered:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❯ oc get po +NAME READY STATUS RESTARTS AGE +kubemark-node 1/1 Running 0 5s + +❯ oc get node +NAME STATUS ROLES AGE VERSION +crc-2zx29-master-0 Ready control-plane,master,worker 54d v1.26.6+73ac561 +kubemark-node Ready &lt;none&gt; 4s v1.26.7 +</code></pre></div></div> + +<p>The cluster should be healthy:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❯ oc get co +NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE +authentication 4.13.6 True False False 12d +cluster-api 4.13.6 True False False 13d +config-operator 4.13.6 True False False 54d +console 4.13.6 True False False 12d +control-plane-machine-set 4.13.6 True False False 54d +dns 4.13.6 True False False 12d +etcd 4.13.6 True False False 54d +image-registry 4.13.6 True False False 12d +ingress 4.13.6 True False False 54d +kube-apiserver 4.13.6 True False False 54d +kube-controller-manager 4.13.6 True False False 54d +kube-scheduler 4.13.6 True False False 54d +kube-storage-version-migrator 4.13.6 True False False 12d +machine-api 4.13.6 True False False 54d +machine-approver 4.13.6 True False False 54d +machine-config 4.13.6 True False False 54d +marketplace 4.13.6 True False False 54d +network 4.13.6 True False False 54d +openshift-apiserver 4.13.6 True False False 12d +openshift-controller-manager 4.13.6 True False False 12d +openshift-samples 4.13.6 True False False 54d +operator-lifecycle-manager 4.13.6 True False False 54d +operator-lifecycle-manager-catalog 4.13.6 True False False 54d +operator-lifecycle-manager-packageserver 4.13.6 True False False 119m +platform-operators-aggregated 4.13.6 True False False 119m +service-ca 4.13.6 True False False 54d +</code></pre></div></div> + +<p>And there should a few pods already “running” in the new hollow node:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❯ oc get pods -A --field-selector spec.nodeName=kubemark-node +NAMESPACE NAME READY STATUS RESTARTS AGE +hostpath-provisioner csi-hostpathplugin-8p9j5 4/4 Running 0 17m +openshift-dns dns-default-lt7g8 2/2 Running 0 17m +openshift-dns node-resolver-9plz7 1/1 Running 0 17m +openshift-image-registry node-ca-x7hq7 1/1 Running 0 17m +openshift-ingress-canary ingress-canary-l2mlx 1/1 Running 0 17m +openshift-machine-config-operator machine-config-daemon-smq5z 2/2 Running 0 17m +openshift-multus multus-7xp8p 1/1 Running 0 17m +openshift-multus multus-additional-cni-plugins-rv6j7 0/1 Init:0/6 0 17m +openshift-multus network-metrics-daemon-zh2vz 2/2 Running 0 17m +openshift-network-diagnostics network-check-target-l85xq 1/1 Running 0 17m +openshift-sdn sdn-rv9mb 2/2 Running 0 17m + +</code></pre></div></div> + +<p>Let’s try to create some pods on the new hollow node:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>❯ oc run test --image nginx --overrides='{"spec": { "nodeSelector": {"kubernetes.io/hostname": "kubemark-node"}}}' +pod/test created + +❯ oc get po -o wide test +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES +test 1/1 Running 0 36s 192.168.192.168 kubemark-node &lt;none&gt; &lt;none&gt; +</code></pre></div></div> + +<p>Finally, bear in mind that in order to create new hollow nodes you will have to change two fields in the pod definition:</p> +<ul> + <li>The pod name: <code class="language-plaintext highlighter-rouge">metadata.name</code></li> + <li>The name of the hollow node: <code class="language-plaintext highlighter-rouge">spec.containers.args.--name</code></li> +</ul>Jose Castillo LemaKubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, hollow nodes are extremely light (&lt;30 MiB).My Linux desktop2023-06-07T00:00:00-05:002023-06-07T15:00:58-05:00https://josecastillolema.github.io/dotfiles<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;repo=dotfiles&amp;type=watch&amp;count=true&amp;size=large&amp;v=2" frameborder="0" scrolling="0" width="130" height="30" title="GitHub"></iframe> +<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;repo=dotfiles&amp;type=star&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="115" height="30" title="GitHub"></iframe> +<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;repo=dotfiles&amp;type=fork&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="170" height="30" title="GitHub"></iframe> + +<h1 id="dotfiles">dotfiles</h1> + +<p>My Linux desktop setup on <a href="https://fedoraproject.org/sericea/">Fedora Sericea</a>.</p> + +<p><img src="https://raw.githubusercontent.com/josecastillolema/dotfiles/master/img/screenshot.png" alt="" /></p> + +<h2 id="desktop">Desktop</h2> + +<ul> + <li> + <p>Window manager: Sway via baseOS</p> + + <p>Only use wayland applications; xwayland apps are not properly scaled <a href="https://github.com/swaywm/sway/issues/2966">swaywm/sway#2966</a>, drag and drop does not work <a href="https://github.com/swaywm/sway/issues/6460">swaywm/sway#6460</a> and have a glitched behaviour uppon minimized on system tray <a href="https://github.com/swaywm/sway/issues/6905">swaywm/sway#6905</a>.</p> + </li> + <li> + <p>Display setup: wdisplays via rpm-ostree</p> + </li> + <li>Browser + <ul> + <li>Primary: Firefox via baseOS</li> + <li> + <p>Secondary: Chrome via <a href="https://flathub.org/apps/com.google.Chrome">Flatpak</a></p> + + <p>With flags <code class="language-plaintext highlighter-rouge">--ozone-platform-hint=wayland</code> and <code class="language-plaintext highlighter-rouge">--enable-pixel-canvas-recording=enabled</code>.</p> + </li> + </ul> + </li> + <li> + <p>Terminal: <a href="https://wezfurlong.org/wezterm/">WezTerm</a> via <a href="https://flathub.org/apps/org.wezfurlong.wezterm">Flatpak</a></p> + + <p>Wayland, grabbable scrollbar and ligature support.</p> + + <p>Would prefer Foot but having a grabbable scrollbar is a must for now. One workaround would be to setup fast scroll (i.e.: <em>$mod + scroll wheel</em>) but I have not been able to configure it correctly (if anyone has please let me know <a href="#issues">↵</a>). Also Foot does not support ligatures <a href="https://codeberg.org/dnkl/foot/issues/57">dnkl/foot#57</a>.</p> + </li> + <li> + <p>IDE: Visual Studio Code via <a href="https://flathub.org/apps/com.visualstudio.code">Flatpak</a></p> + + <p>With flags <code class="language-plaintext highlighter-rouge">--socket=wayland</code> and <code class="language-plaintext highlighter-rouge">--ozone-platform-hint=wayland</code>.</p> + + <p>With <a href="https://github.com/tonsky/FiraCode">Fira Code font</a> with programming ligatures installed via rpm-ostree.</p> + + <p>Instead of using SDK extensions tend to opt for local language installs (golang, ocaml, etc.).</p> + + <p><a href="https://github.com/owtaylor/toolbox-vscode">toolbox-vscode</a> to integrate VSCode and toolbx for some SDKs that are not present in Flathub, i.e.: ansible.</p> + </li> + <li> + <p>File manager: Nautilus via rpm-ostree with NautilusPreviewer (GNOME Sushi) via Flatpak (org.gnome.NautilusPreviewer)</p> + + <p>Would prefer Thunar or PCMan FM but miss the preview feature.</p> + </li> + <li>File sync + <ul> + <li>Dropbox via <a href="https://flathub.org/apps/com.dropbox.Client">Flatpak</a></li> + <li>Gdrive with rclone via rpm-ostree</li> + </ul> + </li> + <li> + <p>Text editor: Gnome Text Editor via <a href="https://flathub.org/apps/org.gnome.TextEditor">Flatpak</a></p> + </li> + <li>PDF reader + <ul> + <li>Primary: Zathura via rpm-ostree</li> + <li>Secondary (when I need to annotate PDFs): Evince (GNOME Document Viewer) via <a href="https://flathub.org/apps/org.gnome.Evince">Flatpak</a></li> + </ul> + </li> + <li> + <p>Image viewer: imv via baseOS</p> + </li> + <li> + <p>Basic photo editing: Drawing via <a href="https://flathub.org/apps/com.github.maoschanz.drawing">Flatpak</a></p> + </li> + <li> + <p>Video player: mpv via <a href="https://flathub.org/apps/io.mpv.Mpv">Flatpak</a> using the flathub repo</p> + </li> + <li> + <p>Torrent client: Transmission via <a href="https://flathub.org/apps/com.transmissionbt.Transmission">Flatpak</a></p> + </li> + <li> + <p>WhatsApp client: WhatsApp for Linux via <a href="https://flathub.org/apps/com.github.eneshecan.WhatsAppForLinux">Flatpak</a></p> + + <p>Supports wayland.</p> + </li> + <li>Office suite: LibreOffice via <a href="https://flathub.org/apps/org.libreoffice.LibreOffice">Flatpak</a></li> +</ul> + +<h2 id="tools">Tools</h2> + +<ul> + <li>Shell: bash via baseOS</li> + <li>Terminal multiplexer: tmux in remote systems</li> + <li>Configuration management: Ansible via <a href="https://github.com/josecastillolema/toolbox-images/blob/main/fedora-toolbox-38/Containerfile#L16">toolbx</a></li> + <li> + <p>Text editor: neovim via <a href="https://flathub.org/es/apps/io.neovim.nvim">Flatpak</a>, emacs via <a href="https://flathub.org/es/apps/org.gnu.emacs">Flatpak</a></p> + + <p>With <a href="https://www.jetbrains.com/lp/mono/">JetBrains Mono font</a> with programming ligatures installed via rpm-ostree.</p> + </li> + <li>Prompt: Starship via local install</li> + <li>Containers: Podman and Toolbx via base OS, Docker in rootless mode via local install + <ul> + <li><a href="https://github.com/josecastillolema/toolbox-images">Toolbx images</a></li> + </ul> + </li> + <li>Virtualization: <a href="https://kcli.readthedocs.io/en/latest/">kcli</a> via <a href="https://github.com/josecastillolema/toolbox-images/blob/main/fedora-toolbox-38/Containerfile#L19-L21">toolbx</a> + <ul> + <li><a href="https://github.com/josecastillolema/kcli-plans">Kcli plans</a></li> + </ul> + </li> + <li>Kubernetes: Kind and kube-burner via local install</li> + <li>Application management: rpm-ostree and Flatpak via baseOS</li> + <li>Keyboard input: wtype via rpm-ostree</li> +</ul> + +<h2 id="tricks">Tricks</h2> + +<ul> + <li>For <a href="https://github.com/ovn-org/ovn-kubernetes/">ovn-kubernetes</a>: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ sudo modprobe openvswitch +</code></pre></div> </div> + </li> + <li>For <a href="https://kubevirt.io/">KubeVirt</a>: + <ul> + <li>Create the kind cluster as root</li> + <li>The following command will allow the installation of KubeVirt in a rootless cluster but then the VMs won’t be created because rootless docker/podman are unable to create pods in kind with ephemeral storage requests <a href="https://github.com/kubernetes-sigs/kind/issues/3359">kubernetes-sigs/kind#3359</a>: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ sudo chown $USER /dev/kvm +</code></pre></div> </div> + </li> + </ul> + </li> + <li>For <a href="https://github.com/redhat-performance/web-burner">web-burner</a>: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ sudo sysctl -w kernel.keys.maxkeys=5000 +</code></pre></div> </div> + </li> + <li>Create a kind cluster using rootless podman as provider without the need of setting systemd property <code class="language-plaintext highlighter-rouge">Delegate=yes</code> (see <a href="https://kind.sigs.k8s.io/docs/user/rootless/">https://kind.sigs.k8s.io/docs/user/rootless/</a>): + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> KIND_EXPERIMENTAL_PROVIDER=podman systemd-run --scope --user ~/go/bin/kind create cluster +</code></pre></div> </div> + </li> +</ul> + +<h2 id="issues">Issues</h2> + +<p>If you have managed to get working any of the following please let me know:</p> +<ul> + <li>Docker/Podman in rootless mode + <ul> + <li>Unable to create pods in kind with ephemeral storage requests <a href="https://github.com/kubernetes-sigs/kind/issues/3359">kubernetes-sigs/kind#3359</a></li> + </ul> + </li> + <li>Firefox + <ul> + <li>Slack huddles are not available <a href="https://github.com/webcompat/web-bugs/issues/82623">webcompat/web-bugs#82623</a></li> + <li> + <s>Prime Video does not work (neither Chrome nor Firefox) https://www.primevideo.com/region/na/help?nodeId=GU85HKX66NVFNQ9Y</s> + </li> + </ul> + </li> + <li>Starship + <ul> + <li>Conditional styling for Toolbx symbol <a href="https://github.com/starship/starship/issues/2724">starship/starship#2724</a></li> + </ul> + </li> + <li>Sway + <ul> + <li>Share a specific window on Google Meet <a href="https://github.com/swaywm/sway/issues/3282">swaywm/sway#3282</a></li> + <li> + <s>Drag &amp; Drop from XWayland apps to Wayland ones: it only works occasionally [swaywm/sway#6460](https://github.com/swaywm/sway/issues/6460)</s> + </li> + <li> + <s>XWayland windows gets tiled uppong being reopened from system tray [swaywm/sway#6905](https://github.com/swaywm/sway/issues/6905)</s> + </li> + <li>Fast scroll using <em>$mod + ScrollWheel</em>. Tried with: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> bindsym --whole-window $mod+button4 exec "wtype -M shift -k Prior" + bindsym --whole-window $mod+button5 exec "wtype -M shift -k Next" +</code></pre></div> </div> + <ul> + <li>Problem 1: Only works the first wheel turn, then need to relase and press again <em>$mod</em></li> + <li>Problem 2: Different apps use different combinations, i.e.: just <em>ScrollWheel</em> or <em>Shift+ScrollWheel</em></li> + </ul> + </li> + <li>Persistent workspaces <a href="https://github.com/swaywm/sway/pull/7631">swaywm/sway#7631</a></li> + </ul> + </li> + <li>Toolbx + <ul> + <li>Support for custom commands upon entering container <a href="https://github.com/containers/toolbox/issues/1302">containers/toolbox#1302</a></li> + </ul> + </li> + <li>Visual Studio Code + <ul> + <li>Small/giant mouse cursor <a href="https://github.com/microsoft/vscode/issues/136390">microsoft/vscode#136390</a></li> + </ul> + </li> +</ul> + +<h2 id="todo">TODO</h2> +<ul> + <li>Setup hibernation + <ul> + <li><a href="https://discussion.fedoraproject.org/t/setup-hibernation-on-silverblue-kionite/78834">https://discussion.fedoraproject.org/t/setup-hibernation-on-silverblue-kionite/78834</a></li> + <li><a href="https://bbs.archlinux.org/viewtopic.php?id=259382">https://bbs.archlinux.org/viewtopic.php?id=259382</a></li> + </ul> + </li> +</ul> + +<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;type=follow&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="230" height="30" title="GitHub"></iframe>Jose Castillo LemaTelecom cloud-native development: an industry point of view2023-06-02T00:00:00-05:002023-06-02T15:00:58-05:00https://josecastillolema.github.io/imdea<p><a href="https://networks.imdea.org/whatsnew/events-agenda/"><img src="/assets/images/posts/2023-06-02-imdea.png" alt="" /></a></p> + +<p>Telcos are increasingly moving from physical/virtual to cloud-native network functions in the context of 5G adoption. In this talk we will describe the telecom network transformation journey, benefits of cloud-native deployments, technical requirements/constraints of the underlying cloud service managers, the role of open source technologies and the use of the operator pattern in telecom contexts.</p> + +<p><strong>Event</strong>: <a href="https://networks.imdea.org/whatsnew/events-agenda/telecom-cloud-native-development-an-industry-point-of-view/">link</a></p> + +<p><strong>Date</strong>: 9 Jun 2023</p> + +<p><strong>Location</strong>: MR-A1 [Ramón] &amp; MR-A2 [Cajal], IMDEA Networks Institute, Avda. del Mar Mediterráneo 22, 28918 Leganés – Madrid</p> + +<p><strong>Time</strong>: 12:00</p> + +<p><strong>Add to Calendar</strong>: <a href="https://networks.imdea.org/whatsnew/events-agenda/telecom-cloud-native-development-an-industry-point-of-view/#">iCalendar</a> <a href="https://networks.imdea.org/whatsnew/events-agenda/telecom-cloud-native-development-an-industry-point-of-view/#">Outlook</a> <a href="https://www.google.com/calendar/render?action=TEMPLATE&amp;text=Telecom+cloud-native+development%3A+an+industry+point+of+view&amp;dates=20230609T100000Z/20230609T120000Z&amp;details=&amp;location=MR-A1+%5BRam%C3%B3n%5D+%26+MR-A2+%5BCajal%5D%2C+IMDEA+Networks+Institute%2C+Avda.+del+Mar+Mediterr%C3%A1neo+22%2C+28918+Legan%C3%A9s+%E2%80%93+Madrid&amp;sf=true&amp;output=xml">Google</a></p>Jose Castillo LemaNetSoft 2023 - Network Softwarization in the Era of Complexity2023-05-25T00:00:00-05:002023-06-24T15:00:58-05:00https://josecastillolema.github.io/netsoft23<p><a href="https://netsoft2023.ieee-netsoft.org/"><img src="/assets/images/posts/2023-05-25-netsoft23/1.png" alt="" /></a></p> + +<h2 id="about">About</h2> + +<p>The <a href="https://netsoft2023.ieee-netsoft.org/about">9th IEEE International Conference on Network Softwarization (IEEE NetSoft 2023)</a> will be held in <strong>Madrid, Spain from June 19 to June 23, 2023</strong>. The conference will be hosted by University Carlos III of Madrid, one of the best Spanish universities in many technical areas, in its downtown campus in Madrid.</p> + +<p>The theme of the IEEE NetSoft 2023 <em>Boosting Future Networks through Advanced Softwarization</em> reflects the vision that future networks will also integrate a native service dimension in a continuum compute-connectivity environment crossing different network segments/providers/domains and enabled by softwarization coupled with new advanced architectures, frameworks, and models. This will allow greater flexibility, reliability, adaptability, and efficiency for both network operations and service deployments for the benefit of an ecosystem of different application layers/developers/components. This will also lay the foundation to head beyond the current inter-networking capabilities in Future Internet architectures and to further convergence between internetworking and IP layer re-engineering.</p> + +<p>As in previous events, the IEEE NetSoft 2023 will showcase the latest research and development results from academia and industry in the area of AI/ML, SDN/NFV, edge/fog networking, management and orchestration, network slicing, energy efficiency, cloud-native deployments, security among others promising research areas in the context of Future Internet with the final aim of enabling an open softwarized network environment featured by full automation and autonomicity, native network slicing, and AI-based and dynamic control, management and orchestration.</p> + +<p>IEEE NetSoft 2023 will feature an intense five-day conference program. The core of the conference will run from June 20 to June 22 and will feature inspiring Keynote Talks delivered by world-class researchers and industry representatives. It also includes a Distinguished Expert Panel, Technical Sessions, as well as Demos showcasing prototypes and proof-of-concept implementations of ongoing research ideas. On June 19 and June 23, the program includes workshops and tutorials that will provide the opportunity to deep dive into the focused topics on network softwarization. In addition, in this edition for the first time a PhD symposium will take place to engage PhD students in the vibrant NetSoft community and give them the opportunity to exchange ideas and receive valuable and constructive feedback for PhD work.</p> + +<h2 id="network-softwarization-in-the-era-of-complexity"><a href="https://netsoft2023.ieee-netsoft.org/program/distinguished-expert-panel">Network Softwarization in the Era of Complexity</a></h2> + +<p>The IEEE International Conference on Network Softwarization (NetSoft) has a long-standing tradition of hosting a Distinguished Expert Panel (DEP) at the end of the three main conference days. The DEP offers the audience the possibility to hear the opinions and visions of renowned experts coming from academia, industry, and government agencies on the most relevant aspects of network softwarization, as well as to actively interact with them.</p> + +<p>The NetSoft 2023 conference theme (<em>Boosting Future Networks through Advanced Softwarization</em>) reflects the vision of networks characterized by unprecedented levels of complexity, which can be dealt with only through the flexibility, reliability, efficiency, and abstraction capabilities offered by network softwarization and its advanced architectures, frameworks, and models. How to approach such complexity from a perspective that has practical implications on industry and society, taking advantage of the pervasiveness of communications and their evolution toward intelligent paradigms, will be discussed in the NetSoft 2023 DEP, scheduled on <strong>Thursday, June 22</strong>.</p> + +<p>The <a href="https://netsoft2023.ieee-netsoft.org/program/distinguished-expert-panel">panel</a> will be centered on the topic <em>Network Softwarization in the Era of Complexity</em> and the discussion will continue on two interesting subtopics: <em>Industrialization of Network Softwarization</em> and <em>Network Softwarization: Pervasiveness and Intelligence</em>. Champions from industry and academia will present their views and introduce the challenges, stimulating the participation of the other panelists as well as the audience.</p> + +<h2 id="panelists">Panelists</h2> +<ul> + <li>Rui Aguiar, IT Aveiro, Portugal</li> + <li>Javier Antich Romaguera, Selector AI, Spain</li> + <li>Jose Castillo Lema, Red Hat, Spain</li> + <li>Abhimanyu Gosain, Northeastern University, USA</li> + <li>Ricard Vilalta, CTTC, Spain</li> +</ul> + +<h2 id="co-chairs">Co-chairs</h2> +<ul> + <li>Luis Miguel Contreras Murillo, Telefonica I+D, Spain</li> + <li>Walter Cerroni, University of Bologna, Italy</li> +</ul> + +<p><img src="/assets/images/posts/2023-05-25-netsoft23/2.jpg" alt="" /></p>Jose Castillo LemaDevConf.CZ 2023 - Writing a K8s Operator for Knative Functions2023-05-23T00:00:00-05:002023-07-05T15:00:58-05:00https://josecastillolema.github.io/devconf23<p><a href="https://www.devconf.info/cz/"><img src="/assets/images/posts/2023-05-23-devconf23/1.png" alt="" /></a></p> + +<h2 id="about">About</h2> + +<p><a href="https://www.devconf.info/cz/">DevConf.CZ</a> is an annual, free, Red Hat sponsored community conference for developers, admins, DevOps engineers, testers, documentation writers and other contributors to open source technologies. At DevConf.CZ, FLOSS communities sync, share, and hack on upstream projects together.</p> + +<p>DevConf.cz Mini is a bi-annual, highly focused, local, in-person version of DevConf.cz. It offers an opportunity to return to our conference themes in a smaller setting and establishes a platform for the Czech Republic and EMEA based community to sync, share and hack on upstream projects together.</p> + +<p>There is no admission or ticket charge for DevConf.CZ events. However, you are required to complete a free registration. Watch this site for updates about registration.</p> + +<p>We are committed to fostering an open and welcoming environment at our conference. We set expectations for inclusive behavior through our code of conduct and media policies, and are prepared to enforce these.</p> + +<h2 id="schedule"><a href="https://devconfcz2023.sched.com/">Schedule</a></h2> + +<p><a href="https://devconfcz2023.sched.com/event/1MYpJ/writing-a-k8s-operator-for-knative-functions"><strong>Writing a K8s Operator for Knative Functions</strong></a></p> + +<p><a href="https://research.redhat.com/blog/2023/06/09/red-hat-research-engineers-will-lead-the-workshop-on-k8s-operator-for-faas-at-devconf-cz-2023/"><img src="/assets/images/posts/2023-05-23-devconf23/2.png" alt="" /></a></p> + +<p>Serverless and Function as a Service (FaaS) are getting more and more attention from customers and developers as a way to develop, run and manage applications functionality without the burden of infrastructure related knowledge. All big cloud providers offer them already, e.g., AWS Lambda, Google Cloud Functions or Microsoft Azure Functions. One of the most relevant upstream projects for serverless is Knative, which recently added support for functions (create, build, and deploy) on top of K8s clusters.</p> + +<p>This workshop will introduce you to the the <a href="/physics">PHYSICS European project</a> and its FaaS model, as well as to building Kubernetes operators. You will implement a K8s Operator, using the operatorsdk framework, to provide the functionality of the Knative CLI. This will allow easier creation, build and deployment of functions with Knative just by creating Kubernetes (CR) objects, and will help you learn the internals about how K8s Operators work in a real life example.</p> + +<p><strong><em>Friday June 16, 2023 • 2:15pm - 3:35pm CEST</em></strong></p> + +<p><img src="/assets/images/posts/2023-05-23-devconf23/3.jpeg" alt="" /></p> + +<h2 id="speakers">Speakers</h2> +<ul> + <li><a href="https://devconfcz2023.sched.com/speaker/ltomasbo">Luis Tomas Bolivar</a> - Software Engineer at <strong>Red Hat</strong></li> + <li><a href="https://devconfcz2023.sched.com/speaker/jlema">Jose Castillo Lema</a> - Software Engineer at <strong>Red Hat</strong></li> +</ul> + +<h2 id="links">Links</h2> + +<ul> + <li><a href="https://devconfcz2023.sched.com/event/1MYpJ/writing-a-k8s-operator-for-knative-functions">DevConf</a></li> + <li><a href="https://research.redhat.com/blog/2023/06/09/red-hat-research-engineers-will-lead-the-workshop-on-k8s-operator-for-faas-at-devconf-cz-2023/">Red Hat Research (RHR) blog</a></li> + <li><a href="https://physics-faas.eu/event/future-tech-and-open-research-hackathon/">Physics blog</a></li> +</ul> + +<h2 id="workshop">Workshop</h2> + +<h1 id="physics-devconf">physics-devconf</h1> + +<p>This repository provides an easy way to deploy a <a href="https://kind.sigs.k8s.io/">KinD</a> cluster with <a href="https://knative.dev/">Knative</a> (using <a href="https://github.com/knative/func/blob/main/hack/allocate.sh">this script</a>) on top of a Fedora 37 VM.</p> + +<p>It also provides a couple of sample scripts to deploy a Knative service and a function.</p> + +<h2 id="index">Index</h2> +<ul> + <li><a href="#physics-devconf">physics-devconf</a> + <ul> + <li><a href="#index">Index</a></li> + <li><a href="#goals">Goals</a></li> + <li><a href="#deploy-the-environment-vm">Deploy the environment (VM)</a></li> + <li><a href="#access-the-environment">Access the environment</a></li> + <li><a href="#create-a-new-python-function-and-invoke-it">Create a new (python) function and invoke it</a></li> + <li><a href="#fork-the-base-operator-github-repository-and-deploy-locally">Fork the base operator github repository and deploy locally</a></li> + <li><a href="#solution">Solution</a></li> + <li><a href="#links">Links</a></li> + </ul> + </li> +</ul> + +<h2 id="goals">Goals</h2> + +<ul> + <li>Get familiar on how to create/test Knative functions</li> + <li>Get familiar with the operator SDK</li> +</ul> + +<h2 id="deploy-the-environment-vm">Deploy the environment (VM)</h2> + +<p>The VM requires 4 vCPUs and 6GB of memory. It takes approximately 10 minutes to come up:</p> +<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ vagrant up +Bringing machine 'default' up with 'libvirt' provider... +==&gt; default: Checking if box 'fedora/37-cloud-base' version '37.20221105.0' is up to date... +==&gt; default: Creating image (snapshot of base box volume). +==&gt; default: Creating domain with the following settings... +... + default: configmap/config-br-defaults configured + default: ⑦ Dapr + default: ./allocate.sh: line 251: dapr: command not found + default: popd + default: ~/go/src/github.com/knative/func + default: + default: cat &lt;&lt;EOF | sudo tee /etc/docker/daemon.json + default: {"insecure-registries": ["localhost:50000"]} + default: EOF + default: {"insecure-registries": ["localhost:50000"]} +</code></pre></div></div> + +<p>The provision script installs:</p> +<ul> + <li>Docker</li> + <li>Golang</li> + <li>Pip</li> + <li>Git</li> + <li>Curl</li> + <li>Wget</li> + <li>Cosign</li> + <li>Kubectl</li> + <li><a href="https://knative.dev/docs/client/install-kn/">Kn</a> - the Knative client</li> + <li><a href="https://knative.dev/docs/functions/install-func/">Func</a> - Knative functions</li> + <li>Kind</li> + <li><a href="https://sdk.operatorframework.io/docs/installation/">Operator-sdk</a></li> +</ul> + +<h2 id="access-the-environment">Access the environment</h2> + +<ol> + <li>Login into the virtual machine just created: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ vagrant ssh +</code></pre></div> </div> + </li> + <li>Check if all the pods are running: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ kubectl get pods -A + NAMESPACE NAME READY STATUS RESTARTS AGE + contour-external contour-56cfd44877-gmzdd 1/1 Running 0 2m30s + contour-external contour-56cfd44877-wj844 1/1 Running 0 2m30s + contour-external contour-certgen-v1.22.0-qbbx6 0/1 Completed 0 2m30s + contour-external envoy-4j2vr 2/2 Running 0 2m30s + contour-internal contour-865fdc98f9-48vv9 1/1 Running 0 2m29s + contour-internal contour-865fdc98f9-l22kw 1/1 Running 0 2m29s + contour-internal contour-certgen-v1.22.0-5t52p 0/1 Completed 0 2m30s + contour-internal envoy-vlxrb 2/2 Running 0 2m29s + knative-eventing eventing-controller-64b4b79c45-bxk6f 1/1 Running 0 4m5s + knative-eventing eventing-webhook-86f7dd95db-phc9x 1/1 Running 0 4m5s + knative-eventing imc-controller-769d8b7f66-hx2lj 1/1 Running 0 3m33s + knative-eventing imc-dispatcher-55979cf74b-8n2w9 1/1 Running 0 3m33s + knative-eventing mt-broker-controller-f97f8747-r7nnr 1/1 Running 0 3m21s + knative-eventing mt-broker-filter-77c75d69fb-j4972 1/1 Running 0 3m21s + knative-eventing mt-broker-ingress-d96f6d8b5-g4ng6 1/1 Running 0 3m21s + knative-serving activator-75777fd57c-hwsth 1/1 Running 0 4m49s + knative-serving autoscaler-57d647d6ff-cs2bx 1/1 Running 0 4m49s + knative-serving controller-677995dc7b-9tbmj 1/1 Running 0 4m48s + knative-serving domain-mapping-5676fb7bcf-92xmf 1/1 Running 0 4m48s + knative-serving domainmapping-webhook-fcbd7dff4-5v26r 1/1 Running 0 4m48s + knative-serving net-contour-controller-847758c4bf-kltdx 1/1 Running 0 2m + knative-serving webhook-544b958c69-h7vmz 1/1 Running 0 4m48s + kube-system coredns-6d4b75cb6d-btqsp 1/1 Running 0 5m16s + kube-system coredns-6d4b75cb6d-shbkf 1/1 Running 0 5m16s + kube-system etcd-func-control-plane 1/1 Running 0 5m35s + kube-system kindnet-mr2xx 1/1 Running 0 5m16s + kube-system kube-apiserver-func-control-plane 1/1 Running 0 5m30s + kube-system kube-controller-manager-func-control-plane 1/1 Running 0 5m30s + kube-system kube-proxy-vpb8z 1/1 Running 0 5m16s + kube-system kube-scheduler-func-control-plane 1/1 Running 0 5m32s + local-path-storage local-path-provisioner-6b84c5c67f-575j5 1/1 Running 0 5m16s + metallb-system controller-6c58495cbb-j52ls 1/1 Running 0 3m3s + metallb-system speaker-v5hd2 1/1 Running 0 3m3s +</code></pre></div> </div> + </li> + <li>Check if the local registry is running: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ docker ps + CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES + 59be051ba43c registry:2 "/entrypoint.sh /etc…" 2 minutes ago Up 2 minutes 127.0.0.1:50000-&gt;5000/tcp func-registry + caf78811a6a9 kindest/node:v1.24.6 "/usr/local/bin/entr…" 4 minutes ago Up 4 minutes 127.0.0.1:39609-&gt;6443/tcp, 127.0.0.1:80-&gt;30080/tcp, 127.0.0.1:443-&gt;30443/tcp func-control-plane +</code></pre></div> </div> + </li> +</ol> + +<h2 id="create-a-new-python-function-and-invoke-it">Create a new (python) function and invoke it</h2> + +<ol> + <li>Create the Knative function: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ func create -l python test-hw + Created python function in /home/vagrant/test-hw +</code></pre></div> </div> + </li> + <li>Take a look around and change the <code class="language-plaintext highlighter-rouge">func.py</code> code as follows: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ cd test-hw + + $ ls + app.sh func.py func.yaml Procfile README.md requirements.txt test_func.py + + $ cat func.py +</code></pre></div> </div> + <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="kn">from</span> <span class="nn">parliament</span> <span class="kn">import</span> <span class="n">Context</span> + <span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">Request</span> + <span class="kn">import</span> <span class="nn">json</span> + + <span class="c1"># parse request body, json data or URL query parameters +</span> <span class="k">def</span> <span class="nf">payload_print</span><span class="p">(</span><span class="n">req</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> + <span class="k">if</span> <span class="n">req</span><span class="p">.</span><span class="n">method</span> <span class="o">==</span> <span class="s">"GET"</span><span class="p">:</span> + <span class="k">return</span> <span class="s">"DevConf.cz 2023!"</span> + + <span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">context</span><span class="p">:</span> <span class="n">Context</span><span class="p">):</span> + <span class="s">""" + Function template + The context parameter contains the Flask request object and any + CloudEvent received with the request. + """</span> + + <span class="c1"># Add your business logic here +</span> <span class="k">print</span><span class="p">(</span><span class="s">"Received request"</span><span class="p">)</span> + + <span class="k">if</span> <span class="s">'request'</span> <span class="ow">in</span> <span class="n">context</span><span class="p">.</span><span class="n">keys</span><span class="p">():</span> + <span class="k">return</span> <span class="n">payload_print</span><span class="p">(</span><span class="n">context</span><span class="p">.</span><span class="n">request</span><span class="p">),</span> <span class="mi">200</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">print</span><span class="p">(</span><span class="s">"Empty request"</span><span class="p">,</span> <span class="n">flush</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> + <span class="k">return</span> <span class="s">"{}"</span><span class="p">,</span> <span class="mi">200</span> +</code></pre></div> </div> + </li> + <li>Build (and push) the function to the internal registry: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ export FUNC_REGISTRY=localhost:50000/kn-user + $ func build --push + 🙌 Function image built: localhost:50000/kn-user/test-hw:latest + 🕕 Pushing function image to the registry "localhost:50000" using the "" user credentials +</code></pre></div> </div> + </li> + <li>Check that the image has been correctly pushed into the internal registry: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ curl localhost:50000/v2/_catalog + {"repositories":["kn-user/test-hw"]} +</code></pre></div> </div> + </li> + <li>Deploy the function to the kind cluster: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ func deploy --build=false --push=false + ✅ Function deployed in namespace "default" and exposed at URL: + http://test-hw.default.127.0.0.1.sslip.io +</code></pre></div> </div> + </li> + <li>Check that the function has been correctly deployed. A new <strong>Knative service (ksvc)</strong> object is created, which triggers the Knative controllers to create the other k8s objects (deployment and route). After approximately one minute minute the deployment is scaled down to 0 replicas if not used to spare resources: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> $ kubectl get ksvc + NAME URL LATESTCREATED LATESTREADY READY REASON + test-hw http://test-hw.default.127.0.0.1.sslip.io test-hw-00001 test-hw-00001 True + + $ kubectl get deploy + NAME READY UP-TO-DATE AVAILABLE AGE + test-hw-00001-deployment 0/0 0 0 104s + + $ kubectl get route + NAME URL READY REASON + test-hw http://test-hw.default.127.0.0.1.sslip.io True + + $ kubectl get pods + (empty if more than a minute has passed) +</code></pre></div> </div> + </li> + <li>Invoke the function: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ curl http://test-hw.default.127.0.0.1.sslip.io +DevConf.cz 2023! +</code></pre></div> </div> + </li> + <li>Check that the deployment has been scaled up: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kubectl get deploy +NAME READY UP-TO-DATE AVAILABLE AGE +test-hw-00001-deployment 1/1 1 1 3s +</code></pre></div> </div> + </li> +</ol> + +<h2 id="fork-the-base-operator-github-repository-and-deploy-locally">Fork the base operator github repository and deploy locally</h2> + +<ol> + <li> + <p>Fork <a href="https://github.com/luis5tb/devconf-knative-operator">this github repository</a> into your github account: <code class="language-plaintext highlighter-rouge">https://github.com/luis5tb/devconf-knative-operator</code></p> + </li> + <li>Clone your fork locally inside the VM (change <strong>YOUR_USER</strong> by yours): + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git clone https://github.com/YOUR_USER/devconf-knative-operator.git +</code></pre></div> </div> + + <p>In case you want to start an operator from scratch do the next instead (change <strong>YOUR_USER</strong> by yours):</p> + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdir devconf-knative-operator +$ cd devconf-knative-operator + +# Create base operator +$ operator-sdk init --domain example.com --repo github.com/YOUR_USER/devconf-knative-operator + +# Add API +$ operator-sdk create api --group knf --version v1alpha1 --kind KnativeFunction --resource --controller +</code></pre></div> </div> + </li> + <li>There are three important files to consider: + <ul> + <li><strong>controllers/knativefunction_controller.go</strong>: implements the operator reconcile loop</li> + <li><strong>api/v1alpha1/knativefunction_types.go</strong>: the KnativeFunction CRD definition</li> + <li><strong>config/samples/knf_v1alpha1_knativefunction.yaml</strong>: an example KnativeFunction CRD</li> + </ul> + </li> + <li>Let’s take a look at <strong>api/v1alpha1/knativefunction_types.go</strong>, as you can see it defines an example <code class="language-plaintext highlighter-rouge">Foo</code> field: + <div class="language-golang highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">...</span> +<span class="k">type</span> <span class="n">KnativeFunctionSpec</span> <span class="k">struct</span> <span class="p">{</span> + <span class="c">// Foo is an example field of KnativeFunction. Edit knativefunction_types.go to remove/update</span> + <span class="n">Foo</span> <span class="kt">string</span> <span class="s">`json:"foo,omitempty"`</span> +<span class="p">}</span> +<span class="o">...</span> +</code></pre></div> </div> + </li> + <li> + <p>Let’s modify the operator reconcyle loop in <strong>controllers/knativefunction_controller.go</strong>:</p> + + <p>Before:</p> + <div class="language-golang highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">func</span> <span class="p">(</span><span class="n">r</span> <span class="o">*</span><span class="n">KnativeFunctionReconciler</span><span class="p">)</span> <span class="n">Reconcile</span><span class="p">(</span><span class="n">ctx</span> <span class="n">context</span><span class="o">.</span><span class="n">Context</span><span class="p">,</span> <span class="n">req</span> <span class="n">ctrl</span><span class="o">.</span><span class="n">Request</span><span class="p">)</span> <span class="p">(</span><span class="n">ctrl</span><span class="o">.</span><span class="n">Result</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> + <span class="n">_</span> <span class="o">=</span> <span class="n">log</span><span class="o">.</span><span class="n">FromContext</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span> + + <span class="c">// TODO(user): your logic here</span> + + <span class="k">return</span> <span class="n">ctrl</span><span class="o">.</span><span class="n">Result</span><span class="p">{},</span> <span class="no">nil</span> +<span class="p">}</span> +</code></pre></div> </div> + <p>After:</p> + <div class="language-golang highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">func</span> <span class="p">(</span><span class="n">r</span> <span class="o">*</span><span class="n">KnativeFunctionReconciler</span><span class="p">)</span> <span class="n">Reconcile</span><span class="p">(</span><span class="n">ctx</span> <span class="n">context</span><span class="o">.</span><span class="n">Context</span><span class="p">,</span> <span class="n">req</span> <span class="n">ctrl</span><span class="o">.</span><span class="n">Request</span><span class="p">)</span> <span class="p">(</span><span class="n">ctrl</span><span class="o">.</span><span class="n">Result</span><span class="p">,</span> <span class="kt">error</span><span class="p">)</span> <span class="p">{</span> + <span class="n">log</span> <span class="o">:=</span> <span class="n">log</span><span class="o">.</span><span class="n">FromContext</span><span class="p">(</span><span class="n">ctx</span><span class="p">)</span> + + <span class="n">function</span> <span class="o">:=</span> <span class="o">&amp;</span><span class="n">knfv1alpha1</span><span class="o">.</span><span class="n">KnativeFunction</span><span class="p">{}</span> + <span class="n">log</span><span class="o">.</span><span class="n">Info</span><span class="p">(</span><span class="s">"Received a request to create a new knativefunction"</span><span class="p">,</span> <span class="s">"Foo ="</span><span class="p">,</span> <span class="n">function</span><span class="o">.</span><span class="n">Spec</span><span class="o">.</span><span class="n">Foo</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">ctrl</span><span class="o">.</span><span class="n">Result</span><span class="p">{},</span> <span class="no">nil</span> +<span class="p">}</span> +</code></pre></div> </div> + + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd devconf-knative-operator + +# Make code modifications +$ go mod tidy +$ make manifests +$ make generate +</code></pre></div> </div> + </li> + <li> + <p>Test your code by deploying it. You will need two terminals, <strong>T1</strong> and <strong>T2</strong>.</p> + + <p>[<strong>T1</strong>] First option is simply doing <code class="language-plaintext highlighter-rouge">make install run</code>:</p> + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ make install run +test -s /home/vagrant/devconf-knative-operator/bin/controller-gen &amp;&amp; /home/vagrant/devconf-knative-operator/bin/controller-gen --version | grep -q v0.11.1 || \ +GOBIN=/home/vagrant/devconf-knative-operator/bin go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.11.1 +/home/vagrant/devconf-knative-operator/bin/controller-gen rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases +/home/vagrant/devconf-knative-operator/bin/kustomize build config/crd | kubectl apply -f - +Warning: Detected changes to resource knativefunctions.knf.example.com which is currently being deleted. +customresourcedefinition.apiextensions.k8s.io/knativefunctions.knf.example.com configured +/home/vagrant/devconf-knative-operator/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..." +go fmt ./... +go vet ./... +go run ./main.go +I0616 08:11:27.582792 10567 request.go:682] Waited for 1.041837981s due to client-side throttling, not priority and fairness, request: GET:https://127.0.0.1:44399/apis/networking.internal.knative.dev/v1alpha1?timeout=32s +2023-06-16T08:11:27Z INFO controller-runtime.metrics Metrics server is starting to listen {"addr": ":8080"} +2023-06-16T08:11:27Z INFO setup starting manager +2023-06-16T08:11:27Z INFO Starting server {"path": "/metrics", "kind": "metrics", "addr": "[::]:8080"} +2023-06-16T08:11:27Z INFO Starting server {"kind": "health probe", "addr": "[::]:8081"} +2023-06-16T08:11:27Z INFO Starting EventSource {"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction", "source": "kind source: *v1alpha1.KnativeFunction"} +2023-06-16T08:11:27Z INFO Starting Controller {"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction"} +2023-06-16T08:11:27Z INFO Starting workers {"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction", "worker count": 1} +</code></pre></div> </div> + + <p>[<strong>T1</strong>] Second option, if you want to deploy your controller as a container too:</p> + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># First time only +# Edit config/manager/manager.yaml so that it does not try to download the image if present +# Add, after "image: controller:latest": imagePullPolicy: IfNotPresent + +# Then every time you have new code to check do the next +# Increase the version (v0.0.X) as neeeded +$ make docker-build IMG="example.com/devconf-knative-operator:v0.0.X" +$ kind load docker-image example.com/devconf-knative-operator:v0.0.X --name func +$ make deploy IMG="example.com/devconf-knative-operator:v0.0.X" + +# Check the deployment +$ kubectl get deployment -n devconf-knative-operator-system + +# Check the pod +$ kubectl get pod -n devconf-knative-operator-system +$ kubectl logs -f -n devconf-knative-operator-system POD + +# Check the logs +$ kubectl logs -f -n devconf-knative-operator-system POD +</code></pre></div> </div> + </li> + <li>[<strong>T2</strong>] In a <strong>second terminal</strong> create a sample CRD: + <div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="s">$ cat &lt;&lt;EOF | kubectl apply -f -</span> +<span class="nn">---</span> +<span class="na">apiVersion</span><span class="pi">:</span> <span class="s">knf.example.com/v1alpha1</span> +<span class="na">kind</span><span class="pi">:</span> <span class="s">KnativeFunction</span> +<span class="na">metadata</span><span class="pi">:</span> +<span class="na">labels</span><span class="pi">:</span> + <span class="s">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">knativefunction</span> + <span class="s">app.kubernetes.io/instance</span><span class="pi">:</span> <span class="s">knativefunction-sample</span> + <span class="s">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">devconf-knative-operator</span> + <span class="s">app.kubernetes.io/managed-by</span><span class="pi">:</span> <span class="s">kustomize</span> + <span class="s">app.kubernetes.io/created-by</span><span class="pi">:</span> <span class="s">devconf-knative-operator</span> +<span class="na">name</span><span class="pi">:</span> <span class="s">knativefunction-sample</span> +<span class="na">spec</span><span class="pi">:</span> + <span class="na">foo</span><span class="pi">:</span> <span class="s">test</span> +<span class="s">EOF</span> +</code></pre></div> </div> + </li> + <li>[<strong>T1</strong>] In the <strong>first terminal</strong> you should see something like: + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>2023-06-16T08:12:54Z INFO Received a request to create a new knativefunction {"controller": "knativefunction", "controllerGroup": "knf.example.com", "controllerKind": "KnativeFunction", "KnativeFunction": {"name":"knativefunction-sample","namespace":"default"}, "namespace": "default", "name": "knativefunction-sample", "reconcileID": "9be34733-bca6-4134-bf6d-8f0ed69106bd", "Foo =": "test"} +</code></pre></div> </div> + </li> + <li> + <p>[<strong>Challenge</strong>] The goal now is to extend the operator to deploy the existing Knative function (from step 6). Once this is accomplished, extend the operator to build, push and deploy any function located on a given github repository.</p> + + <p>You will need to interact with the K8s API from the controller (<code class="language-plaintext highlighter-rouge">knativefunction_controller.go</code>). <a href="https://github.com/operator-framework/operator-sdk/tree/master/testdata/go/v3/memcached-operator">This example repo</a> contains a Memcached operator that ilustrates how to create K8s objects from the controller (i.e. a Deployment).</p> + + <p>Make code changes, undeploy and iterate (looping between step 14 and 19 until needed). If the first option was used, just stop the make install run, if the containerized option was chosen, then the next:</p> + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kubectl delete -f config/samples/knf_v1alpha1_knativefunction.yaml +$ make undeploy +</code></pre></div> </div> + </li> +</ol> + +<h2 id="solution">Solution</h2> + +<ol> + <li> + <p>Deploy a CR to force the controller to reconcile and get the function deployed. First you need to edit the <code class="language-plaintext highlighter-rouge">config/samples/knf_v1alpha1_knativefunction.yaml</code> with the desired options:</p> + + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Get the previously created function docker image information, with digest +$ kubectl get nodes -oyaml | grep test-hw + - localhost:50000/kn-user/test-hw@sha256:79c4568eedb9f3366c6ee6b72980eec2aff9a80796328888e10f834c00beb51f + +# Modify the config/samples/knf_v1alpha1_knativefunction.yaml using the above as image +$ cat config/samples/knf_v1alpha1_knativefunction.yaml +apiVersion: knf.example.com/v1alpha1 +kind: KnativeFunction +metadata: + labels: + app.kubernetes.io/name: knativefunction + app.kubernetes.io/instance: knativefunction-sample + app.kubernetes.io/part-of: devconf-knative-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: devconf-knative-operator + name: knativefunction-sample +spec: + name: test-function + image: localhost:50000/kn-user/test-hw@sha256:79c4568eedb9f3366c6ee6b72980eec2aff9a80796328888e10f834c00beb51f + maxscale: "2" + minscale: "1" + concurrency: 1 +</code></pre></div> </div> + + <p>And then deploy/update/remote it with:</p> + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Create the CR to force reconcile loop for function registration +$ kubectl apply -f config/samples/knf_v1alpha1_knativefunction.yaml + +# Update the config/samples/knf_v1alpha1_knativefunction.yaml, for instance changing the minScale to 0 and re-apply: +$ kubectl apply -f config/samples/knf_v1alpha1_knativefunction.yaml + +# Delete the CR to remove the function +$ kubectl delete -f config/samples/knf_v1alpha1_knativefunction.yaml +</code></pre></div> </div> + </li> + <li> + <p>To check the operator did its job, beside seeing the <code class="language-plaintext highlighter-rouge">make install run</code> logs, you can check as before:</p> + <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kubectl get ksvc +NAME URL LATESTCREATED LATESTREADY READY REASON +test-hw http://test-hw.default.127.0.0.1.sslip.io test-hw-00001 test-hw-00001 True +test-function http://test-function.default.127.0.0.1.sslip.io test-function-00001 test-function-00001 True + +$ kubectl get deploy +NAME READY UP-TO-DATE AVAILABLE AGE +test-hw-00001-deployment 0/0 0 0 20m +test-function-00001-deployment 0/0 0 0 1m38s + +$ kubectl get route +NAME URL READY REASON +test-hw http://test-hw.default.127.0.0.1.sslip.io True +test-function http://test-function.default.127.0.0.1.sslip.io True + +$ kubectl get knativefunction +NAME AGE +knativefunction-sample 5m8s + +$ kubectl get knativefunction knativefunction-sample -o yaml +... +... +status: + deployed: true + route: http://test-function.default.127.0.0.1.sslip.io + +$ kubectl get pods +(empty if more than a minute has passed) + +$ curl http://test-function.default.127.0.0.1.sslip.io +DevConf.cz 2023! + +$ kubectl get pods +NAME READY STATUS RESTARTS AGE +test-function-00001-deployment-77f8b87654-6krps 2/2 Running 0 6s +</code></pre></div> </div> + </li> +</ol> + +<h2 id="links-1">Links</h2> + +<ul> + <li><a href="https://knative.dev/docs/">Knative documentation</a></li> + <li><a href="https://pkg.go.dev/knative.dev/client">Knative.dev/client Golang API</a></li> + <li><a href="https://github.com/operator-framework/operator-sdk/tree/master/testdata/go/v3/memcached-operator">Example memcached operator</a></li> + <li><a href="https://sdk.operatorframework.io/docs/building-operators/golang/tutorial/">Operator SDK - Go Operator tutorial</a></li> + <li><a href="https://courses.course-dev.skills.network/courses/course-v1:IBMSkillsNetwork+CO0201EN+2021T1/course/">Intermediate Kubernetes Operators on IBM Developer Skills Network</a></li> +</ul>Jose Castillo LemaIFFE Máster en Big Data y Analítica de Negocio (MBD)2023-04-21T00:00:00-05:002023-04-21T15:00:58-05:00https://josecastillolema.github.io/iffe-mbd<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;repo=iffe&amp;type=watch&amp;count=true&amp;size=large&amp;v=2" frameborder="0" scrolling="0" width="130" height="30" title="GitHub"></iframe> +<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;repo=iffe&amp;type=star&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="115" height="30" title="GitHub"></iframe> +<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;repo=iffe&amp;type=fork&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="170" height="30" title="GitHub"></iframe> + +<p><img src="https://img.shields.io/github/license/josecastillolema/iffe" alt="GitHub" /> +<img src="https://img.shields.io/github/languages/count/josecastillolema/iffe" alt="GitHub language count" /> +<img src="https://img.shields.io/github/languages/top/josecastillolema/iffe" alt="GitHub top language" /> +<img src="https://visitor-badge.laobi.icu/badge?page_id=josecastillolema.iffe&amp;title=hits" alt="visitors" /> +<img src="https://img.shields.io/github/last-commit/josecastillolema/josecastillolema.github.io" alt="GitHub last commit" /></p> + +<h1 id="iffe">IFFE</h1> + +<p><a href="https://iffe.es/"><img src="https://raw.githubusercontent.com/josecastillolema/iffe/main/img/iffe.jpeg" alt="" /></a></p> + +<h2 id="máster-en-big-data-y-analítica-de-negocio-mbd">Máster en Big Data y Analítica de Negocio (MBD)</h2> + +<p><a href="https://iffe.es/master-big-data-analitica-negocio/"><img src="https://raw.githubusercontent.com/josecastillolema/iffe/main/img/mbd.jpg" alt="" /></a></p> + +<h3 id="herramientas-analíticas-en-aws">Herramientas analíticas en AWS</h3> + +<p>Cada proyecto se refiere a clases y/o <em>labs</em> realizados en aula.</p> + +<p>Siéntase libre de desarrollar estos ejemplos, mientras sean válidos, aceptaré <em>pull requests</em> 😄.</p> + +<ul> + <li><a href="https://github.com/josecastillolema/iffe/blob/main/lab01-iaas-s3.md">Lab 01: IaaS - Simple Storage Service (S3)</a></li> + <li><a href="https://github.com/josecastillolema/iffe/blob/main/lab02-paas-athena.md">Lab 02: PaaS - Athena</a></li> + <li><a href="https://github.com/josecastillolema/iffe/blob/main/lab03-paas-glue.md">Lab 03: PaaS - Glue</a></li> + <li><a href="https://github.com/josecastillolema/iffe/blob/main/lab04-paas-redshift.md">Lab 04: PaaS - Redshift</a></li> + <li><a href="https://github.com/josecastillolema/iffe/blob/main/lab05-paas-sagemaker.md">Lab 05: PaaS - SageMaker</a></li> +</ul> + +<p><br /><br /></p> + +<p float="left"> + <a href="https://josecastillolema.github.io/aws-academy/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/aws-academy-2.png" width="100" /> + </a> + <a href="https://josecastillolema.github.io/aws-educate/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/aws_educate.jpg" width="100" /> + </a> + <a href="https://josecastillolema.github.io/aws-community-builder/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/aws_community_builder.png" width="100" /> + </a> + <a href="https://josecastillolema.github.io/mct/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/mct.png" width="100" /> + </a> +</p> + +<p float="left"> + <a href="https://josecastillolema.github.io/mie/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/mie.png" width="100" /> + </a> + <a href="https://josecastillolema.github.io/haina/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/hcai.png" width="100" /> + </a> + <a href="https://josecastillolema.github.io/redhat-academy/"> + <img src="https://raw.githubusercontent.com/josecastillolema/fiap/master/img/rh_academy.png" width="100" /> + </a> +</p> + +<p><img src="https://raw.githubusercontent.com/josecastillolema/iffe/main/img/signature.png" alt="" /></p> + +<iframe src="https://ghbtns.com/github-btn.html?user=josecastillolema&amp;type=follow&amp;count=true&amp;size=large" frameborder="0" scrolling="0" width="230" height="30" title="GitHub"></iframe>Jose Castillo LemaRHR talks: Fluid Network Control and Data Plane Research2023-04-19T00:00:00-05:002023-04-19T15:00:58-05:00https://josecastillolema.github.io/rhr-talks<p><a href="https://research.redhat.com/events/fluid-network-control-and-data-plane-research/"><img src="/assets/images/posts/2023-04-19-physics-rhr-talks.png" alt="" /></a></p> + +<p>Join <a href="https://research.redhat.com/">Red Hat Research</a> for the next Research Days event, <strong>Fluid Network Control and Data Plane Research</strong> on April 19, 2023 from 17PM to 18:30PM CEST.</p> + +<p>New 5G and 6G technologies are raising the top speed for a wireless device up to 1 Tbps, and experts predict 6G will be available to consumers by 2030. What will our core networks look like then, and how will we engineer them to support diverse dynamic services that range from slow text to fast autonomous vehicles? Join us for a peek into the challenges of driving on the edge as envisioned by researchers from Latin America.</p> + +<p><a href="https://research.redhat.com/blog/project_member/christian-esteve-rothenberg/">Christian Rothenberg</a>, Professor, University of Campinas, and head of <a href="https://intrig.dca.fee.unicamp.br/">INTRIG Lab</a>, will be our speaker and <a href="https://research.redhat.com/blog/project_member/simone-ferlin-reiter/">Simone Ferlin-Reiter</a>, Red Hat, will lead the conversation.</p> + +<h2 id="abstract">Abstract</h2> +<p>Prof. Christian Rothenberg will introduce the <a href="https://smartness2030.tech/">SMARTNESS 2030</a> research center initiative and present selected ongoing research tracks around network softwarization leveraging state-of-the-art open source and open hardware technologies:</p> + +<ul> + <li>Hybrid-p4-5G: Hybrid P4 Programmable Pipelines for 5G gNodeB and User Plane Functions</li> + <li>P7 – P4 Programmable Patch Panel: an instant 100G emulated network testbed in a Tofino pizza box</li> + <li>EFFECTOR: Encrypted DASH QoE Performance Evaluation Framework with 5G Datasets</li> + <li>QoEyes: Virtual Reality Streaming QoE Estimation through ML techniques and Programmable Data Planes</li> + <li>PoD acceleration: Offloading K8 container networking functions and service mesh crypto functions (eg. kTLS) to programmable SmartNICs/IPUs</li> +</ul> + +<p>The recording and materials will be available following the talk. Learn more about Red Hat Research Days Events and watch the recordings from previous events at <a href="https://research.redhat.com/research-talks/">research.redhat.com/research-talks</a>.</p> + +<iframe width="560" height="315" src="https://www.youtube.com/embed/Kd5BiDYD0M4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe> + +<p><img src="https://img.shields.io/youtube/views/Kd5BiDYD0M4?style=social" alt="YouTube Video Views" /> +<img src="https://img.shields.io/youtube/likes/Kd5BiDYD0M4?style=social" alt="YouTube Video Likes" /></p>Jose Castillo LemaPerfConf Spring 20232023-03-28T00:00:00-05:002023-03-28T15:00:58-05:00https://josecastillolema.github.io/perfcon23<h2 id="proceedings"><a href="https://perfconfspring2023.sched.com/">Proceedings</a></h2> + +<p><a href="https://perfconfspring2023.sched.com/event/1JjtY/control-plane-testing-at-scale-with-cluster-api-and-kubemark"><strong>(Control-plane) testing at scale with Cluster API and Kubemark</strong></a></p> + +<p>Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes (that run as pods in an external management cluster). What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, hollow nodes are extremelly light (&lt;30 MiB).</p> + +<p>The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks).</p> + +<p>Tuesday, March 28 • 3:40pm - 4:00pm CEST</p> + +<p>Google Meet ID: <a href="https://meet.google.com/bzf-quiv-kaz">https://meet.google.com/bzf-quiv-kaz</a></p> + +<h2 id="speakers">Speakers</h2> +<ul> + <li><a href="https://perfconfspring2022.sched.com/speaker/jlema">Jose Castillo Lema</a> - Software Engineer at <strong>Red Hat</strong></li> +</ul>Jose Castillo LemaProceedingsLegends of Linux Trivia2023-03-20T00:00:00-05:002022-03-20T15:00:58-05:00https://josecastillolema.github.io/linux-trivia<p>How well do you know Linux?</p> + +<p>Red Hat <a href="https://redhatdg.co1.qualtrics.com/jfe/form/SV_bjRFSHqPdTpIjoa">is offering</a> three nifty badges for Linux lovers and badge collectors alike. Successfully complete a single Red Hat quiz to earn the badge of your choice below. Or complete them all to earn all three. Sounds pretty easy, right? Well, there is a catch … you have to score 100% on the quiz.</p> + +<h3 id="red-hat-enterprise-linux-trivia---red-hat-titan">Red Hat Enterprise Linux Trivia - Red Hat Titan</h3> + +<p><img src="/assets/images/posts/2023-03-20-linux-trivia/RedHatTitan.png" alt="" /></p> + +<h3 id="linux-command-line-trivia---command-line-captain">Linux Command-Line Trivia - Command-Line Captain</h3> + +<p><img src="/assets/images/posts/2023-03-20-linux-trivia/Command-LineCaptain.png" alt="" /></p> + +<h3 id="linux-open-source-trivia---open-sourcer-er">Linux Open Source Trivia - Open Sourcer-er</h3> + +<p><img src="/assets/images/posts/2023-03-20-linux-trivia/OpenSourcer-er.png" alt="" /></p>Jose Castillo LemaHow well do you know Linux? \ No newline at end of file diff --git a/docs/fiap-abd/index.html b/docs/fiap-abd/index.html new file mode 100644 index 0000000000..c7b0f68eda --- /dev/null +++ b/docs/fiap-abd/index.html @@ -0,0 +1,730 @@ + + + + + + +FIAP MBA em Engenharia de Dados (ABD) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-aojo/index.html b/docs/fiap-aojo/index.html new file mode 100644 index 0000000000..6405baa765 --- /dev/null +++ b/docs/fiap-aojo/index.html @@ -0,0 +1,736 @@ + + + + + + +FIAP MBA em Engenharia de Software - Online (AOJO) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

FIAP MBA

+ +
    +
  • Fase 4: Data Analytics +
      +
    • Data Engineering (Big Data & Analytics)
    • +
    • Cloud Computing & SRE
    • +
    • Leadership and Corporate Accountability
    • +
    +
  • +
+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-aso/index.html b/docs/fiap-aso/index.html new file mode 100644 index 0000000000..ae0c858f6e --- /dev/null +++ b/docs/fiap-aso/index.html @@ -0,0 +1,737 @@ + + + + + + +FIAP MBA em Arquitetura de Soluções (ASO) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

FIAP MBA

+ + + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-asoo/index.html b/docs/fiap-asoo/index.html new file mode 100644 index 0000000000..1f72c7e4d2 --- /dev/null +++ b/docs/fiap-asoo/index.html @@ -0,0 +1,736 @@ + + + + + + +FIAP MBA em Arquitetura de Soluções - Online (ASOO) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ + + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-bdt/index.html b/docs/fiap-bdt/index.html new file mode 100644 index 0000000000..9c278fa94c --- /dev/null +++ b/docs/fiap-bdt/index.html @@ -0,0 +1,735 @@ + + + + + + +FIAP MBA em Big Data (Data Science) (BDT) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

FIAP MBA

+ + + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-blc/index.html b/docs/fiap-blc/index.html new file mode 100644 index 0000000000..c7e52e07c2 --- /dev/null +++ b/docs/fiap-blc/index.html @@ -0,0 +1,732 @@ + + + + + + +FIAP MBA em Blockchain Development & Technologies (BLC) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-cld/index.html b/docs/fiap-cld/index.html new file mode 100644 index 0000000000..f0c1117ec4 --- /dev/null +++ b/docs/fiap-cld/index.html @@ -0,0 +1,731 @@ + + + + + + +FIAP MBA em Cloud Computing (CLD) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-corporate/index.html b/docs/fiap-corporate/index.html new file mode 100644 index 0000000000..91a67a8d7f --- /dev/null +++ b/docs/fiap-corporate/index.html @@ -0,0 +1,737 @@ + + + + + + +FIAP Corporate - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +
    +
  • Citibank: Internet of Things (2017)
  • +
  • Gerdau: Internet of Things (2017)
  • +
  • Ambev: Computers Networks and Cloud Computing (2018)
  • +
  • T-Systems: Internet of Things (2018)
  • +
  • CCR: Multicloud Architecture (2021)
  • +
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-ia/index.html b/docs/fiap-ia/index.html new file mode 100644 index 0000000000..ebb9757c14 --- /dev/null +++ b/docs/fiap-ia/index.html @@ -0,0 +1,728 @@ + + + + + + +FIAP MBA em Artificial Intelligence & Machine Learning (IA) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-meetup/index.html b/docs/fiap-meetup/index.html new file mode 100644 index 0000000000..e4bf341624 --- /dev/null +++ b/docs/fiap-meetup/index.html @@ -0,0 +1,782 @@ + + + + + + +FIAP Meetup #9 - Kubernetes & Service Mesh - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Descrição do evento

+ +

De acordo com o Gartner, mais de 85% das organizações executarão aplicativos em contêineres no Kubernetes até 2025. Por isso alguns profissionais definem que o Kubernetes será o “sistema operacional” da nuvem durante a transformação de aplicações para a Arquitetura de Microsserviços.

+ +

Práticas DevOps estão sendo adotadas, porém essa não é apenas uma mudança cultural, pois requer ótimas ferramentas para ser concretizada. Nessa jornada aparecem ferramentas populares de código aberto que apoiam a utilização de uma arquitetura nativa em nuvem. Seu uso permite desde construções de contêineres à orquestração, envolvendo a resiliência de microsserviços e automação de CI / CD.

+ +

Será um encontro técnico e hands-on, ao longo do qual serão discutidos diversos cenários inspirados nos ambientes de startups e grandes empresas. Vamos pensar juntos quais são os principais desafios enfrentados e suas possíveis soluções.

+ +

Dados de acesso

+ +

QUANDO +10 de junho de 2021

+ +

HORÁRIO +18h às 19:30h

+ +

LOCAL +On-line via Zoom (dados de acesso no dia do evento)

+ +

Esperamos por você.

+ +

Inscrição gratuita.

+ +

FIAP & LuizaLabs & RedHat

+ +

Material

+ + + +

Participantes

+ +

+ +

André Pontes Sampaio

+ +

Mestre em Engenharia de Telecomunicações, MBA em Gerenciamento de Projetos e formado em Ciência da Computação. Mais de 15 anos de experiência no mercado de TI. Experiência profissional como Diretor de Operações e Infraestrutura, além de ter atuado como Líder e Consultor técnico em instituição do Governo do Estado de SP e empresas do setor Financeiro e Telecomunicações. Professor de cursos de MBA da FIAP.

+ +

Cláudio Eduardo de Oliveira

+ +

Sr Software Engineer na Luiza Labs. Trabalha com APIs, microservices e aplicativos centrados em nuvem e containers. Com mais de dez anos de experiência em desenvolvimento de software com linguagens Java e outras linguagens para JVM, é palestrante em alguns dos eventos mais importantes no Brasil sobre Arquitetura e Desenvolvimento de Software. Autor do Livro Spring 5.0 By Example, publicado pela editora Packt em Fevereiro de 2018.

+ +

José Castillo Lema

+ +

Consultor de infraestrutura cloud na Red Hat, tem trabalhado como arquiteto de plataformas de infraestrutura de nuvem pública e privada, práticas DevOps e temas de automação. Atua em provedores de Cloud e fornecedores de software de infraestrutura e plataforma. É mestre e doutor em engenharia elétrica, nas áreas de redes e telecomunicações. Professor de cursos de MBA da FIAP desde 2016.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-mob/index.html b/docs/fiap-mob/index.html new file mode 100644 index 0000000000..dfbed99981 --- /dev/null +++ b/docs/fiap-mob/index.html @@ -0,0 +1,732 @@ + + + + + + +FIAP MBA em Mobile Development (MOB) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

FIAP MBA

+ + + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-net/index.html b/docs/fiap-net/index.html new file mode 100644 index 0000000000..9944164f62 --- /dev/null +++ b/docs/fiap-net/index.html @@ -0,0 +1,729 @@ + + + + + + +FIAP MBA em Arquitetura e Desenvolvimento na Plataforma .NET (NET) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

FIAP MBA

+ + + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiap-scj/index.html b/docs/fiap-scj/index.html new file mode 100644 index 0000000000..8577190c75 --- /dev/null +++ b/docs/fiap-scj/index.html @@ -0,0 +1,734 @@ + + + + + + +FIAP MBA em Full Stack Developer - Microservices, Cloud e IoT (SCJ) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

FIAP MBA

+ + + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fiapon-live-1aso/index.html b/docs/fiapon-live-1aso/index.html new file mode 100644 index 0000000000..9ce2e37928 --- /dev/null +++ b/docs/fiapon-live-1aso/index.html @@ -0,0 +1,727 @@ + + + + + + +FIAP MBA ON Live - 1ASO - Fase 3 - Cloud - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/frr-k8s/index.html b/docs/frr-k8s/index.html new file mode 100644 index 0000000000..4eed918bde --- /dev/null +++ b/docs/frr-k8s/index.html @@ -0,0 +1,928 @@ + + + + + + +Running FRR in K8s/OpenShift - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +
+ + +
+ + + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8.

+ +

We will be using this FRR image for establishing Bidirectional Forwarding Detection (BFD) sessions.

+ +

First, let’s define the proper config map:

+
apiVersion: v1
+data:
+  daemons: |
+    bgpd=no
+    ospfd=no
+    ospf6d=no
+    ripd=no
+    ripngd=no
+    isisd=no
+    pimd=no
+    ldpd=no
+    nhrpd=no
+    eigrpd=no
+    babeld=no
+    sharpd=no
+    pbrd=no
+    bfdd=yes
+    fabricd=no
+    vrrpd=no
+    vtysh_enable=yes
+    zebra_options="  -A 127.0.0.1 -s 90000000"
+    bgpd_options="   -A 127.0.0.1"
+    ospfd_options="  -A 127.0.0.1"
+    ospf6d_options=" -A ::1"
+    ripd_options="   -A 127.0.0.1"
+    ripngd_options=" -A ::1"
+    isisd_options="  -A 127.0.0.1"
+    pimd_options="   -A 127.0.0.1"
+    ldpd_options="   -A 127.0.0.1"
+    nhrpd_options="  -A 127.0.0.1"
+    eigrpd_options=" -A 127.0.0.1"
+    babeld_options=" -A 127.0.0.1"
+    sharpd_options=" -A 127.0.0.1"
+    pbrd_options="   -A 127.0.0.1"
+    staticd_options="-A 127.0.0.1"
+    bfdd_options="   -A 127.0.0.1"
+    fabricd_options="-A 127.0.0.1"
+    vrrpd_options="  -A 127.0.0.1"
+  frr.conf: |
+    password zebra
+    enable password zebra
+    bfd
+     peer 192.168.216.14 interface net1
+       no shutdown
+       debug bfd network
+       debug bfd peer
+       debug bfd zebra
+     !
+    !
+    bfd
+     peer 192.168.216.15 interface net1
+       no shutdown
+       debug bfd network
+       debug bfd peer
+       debug bfd zebra
+     !
+    !
+    log file /var/log/frr/frr.log debugging
+kind: ConfigMap
+metadata:
+  name: frr
+
+ +

Peer entries must point to the peer(s) BFD endpoint(s) (we assume they are already configured). I am using net1 as the pod will be created with two interfaces (the second one for establishing the L2 BFD connection).

+ +

Now let’s define the pod:

+ +
apiVersion: v1
+kind: Pod
+metadata:
+  name: frr-bfd
+  annotations:
+    k8s.v1.cni.cncf.io/networks: '[{ "name": "sriov-net", "ips": [ "192.168.216.50/24" ]}]'
+spec:
+  containers:
+  - name: bfd
+    image: quay.io/fpaoline/ovnkbfdtest:0.2
+    command: ["/bin/sh","-c"]
+    args: ["/usr/lib/frr/frrinit.sh start && tail -f /var/log/frr/frr.log"]
+    ports:
+    - containerPort: 3784
+      protocol: UDP
+    securityContext:
+      privileged: true
+    volumeMounts:
+    - name: config-volume
+      mountPath: /etc/frr
+  volumes:
+    - name: config-volume
+      configMap:
+        name: frr
+
+ +

Once the pod gets created, let’s take a look to the logs:

+ +
$ oc logs frr-bfd
+Started watchfrr
+2021/07/04 21:14:17 ZEBRA: client 15 says hello and bids fair to announce only static routes vrf=0
+2021/07/04 21:14:17 ZEBRA: client 32 says hello and bids fair to announce only bfd routes vrf=0
+2021/07/04 21:14:18 BFD: zclient: add local address fe80::b0c5:acff:fe58:4c29/64
+2021/07/04 21:14:19 BFD:  peer 192.168.216.15 found, but loc-addr 192.168.217.1 ignored
+2021/07/04 21:14:20 BFD: state-change: [mhop:no peer:192.168.216.15 local:0.0.0.0 vrf:default ifname:net1] init -> up
+
+ +

From the last line, we can see the BFD session was properly established. Let’s do some tshooting from inside the container:

+ +
$ oc rsh frr-bfd
+sh-5.0# sudo yum install -y telnet
+sh-5.0# telnet localhost 2617
+Trying ::1...
+telnet: connect to address ::1: Connection refused
+Trying 127.0.0.1...
+Connected to localhost.
+Escape character is '^]'.
+
+Hello, this is FRRouting (version 7.5).
+Copyright 1996-2005 Kunihiro Ishiguro, et al.
+
+User Access Verification
+Password: zebra
+
+frr-bfd> enable
+Password: zebra
+
+frr-bfd# show bfd peers
+BFD Peers:
+    peer 192.168.216.14 vrf default interface net1
+        ID: 3380487267
+        Remote ID: 0
+        Active mode
+        Status: down
+        Downtime: 31 minute(s), 53 second(s)
+        Diagnostics: ok
+        Remote diagnostics: ok
+        Peer Type: configured
+        Local timers:
+            Detect-multiplier: 3
+            Receive interval: 300ms
+            Transmission interval: 300ms
+            Echo transmission interval: 50ms
+        Remote timers:
+            Detect-multiplier: 3
+            Receive interval: 1000ms
+            Transmission interval: 1000ms
+            Echo transmission interval: 0ms
+
+    peer 192.168.216.15 vrf default interface net1
+        ID: 1945828781
+        Remote ID: 3129413095
+        Active mode
+        Status: up
+        Uptime: 31 minute(s), 50 second(s)
+        Diagnostics: ok
+        Remote diagnostics: ok
+        Peer Type: configured
+        Local timers:
+            Detect-multiplier: 3
+            Receive interval: 300ms
+            Transmission interval: 300ms
+            Echo transmission interval: 50ms
+        Remote timers:
+            Detect-multiplier: 5
+            Receive interval: 1000ms
+            Transmission interval: 1000ms
+            Echo transmission interval: 0ms
+
+frr-bfd# show bfd peers brief
+Session count: 2
+SessionId  LocalAddress                             PeerAddress                             Status
+=========  ============                             ===========                             ======
+3380487267 unknown                                  192.168.216.14                          down
+1945828781 192.168.216.50                           192.168.216.15                          up
+
+frr-bfd# show bfd peers counters
+BFD Peers:
+    peer 192.168.216.14 vrf default interface net1
+        Control packet input: 0 packets
+        Control packet output: 2232 packets
+        Echo packet input: 0 packets
+        Echo packet output: 0 packets
+        Session up events: 0
+        Session down events: 0
+        Zebra notifications: 0
+
+    peer 192.168.216.15 vrf default interface net1
+        Control packet input: 2229 packets
+        Control packet output: 2234 packets
+        Echo packet input: 0 packets
+        Echo packet output: 0 packets
+        Session up events: 1
+        Session down events: 0
+        Zebra notifications: 1
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/futurecom17/index.html b/docs/futurecom17/index.html new file mode 100644 index 0000000000..791ed0c4a9 --- /dev/null +++ b/docs/futurecom17/index.html @@ -0,0 +1,723 @@ + + + + + + +Futurecom 2017 - Tour IoT - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/gitlab/index.html b/docs/gitlab/index.html new file mode 100644 index 0000000000..332e67cf24 --- /dev/null +++ b/docs/gitlab/index.html @@ -0,0 +1,781 @@ + + + + + + +GitLab Certified Associate - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Usually priced at USD $650 it’s available for free until April 30, 2021.

+ +

Steps required:

+ +
    +
  1. Create account on the GitLab Learn platform +1.1 purple login button +1.2 purple signup button
  2. +
  3. Add the associate test pathway to the basket
  4. +
  5. In Payment step apply discount code E6B8A234458AE3D795
  6. +
+ +

Once signed up you have one year time for completion.

+ +

More info here.

+ +

Course contents

+ +

Section 1 - Introduction to GitLab

+ +
    +
  • GitLab Overview
  • +
  • GitLab Comparison
  • +
  • GitLab Components and Navigation
  • +
  • Demos and Hands On Excercises
  • +
+ +

Section 2 - Self Study using GIT and GitLab

+ +
    +
  • Git Basics
  • +
  • Code Creation in GitLab
  • +
  • GitLabs CI/CD features
  • +
  • GitLabs Package and Release Functions
  • +
  • GitLab Security Scanning
  • +
+ +

Section 3 - Certification Assesments

+ +
    +
  • Knowledge Exam
  • +
  • Hands On Exam
  • +
+ +

Certification

+ + + +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/gitops-fundamentals/index.html b/docs/gitops-fundamentals/index.html new file mode 100644 index 0000000000..c891fd9552 --- /dev/null +++ b/docs/gitops-fundamentals/index.html @@ -0,0 +1,754 @@ + + + + + + +GitOps certified for Argo - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the GitOps Fundamentals course for everyone interested in GitOps best practices.

+ +

After you finish this course you will know the fundamentals of GitOps and have practical knowledge of Argo CD.

+ +

What the Course Covers

+ +
    +
  • What is GitOps and why you should adopt it
  • +
  • Benefits and common pitfalls of GitOps
  • +
  • How Argo CD works
  • +
  • How to manage applications with Argo CD
  • +
  • Sync strategies, secrets, and template customization
  • +
  • Declarative setup for applications
  • +
  • What is Progressive Delivery and how it can level up your deployments
  • +
  • Using Argo Rollouts for blue/green and canary deployments
  • +
+ +

Free certification

+ +

At the end of the course, you can earn a certificate by passing a final exam.

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/gitops-summit-21/index.html b/docs/gitops-summit-21/index.html new file mode 100644 index 0000000000..472259dd35 --- /dev/null +++ b/docs/gitops-summit-21/index.html @@ -0,0 +1,763 @@ + + + + + + +GitOps Summit 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Virtual Experience

+ +

June 22, 2021

+ +

#GitOpsSummit

+ +

Cloud native technologies enable organizations to scale rapidly and deliver software faster than ever before. GitOps, operation by pull request, is a powerful developer workflow that enables organizations to unlock the promise of cloud native continuous delivery. The GitOps Summit brings together topflight talent to give you a greater understanding of GitOps, share insights into the evolving tools landscape and help you figure out the best approach for adopting GitOps.

+ +

Scaling from 2 deployments a day to 200, rapid cluster recovery, complete audit trails – these are some of the benefits shared by teams who adopt a GitOps approach. An emerging paradigm, GitOps teams also need to understand secrets management, scaling challenges and how to tackle adopting best practices. Join us at the GitOps Summit to learn more in this 1-day deep dive.

+ +

The GitOps Summit is hosted by the Continuous Delivery Foundation (CDF) and the Cloud Native Computing Foundation (CNCF) and will be co-located with cdCon.

+ +

Agenda

+ +
    +
  • Best Practices for Secret Management with GitOps - Kara de la Marck, CloudBees
  • +
  • Combining Progressive Delivery With GitOps And Continuous Delivery - Viktor Farcic, Codefresh
  • +
  • GitOps: Yea or Nay? - Ricardo Castro, DefinedCrowd
  • +
  • Level Unlocked: GitOps to the Edge and Infrastructure Provisioning - Katie Gamanji, The Linux Foundation
  • +
  • Keynote Panel: Why GitOps? - Tracy Ragan, DeployHub; Dan Garfield, Codefresh; Cornelia Davis, Weaveworks; Moderated by Dan Lorenc, Google
  • +
  • ReleaseOps: GitOps for the People - Lian Li, Container Solutions
  • +
  • Managing Storage via GitOps - Christian Hernandez, Red Hat
  • +
  • The SAME Project: A GitOps Approach to Reproducible Machine Learning with Flux and Kubeflow - David Aronchick, Azure, Microsoft
  • +
  • Progressive Delivery at Intuit, the Next Chapter in a GitOps Journey. - Henrik Blixt & Jesse Suen, Intuit
  • +
  • Self Healing GitOps: Continuous, Secure GitOps using Flux, Helm and OPA - Om Moolchandani, Accurics
  • +
  • Policy-driven Operations: Put the Ops in GitOps - Rosalind Benoit, Themist +4:45pm EDT
  • +
  • GitOps Summit Happy Hour Sponsored by CNCF
  • +
+ +

Registration

+ +

Register now

+ +

View the Schedule

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/globecom13/index.html b/docs/globecom13/index.html new file mode 100644 index 0000000000..7a9bb4be99 --- /dev/null +++ b/docs/globecom13/index.html @@ -0,0 +1,766 @@ + + + + + + +IEEE GLOBECOM 2013 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program

+ +

Program

+ +

Hybrid Framework for Scalable Resource Control in Multi-ingress Networks

+ +

DOI:10.1109/GLOCOMW.2013.6825100

+ +
    +
  • Sandino Jardim (Federal University of Goias, Brazil)
  • +
  • Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Jose Castillo Lema (Universidade da Coruña, Spain)
  • +
  • Evariste Logota (University of Aveiro, Instituto de Telecomunicações, Portugal)
  • +
  • Eduardo Cerqueira (Federal University of Para & UFPA, Brazil)
  • +
  • Jonathan Rodriguez (Instituto de Telecomunicações, Portugal)
  • +
+ +

Cite this

+ +

Plain text

+ +

S. Jardim, A. Neto, J. C. Lema, E. Logota, J. Rodriguez and E. Cerqueira, “Hybrid framework for scalable resource control in multi-ingress networks”, 2013 IEEE Globecom Workshops (GC Wkshps), Atlanta, GA, 2013, pp. 879-884, doi: 10.1109/GLOCOMW.2013.6825100.

+ +

BibTeX

+ +
@INPROCEEDINGS {6825100,
+  author={S. {Jardim} and A. {Neto} and J. C. {Lema} and E. {Logota} and J. {Rodriguez} and E. {Cerqueira}},
+  booktitle={2013 IEEE Globecom Workshops (GC Wkshps)},
+  title={Hybrid framework for scalable resource control in multi-ingress networks},
+  year={2013},
+  volume={},
+  number={},
+  pages={879-884}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/globecom14/index.html b/docs/globecom14/index.html new file mode 100644 index 0000000000..c780efbd78 --- /dev/null +++ b/docs/globecom14/index.html @@ -0,0 +1,770 @@ + + + + + + +IEEE GLOBECOM 2014 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Global Communications Conference 2014

+ +

Proceedings

+ +

Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems

+ +

DOI:10.1109/GLOCOMW.2014.7063426

+ +
    +
  • José Castillo - Federal University of Rio Grande do Norte (UFRN), Brazil
  • +
  • Augusto Neto - Federal University of Rio Grande do Norte (UFRN), Brazil
  • +
  • Flavio Silva - Federal University of Uberlândia (UFU), Brazil
  • +
  • Pedro Frosi - Federal University of Uberlândia (UFU), Brazil
  • +
  • Rui Aguiar - Instituto de Telecomunicações (IT), Portugal
  • +
  • Airton Ishimori - Federal University of Pará (UFPA), Brazil
  • +
  • Fernando Farias - Federal University of Pará (UFPA), Brazil
  • +
  • Antônio Abelém - Federal University of Pará (UFPA), Brazil
  • +
+ +

Cite this

+ +

Plain text

+ +

J. Castillo et al., “Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems”, 2014 IEEE Globecom Workshops (GC Wkshps), Austin, TX, 2014, pp. 172-177, doi: 10.1109/GLOCOMW.2014.7063426.

+ +

BibTeX

+ +
@INPROCEEDINGS {7063426,
+  author={J. {Castillo} and A. {Neto} and F. {Silva} and P. {Frosi} and R. {Aguiar} and A. {Ishimori} and F. {Farias} and A. {Abelém}},
+  booktitle={2014 IEEE Globecom Workshops (GC Wkshps)},
+  title={Additions to the ETArch control plane to support multimedia QoS-guaranteed content transport over OpenFlow-enabled SDN future internet systems},
+  year={2014},
+  volume={},
+  number={},
+  pages={172-177}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/gremlin-caos/index.html b/docs/gremlin-caos/index.html new file mode 100644 index 0000000000..e3ef133d61 --- /dev/null +++ b/docs/gremlin-caos/index.html @@ -0,0 +1,738 @@ + + + + + + +Gremlin Certified Chaos Engineering Practitioner (GCCEP) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Chaos Engineering continues to grow in popularity and is rapidly becoming a job requirement. To help Engineering and Testing teams meet the need, take a look at Gremlin Chaos Engineering Practitioner Certificate Program! The Certificate Program is now the easiest way to demonstrate your Chaos Engineering expertise and increase your visibility.

+ +

Learn more at gremlin.com/certification.

+ +

Free certification

+ +

At the end of the course, you can earn a badge by passing a final exam.

+ +

+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/haina-brazil/index.html b/docs/haina-brazil/index.html new file mode 100644 index 0000000000..942e1eadbf --- /dev/null +++ b/docs/haina-brazil/index.html @@ -0,0 +1,730 @@ + + + + + + +Huawei Certificate Training Program - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

A Huawei está oferecendo treinamentos digitais gratuitos, trazendo para o Brasil o Huawei Certificate Training Program, um programa de treinamentos para realizar os cursos preparatórios das certificações nível Associate, testes de qualificação e solicitar um voucher para realizar a prova sem custo (que normalmente tem um valor de $200).

+ +

São 500 vouchers para realização da prova, que pode ser realizada remotamente pelos centros da Person VUE.

+ +

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/haina-talent/index.html b/docs/haina-talent/index.html new file mode 100644 index 0000000000..af0a869ae6 --- /dev/null +++ b/docs/haina-talent/index.html @@ -0,0 +1,807 @@ + + + + + + +Huawei Talent: Cadastro na plataforma - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Para acompanhar os cursos HCIA Routing & Switching, uma vez aprovado no processo seletivo é necessária a criação de uma conta na plataforma Huawei Talent Online.

+ +

A plataforma on-line da Huawei ICT Academy fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e aprendizado móvel.

+ +

Os alunos podem adquirir materiais de aprendizagem, concluir tarefas, consultar resultados e interagir com professores e outros aprendizados a qualquer hora e em qualquer lugar.

+ +

Criação da conta

+ +
    +
  1. +

    Acessar o site da plataforma

    +
  2. +
  3. +

    Caso não tiver conta, na plataforma, registrar um novo usuário: +

    +
  4. +
  5. +

    Preencher as informações requisitadas. O dominio do endereço de mail não é relevante. Um SMS será enviado para confirmar a identidade: +

    +
  6. +
  7. +

    Aguardar pelo mail de ativação (normalmente chega em minutos): +

    +
  8. +
+ +

Ativação da conta

+ +
    +
  1. +

    Uma vez recebido o mail de ativação, abrir o enlace para ativar o e-mail previamente cadastrado: +

    +
  2. +
  3. +

    Fazer login no site: +

    +
  4. +
+ +

Associação da conta com a instituição

+ +
    +
  1. +

    Navegar até o User Center -> My information +

    +
  2. +
  3. +

    Solicitar a associação da conta com a instituição Escola Politécnica da USP - USP: + +

    +
  4. +
  5. +

    Confirmar a solicitação e aguardar pelo mail de aprovação. A aprovação é manual, e não inmediata: +

    +
  6. +
  7. +

    Aguardar o mail de aprovação: +

    +
  8. +
+ +

Acesso ao curso

+ +
    +
  1. +

    Logar novamente na plataforma e confirmar que o curso é mostrado na aba My course: +

    +
  2. +
  3. +

    Nos detalhes do curso, confirmar o estado de registro: +

    +
  4. +
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/haina/index.html b/docs/haina/index.html new file mode 100644 index 0000000000..c6eb626b94 --- /dev/null +++ b/docs/haina/index.html @@ -0,0 +1,792 @@ + + + + + + +Huawei ICT Academy - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

A Huawei ICT Academy é um programa de parceria sem fins lucrativos que autoriza universidades e faculdades a oferecer cursos de Certificação Huawei para estudantes. Este programa atua como uma ponte entre empresas e academia para construir um ecossistema de talentos para as indústrias de TIC.

+ +

Desde sua afiliação no programa em 2016, a Escola Politécnica da USP oferece treinamento de certificação técnica para estudantes de instituições de ensino superior, formando com sucesso mais de 200 estudantes nos cursos certificados pela HCIA.

+ +

+ + + +

Benefícios do programa

+
    +
  • Participação na Huawei ICT Competition
  • +
  • Vochers para fazer os exames de certificação sem custo
  • +
  • Acesso ao portal da Huawei ICT Academy, permitindo o aprendizado a qualquer hora, em qualquer lugar
  • +
+ +

Certificação Huawei

+ +

A Huawei criou um sistema de certificação de três níveis:

+
    +
  • Huawei Certified ICT Associate (HCIA)
  • +
  • Huawei Certified ICT Professional (HCIP)
  • +
  • Huawei Certified ICT Expert (HCIE)
  • +
+ +

+ +

Cada curso inclui:

+
    +
  • Materiais de e-Learning
  • +
  • Exercícios práticos de laboratório baseados em cenários reais
  • +
  • Vídeos que abrangem conhecimentos mais detalhados em áreas chave
  • +
+ +

Plataforma on-line

+

A plataforma on-line da Huawei ICT Academy fornece um suporte digital integrado com compartilhamento de recursos, suporte ao ensino, interação com a comunidade e aprendizado móvel.

+ +

Os alunos podem adquirir materiais de aprendizagem, concluir tarefas, consultar resultados e interagir com professores e outros aprendizados a qualquer hora e em qualquer lugar.

+ +

Para se registrar na plataforma de aprendizado on-line gratuitamente e obter os materiais mais recentes: https://www.huaweiacad.com

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-14/index.html b/docs/hcia-14/index.html new file mode 100644 index 0000000000..6a1fa30fda --- /dev/null +++ b/docs/hcia-14/index.html @@ -0,0 +1,727 @@ + + + + + + +HCIA-Routing & Switching - 14th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-15/index.html b/docs/hcia-15/index.html new file mode 100644 index 0000000000..53b54a6fff --- /dev/null +++ b/docs/hcia-15/index.html @@ -0,0 +1,741 @@ + + + + + + +HCIA-Routing & Switching - 15th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Informamos que estão abertas as inscrições do 15.º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5 até o dia 26/11/2020 às 12h, totalmente gratuito e virtual.

+ +

As inscrições podem ser realizadas por este link.

+ +

O curso ocorrerá dos dias 27/03/21 à 17/04/21, das 9h00 as 17h00 sempre aos sábados.

+ +

Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos.

+ +

O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP (Inova.USP) – Huawei, totalmente na modalidade on-line.

+ +

Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área.

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-16/index.html b/docs/hcia-16/index.html new file mode 100644 index 0000000000..46146e22fa --- /dev/null +++ b/docs/hcia-16/index.html @@ -0,0 +1,739 @@ + + + + + + +HCIA-Routing & Switching - 16th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Informamos que estão abertas as inscrições do 16º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5, totalmente gratuito e virtual.

+ +

As inscrições podem ser realizadas por este link.

+ +

Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos.

+ +

O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP (Inova.USP) – Huawei, totalmente na modalidade on-line.

+ +

Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área.

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-17/index.html b/docs/hcia-17/index.html new file mode 100644 index 0000000000..c176f85e04 --- /dev/null +++ b/docs/hcia-17/index.html @@ -0,0 +1,739 @@ + + + + + + +HCIA-Routing & Switching - 17th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Informamos que estão abertas as inscrições do 17º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5, totalmente gratuito e virtual.

+ +

As inscrições podem ser realizadas por este link.

+ +

Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos.

+ +

O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP (Inova.USP) – Huawei, totalmente na modalidade on-line.

+ +

Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área.

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-18/index.html b/docs/hcia-18/index.html new file mode 100644 index 0000000000..055050d582 --- /dev/null +++ b/docs/hcia-18/index.html @@ -0,0 +1,739 @@ + + + + + + +HCIA-Routing & Switching - 18th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Informamos que estão abertas as inscrições do 18º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Routing & Switching V2.5, totalmente gratuito e virtual.

+ +

As inscrições podem ser realizadas por este link.

+ +

Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos.

+ +

O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP (Inova.USP) – Huawei, totalmente na modalidade on-line.

+ +

Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área.

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-19/index.html b/docs/hcia-19/index.html new file mode 100644 index 0000000000..4ca7243bfb --- /dev/null +++ b/docs/hcia-19/index.html @@ -0,0 +1,739 @@ + + + + + + +HCIA Datacom - 19th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Informamos que estão abertas as inscrições do 19º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Datacom V1.0, totalmente gratuito e virtual.

+ +

As inscrições podem ser realizadas por este link.

+ +

Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos.

+ +

O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP (Inova.USP) – Huawei, totalmente na modalidade on-line.

+ +

Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área.

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-20/index.html b/docs/hcia-20/index.html new file mode 100644 index 0000000000..cb90b59f87 --- /dev/null +++ b/docs/hcia-20/index.html @@ -0,0 +1,739 @@ + + + + + + +HCIA Datacom - 20th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Informamos que estão abertas as inscrições do 20º Treinamento em Tecnologia de Informação e Comunicação convênio USP e HUAWEI – HCIA – Datacom V1.0, totalmente gratuito e virtual.

+ +

As inscrições podem ser realizadas por este link.

+ +

Vale ressaltar que serão distribuídos vouchers para o exame de certificação Huawei para os melhores alunos.

+ +

O Treinamento em REDES-1 será ministrado pelo Centro de Internet do Futuro da USP por meio do convênio da USP (Inova.USP) – Huawei, totalmente na modalidade on-line.

+ +

Obs.: Treinamento destinado a estudantes de engenharia de computação, tecnologia da informação e profissionais que atuem na área.

+ +

Uma vez aprovado no processo seletivo seguir as seguintes instruções para efetuar o cadastro na plataforma EaD Huawei Talent Online.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-5g-2/index.html b/docs/hcia-5g-2/index.html new file mode 100644 index 0000000000..71b35143aa --- /dev/null +++ b/docs/hcia-5g-2/index.html @@ -0,0 +1,745 @@ + + + + + + +HCIA 5G - 2nd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

A Coordenação do projeto IMD/UFRN – 5G Training RN abre inscrições para o processo seletivo para participação na segunda turma do curso de formação HCIA 5G, promovido em parceria entre o IMD e a Huawei Technologies Co. LTD. São 100 vagas disponíveis, gratuito e a distância.

+ +

Venha obter formação gratuita em 5G, a tecnologia que irá revolucionar o mundo, e se posicionar fortemente no mercado a partir da certificação Huawei HCIA.

+ +

Edital de seleção em: https://lnkd.in/esyWARY

+ +

+ +

As inscrições terão início no dia 23 de março e se estenderão até 12 de abril, podendo ser realizadas através do preenchimento de formulário online, juntamente com envio dos anexos solicitados no edital. O curso é aberto a qualquer pessoa que tenha conhecimento comprovado em Redes de Comunicação e/ou telecomunicações. Os critérios para tal comprovação são detalhados no edital do processo seletivo (nº 015/2021).

+ +

A seleção consistirá em avaliação de documentação comprobatória. Dentre os quesitos a serem analisados, encontram-se experiência de atuação profissional, formação acadêmica e certificações diversas em tecnologia. O resultado final será divulgado a partir do dia 16 de abril, por meio do portal do IMD, na aba “Editais”. As matrículas estão previstas para acontecer até 23 de abril.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-5g/index.html b/docs/hcia-5g/index.html new file mode 100644 index 0000000000..bbfc73abb7 --- /dev/null +++ b/docs/hcia-5g/index.html @@ -0,0 +1,759 @@ + + + + + + +HCIA 5G - 1st edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ +

+ +

PROCESSO SELETIVO PARA CURSO DE FORMAÇÃO HCIA 5G - Turma 01/2021

+ +

Oportunidade ímpar à comunidade: formação GRATUITA para certificação em redes 5G. A Coordenação do projeto Instituto Metrópole Digital - UFRN5G Training RN abre inscrições para o processo seletivo para participação na primeira turma do curso de formação HCIA 5G, promovido em parceria entre o IMD e a Huawei Technologies Co. LTD.

+ +

Período do Processo: 09/02/2021 - 01/03/2021

+ +

Link do edital: https://www.imd.ufrn.br/portal/visualizar/252

+ +

IMD abre 100 vagas para curso online sobre redes celulares 5G

+ +

Assunto amplamente discutido em todo o mundo, as redes celulares de quinta geração (5G) é o tema do mais novo curso de formação do Instituto Metrópole Digital (IMD/UFRN). Fruto de parceria internacional com a gigante tecnológica Huawei, o projeto, intitulado de “5G Training RN”, está com 100 vagas abertas, mais cadastro reserva, para aulas online e gratuitas.

+ +

Com inscrições abertas até o dia 21 deste mês, disponíveis por meio do link, o processo seletivo é aberto a qualquer pessoa, desde que esta tenha cursado, pelo menos, mais de uma disciplina relacionada a redes de computadores ou telecomunicações em cursos técnicos ou de graduação.

+ +

O projeto oferecerá aulas com o intuito de capacitar os alunos para a prova de certificação HCIA 5G da Huawei – exame cuja aprovação qualifica profissionais em diferentes áreas e garante a estes certificados emitidos pela própria multinacional chinesa.

+ +

Para se inscrever no processo, não é necessário estar matriculado em instituição de ensino específica e as vagas, dado o ensino remoto, podem ser preenchidas por candidatos oriundos de qualquer lugar do Brasil. O curso também tem como alvo profissionais da área de redes e telecomunicações e terá duração de dois meses e meio, indo de março até maio deste ano.

+ +

+ +

Seleção

+ +

Regido pelo Edital nº 008/2021, o processo de seleção consistirá em avaliação de documentação comprobatória. Dentre os quesitos a serem avaliados, encontram-se experiência de atuação profissional, formação acadêmica e certificações diversas em tecnologia.

+ +

O resultado final será divulgado no dia 27 deste mês, por meio do portal do IMD, na aba “Editais”. As matrículas estão previstas para acontecer até o dia 05 de março.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hcia-ia-notes/index.html b/docs/hcia-ia-notes/index.html new file mode 100644 index 0000000000..3c3fcc4378 --- /dev/null +++ b/docs/hcia-ia-notes/index.html @@ -0,0 +1,757 @@ + + + + + + +Notes for HCIA-IA - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Some of the notes I prepared studying for the Huawei Certified ICT Associate - Artificial Intelligence (HCIA-IA) exam.

+ +

Notes

+ +

Deep learning

+ +

I used the Coggle platform, a collaborative mind maps & flow charts tool.

+ +

+ +

Huawei Cloud Enterprise Intelligent (EI) Services

+ +

These were made by my studying collegues using Miro, an online visual collaboration platform for teamwork.

+ +

+ +

+ +

Huawei Open AI (HiAI) Platform for Smart Devices

+ +

+ +

Certification

+ +

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/healthcom14/index.html b/docs/healthcom14/index.html new file mode 100644 index 0000000000..20025a54b4 --- /dev/null +++ b/docs/healthcom14/index.html @@ -0,0 +1,768 @@ + + + + + + +IEEE HealthCom 2014 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom)

+ +

Proceedings

+ +

Software defined eHealth networking towards a truly mobile and reliable system

+ +

DOI:10.1109/HealthCom.2014.7001903

+ +
    +
  • Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil)
  • +
  • José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain)
  • +
  • Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil)
  • +
  • Pedro Frosi Rosa (Federal University of Uberlândia, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

F. Silva, J. Castillo-Lema, A. Neto, F. Silva and P. Rosa, “Software defined eHealth networking towards a truly mobile and reliable system”, 2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom), Natal, 2014, pp. 560-564, doi: 10.1109/HealthCom.2014.7001903.

+ +

BibTeX

+ +
@INPROCEEDINGS {7001903,
+  author={F. {Silva} and J. {Castillo-Lema} and A. {Neto} and F. {Silva} and P. {Rosa}},
+  booktitle={2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom)},
+  title={Software defined eHealth networking towards a truly mobile and reliable system},
+  year={2014},
+  volume={},
+  number={},
+  pages={560-564}}
+
+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/heat-introducao/index.html b/docs/heat-introducao/index.html new file mode 100644 index 0000000000..dda9ba9a4f --- /dev/null +++ b/docs/heat-introducao/index.html @@ -0,0 +1,929 @@ + + + + + + +[PT] Heat - Introdução - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +
+ + +
+ + + +
+

Originally published at Churrops on DevOps on December 20, 2017.

+
+ +

Olá pessoal, vamos começar uma série de artigos sobre Heat, o “terraform” nativo do OpenStack, ou para quem vem do mundo da AWS, o CloudFormation do OpenStack (inclusive parcialmente compatível). Neste primeiro artigo introdutório vamos aprender a criar as nossas próprias pilhas (ou stacks) e recriar a instância do servidor web que criamos no post passado usando o Terraform.

+ +

O objetivo principal de Heat é criar um serviço para gerenciar todo o ciclo de vida de infra e aplicativos dentro do OpenStack. Ele implementa um mecanismo de orquestração com base em templates na forma de arquivos de texto (em formato .yaml) que podem ser tratados como código. O formato dos templates está evoluindo a cada versão do OpenStack, mas o Heat se esforça para fornecer compatibilidade com o formato do modelo AWS CloudFormation, de modo que muitos modelos CloudFormation existentes podem ser iniciados no OpenStack (inclusive permitindo, por exemplo, escalar do OpenStack para dentro da AWS). Para quem tiver interesse, existe também um esforço da comunidade para suportar templates TOSCA, chamado Heat Translator.

+ +

O Heat fornece uma API REST nativa do OpenStack e uma API de consulta compatível com o CloudFormation, além de interface gráfica via Horizon (o dashboard de OpenStack) e um cliente para a linha de comandos (antigamente heat, nas versões mais novas de OpenStack foi integrado no próprio comando openstack).

+ +

Uma característica importante do Heat é que ele gerencia todo o ciclo de vida do aplicativo, e não só a criação. Quando precisar alterar a infra, simplesmente modifique o modelo e use o Heat para atualizar sua pilha existente. Heat sabe como fazer as mudanças necessárias. Ele irá excluir todos os recursos quando você terminar o aplicativo também (tipo terraform destroy).

+ +

Os recursos de infra que podem ser descritos incluem: instâncias, IPs públicos, volumes, grupos de segurança, usuários, roteadores, etc. Os modelos também podem especificar as relações entre recursos (por exemplo, este volume está conectado a este servidor). Isso permite que o Heat invoque as APIs do OpenStack para criar toda sua infra virtual na ordem correta para iniciar completamente sua aplicação.

+ +

O Heat também se integra com o Ceilometer, o módulo de telemetria do OpenStack, permitindo definir políticas de uso de autoscaling em função do uso dos recursos (chegaremos lá nos próximos artigos!).

+ +

O Heat gerencia principalmente a infra virtual, mas os modelos se integram bem com ferramentas de gerenciamento de configuração de software, como Puppet e Chef, e a equipe do Heat está trabalhando para fornecer uma integração ainda melhor entre infraestrutura e software. Existem várias opções para configurar o software que é executado nos servidores do stack:

+
    +
  • Criar uma imagem personalizada (de preferência usando diskimager-builder)
  • +
  • Via cloud-init, um script que é executado durante o primeiro boot. Esta será a forma que usaremos ao longo dos artigos.
  • +
  • Um recurso do heat, de tipo software deployment.
  • +
+ +

Sem mais, vamos criar o nosso primeiro stack e recriar o nosso servidor web.

+ +

Pré requisitos

+ +
    +
  • Uma conta em alguma nuvem OpenStack, não necessariamente admin
  • +
  • Quota suficiente na nossa conta para instanciar os recursos solicitados
  • +
+ +

No repositório https://github.com/josecastillolema/churrops.git podem fazer download do arquivo heat.yaml, o template que usaremos durante este artigo.

+ +

Descrição do template

+

As duas primeras linhas mostram a versão em uso do formato do template e uma descrição do conteúdo do mesmo:

+
heat_template_version: 2016-04-08
+description: Servidor web para churrops!
+
+ +

A seguir, o primeiro bloco do template, parameters, define uma série de parâmetros que serão usados durante o deployment da infra (de forma análoga ao bloco variable no caso do Terraform). Podemos definir neste bloco imagem, flavor, redes, chaves para acessar aos nossos servidores, etc. Para cada parâmetro definido podemos adicionar uma descrição e um valor padrão.

+
parameters:
+  flavor:
+    type: string
+    description: Flavor para o servidor web
+    constraints:
+    - custom_constraint: nova.flavor
+    default: g1.micro
+  image:
+    type: string
+    description: Imagem para o servidor web
+    constraints:
+    - custom_constraint: glance.image
+    default: linux-ubuntu-16-64b-base
+  private_network:
+    type: string
+    description: Rede interna
+    constraints:
+    - custom_constraint: neutron.network
+    default: net-int1
+  private_ip:
+    type: string
+    description: IP interna do servidor
+    default: 10.0.0.200
+  key_name:
+    type: string
+    description: A chave ssh para acessar a nossa vm
+    constraints:
+    - custom_constraint: nova.keypair
+    default: devel
+  public_network:
+    type: string
+    description: Rede publica
+    constraints:
+    - custom_constraint: neutron.network
+  texto:
+    type: string
+    description: Texto exibido no site
+    default: "Churrops rules"
+
+

No segundo bloco, resources, é a onde vamos definir os recursos da nossa infra. Neste caso vamos definir o nosso servidor web. Podem consultar uma lista de todos os recursos disponíveis aqui. O servidor web é configurado via cloud-init no primeiro boot. Vejam que é possível passar parâmetros para os recursos, como neste caso o parâmetro TEXTO.

+
resources:
+  sec_group:
+    type: OS::Neutron::SecurityGroup
+    properties:
+      rules:
+      - remote_ip_prefix: 0.0.0.0/0
+        protocol: icmp
+      - remote_ip_prefix: 0.0.0.0/0
+        protocol: tcp
+        port_range_min: 80
+        port_range_max: 80
+      - remote_ip_prefix: 0.0.0.0/0
+        protocol: tcp
+        port_range_min: 22
+        port_range_max: 22 
+
+  serverweb_port:
+    type: OS::Neutron::Port
+    properties:
+      network_id: { get_param: private_network }
+      security_groups: [{ get_resource: sec_group }]
+
+  serverweb:
+    type: OS::Nova::Server
+    properties:
+      image: { get_param: image }
+      flavor: { get_param: flavor }
+      networks:
+        - port: { get_resource: serverweb_port }
+      user_data_format: RAW
+      key_name: { get_param: key_name }
+      user_data:
+        str_replace:
+          template: |
+            #!/bin/bash
+            sudo -i
+            apt-get update
+            apt-get install -y apache2
+            cat < /var/www/html/index.html
+            Churrops!!! o/
+            hostname: $(hostname)
+            parametro: TEXTO
+            EOF
+          params:
+            TEXTO: { get_param: texto }
+
+  floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network: { get_param: public_network }
+      port_id: { get_resource: serverweb_port }
+
+

O terceiro e ultimo bloco, outputs, tem uma função análoga ao arquivo output.tf do Terraform. Ele define uma saída que será mostrada ao usuário ao terminar a criação da infra.

+
outputs:
+  lburl:
+    description: URL do servidor web
+    value:
+      str_replace:
+        template: http://IP_ADDRESS
+        params:
+          IP_ADDRESS: { get_attr: [ floating_ip, floating_ip_address ] }
+    description: >
+      Esta URL e a URL "externa" que pode ser usada para acessar o servidor WEB.
+
+ +

Execução do template

+ +

Via Horizon

+

Primeiro, na aba Orquestration - Stacks criamos o nosso stack e setamos os parâmetros opcionais que foram definidos no template. +

+ +

A continuação podemos ver a topologia diversos recursos sendo criados (os recursos em verde já estão disponíveis). +

+ +

Um overview da nossa pilha, com o output que definimos no template. +

+ +

Os recursos que estão sendo criados. +

+ +

E por último todos os eventos relacionados com esses recursos (criação, atualização, modificação, deleção, etc.). +

+ +

Via CLI

+
    +
  • Criação: +
    openstack stack create churrops-stack -t heat.yaml
    +openstack stack create churrops-stack -t heat.yaml
    +
    +
  • +
  • Para acompanhar a criação: +
    watch openstack stack event list churrops-stack
    +
    +
    +
  • +
+ +

Via API REST

+

Como falamos na introdução, o Heat fornece uma API REST nativa do OpenStack e uma API de consulta compatível com o CloudFormation. Neste caso usaremos a API REST nativa.

+ +

+ +

Resultado da execução

+ +

Independentemente do método escolhido (Horizon, CLI ou API REST), uma vez que o stack transicione ao estado created (não deveria demorar muito mais de 2 minutos) poderemos ver a infra instanciada. +

+ +

Em alguns minutos (enquanto cloud-init instala e configura o servidor web Apache), poderemos acessar ao nosso servidor pela IP pública. +

+ +

Conclusão

+

Neste artigo introduzimos o Heat, o orquestrador do OpenStack. Vimos como mantém todas as funcionalidades de outros IaCs, como Terraform, mas é integrado de uma forma mais nativa no OpenStack e podemos accesá-lo via dashboard , linha de comandos ou API REST (compatível com a AWS CloudFormation).

+ +

Nos próximos artigos veremos como criar via Heat um balanceador de carga em alta disponibilidade usando haproxy e VRRP.

+ +

Um abraço!

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-01/index.html b/docs/hntd-01/index.html new file mode 100644 index 0000000000..c3571e2317 --- /dev/null +++ b/docs/hntd-01/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 1st edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-02/index.html b/docs/hntd-02/index.html new file mode 100644 index 0000000000..ba34a104e2 --- /dev/null +++ b/docs/hntd-02/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 2nd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-03/index.html b/docs/hntd-03/index.html new file mode 100644 index 0000000000..84cee0d5f7 --- /dev/null +++ b/docs/hntd-03/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 3rd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-04/index.html b/docs/hntd-04/index.html new file mode 100644 index 0000000000..9da0fbc0e9 --- /dev/null +++ b/docs/hntd-04/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 4th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-05/index.html b/docs/hntd-05/index.html new file mode 100644 index 0000000000..cb70f9f3ad --- /dev/null +++ b/docs/hntd-05/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 5th/6th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-07/index.html b/docs/hntd-07/index.html new file mode 100644 index 0000000000..b1e8cd795a --- /dev/null +++ b/docs/hntd-07/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 7th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-08/index.html b/docs/hntd-08/index.html new file mode 100644 index 0000000000..9760f3d4e6 --- /dev/null +++ b/docs/hntd-08/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 8th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-09/index.html b/docs/hntd-09/index.html new file mode 100644 index 0000000000..ba39ef4e47 --- /dev/null +++ b/docs/hntd-09/index.html @@ -0,0 +1,727 @@ + + + + + + +HCNA-HNTD Training - 9th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-10/index.html b/docs/hntd-10/index.html new file mode 100644 index 0000000000..1ba01c402d --- /dev/null +++ b/docs/hntd-10/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 10th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-11/index.html b/docs/hntd-11/index.html new file mode 100644 index 0000000000..985e1be199 --- /dev/null +++ b/docs/hntd-11/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 11th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-12/index.html b/docs/hntd-12/index.html new file mode 100644 index 0000000000..c6565091c6 --- /dev/null +++ b/docs/hntd-12/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 12th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/hntd-13/index.html b/docs/hntd-13/index.html new file mode 100644 index 0000000000..94b8be13b8 --- /dev/null +++ b/docs/hntd-13/index.html @@ -0,0 +1,725 @@ + + + + + + +HCNA-HNTD Training - 13th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/huawey-academy-workshop/index.html b/docs/huawey-academy-workshop/index.html new file mode 100644 index 0000000000..54511ecbe2 --- /dev/null +++ b/docs/huawey-academy-workshop/index.html @@ -0,0 +1,731 @@ + + + + + + +Huawei ICT Academy Instructor Workshop Brazil 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

No dia 09 de Novembro, será realizado um Worshop ao vivo sobre o programa Huawei ICT Academy, com apresentação de alguns casos de universidades parceiras. Participe e aprenda um pouco mais sobre como podemos trabalhar juntos.

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/huawey-job-fair-21/index.html b/docs/huawey-job-fair-21/index.html new file mode 100644 index 0000000000..e52374135e --- /dev/null +++ b/docs/huawey-job-fair-21/index.html @@ -0,0 +1,725 @@ + + + + + + +Huawei ICT Job Fair Brazil 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/huawey-rs-vs-datacom/index.html b/docs/huawey-rs-vs-datacom/index.html new file mode 100644 index 0000000000..6e5b919b41 --- /dev/null +++ b/docs/huawey-rs-vs-datacom/index.html @@ -0,0 +1,731 @@ + + + + + + +Huawei Routing & Switching vs Datacom - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Nesta apresentação serão mostradas as diferenças entre a antiga trilha de certificação Routing & Swithing e sua substituta, Datacom. Será um evento online de uma hora de duração e quem realizar a inscrição pelo link receberá um certificado de participação no evento.

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/iac-ansible-aws/index.html b/docs/iac-ansible-aws/index.html new file mode 100644 index 0000000000..7a61b7858b --- /dev/null +++ b/docs/iac-ansible-aws/index.html @@ -0,0 +1,991 @@ + + + + + + +IaC series: Ansible na AWS - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Infraestructure as a Code (IaC).

+ + + + + +

Lab 15 - Ansible

+ +

Ansible

+ +

Pre-reqs

+ +
    +
  • +

    Uma VM com a imagem Amazon Linux que será usada como destino do playbook

    +
  • +
  • +

    O terminal do AWS Academy Learner Lab será usado como bastion para rodar os playbooks do Ansible +

    +
  • +
+ +

Instalação (no terminal do AWS Academy Learner Lab)

+ +
    +
  1. +

    Instalar o ansible via pip:

    + +
     $ pip install ansible
    + Defaulting to user installation because normal site-packages is not writeable
    + Collecting ansible
    +   Downloading ansible-4.5.0.tar.gz (35.5 MB)
    +      |████████████████████████████████| 35.5 MB 141 kB/s Collecting ansible-core<2.12,>=2.11.4
    +   Downloading ansible-core-2.11.4.tar.gz (6.8 MB)     |████████████████████████████████| 6.8 MB 55.2 MB/s 
    + Requirement already satisfied: jinja2 in /usr/local/lib/python3.6/site-packages (from ansible-core<2.12,>=2.11.4->ansible) (2.10)
    + Requirement already satisfied: PyYAML in /usr/local/lib/python3.6/site-packages (from ansible-core<2.12,>=2.11.4->ansible) (3.12)
    + Requirement already satisfied: cryptography in /usr/local/lib/python3.6/site-packages (from ansible-core<2.12,>=2.11.4->ansible) (2.8)
    + Requirement already satisfied: packaging in /usr/local/lib/python3.6/site-packages (from ansible-
    + core<2.12,>=2.11.4->ansible) (17.1)
    + Collecting resolvelib<0.6.0,>=0.5.3  Downloading resolvelib-0.5.4-py2.py3-none-any.whl (12 kB)
    + Requirement already satisfied: cffi!=1.11.3,>=1.8 in /usr/local/lib/python3.6/site-packages (from cryptography->ansible-core<2.12,>=2.11.4->ansible) (1.13.2)
    + Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages (from cryptog
    + raphy->ansible-core<2.12,>=2.11.4->ansible) (1.13.0)Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi!=1.
    + 11.3,>=1.8->cryptography->ansible-core<2.12,>=2.11.4->ansible) (2.18)Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.6/site-packages (from j
    + inja2->ansible-core<2.12,>=2.11.4->ansible) (1.0)
    + Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.6/site-packages (from packaging->ansible-core<2.12,>=2.11.4->ansible) (2.2.0)
    + Building wheels for collected packages: ansible, ansible-core
    +   Building wheel for ansible (setup.py) ... done
    +   Created wheel for ansible: filename=ansible-4.5.0-py3-none-any.whl size=58416593 sha256=cd10026
    + 1551b7e750f527df65a11e177a47a1bbceb758d2fc7ce4b83cb0d7d3f
    +   Stored in directory: /mnt/data2/students/sub1/ddd_v1_w_KazC_645304/asn482177_1/asn482178_1/work
    + /.cache/pip/wheels/3d/07/88/485d832c1277b3e6c7a8ba90376b474265224c98cdb9897054
    +   Building wheel for ansible-core (setup.py) ... done
    +   Created wheel for ansible-core: filename=ansible_core-2.11.4-py3-none-any.whl size=1947298 sha2
    + 56=a8a14e920bd235e629bb692674593b7cce013f67391ae5882aed6441492dec76
    +   Stored in directory: /mnt/data2/students/sub1/ddd_v1_w_KazC_645304/asn482177_1/asn482178_1/work
    + /.cache/pip/wheels/61/05/a3/cf0a0f377f42ddffae82582e0b563c6fc1bbd7feb0e6fc969a
    + Successfully built ansible ansible-core
    + Installing collected packages: resolvelib, ansible-core, ansible
    +
    + Successfully installed ansible ansible-core resolvelib
    +
    +
  2. +
  3. +

    Testar a instalação:

    +
     $ ansible -h
    + usage: ansible [-h] [--version] [-v] [-b] [--become-method BECOME_METHOD]
    +                [--become-user BECOME_USER] [-K] [-i INVENTORY] [--list-hosts]
    +                [-l SUBSET] [-P POLL_INTERVAL] [-B SECONDS] [-o] [-t TREE] [-k]
    +                [--private-key PRIVATE_KEY_FILE] [-u REMOTE_USER]
    +                [-c CONNECTION] [-T TIMEOUT]
    +                [--ssh-common-args SSH_COMMON_ARGS]
    +                [--sftp-extra-args SFTP_EXTRA_ARGS]
    +                [--scp-extra-args SCP_EXTRA_ARGS]
    +                [--ssh-extra-args SSH_EXTRA_ARGS] [-C] [--syntax-check] [-D]
    +                [-e EXTRA_VARS] [--vault-id VAULT_IDS]
    +                [--ask-vault-password | --vault-password-file VAULT_PASSWORD_FILES]
    +                [-f FORKS] [-M MODULE_PATH] [--playbook-dir BASEDIR]
    +                [--task-timeout TASK_TIMEOUT] [-a MODULE_ARGS] [-m MODULE_NAME]
    +                pattern
    +
    + Define and run a single task 'playbook' against a set of hosts
    +
    + positional arguments:
    +   pattern               host pattern
    +
    + optional arguments:
    +   --ask-vault-password, --ask-vault-pass
    +                         ask for vault password
    +   --list-hosts          outputs a list of matching hosts; does not execute
    +                         anything else
    +   --playbook-dir BASEDIR
    +                         Since this tool does not use playbooks, use this as a
    +                         substitute playbook directory.This sets the relative
    +                         path for many features including roles/ group_vars/
    +                         etc.
    +   --syntax-check        perform a syntax check on the playbook, but do not
    +                         execute it
    +   --task-timeout TASK_TIMEOUT
    +                         set task timeout limit in seconds, must be positive
    +                         integer.
    +   --vault-id VAULT_IDS  the vault identity to use
    +   --vault-password-file VAULT_PASSWORD_FILES, --vault-pass-file VAULT_PASSWORD_FILES
    +                         vault password file
    +   --version             show program's version number, config file location,
    +                         configured module search path, module location,
    +                         executable location and exit
    +   -B SECONDS, --background SECONDS
    +                         run asynchronously, failing after X seconds
    +                         (default=N/A)
    +   -C, --check           don't make any changes; instead, try to predict some
    +                         of the changes that may occur
    +   -D, --diff            when changing (small) files and templates, show the
    +                         differences in those files; works great with --check
    +   -M MODULE_PATH, --module-path MODULE_PATH
    +                         prepend colon-separated path(s) to module library (def
    +                         ault=~/.ansible/plugins/modules:/usr/share/ansible/plu
    +                         gins/modules)
    +   -P POLL_INTERVAL, --poll POLL_INTERVAL
    +                         set the poll interval if using -B (default=15)
    +   -a MODULE_ARGS, --args MODULE_ARGS
    +                         The action's options in space separated k=v format: -a
    +                         'opt1=val1 opt2=val2'
    +   -e EXTRA_VARS, --extra-vars EXTRA_VARS
    +                         set additional variables as key=value or YAML/JSON, if
    +                         filename prepend with @
    +   -f FORKS, --forks FORKS
    +                         specify number of parallel processes to use
    +                         (default=5)
    +   -h, --help            show this help message and exit
    +   -i INVENTORY, --inventory INVENTORY, --inventory-file INVENTORY
    +                         specify inventory host path or comma separated host
    +                         list. --inventory-file is deprecated
    +   -l SUBSET, --limit SUBSET
    +                         further limit selected hosts to an additional pattern
    +   -m MODULE_NAME, --module-name MODULE_NAME
    +                         Name of the action to execute (default=command)
    +   -o, --one-line        condense output
    +   -t TREE, --tree TREE  log output to this directory
    +   -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
    +                         connection debugging)
    +
    + Privilege Escalation Options:
    +   control how and which user you become as on target hosts
    +
    +   --become-method BECOME_METHOD
    +                         privilege escalation method to use (default=sudo), use
    +                         `ansible-doc -t become -l` to list valid choices.
    +   --become-user BECOME_USER
    +                         run operations as this user (default=root)
    +   -K, --ask-become-pass
    +                         ask for privilege escalation password
    +   -b, --become          run operations with become (does not imply password
    +                         prompting)
    +
    + Connection Options:
    +   control as whom and how to connect to hosts
    +
    +   --private-key PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE
    +                         use this file to authenticate the connection
    +   --scp-extra-args SCP_EXTRA_ARGS
    +                         specify extra arguments to pass to scp only (e.g. -l)
    +   --sftp-extra-args SFTP_EXTRA_ARGS
    +                         specify extra arguments to pass to sftp only (e.g. -f,
    +                         -l)
    +   --ssh-common-args SSH_COMMON_ARGS
    +                         specify common arguments to pass to sftp/scp/ssh (e.g.
    +                         ProxyCommand)
    +   --ssh-extra-args SSH_EXTRA_ARGS
    +                         specify extra arguments to pass to ssh only (e.g. -R)
    +   -T TIMEOUT, --timeout TIMEOUT
    +                         override the connection timeout in seconds
    +                         (default=10)
    +   -c CONNECTION, --connection CONNECTION
    +                         connection type to use (default=smart)
    +   -k, --ask-pass        ask for connection password
    +   -u REMOTE_USER, --user REMOTE_USER
    +                         connect as this user (default=None)
    +
    + Some actions do not make sense in Ad-Hoc (include, meta, etc)
    +
    +
  4. +
+ +

Uso do ansible

+ +
    +
  1. Baixar os templates: +
     $ git clone https://github.com/josecastillolema/fiap
    + Cloning into 'fiap'...
    + remote: Enumerating objects: 10, done.
    + remote: Counting objects: 100% (10/10), done.
    + remote: Compressing objects: 100% (10/10), done.
    + remote: Total 3716 (delta 4), reused 0 (delta 0), pack-reused 3706
    + Receiving objects: 100% (3716/3716), 44.63 MiB | 3.88 MiB/s, done.
    + Resolving deltas: 100% (1862/1862), done.
    + Checking connectivity... done.
    +    
    + $ cd fiap/cld/multicloud/lab15-ansible/
    +
    +
  2. +
  3. Atualizar o conteúdo do arquivo hosts com o endereço da máquina virtual Amazon Linux e testar o acesso a máquina virtual: +
     $ ansible all -m  ping -i hosts --key-file ~/.ssh/labsuser.pem
    + ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com | SUCCESS => {
    +     "ansible_facts": {
    +         "discovered_interpreter_python": "/usr/bin/python"
    +     },
    +     "changed": false,
    +     "ping": "pong"
    + }
    +
    +
  4. +
+ +

Uso do ansible-playbook

+ +
    +
  1. Invocar o playbook template: +
     $ ansible-playbook deploy-flask.yaml -i hosts --key-file ~/.ssh/labsuser.pem
    + PLAY [webservers] *******************************************************************************
    +
    + TASK [Gathering Facts] **************************************************************************
    + ok: [ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com]
    +
    + TASK [install pip] ******************************************************************************
    + changed: [ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com]
    +
    + PLAY RECAP **************************************************************************************
    + ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  
    +
    +
  2. +
  3. Na 1a execução do playbook, veja que o pip foi instalado (changed=1). Se rodar-mos o playbook outra vez, não haberá mudanças na VM (changed=0): +
     $ ansible-playbook deploy-flask.yaml -i hosts --key-file ~/.ssh/labsuser.pem
    + PLAY [webservers] *******************************************************************************
    +
    + TASK [Gathering Facts] **************************************************************************
    + ok: [ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com]
    +
    + TASK [install pip] ******************************************************************************
    + ok: [ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com]
    +
    + PLAY RECAP **************************************************************************************
    + ec2-user@ec2-54-145-72-182.compute-1.amazonaws.com : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    +
    +
  4. +
  5. Concluir o playbook com os restantes passos para o correto deploy da aplicação (consultar o lab de Beanstalk - deploy em uma VM do EC2): +
      +
    • Copiar os arquivos da aplicação (ou clonar este repositório git)
    • +
    • Instalação das dependencias Python usando o pip (arquivo requirements)
    • +
    • Execução da aplicação
    • +
    +
  6. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/iac-terraform-aws/index.html b/docs/iac-terraform-aws/index.html new file mode 100644 index 0000000000..82d5274ac7 --- /dev/null +++ b/docs/iac-terraform-aws/index.html @@ -0,0 +1,1689 @@ + + + + + + +IaC series: Terraform na AWS - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre Infraestructure as a Code (IaC).

+ + + + + +

Lab 14 - Terraform

+ +

AWS Provider

+ +

O Terraform é uma ferramenta para construir, alterar e controlar a infraestrutura de forma segura e eficiente. O Terraform pode gerenciar provedores de serviços existentes e populares como OpenStack, Azure, AWS, Digital Ocean, entre outras, bem como soluções internas personalizadas.

+ +

Os arquivos de configuração do Terraform descrevem os componentes necessários para executar um único aplicativo ou todo o datacenter, gerando um plano de execução que descreve o que será feito para alcançar o estado desejado e, em seguida, executá-lo para construir a infraestrutura descrita. À medida que a configuração muda, o Terraform é capaz de determinar o que mudou e criar planos de execução incrementais que podem ser aplicados.

+ +

A infraestrutura que o Terraform pode gerenciar inclui componentes de baixo nível, como instâncias de computação, armazenamento e redes, bem como componentes de alto nível, como entradas DNS, recursos SaaS, etc.

+ +

Com relação a ferramenta podemos comparar o Terraform com o CloudFormation da AWS.

+ +

Pre-reqs

+ +
    +
  • +

    Uma VM com a imagem Amazon Linux

    +
  • +
  • +

    No painel da Vocareum, accessar as credenciais da conta para acesso programático: + +

    +
  • +
  • Copiar as credenciais no arquivo ~/.aws/credentials dentro da VM: +
      $ cat ~/.aws/credentials 
    +  [default]
    +  aws_access_key_id=<copy here>
    +  aws_secret_access_key=<copy here>
    +  aws_session_token=<copy here>
    +
    +
  • +
  • Configuramos a região correta (ignorar o resto dos campos): +
     $ aws configure
    + AWS Access Key ID [****************Q5QG]: 
    + AWS Secret Access Key [****************aqWs]: 
    + Default region name [None]: us-east-1
    + Default output format [None]:
    +
    +
  • +
  • Listar VMs (em formato json): +
     $ aws ec2 describe-instances
    + {
    +     "Reservations": [
    +         {
    +             "Groups": [],
    +             "Instances": [
    +                 {
    +                     "AmiLaunchIndex": 0,
    +                     "ImageId": "ami-0914bc04e5495b889",
    +                     "InstanceId": "i-0eea6b50a48d07613",
    +                     "InstanceType": "t2.micro",
    +                     "LaunchTime": "2020-09-18T00:17:13.000Z",
    +                     "Monitoring": {
    +                         "State": "disabled"
    +                     },
    +                     "Placement": {
    +                         "AvailabilityZone": "us-east-1c",
    +                         "GroupName": "",
    +                         "Tenancy": "default"
    +                     },
    +                     "PrivateDnsName": "",
    +                     "ProductCodes": [],
    +                     "PublicDnsName": "",
    +                     "State": {
    +                         "Code": 48,
    +                         "Name": "terminated"
    +                     },
    +                     "StateTransitionReason": "User initiated (2020-09-20 20:10:17 GMT)",
    +                     "Architecture": "x86_64",
    +                     "BlockDeviceMappings": [],
    +                     "ClientToken": "cb65d27a-49cb-d46d-a7ca-1b8368d22330",
    +                     "EbsOptimized": false,
    +                     "EnaSupport": true,
    +                     "Hypervisor": "xen",
    +                     "NetworkInterfaces": [],
    +                     "RootDeviceName": "/dev/xvda",
    +                     "RootDeviceType": "ebs",
    +                     "SecurityGroups": [],
    +                     "StateReason": {
    +                         "Code": "Client.UserInitiatedShutdown",
    +                         "Message": "Client.UserInitiatedShutdown: User initiated shutdown"
    +                     },
    +                     "Tags": [
    +                         {
    +                             "Key": "aws:cloudformation:stack-id",
    +                             "Value": "arn:aws:cloudformation:us-east-1:440730077537:stack/awseb-e-32fei49nnj-stack/35d81f30-f944-11ea-9cb6-0eb23bbe71c5"
    +                         },
    +                         {
    +                             "Key": "elasticbeanstalk:environment-id",
    +                             "Value": "e-32fei49nnj"
    +                         },
    +                         {
    +                             "Key": "Name",
    +                             "Value": "Fiapapp-env"
    +                         },
    +                         {
    +                             "Key": "aws:cloudformation:stack-name",
    +                             "Value": "awseb-e-32fei49nnj-stack"
    +                         },
    +                         {
    +                             "Key": "elasticbeanstalk:environment-name",
    +                             "Value": "Fiapapp-env"
    +                         },
    +                         {
    +                             "Key": "aws:autoscaling:groupName",
    +                             "Value": "awseb-e-32fei49nnj-stack-AWSEBAutoScalingGroup-17NY3APZ43NN7"
    +                         },
    +                         {
    +                             "Key": "aws:cloudformation:logical-id",
    +                             "Value": "AWSEBAutoScalingGroup"
    +                         }
    +                     ],
    +                     "VirtualizationType": "hvm",
    +                     "CpuOptions": {
    +                         "CoreCount": 1,
    +                         "ThreadsPerCore": 1
    +                     },
    +                     "CapacityReservationSpecification": {
    +                         "CapacityReservationPreference": "open"
    +                     },
    +                     "HibernationOptions": {
    +                         "Configured": false
    +                     },
    +                     "MetadataOptions": {
    +                         "State": "pending",
    +                         "HttpTokens": "optional",
    +                         "HttpPutResponseHopLimit": 1,
    +                         "HttpEndpoint": "enabled"
    +                     }
    +                 }
    +             ],
    +             "OwnerId": "440730077537",
    +             "RequesterId": "940372691376",
    +             "ReservationId": "r-04e5222922400810c"
    +         },
    +         {
    +             "Groups": [],
    +             "Instances": [
    +                 {
    +                     "AmiLaunchIndex": 0,
    +                     "ImageId": "ami-0817d428a6fb68645",
    +                     "InstanceId": "i-02a7e6dfe99d1f769",
    +                     "InstanceType": "t2.micro",
    +                     "KeyName": "fiap",
    +                     "LaunchTime": "2020-09-20T20:11:49.000Z",
    +                     "Monitoring": {
    +                         "State": "disabled"
    +                     },
    +                     "Placement": {
    +                         "AvailabilityZone": "us-east-1a",
    +                         "GroupName": "",
    +                         "Tenancy": "default"
    +                     },
    +                     "PrivateDnsName": "ip-172-31-40-37.ec2.internal",
    +                     "PrivateIpAddress": "172.31.40.37",
    +                     "ProductCodes": [],
    +                     "PublicDnsName": "ec2-18-232-70-66.compute-1.amazonaws.com",
    +                     "PublicIpAddress": "18.232.70.66",
    +                     "State": {
    +                         "Code": 16,
    +                         "Name": "running"
    +                     },
    +                     "StateTransitionReason": "",
    +                     "SubnetId": "subnet-17a00f48",
    +                     "VpcId": "vpc-7166990c",
    +                     "Architecture": "x86_64",
    +                     "BlockDeviceMappings": [
    +                         {
    +                             "DeviceName": "/dev/sda1",
    +                             "Ebs": {
    +                                 "AttachTime": "2020-09-20T20:11:49.000Z",
    +                                 "DeleteOnTermination": true,
    +                                 "Status": "attached",
    +                                 "VolumeId": "vol-0b8b82a6443e712cf"
    +                             }
    +                         }
    +                     ],
    +                     "ClientToken": "",
    +                     "EbsOptimized": false,
    +                     "EnaSupport": true,
    +                     "Hypervisor": "xen",
    +                     "NetworkInterfaces": [
    +                         {
    +                             "Association": {
    +                                 "IpOwnerId": "amazon",
    +                                 "PublicDnsName": "ec2-18-232-70-66.compute-1.amazonaws.com",
    +                                 "PublicIp": "18.232.70.66"
    +                             },
    +                             "Attachment": {
    +                                 "AttachTime": "2020-09-20T20:11:49.000Z",
    +                                 "AttachmentId": "eni-attach-00f1dc9a09492b219",
    +                                 "DeleteOnTermination": true,
    +                                 "DeviceIndex": 0,
    +                                 "Status": "attached"
    +                             },
    +                             "Description": "",
    +                             "Groups": [
    +                                 {
    +                                     "GroupName": "launch-wizard-3",
    +                                     "GroupId": "sg-0976be2478d3b8b08"
    +                                 }
    +                             ],
    +                             "Ipv6Addresses": [],
    +                             "MacAddress": "0e:6a:4f:ca:d5:f1",
    +                             "NetworkInterfaceId": "eni-09f8ba40f97bbc142",
    +                             "OwnerId": "440730077537",
    +                             "PrivateDnsName": "ip-172-31-40-37.ec2.internal",
    +                             "PrivateIpAddress": "172.31.40.37",
    +                             "PrivateIpAddresses": [
    +                                 {
    +                                     "Association": {
    +                                         "IpOwnerId": "amazon",
    +                                         "PublicDnsName": "ec2-18-232-70-66.compute-1.amazonaws.com",
    +                                         "PublicIp": "18.232.70.66"
    +                                     },
    +                                     "Primary": true,
    +                                     "PrivateDnsName": "ip-172-31-40-37.ec2.internal",
    +                                     "PrivateIpAddress": "172.31.40.37"
    +                                 }
    +                             ],
    +                             "SourceDestCheck": true,
    +                             "Status": "in-use",
    +                             "SubnetId": "subnet-17a00f48",
    +                             "VpcId": "vpc-7166990c",
    +                             "InterfaceType": "interface"
    +                         }
    +                     ],
    +                     "RootDeviceName": "/dev/sda1",
    +                     "RootDeviceType": "ebs",
    +                     "SecurityGroups": [
    +                         {
    +                             "GroupName": "launch-wizard-3",
    +                             "GroupId": "sg-0976be2478d3b8b08"
    +                         }
    +                     ],
    +                     "SourceDestCheck": true,
    +                     "VirtualizationType": "hvm",
    +                     "CpuOptions": {
    +                         "CoreCount": 1,
    +                         "ThreadsPerCore": 1
    +                     },
    +                     "CapacityReservationSpecification": {
    +                         "CapacityReservationPreference": "open"
    +                     },
    +                     "HibernationOptions": {
    +                         "Configured": false
    +                     },
    +                     "MetadataOptions": {
    +                         "State": "applied",
    +                         "HttpTokens": "optional",
    +                         "HttpPutResponseHopLimit": 1,
    +                         "HttpEndpoint": "enabled"
    +                     }
    +                 }
    +             ],
    +             "OwnerId": "440730077537",
    +             "ReservationId": "r-06e3113829e85cdc6"
    +         }
    +     ]
    + }
    +
    +
  • +
  • Listar VMs (em formato tabela): +
     $ aws ec2 describe-instances --output table
    + ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    + |                                                                        DescribeInstances                                                                       |
    + +----------------------------------------------------------------------------------------------------------------------------------------------------------------+
    + ||                                                                         Reservations                                                                         ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + ||  OwnerId                                                         |  440730077537                                                                             ||
    + ||  RequesterId                                                     |  940372691376                                                                             ||
    + ||  ReservationId                                                   |  r-04e5222922400810c                                                                      ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + |||                                                                          Instances                                                                         |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + |||  AmiLaunchIndex                                       |  0                                                                                                 |||
    + |||  Architecture                                         |  x86_64                                                                                            |||
    + |||  ClientToken                                          |  cb65d27a-49cb-d46d-a7ca-1b8368d22330                                                              |||
    + |||  EbsOptimized                                         |  False                                                                                             |||
    + |||  EnaSupport                                           |  True                                                                                              |||
    + |||  Hypervisor                                           |  xen                                                                                               |||
    + |||  ImageId                                              |  ami-0914bc04e5495b889                                                                             |||
    + |||  InstanceId                                           |  i-0eea6b50a48d07613                                                                               |||
    + |||  InstanceType                                         |  t2.micro                                                                                          |||
    + |||  LaunchTime                                           |  2020-09-18T00:17:13.000Z                                                                          |||
    + |||  PrivateDnsName                                       |                                                                                                    |||
    + |||  PublicDnsName                                        |                                                                                                    |||
    + |||  RootDeviceName                                       |  /dev/xvda                                                                                         |||
    + |||  RootDeviceType                                       |  ebs                                                                                               |||
    + |||  StateTransitionReason                                |  User initiated (2020-09-20 20:10:17 GMT)                                                          |||
    + |||  VirtualizationType                                   |  hvm                                                                                               |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + ||||                                                             CapacityReservationSpecification                                                             ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||  CapacityReservationPreference                                                                                             |  open                       ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||                                                                        CpuOptions                                                                        ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||  CoreCount                                                                                                             |  1                              ||||
    + ||||  ThreadsPerCore                                                                                                        |  1                              ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||                                                                    HibernationOptions                                                                    ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||  Configured                                                                                 |  False                                                     ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||                                                                      MetadataOptions                                                                     ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||  HttpEndpoint                                                                                            |  enabled                                      ||||
    + ||||  HttpPutResponseHopLimit                                                                                 |  1                                            ||||
    + ||||  HttpTokens                                                                                              |  optional                                     ||||
    + ||||  State                                                                                                   |  pending                                      ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||                                                                        Monitoring                                                                        ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||  State                                                          |  disabled                                                                              ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||                                                                         Placement                                                                        ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||  AvailabilityZone                                                                        |  us-east-1c                                                   ||||
    + ||||  GroupName                                                                               |                                                               ||||
    + ||||  Tenancy                                                                                 |  default                                                      ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||                                                                           State                                                                          ||||
    + |||+-------------------------------------------------------+--------------------------------------------------------------------------------------------------+|||
    + ||||  Code                                                 |  48                                                                                              ||||
    + ||||  Name                                                 |  terminated                                                                                      ||||
    + |||+-------------------------------------------------------+--------------------------------------------------------------------------------------------------+|||
    + ||||                                                                        StateReason                                                                       ||||
    + |||+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+|||
    + ||||  Code                 |  Client.UserInitiatedShutdown                                                                                                    ||||
    + ||||  Message              |  Client.UserInitiatedShutdown: User initiated shutdown                                                                           ||||
    + |||+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+|||
    + ||||                                                                           Tags                                                                           ||||
    + |||+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+|||
    + ||||                Key                |                                                        Value                                                         ||||
    + |||+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+|||
    + ||||  aws:cloudformation:stack-id      |  arn:aws:cloudformation:us-east-1:440730077537:stack/awseb-e-32fei49nnj-stack/35d81f30-f944-11ea-9cb6-0eb23bbe71c5   ||||
    + ||||  elasticbeanstalk:environment-id  |  e-32fei49nnj                                                                                                        ||||
    + ||||  Name                             |  Fiapapp-env                                                                                                         ||||
    + ||||  aws:cloudformation:stack-name    |  awseb-e-32fei49nnj-stack                                                                                            ||||
    + ||||  elasticbeanstalk:environment-name|  Fiapapp-env                                                                                                         ||||
    + ||||  aws:autoscaling:groupName        |  awseb-e-32fei49nnj-stack-AWSEBAutoScalingGroup-17NY3APZ43NN7                                                        ||||
    + ||||  aws:cloudformation:logical-id    |  AWSEBAutoScalingGroup                                                                                               ||||
    + |||+-----------------------------------+----------------------------------------------------------------------------------------------------------------------+|||
    + ||                                                                         Reservations                                                                         ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + ||  OwnerId                                                         |  440730077537                                                                             ||
    + ||  RequesterId                                                     |                                                                                           ||
    + ||  ReservationId                                                   |  r-06e3113829e85cdc6                                                                      ||
    + |+------------------------------------------------------------------+-------------------------------------------------------------------------------------------+|
    + |||                                                                          Instances                                                                         |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + |||  AmiLaunchIndex                                       |  0                                                                                                 |||
    + |||  Architecture                                         |  x86_64                                                                                            |||
    + |||  ClientToken                                          |                                                                                                    |||
    + |||  EbsOptimized                                         |  False                                                                                             |||
    + |||  EnaSupport                                           |  True                                                                                              |||
    + |||  Hypervisor                                           |  xen                                                                                               |||
    + |||  ImageId                                              |  ami-0817d428a6fb68645                                                                             |||
    + |||  InstanceId                                           |  i-02a7e6dfe99d1f769                                                                               |||
    + |||  InstanceType                                         |  t2.micro                                                                                          |||
    + |||  KeyName                                              |  fiap                                                                                              |||
    + |||  LaunchTime                                           |  2020-09-20T20:11:49.000Z                                                                          |||
    + |||  PrivateDnsName                                       |  ip-172-31-40-37.ec2.internal                                                                      |||
    + |||  PrivateIpAddress                                     |  172.31.40.37                                                                                      |||
    + |||  PublicDnsName                                        |  ec2-18-232-70-66.compute-1.amazonaws.com                                                          |||
    + |||  PublicIpAddress                                      |  18.232.70.66                                                                                      |||
    + |||  RootDeviceName                                       |  /dev/sda1                                                                                         |||
    + |||  RootDeviceType                                       |  ebs                                                                                               |||
    + |||  SourceDestCheck                                      |  True                                                                                              |||
    + |||  StateTransitionReason                                |                                                                                                    |||
    + |||  SubnetId                                             |  subnet-17a00f48                                                                                   |||
    + |||  VirtualizationType                                   |  hvm                                                                                               |||
    + |||  VpcId                                                |  vpc-7166990c                                                                                      |||
    + ||+-------------------------------------------------------+----------------------------------------------------------------------------------------------------+||
    + ||||                                                                    BlockDeviceMappings                                                                   ||||
    + |||+-------------------------------------------------------------------------------+--------------------------------------------------------------------------+|||
    + ||||  DeviceName                                                                   |  /dev/sda1                                                               ||||
    + |||+-------------------------------------------------------------------------------+--------------------------------------------------------------------------+|||
    + |||||                                                                           Ebs                                                                          |||||
    + ||||+-------------------------------------------------------------------+------------------------------------------------------------------------------------+||||
    + |||||  AttachTime                                                       |  2020-09-20T20:11:49.000Z                                                          |||||
    + |||||  DeleteOnTermination                                              |  True                                                                              |||||
    + |||||  Status                                                           |  attached                                                                          |||||
    + |||||  VolumeId                                                         |  vol-0b8b82a6443e712cf                                                             |||||
    + ||||+-------------------------------------------------------------------+------------------------------------------------------------------------------------+||||
    + ||||                                                             CapacityReservationSpecification                                                             ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||  CapacityReservationPreference                                                                                             |  open                       ||||
    + |||+----------------------------------------------------------------------------------------------------------------------------+-----------------------------+|||
    + ||||                                                                        CpuOptions                                                                        ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||  CoreCount                                                                                                             |  1                              ||||
    + ||||  ThreadsPerCore                                                                                                        |  1                              ||||
    + |||+------------------------------------------------------------------------------------------------------------------------+---------------------------------+|||
    + ||||                                                                    HibernationOptions                                                                    ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||  Configured                                                                                 |  False                                                     ||||
    + |||+---------------------------------------------------------------------------------------------+------------------------------------------------------------+|||
    + ||||                                                                      MetadataOptions                                                                     ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||  HttpEndpoint                                                                                            |  enabled                                      ||||
    + ||||  HttpPutResponseHopLimit                                                                                 |  1                                            ||||
    + ||||  HttpTokens                                                                                              |  optional                                     ||||
    + ||||  State                                                                                                   |  applied                                      ||||
    + |||+----------------------------------------------------------------------------------------------------------+-----------------------------------------------+|||
    + ||||                                                                        Monitoring                                                                        ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||  State                                                          |  disabled                                                                              ||||
    + |||+-----------------------------------------------------------------+----------------------------------------------------------------------------------------+|||
    + ||||                                                                     NetworkInterfaces                                                                    ||||
    + |||+--------------------------------------------------------------+-------------------------------------------------------------------------------------------+|||
    + ||||  Description                                                 |                                                                                           ||||
    + ||||  InterfaceType                                               |  interface                                                                                ||||
    + ||||  MacAddress                                                  |  0e:6a:4f:ca:d5:f1                                                                        ||||
    + ||||  NetworkInterfaceId                                          |  eni-09f8ba40f97bbc142                                                                    ||||
    + ||||  OwnerId                                                     |  440730077537                                                                             ||||
    + ||||  PrivateDnsName                                              |  ip-172-31-40-37.ec2.internal                                                             ||||
    + ||||  PrivateIpAddress                                            |  172.31.40.37                                                                             ||||
    + ||||  SourceDestCheck                                             |  True                                                                                     ||||
    + ||||  Status                                                      |  in-use                                                                                   ||||
    + ||||  SubnetId                                                    |  subnet-17a00f48                                                                          ||||
    + ||||  VpcId                                                       |  vpc-7166990c                                                                             ||||
    + |||+--------------------------------------------------------------+-------------------------------------------------------------------------------------------+|||
    + |||||                                                                       Association                                                                      |||||
    + ||||+-----------------------------------------+--------------------------------------------------------------------------------------------------------------+||||
    + |||||  IpOwnerId                              |  amazon                                                                                                      |||||
    + |||||  PublicDnsName                          |  ec2-18-232-70-66.compute-1.amazonaws.com                                                                    |||||
    + |||||  PublicIp                               |  18.232.70.66                                                                                                |||||
    + ||||+-----------------------------------------+--------------------------------------------------------------------------------------------------------------+||||
    + |||||                                                                       Attachment                                                                       |||||
    + ||||+--------------------------------------------------------------+-----------------------------------------------------------------------------------------+||||
    + |||||  AttachTime                                                  |  2020-09-20T20:11:49.000Z                                                               |||||
    + |||||  AttachmentId                                                |  eni-attach-00f1dc9a09492b219                                                           |||||
    + |||||  DeleteOnTermination                                         |  True                                                                                   |||||
    + |||||  DeviceIndex                                                 |  0                                                                                      |||||
    + |||||  Status                                                      |  attached                                                                               |||||
    + ||||+--------------------------------------------------------------+-----------------------------------------------------------------------------------------+||||
    + |||||                                                                         Groups                                                                         |||||
    + ||||+----------------------------------------------------+---------------------------------------------------------------------------------------------------+||||
    + |||||  GroupId                                           |  sg-0976be2478d3b8b08                                                                             |||||
    + |||||  GroupName                                         |  launch-wizard-3                                                                                  |||||
    + ||||+----------------------------------------------------+---------------------------------------------------------------------------------------------------+||||
    + |||||                                                                   PrivateIpAddresses                                                                   |||||
    + ||||+---------------------------------------------------------+----------------------------------------------------------------------------------------------+||||
    + |||||  Primary                                                |  True                                                                                        |||||
    + |||||  PrivateDnsName                                         |  ip-172-31-40-37.ec2.internal                                                                |||||
    + |||||  PrivateIpAddress                                       |  172.31.40.37                                                                                |||||
    + ||||+---------------------------------------------------------+----------------------------------------------------------------------------------------------+||||
    + ||||||                                                                      Association                                                                     ||||||
    + |||||+----------------------------------------+-------------------------------------------------------------------------------------------------------------+|||||
    + ||||||  IpOwnerId                             |  amazon                                                                                                     ||||||
    + ||||||  PublicDnsName                         |  ec2-18-232-70-66.compute-1.amazonaws.com                                                                   ||||||
    + ||||||  PublicIp                              |  18.232.70.66                                                                                               ||||||
    + |||||+----------------------------------------+-------------------------------------------------------------------------------------------------------------+|||||
    + ||||                                                                         Placement                                                                        ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||  AvailabilityZone                                                                        |  us-east-1a                                                   ||||
    + ||||  GroupName                                                                               |                                                               ||||
    + ||||  Tenancy                                                                                 |  default                                                      ||||
    + |||+------------------------------------------------------------------------------------------+---------------------------------------------------------------+|||
    + ||||                                                                      SecurityGroups                                                                      ||||
    + |||+-----------------------------------------------------+----------------------------------------------------------------------------------------------------+|||
    + ||||  GroupId                                            |  sg-0976be2478d3b8b08                                                                              ||||
    + ||||  GroupName                                          |  launch-wizard-3                                                                                   ||||
    + |||+-----------------------------------------------------+----------------------------------------------------------------------------------------------------+|||
    + ||||                                                                           State                                                                          ||||
    + |||+----------------------------------------------------------------+-----------------------------------------------------------------------------------------+|||
    + ||||  Code                                                          |  16                                                                                     ||||
    + ||||  Name                                                          |  running                                                                                ||||
    + |||+----------------------------------------------------------------+-----------------------------------------------------------------------------------------+|||
    +
    +
  • +
+ +

Instalação

+ +
    +
  1. +

    Fazer o download da ferramenta:

    + +
     $ wget https://releases.hashicorp.com/terraform/1.0.6/terraform_1.0.6_linux_amd64.zip
    + --2021-09-10 13:40:42--  https://releases.hashicorp.com/terraform/1.0.6/terraform_1.0.6_linux_amd64.zip
    + Resolving releases.hashicorp.com (releases.hashicorp.com)... 199.232.65.183, 2a04:4e42:50::439
    + Connecting to releases.hashicorp.com (releases.hashicorp.com)|199.232.65.183|:443... connected.
    + HTTP request sent, awaiting response... 200 OK
    + Length: 32677516 (31M) [application/zip]
    + Saving to: ‘terraform_1.0.6_linux_amd64.zip’
    +
    + 100%[============================================================>] 32,677,516   112MB/s   in 0.3s   
    +
    + 2021-09-10 13:40:42 (112 MB/s) - ‘terraform_1.0.6_linux_amd64.zip’ saved [32677516/32677516]
    +
    +
  2. +
  3. Descomprimir o arquivo baixado: +
     $ unzip terraform_1.0.6_linux_amd64.zip 
    + Archive:  terraform_1.0.6_linux_amd64.zip
    +   inflating: terraform               
    +
    +
  4. +
  5. Movimentar o executável: +
     $ sudo mv terraform /usr/local/bin/
    +
    +
  6. +
  7. Testar a instalação: +
     $ terraform -h
    + Usage: terraform [global options] <subcommand> [args]
    +
    + The available commands for execution are listed below.
    + The primary workflow commands are given first, followed by
    + less common or more advanced commands.
    +
    + Main commands:
    +   init          Prepare your working directory for other commands
    +   validate      Check whether the configuration is valid
    +   plan          Show changes required by the current configuration
    +   apply         Create or update infrastructure
    +   destroy       Destroy previously-created infrastructure
    +
    + All other commands:
    +   console       Try Terraform expressions at an interactive command prompt
    +   fmt           Reformat your configuration in the standard style
    +   force-unlock  Release a stuck lock on the current workspace
    +   get           Install or upgrade remote Terraform modules
    +   graph         Generate a Graphviz graph of the steps in an operation
    +   import        Associate existing infrastructure with a Terraform resource
    +   login         Obtain and save credentials for a remote host
    +   logout        Remove locally-stored credentials for a remote host
    +   output        Show output values from your root module
    +   providers     Show the providers required for this configuration
    +   refresh       Update the state to match remote systems
    +   show          Show the current state or a saved plan
    +   state         Advanced state management
    +   taint         Mark a resource instance as not fully functional
    +   test          Experimental support for module integration testing
    +   untaint       Remove the 'tainted' state from a resource instance
    +   version       Show the current Terraform version
    +   workspace     Workspace management
    +
    + Global options (use these before the subcommand, if any):
    +   -chdir=DIR    Switch to a different working directory before executing the
    +                 given subcommand.
    +   -help         Show this help output, or the help for a specified subcommand.
    +   -version      An alias for the "version" subcommand.
    +
    +
  8. +
+ +

Uso

+ +
    +
  1. Baixar os templates: +
     $ git clone https://github.com/josecastillolema/fiap
    + Cloning into 'fiap'...
    + remote: Enumerating objects: 10, done.
    + remote: Counting objects: 100% (10/10), done.
    + remote: Compressing objects: 100% (10/10), done.
    + remote: Total 3716 (delta 4), reused 0 (delta 0), pack-reused 3706
    + Receiving objects: 100% (3716/3716), 44.63 MiB | 3.88 MiB/s, done.
    + Resolving deltas: 100% (1862/1862), done.
    + Checking connectivity... done.
    +    
    + $ cd fiap/cld/multicloud/lab14-iaas-terraform/
    +
    +
  2. +
  3. Conferir o conteúdo do template: +
     $ cat main.tf 
    + terraform {
    +   required_providers {
    +     aws = {
    +       source  = "hashicorp/aws"
    +       version = "~> 3.27"
    +     }
    +   }
    +
    +   required_version = ">= 0.14.9"
    + }
    +
    + provider "aws" {
    +   profile = "default"
    +   region  = "us-east-1"
    + }
    +
    + resource "aws_instance" "app_server" {
    +   ami           = "ami-087c17d1fe0178315"
    +   instance_type = "t2.micro"
    +
    +   tags = {
    +     Name = "fiap-vm"
    +   }
    + }
    +
    +
  4. +
  5. Inicializar o Terraform e o correspondente provider (plugin) de AWS: +
     $ terraform init
    +
    + Initializing the backend...
    +
    + Initializing provider plugins...
    + - Finding hashicorp/aws versions matching "~> 3.27"...
    + - Installing hashicorp/aws v3.58.0...
    + - Installed hashicorp/aws v3.58.0 (signed by HashiCorp)
    +
    + Terraform has created a lock file .terraform.lock.hcl to record the provider
    + selections it made above. Include this file in your version control repository
    + so that Terraform can guarantee to make the same selections by default when
    + you run "terraform init" in the future.
    +
    + Terraform has been successfully initialized!
    +
    + You may now begin working with Terraform. Try running "terraform plan" to see
    + any changes that are required for your infrastructure. All Terraform commands
    + should now work.
    +
    + If you ever set or change modules or backend configuration for Terraform,
    + rerun this command to reinitialize your working directory. If you forget, other
    + commands will detect it and remind you to do so if necessary.
    +
    +
  6. +
  7. Validar os templates: +
     $ terraform fmt
    + $ terraform validate
    + Success! The configuration is valid.
    +
    +
  8. +
  9. Criar a infraestrutura virtual: +
     $ terraform apply
    +
    + Terraform used the selected providers to generate the following execution plan. Resource actions are
    + indicated with the following symbols:
    +   + create
    +
    + Terraform will perform the following actions:
    +
    +   # aws_instance.app_server will be created
    +   + resource "aws_instance" "app_server" {
    +       + ami                                  = "ami-087c17d1fe0178315"
    +       + arn                                  = (known after apply)
    +       + associate_public_ip_address          = (known after apply)
    +       + availability_zone                    = (known after apply)
    +       + cpu_core_count                       = (known after apply)
    +       + cpu_threads_per_core                 = (known after apply)
    +       + disable_api_termination              = (known after apply)
    +       + ebs_optimized                        = (known after apply)
    +       + get_password_data                    = false
    +       + host_id                              = (known after apply)
    +       + id                                   = (known after apply)
    +       + instance_initiated_shutdown_behavior = (known after apply)
    +       + instance_state                       = (known after apply)
    +       + instance_type                        = "t2.micro"
    +       + ipv6_address_count                   = (known after apply)
    +       + ipv6_addresses                       = (known after apply)
    +       + key_name                             = (known after apply)
    +       + monitoring                           = (known after apply)
    +       + outpost_arn                          = (known after apply)
    +       + password_data                        = (known after apply)
    +       + placement_group                      = (known after apply)
    +       + primary_network_interface_id         = (known after apply)
    +       + private_dns                          = (known after apply)
    +       + private_ip                           = (known after apply)
    +       + public_dns                           = (known after apply)
    +       + public_ip                            = (known after apply)
    +       + secondary_private_ips                = (known after apply)
    +       + security_groups                      = (known after apply)
    +       + source_dest_check                    = true
    +       + subnet_id                            = (known after apply)
    +       + tags                                 = {
    +           + "Name" = "fiap-vm"
    +         }
    +       + tags_all                             = {
    +           + "Name" = "fiap-vm"
    +         }
    +       + tenancy                              = (known after apply)
    +       + user_data                            = (known after apply)
    +       + user_data_base64                     = (known after apply)
    +       + vpc_security_group_ids               = (known after apply)
    +
    +       + capacity_reservation_specification {
    +           + capacity_reservation_preference = (known after apply)
    +
    +           + capacity_reservation_target {
    +               + capacity_reservation_id = (known after apply)
    +             }
    +         }
    +
    +       + ebs_block_device {
    +           + delete_on_termination = (known after apply)
    +           + device_name           = (known after apply)
    +           + encrypted             = (known after apply)
    +           + iops                  = (known after apply)
    +           + kms_key_id            = (known after apply)
    +           + snapshot_id           = (known after apply)
    +           + tags                  = (known after apply)
    +           + throughput            = (known after apply)
    +           + volume_id             = (known after apply)
    +           + volume_size           = (known after apply)
    +           + volume_type           = (known after apply)
    +         }
    +
    +       + enclave_options {
    +           + enabled = (known after apply)
    +         }
    +
    +       + ephemeral_block_device {
    +           + device_name  = (known after apply)
    +           + no_device    = (known after apply)
    +           + virtual_name = (known after apply)
    +         }
    +
    +       + metadata_options {
    +           + http_endpoint               = (known after apply)
    +           + http_put_response_hop_limit = (known after apply)
    +           + http_tokens                 = (known after apply)
    +         }
    +
    +       + network_interface {
    +           + delete_on_termination = (known after apply)
    +           + device_index          = (known after apply)
    +           + network_interface_id  = (known after apply)
    +         }
    +
    +       + root_block_device {
    +           + delete_on_termination = (known after apply)
    +           + device_name           = (known after apply)
    +           + encrypted             = (known after apply)
    +           + iops                  = (known after apply)
    +           + kms_key_id            = (known after apply)
    +           + tags                  = (known after apply)
    +           + throughput            = (known after apply)
    +           + volume_id             = (known after apply)
    +           + volume_size           = (known after apply)
    +           + volume_type           = (known after apply)
    +         }
    +     }
    +
    + Plan: 1 to add, 0 to change, 0 to destroy.
    +
    + Do you want to perform these actions?
    +   Terraform will perform the actions described above.
    +   Only 'yes' will be accepted to approve.
    +
    +   Enter a value: yes
    +
    + aws_instance.app_server: Creating...
    + aws_instance.app_server: Still creating... [10s elapsed]
    + aws_instance.app_server: Still creating... [20s elapsed]
    + aws_instance.app_server: Still creating... [30s elapsed]
    + aws_instance.app_server: Creation complete after 32s [id=i-0581e7619465fe0bb]
    +
    + Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    +
    +
  10. +
  11. Mostrar os recursos criados: +
     $ terraform show
    + # aws_instance.app_server:
    + resource "aws_instance" "app_server" {
    +     ami                                  = "ami-087c17d1fe0178315"
    +     arn                                  = "arn:aws:ec2:us-east-1:376713914115:instance/i-0581e7619465
    + fe0bb"
    +     associate_public_ip_address          = true
    +     availability_zone                    = "us-east-1a"
    +     cpu_core_count                       = 1
    +     cpu_threads_per_core                 = 1
    +     disable_api_termination              = false
    +     ebs_optimized                        = false
    +     get_password_data                    = false
    +     hibernation                          = false
    +     id                                   = "i-0581e7619465fe0bb"
    +     instance_initiated_shutdown_behavior = "stop"
    +     instance_state                       = "running"
    +     instance_type                        = "t2.micro"
    +     ipv6_address_count                   = 0
    +     ipv6_addresses                       = []
    +     monitoring                           = false
    +     primary_network_interface_id         = "eni-0a879183697c40c22"
    +     private_dns                          = "ip-172-31-93-139.ec2.internal"
    +     private_ip                           = "172.31.93.139"
    +     public_dns                           = "ec2-18-212-49-179.compute-1.amazonaws.com"
    +     public_ip                            = "18.212.49.179"
    +     secondary_private_ips                = []
    +     security_groups                      = [
    +         "default",
    +     ]
    +     source_dest_check                    = true
    +     subnet_id                            = "subnet-2a31160b"
    +     tags                                 = {
    +         "Name" = "fiap-vm"
    +     }
    +     tags_all                             = {
    +         "Name" = "fiap-vm"
    +     }
    +     tenancy                              = "default"
    +     vpc_security_group_ids               = [
    +         "sg-fa4580e5",
    +     ]
    +
    +     capacity_reservation_specification {
    +         capacity_reservation_preference = "open"
    +     }
    +
    +     credit_specification {
    +         cpu_credits = "standard"
    +     }
    +
    +     enclave_options {
    +         enabled = false
    +     }
    +
    +     metadata_options {
    +         http_endpoint               = "enabled"
    +         http_put_response_hop_limit = 1
    +         http_tokens                 = "optional"
    +     }
    +
    +     root_block_device {
    +         delete_on_termination = true
    +         device_name           = "/dev/xvda"
    +         encrypted             = false
    +         iops                  = 100
    +         tags                  = {}
    +         throughput            = 0
    +         volume_id             = "vol-0faa94c59e6dfcc09"
    +         volume_size           = 8
    +         volume_type           = "gp2"
    +     }
    + }
    +
    +
  12. +
  13. Validar a criação da instância: +
    $ aws ec2 describe-instances --filters Name=tag-key,Values=Name --query "Reservations[*].Instances[*].{Instance:InstanceId,AZ:Placement.AvailabilityZone,Name:Tags[?Key=='Name']|[0].Value}" --output table
    +--------------------------------------------------
    +|                DescribeInstances               |
    ++-------------+-----------------------+----------+
    +|     AZ      |       Instance        |  Name    |
    ++-------------+-----------------------+----------+
    +|  us-east-1a |  i-0581e7619465fe0bb  |  fiap-vm |
    ++-------------+-----------------------+----------+
    +
    +

    +
  14. +
+ +

Clean-up

+ +
    +
  1. Deletar o plano: +
    $ terraform destroy
    +aws_instance.app_server: Refreshing state... [id=i-0581e7619465fe0bb]
    +
    +Terraform used the selected providers to generate the following execution plan. Resource actions are
    +indicated with the following symbols:
    +  - destroy
    +
    +Terraform will perform the following actions:
    +
    +  # aws_instance.app_server will be destroyed
    +  - resource "aws_instance" "app_server" {
    +      - ami                                  = "ami-087c17d1fe0178315" -> null
    +      - arn                                  = "arn:aws:ec2:us-east-1:376713914115:instance/i-0581e7619465fe0bb" -> null
    +      - associate_public_ip_address          = true -> null
    +      - availability_zone                    = "us-east-1a" -> null
    +      - cpu_core_count                       = 1 -> null
    +      - cpu_threads_per_core                 = 1 -> null
    +      - disable_api_termination              = false -> null
    +      - ebs_optimized                        = false -> null
    +      - get_password_data                    = false -> null
    +      - hibernation                          = false -> null
    +      - id                                   = "i-0581e7619465fe0bb" -> null
    +      - instance_initiated_shutdown_behavior = "stop" -> null
    +      - instance_state                       = "running" -> null
    +      - instance_type                        = "t2.micro" -> null
    +      - ipv6_address_count                   = 0 -> null
    +      - ipv6_addresses                       = [] -> null
    +      - monitoring                           = false -> null
    +      - primary_network_interface_id         = "eni-0a879183697c40c22" -> null
    +      - private_dns                          = "ip-172-31-93-139.ec2.internal" -> null
    +      - private_ip                           = "172.31.93.139" -> null
    +      - public_dns                           = "ec2-18-212-49-179.compute-1.amazonaws.com" -> null
    +      - public_ip                            = "18.212.49.179" -> null
    +      - secondary_private_ips                = [] -> null
    +      - security_groups                      = [
    +          - "default",
    +        ] -> null
    +      - source_dest_check                    = true -> null
    +      - subnet_id                            = "subnet-2a31160b" -> null
    +      - tags                                 = {
    +          - "Name" = "fiap-vm"
    +        } -> null
    +      - tags_all                             = {
    +          - "Name" = "fiap-vm"
    +        } -> null
    +      - tenancy                              = "default" -> null
    +      - vpc_security_group_ids               = [
    +          - "sg-fa4580e5",
    +        ] -> null
    +
    +      - capacity_reservation_specification {
    +          - capacity_reservation_preference = "open" -> null
    +        }
    +
    +      - credit_specification {
    +          - cpu_credits = "standard" -> null
    +        }
    +
    +      - enclave_options {
    +          - enabled = false -> null
    +        }
    +
    +      - metadata_options {
    +          - http_endpoint               = "enabled" -> null
    +          - http_put_response_hop_limit = 1 -> null
    +          - http_tokens                 = "optional" -> null
    +        }
    +
    +      - root_block_device {
    +          - delete_on_termination = true -> null
    +          - device_name           = "/dev/xvda" -> null
    +          - encrypted             = false -> null
    +          - iops                  = 100 -> null
    +          - tags                  = {} -> null
    +          - throughput            = 0 -> null
    +          - volume_id             = "vol-0faa94c59e6dfcc09" -> null
    +          - volume_size           = 8 -> null
    +          - volume_type           = "gp2" -> null
    +        }
    +    }
    +
    +Plan: 0 to add, 0 to change, 1 to destroy.
    +
    +Do you really want to destroy all resources?
    +  Terraform will destroy all your managed infrastructure, as shown above.
    +  There is no undo. Only 'yes' will be accepted to confirm.
    +
    +  Enter a value: yes
    +
    +aws_instance.app_server: Destroying... [id=i-0581e7619465fe0bb]
    +aws_instance.app_server: Still destroying... [id=i-0581e7619465fe0bb, 10s elapsed]
    +aws_instance.app_server: Still destroying... [id=i-0581e7619465fe0bb, 20s elapsed]
    +aws_instance.app_server: Still destroying... [id=i-0581e7619465fe0bb, 30s elapsed]
    +aws_instance.app_server: Destruction complete after 31s
    +
    +Destroy complete! Resources: 1 destroyed.
    +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icccn12/index.html b/docs/icccn12/index.html new file mode 100644 index 0000000000..df31c59b27 --- /dev/null +++ b/docs/icccn12/index.html @@ -0,0 +1,764 @@ + + + + + + +ICCCN 2012 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

2012 21st International Conference on Computer Communications and Networks (ICCCN)

+ +

Proceedings

+ +

Context-Driven Resource Over-Provisioning Approach for Rich Networking

+ +

DOI:10.1109/ICCCN.2012.6289251

+ +
    +
  • J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain)
  • +
  • E. Cruz (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil)
  • +
  • A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil)
  • +
  • S. Sargento (Institute of Telecommunications, University of Aveiro, Portugal)
  • +
  • E. Cerqueira (Computer Engineering, Federal University of Para (UFPA), Belém-PA, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

J. Castillo, E. Cruz, A. Neto, S. Sargento and E. Cerqueira, “Context-Driven Resource Over-Provisioning Approach for Rich Networking”, 2012 21st International Conference on Computer Communications and Networks (ICCCN), Munich, 2012, pp. 1-5, doi: 10.1109/ICCCN.2012.6289251.

+ +

BibTeX

+ +
@INPROCEEDINGS {6289251,
+  author={J. {Castillo} and E. {Cruz} and A. {Neto} and S. {Sargento} and E. {Cerqueira}},
+  booktitle={2012 21st International Conference on Computer Communications and Networks (ICCCN)},
+  title={Context-Driven Resource Over-Provisioning Approach for Rich Networking},
+  year={2012},
+  volume={},
+  number={},
+  pages={1-5}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icnc13/index.html b/docs/icnc13/index.html new file mode 100644 index 0000000000..a90da037a2 --- /dev/null +++ b/docs/icnc13/index.html @@ -0,0 +1,794 @@ + + + + + + +ICNC 2013 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

2013 International Conference on Computing, Networking and Communications (ICNC)

+ +

Proceedings

+ +

Advanced resource provisioning in context-sensitive converged networks

+ +

DOI:10.1109/ICCNC.2013.6504057

+ +
    +
  • Jose Castillo Lema (Universidade da Coruña, Spain)
  • +
  • Elifanio Cruz (Federal University of Ceará, Brazil)
  • +
  • Augusto Jose Venancio Neto (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Eduardo Cerqueira (Federal University of Para, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

J. Castillo-Lema, E. Cruz, A. Neto and E. Cerqueira, “Advanced resource provisioning in context-sensitive converged networks”, 2013 International Conference on Computing, Networking and Communications (ICNC), San Diego, CA, 2013, pp. 77-81, doi: 10.1109/ICCNC.2013.6504057.

+ +

BibTeX

+ +
@INPROCEEDINGS {6504057,
+  author={J. {Castillo-Lema} and E. {Cruz} and A. {Neto} and E. {Cerqueira}},
+  booktitle={2013 International Conference on Computing, Networking and Communications (ICNC)},
+  title={Advanced resource provisioning in context-sensitive converged networks},
+  year={2013},
+  volume={},
+  number={},
+  pages={77-81}}
+
+ +

Enhancing dependability in Future Internet systems by applying over-provisioning centric resource allocation control

+ +

DOI:10.1109/ICCNC.2013.6504252

+ +
    +
  • Sandino Jardim (Federal University of Goias, Brazil)
  • +
  • Augusto Jose Venancio Neto (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Jose Castillo Lema (Universidade da Coruña, Spain)
  • +
  • Eduardo Cerqueira (Federal University of Para, Brazil)
  • +
  • Hugo Barros (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

S. Jardim, A. Neto, J. Castillo, E. Cerqueira and H. Barros, “Enhancing dependability in Future Internet systems by applying over-provisioning centric resource allocation control”, 2013 International Conference on Computing, Networking and Communications (ICNC), San Diego, CA, 2013, pp. 1134-1138, doi: 10.1109/ICCNC.2013.6504252.

+ +

BibTeX

+ +
@INPROCEEDINGS {6504252,
+  author={S. {Jardim} and A. {Neto} and J. {Castillo} and E. {Cerqueira} and H. {Barros}},
+  booktitle={2013 International Conference on Computing, Networking and Communications (ICNC)},
+  title={Enhancing dependability in Future Internet systems by applying over-provisioning centric resource allocation control},
+  year={2013},
+  volume={},
+  number={},
+  pages={1134-1138}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icni2/index.html b/docs/icni2/index.html new file mode 100644 index 0000000000..014c3f20bd --- /dev/null +++ b/docs/icni2/index.html @@ -0,0 +1,1300 @@ + + + + + + +OVN-Kubernetes Multiple External Gateway local setup - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +
+ + +
+ + + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting (FRR) pod acting as external gateway.

+ +

+ +

Kind setup

+ +

First let us create a local kind cluster with ONV-Kubernetes as CNI:

+ +
$ git clone https://github.com/ovn-org/ovn-kubernetes.git
+$ cd ovn-kubernetes/contrib
+$ ./kind.sh --disable-snat-multiple-gws --multi-network-enable
+
+ +

Let’s take a look at the options:

+
    +
  • disable-snat-multiple-gws: Disable SNAT for multiple gws
  • +
  • multi-network-enable: Installs Multus-CNI on the cluster
  • +
+ +

After some minutes, we will have a three node cluster ready for use:

+
$ export KUBECONFIG=$HOME/ovn.conf
+$ kubectl get node
+NAME                STATUS   ROLES           AGE    VERSION
+ovn-control-plane   Ready    control-plane   4h2m   v1.24.0
+ovn-worker          Ready    <none>          4h1m   v1.24.0
+ovn-worker2         Ready    <none>          4h1m   v1.24.0
+
+ +

Let’s install some additional CNI networks plugins needed for the test (i.e.: macvlan):

+
$ git clone https://github.com/containernetworking/plugins.git
+$ cd plugins
+$ ./build_linux.sh
+$ cd bin
+$ for i in $(docker ps -aq); do for j in macvlan static tuning; do docker cp $j $i:/opt/cni/bin/; done; done
+
+ +

Alternativally, if you don’t want to manually compile the CNI plugins, submitted a PR that adds an option to deploy additional CNI plugins (i.e.: macvlan, ipvlan, etc.) to the script kind.sh:

+ +
$ wget https://raw.githubusercontent.com/ovn-org/ovn-kubernetes/0123ad42d371223dc434b6af06a9ea4fd8336cda/contrib/kind.sh
+$ ./kind.sh --install-cni-plugins --disable-snat-multiple-gws --multi-network-enable
+
+ +

Let’s take a look at the new option introduced by the PR:

+
    +
  • install-cni-plugins: Installs additional CNI network plugins
  • +
+ +

Resource creation

+ +

Let’s create the namespaces:

+
$ cat <<EOF | kubectl apply -f -
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: frr
+spec: {}
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+  name: bar
+spec: {}
+EOF
+
+ +

Let’s create the network attachment definitions:

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: k8s.cni.cncf.io/v1
+kind: NetworkAttachmentDefinition
+metadata:
+  name: internal-net
+  namespace: frr
+spec:
+  config: |-
+    {
+      "cniVersion": "0.3.1",
+      "name": "internal-net",
+      "plugins": [
+        {
+          "type": "macvlan",
+          "master": "breth0",
+          "mode": "bridge",
+          "ipam": {
+            "type": "static"
+          }
+        },
+        {
+          "capabilities": {
+            "mac": true,
+            "ips": true
+          },
+          "type": "tuning"
+        }
+      ]
+    }
+EOF
+
+ +

Check for correct creation:

+
$ kubectl get net-attach-def -n frr
+NAME           AGE
+internal-net   2m
+
+ +

Create a dummy pod on the served namespace (bar) on the second worker:

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: dummy
+  namespace: bar
+spec:
+  containers:
+  - name: dummy
+    image: centos
+    command:
+      - sleep
+      - infinity
+  nodeSelector:
+    kubernetes.io/hostname: ovn-worker2
+EOF
+
+ +

Let’s wait for the pod:

+
$ kubectl get po -n bar
+NAME     READY   STATUS    RESTARTS   AGE
+dummy    1/1     Running   0          2m
+
+ +

Let’s grab two important pieces of information for the FRR configuration, the IP of the ovn-worker2 node where the dummy pod resides (for the BFD peer) and the static routes entries for nodes subnets:

+
$ kubectl get node -o wide | grep ovn-worker2
+ovn-worker2         Ready    <none>          11m   v1.24.0   172.18.0.4    <none>        Ubuntu 21.10   6.0.7-301.fc37.x86_64   containerd://1.6.4
+
+$ kubectl get nodes -o jsonpath='{range .items[*].metadata.annotations}{.k8s\.ovn\.org\/node\-subnets}{.k8s\.ovn\.org\/node\-primary\-ifaddr}{"\n"}{end}' | awk -F'["/]' '{print "ip route " $4"/"$5 " " $9}'
+ip route 10.244.0.0/24 172.18.0.3
+ip route 10.244.2.0/24 172.18.0.2
+ip route 10.244.1.0/24 172.18.0.4
+
+ +

Let’s create the FRR configuration:

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: ConfigMap
+metadata:
+  name: frr-configs
+  namespace: frr
+data:
+  daemons: |
+    bgpd=yes
+    ospfd=no
+    ospf6d=no
+    ripd=no
+    ripngd=no
+    isisd=no
+    pimd=no
+    ldpd=no
+    nhrpd=no
+    eigrpd=no
+    babeld=no
+    sharpd=no
+    pbrd=no
+    bfdd=yes
+    fabricd=no
+    vrrpd=no
+    vtysh_enable=yes
+    zebra_options="  -A 127.0.0.1 -s 90000000"
+    bgpd_options="   -A 127.0.0.1"
+    ospfd_options="  -A 127.0.0.1"
+    ospf6d_options=" -A ::1"
+    ripd_options="   -A 127.0.0.1"
+    ripngd_options=" -A ::1"
+    isisd_options="  -A 127.0.0.1"
+    pimd_options="   -A 127.0.0.1"
+    ldpd_options="   -A 127.0.0.1"
+    nhrpd_options="  -A 127.0.0.1"
+    eigrpd_options=" -A 127.0.0.1"
+    babeld_options=" -A 127.0.0.1"
+    sharpd_options=" -A 127.0.0.1"
+    pbrd_options="   -A 127.0.0.1"
+    staticd_options="-A 127.0.0.1"
+    bfdd_options="   -A 127.0.0.1"
+    fabricd_options="-A 127.0.0.1"
+    vrrpd_options="  -A 127.0.0.1"
+  vtysh.conf: |
+    service integrated-vtysh-config
+  frr.conf: |
+    hostname vrouter
+    service integrated-vtysh-config
+    password frr
+    enable password frr
+    !
+    debug bfd peer
+    debug bfd zebra
+    debug bfd network
+    !
+    bfd
+     peer 172.18.0.4
+       no shutdown
+     !
+    !
+    ! subnets for each node
+    ip route 10.244.0.0/24 172.18.0.3
+    ip route 10.244.2.0/24 172.18.0.2
+    ip route 10.244.1.0/24 172.18.0.4
+    !
+    log file /tmp/frr.log debugging
+EOF
+
+ +

Finally let’s create the FRR pod:

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: ext-gw
+  namespace: frr
+  annotations:
+    k8s.v1.cni.cncf.io/networks: '[
+        {
+          "name": "internal-net",
+          "ips": [ "172.18.0.10/16" ]
+        }
+      ]'
+    k8s.v1.cni.cncf.io/network-status: |-
+      [{
+          "name": "frr/internal-net",
+          "ips": [
+              "172.18.0.10"
+          ],
+          "dns": {}
+      }]
+    k8s.ovn.org/routing-namespaces: "bar"
+    k8s.ovn.org/bfd-enabled: ""
+    k8s.ovn.org/routing-network: "frr/internal-net"
+spec:
+  containers:
+  - name: frr
+    image: quay.io/wcaban/frr
+    command: ["/bin/sh","-c"]
+    args: ["/usr/libexec/frr/frrinit.sh start && tail -f /tmp/frr.log "]
+    ports:
+    - name: bfd
+      containerPort: 3784
+      protocol: UDP
+    - name: bgp
+      containerPort: 179
+      protocol: TCP
+    - name: rip
+      containerPort: 520
+      protocol: UDP
+    - name: ripng
+      containerPort: 521
+      protocol: UDP
+    - name: stats
+      containerPort: 9000
+      protocol: TCP
+    securityContext:
+      privileged: true
+    volumeMounts:
+    - name: config-volume
+      mountPath: /etc/frr
+  volumes:
+    - name: config-volume
+      configMap:
+        name: frr-configs
+  nodeSelector:
+    kubernetes.io/hostname: ovn-worker
+EOF
+
+ +

Let’s wait for the pod:

+
$ kubectl get po -n frr
+NAME     READY   STATUS    RESTARTS   AGE
+ext-gw   1/1     Running   0          2m
+
+ +

Environment check

+ +

The pod should have two interfaces, routes properly configured, be able to reach ovn-worker2 and a BFD session established with the node ovn-worker2:

+
$ kubectl exec -n frr -it ext-gw -- sh
+sh-5.1# ip a
+1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
+    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+    inet 127.0.0.1/8 scope host lo
+       valid_lft forever preferred_lft forever
+    inet6 ::1/128 scope host
+       valid_lft forever preferred_lft forever
+2: eth0@if95: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc noqueue state UP group default
+    link/ether 0a:58:0a:f4:02:11 brd ff:ff:ff:ff:ff:ff link-netnsid 0
+    inet 10.244.2.17/24 brd 10.244.2.255 scope global eth0
+       valid_lft forever preferred_lft forever
+    inet6 fe80::858:aff:fef4:211/64 scope link
+       valid_lft forever preferred_lft forever
+3: net1@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
+    link/ether 5a:1d:47:09:44:8e brd ff:ff:ff:ff:ff:ff link-netnsid 0
+    inet 172.18.0.10/16 brd 172.18.255.255 scope global net1
+       valid_lft forever preferred_lft forever
+    inet6 fe80::581d:47ff:fe09:448e/64 scope link
+       valid_lft forever preferred_lft forever
+
+sh-5.1# ip r
+default via 10.244.2.1 dev eth0
+10.244.0.0/24 nhid 15 via 172.18.0.3 dev net1 proto 196 metric 20
+10.244.1.0/24 nhid 16 via 172.18.0.4 dev net1 proto 196 metric 20
+10.244.2.0/24 dev eth0 proto kernel scope link src 10.244.2.6
+172.18.0.0/16 dev net1 proto kernel scope link src 172.18.0.10
+
+sh-5.1# ping -c1 172.18.0.4
+PING 172.18.0.4 (172.18.0.4) 56(84) bytes of data.
+64 bytes from 172.18.0.4: icmp_seq=1 ttl=64 time=0.276 ms
+--- 172.18.0.4 ping statistics ---
+1 packets transmitted, 1 received, 0% packet loss, time 0ms
+rtt min/avg/max/mdev = 0.276/0.276/0.276/0.000 ms
+
+sh-5.1# vtysh
+Hello, this is FRRouting (version 8.0).
+Copyright 1996-2005 Kunihiro Ishiguro, et al.
+ext-gw# show bfd peers brief
+Session count: 1
+SessionId  LocalAddress                             PeerAddress                             Status
+=========  ============                             ===========                             ======
+1866236061 172.18.0.10                              172.18.0.4                              up
+
+ +

Let’s check FRR logs:

+
$ oc logs ext-gw -n frr
+Started watchfrr
+2023/02/23 10:34:31 ZEBRA: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
+2023/02/23 10:34:31 BGP: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
+2023/02/23 10:34:31 STATIC: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
+2023/02/23 10:34:31 BFD: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
+2023/02/23 10:34:33 BFD: [J1C6V-VMRW5] state-change: [mhop:no peer:172.18.0.4 local:0.0.0.0 vrf:default] init -> up
+
+ +

Let’s check everything was properly created from the OVN perspective:

+
$ POD=$(kubectl get pod -n ovn-kubernetes -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | grep ovnkube-db-) ; kubectl exec -ti $POD -n ovn-kubernetes -c nb-ovsdb -- bash
+
+[root@ovn-control-plane ~]# ovn-nbctl list bfd
+_uuid               : 6a5f6a73-df1f-4114-b36a-745cf3e9123b
+detect_mult         : []
+dst_ip              : "172.18.0.10"
+external_ids        : {}
+logical_port        : exgw-rtoe-GR_ovn-worker2
+min_rx              : []
+min_tx              : []
+options             : {}
+status              : up
+
+[root@ovn-control-plane ~]# ovn-nbctl lr-route-list GR_ovn-worker2
+IPv4 Routes
+Route Table <main>:
+               10.244.1.3               172.18.0.10 src-ip exgw-rtoe-GR_ovn-worker2 ecmp-symmetric-reply bfd
+         169.254.169.0/29             169.254.169.4 dst-ip rtoe-GR_ovn-worker2
+            10.244.0.0/16                100.64.0.1 dst-ip
+                0.0.0.0/0                172.18.0.1 dst-ip rtoe-GR_ovn-worker2
+
+[root@ovn-control-plane ~]# ovn-nbctl lr-route-list GR_ovn-worker
+IPv4 Routes
+Route Table <main>:
+         169.254.169.0/29             169.254.169.4 dst-ip rtoe-GR_ovn-worker
+            10.244.0.0/16                100.64.0.1 dst-ip
+                0.0.0.0/0                172.18.0.1 dst-ip rtoe-GR_ovn-worker
+
+ +

Let’s add a loopback address to the ext-gw pod to test the source routing entry:

+
$ kubectl exec -n frr ext-gw -- ip a a 192.168.1.10/32 dev lo
+
+ +

Validate the dummy pod can reach the network running in ext-gw container’s looback address:

+
$ kubectl exec -n bar dummy -- ping -c 1 192.168.1.10
+PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
+64 bytes from 192.168.1.10: icmp_seq=1 ttl=62 time=6.96 ms
+
+--- 192.168.1.10 ping statistics ---
+1 packets transmitted, 1 received, 0% packet loss, time 0ms
+rtt min/avg/max/mdev = 6.959/6.959/6.959/0.000 ms
+
+ +

Let’s create a “normal” pod in the default namespace (outside the routing-namespaces annotated namespaces):

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: normal
+spec:
+  containers:
+  - name: normal
+    image: centos
+    command:
+      - sleep
+      - infinity
+  nodeSelector:
+    kubernetes.io/hostname: ovn-worker2
+EOF
+
+ +

It should not be able to reach the network running in ext-gw container’s looback address:

+
$ kubectl exec normal -- ping -c 1 192.168.1.10
+PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
+
+--- 192.168.1.10 ping statistics ---
+1 packets transmitted, 0 received, 100% packet loss, time 0ms
+
+command terminated with exit code 1
+
+ +

Pod readiness probes

+ +

Now let’s convert this into pod readiness probes, both for the working and non-working cases. Let’s create another pair of dummy and “normal” pods.

+ +

Let’s start with the second dummy pod:

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: dummy2
+  namespace: bar
+spec:
+  containers:
+  - name: dummy2
+    image: centos
+    command:
+      - sleep
+      - infinity
+    securityContext:
+      privileged: true
+    readinessProbe:
+      exec:
+        command:
+          - ping
+          - -c1
+          - 192.168.1.10
+      initialDelaySeconds: 5
+      periodSeconds: 5
+  nodeSelector:
+    kubernetes.io/hostname: ovn-worker2
+
+ +
$ kubectl get po -n bar
+NAME     READY   STATUS    RESTARTS   AGE
+dummy    1/1     Running   0          115m
+dummy2   1/1     Running   0          5m12s
+
+$ kubectl describe po dummy2 -n bar | grep Ready
+    Ready:          True
+  Ready             True
+  ContainersReady   True
+
+ +

Finally, the second “normal” pod:

+
$ cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: normal2
+spec:
+  containers:
+  - name: normal2
+    image: centos
+    command:
+      - sleep
+      - infinity
+    readinessProbe:
+      exec:
+        command:
+        - ping
+        - -c1
+        - 192.168.1.10
+  nodeSelector:
+    kubernetes.io/hostname: ovn-worker2
+EOF
+
+ +
$ kubectl get po
+NAME      READY   STATUS    RESTARTS   AGE
+normal    1/1     Running   0          95m
+normal2   0/1     Running   0          5m48s
+
+$ kubectl describe po normal2 | grep Ready
+    Ready:          False
+  Ready             False
+  ContainersReady   False
+
+$ kubectl describe po normal2
+...
+  Warning  Unhealthy       8s (x4 over 15s)  kubelet            Readiness probe failed: command "ping -c1 192.168.1.10" timed out
+
+ +

Lety’s also add a pod readiness probe to the FRR pods to check over the BFD session establishment:

+
cat <<EOF | kubectl apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  name: ext-gw2
+  namespace: frr
+  annotations:
+    k8s.v1.cni.cncf.io/networks: '[
+        {
+          "name": "internal-net",
+          "ips": [ "172.18.0.11/16" ]
+        }
+      ]'
+    k8s.v1.cni.cncf.io/network-status: |-
+      [{
+          "name": "frr/internal-net",
+          "ips": [
+              "172.18.0.11"
+          ],
+          "dns": {}
+      }]
+    k8s.ovn.org/routing-namespaces: "bar"
+    k8s.ovn.org/bfd-enabled: ""
+    k8s.ovn.org/routing-network: "frr/internal-net"
+spec:
+  containers:
+  - name: frr
+    image: quay.io/wcaban/frr
+    command: ["/bin/sh","-c"]
+    args: ["/usr/libexec/frr/frrinit.sh start && tail -f /tmp/frr.log "]
+    ports:
+    - name: bfd
+      containerPort: 3784
+      protocol: UDP
+    - name: bgp
+      containerPort: 179
+      protocol: TCP
+    - name: rip
+      containerPort: 520
+      protocol: UDP
+    - name: ripng
+      containerPort: 521
+      protocol: UDP
+    - name: stats
+      containerPort: 9000
+      protocol: TCP
+    securityContext:
+      privileged: true
+    volumeMounts:
+    - name: config-volume
+      mountPath: /etc/frr
+    readinessProbe:
+      exec:
+        command:
+          - sh
+          - -c
+          - >-
+             vtysh -c 'show bfd peers brief' |
+             grep up
+      initialDelaySeconds: 5
+      periodSeconds: 5
+  volumes:
+    - name: config-volume
+      configMap:
+        name: frr-configs
+  nodeSelector:
+    kubernetes.io/hostname: ovn-worker
+EOF
+
+ +
$ kubectl get po -n frr
+NAME      READY   STATUS    RESTARTS   AGE
+ext-gw    1/1     Running   0          46m
+ext-gw2   1/1     Running   0          5m10s
+
+$ kubectl describe po ext-gw2 -n frr | grep Ready
+    Ready:          True
+  Ready             True
+  ContainersReady   True
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icos-blog/index.html b/docs/icos-blog/index.html new file mode 100644 index 0000000000..9f0efca994 --- /dev/null +++ b/docs/icos-blog/index.html @@ -0,0 +1,749 @@ + + + + + + +The impact of upstreaming research contributions - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +
+ + +
+ +
+

Originally published at ICOS blog on January 13, 2023 and at opensource.com on February 3, 2023.

+
+ +

By Cara Delia and Leslie Hawthorn, Red Hat Open Source Program Office, Jose Castillo Lema, Red Hat Performance & Scale Engineering

+ +

Horizon Europe emphasizes open science and open source technology. The program evolved from Horizon 2020, which provided financial support for research projects that promoted industrial competitiveness, advanced scientific excellence, or solved social challenges through the process of open science.

+ +

Open science is an approach to the scientific process based on open cooperative work, tools and diffusing knowledge found in the Horizon Europe Regulation and Model Grant Agreement. This open science approach aligns with open source principles that provide a structure for such cooperation.

+ +

The open source principles are:

+
    +
  • Transparency
  • +
  • Collaboration
  • +
  • Release early, release often
  • +
  • Inclusion
  • +
  • Community orientation
  • +
+ +

In creating open source software, one of the basic foundational principles of open source software development is an “upstream first” philosophy. The opposite direction is “downstream”, and upstream and downstream make up the ecosystem for a given software package or distribution. Upstreams are important because that’s where the source contribution comes from.

+ +

Each upstream is unique, but generally the upstream is where decisions are made and where the community for a project collaborates for the project’s objectives. Work done upstream can flow out to many other open source projects. The upstream is also a place where developers can report bugs and security vulnerabilities. If a bug or security flaw is fixed upstream, then every downstream project or product based on the upstream can benefit from that work.

+ +

It is important to contribute to the work side-by-side with the rest of the community from which you are benefitting from. By working upstream first, there is the opportunity to vet ideas with the larger community and work together to build new features, releases, content, etc. It’s far better if all the contributors work together rather than, say, contributors from different companies, universities or affiliations working on features behind closed doors and then trying to integrate them later. Open source contributions can outlive the research project duration making a more durable impact.

+ +

As an example of such contributions, in the ORBIT FP7 EU project a feature was developed together by Red Hat (lower layers, such as Linux Kernel and QEMU) and Umea University (upper layers, such as LibVirt and OpenStack) and contributed to their related upstream communities. This enabled post-copy live migration of virtual machines in OpenStack. Even though that was done several years ago, that feature is still available (and independently mantained) in any OpenStack distribution today (and in plain LibVirt/QEMU).

+ +

Just as with software development, research under Horizon Europe promotes the adoption of sharing research outputs as early and widely as possible, to citizen science, and developing new indicators for evaluation research and rewarding researchers. With open source upstream communities, the research contributed can extend beyond the research project timeline by feeding into the upstream life cycle. This allows future consumption by companies, universities, governments, etc. to evolve and further secure the research’s project contribution.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icos-ga1/index.html b/docs/icos-ga1/index.html new file mode 100644 index 0000000000..e8a66d1ffa --- /dev/null +++ b/docs/icos-ga1/index.html @@ -0,0 +1,746 @@ + + + + + + +ICOS 1st General Assembly - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ +

+ +

22 leading European organizations from 11 countries join forces to tackle the main challenges of the IoT-edge-cloud paradigm, proposing an approach to embed a set of functionalities and define a brand new IoT-edge-Cloud Operating System (ICOS).

+ +

Barcelona, Spain. November 2022. Coordinated by the Research and Innovation hub of the Atos Group in Spain, ICOS project started officially on September 1st, 2022, and will continue for 3 years. The project is funded by the European Commission under the Horizon Europe Programme within the topic Future European platforms for the Edge: Meta Operating Systems. Its F2F kick-off meeting took place in Vilanova i la Geltrú, Barcelona area, Spain, on November 2nd-3rd.

+ +

ICOS aims to design, develop, and validate a meta-operating system for the Cloud-Edge-IoT continuum by addressing four main challenges:

+
    +
  • device volatility and heterogeneity, continuum infrastructure virtualisation and diverse network connectivity;
  • +
  • optimised and scalable service execution and performance, as well as resource consumption; guaranteed trust, security and privacy; + iii) reduction of integration costs, ;
  • +
  • effective mitigation of cloud provider lock-in effects.
  • +
+ +

Efforts towards these objectives will be consolidatedin a data-driven system built upon the principles of openness, adaptability, data sharing and a future edge market scenario for services and data.

+ +

The project will contribute to European competitiveness by achieving the creation of a globally attractive, secure, and dynamic data-first economy, moving beyond a simple send-data-to-the-cloud strategy, and offering new opportunities for European actors to enter the market with new services, which will result in increasing the EU’s autonomy, sovereignty, and performance in the global data economy. Moreover, its technical impact will consist of a new platform and ecosystem for managing the application lifecycle in a secure, smart, and efficient way across the entire Cloud-Edge-IoT continuum, while its economic impact will be proven by the feasibility demonstrated through the ICOS micro analysis, according to the use case KPIs (namely: In-car Advanced Infotainment and Multimedia Management system; Agriculture Operational Robotic Platform; Railway Structural Alert Monitoring system, and Energy Management and Decision Support system) and also the ICOS will not be alone in this huge mission. As its coordinator Francesco D’Andria (Atos) states:

+
+

The project will cooperate with the other Research and Innovation Action (RIA) projects –such as NEMO or NEPHELE– addressing the same topic, to exploit results and synergies, maximize impacts of the Cloud-Edge-IoT project portfolio and coordinate dissemination activities. In addition, ICOS will contribute to the consolidation and coherence work to be implemented by the two related Coordination and Support Action (CSAs), OpenContinuum and Unlock-CEI”.

+
+ +

Red Hat engineers lead the work package Development of the Distributed Meta-kernel Layer Module, where we plan to leverage several community projects to support ICOS multi-cluster orchestration and connectivity requirements. Some of the projects being considered for ICOS are Open Cluster Management, Submariner, MicroShift, and Knative.

+ +

Read more about it in the Red Hat Research blog.

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icos/index.html b/docs/icos/index.html new file mode 100644 index 0000000000..169cf153af --- /dev/null +++ b/docs/icos/index.html @@ -0,0 +1,781 @@ + + + + + + +ICOS EU project - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

The project

+ +

The unstoppable proliferation of novel computing and sensing device technologies, and the ever-growing demand for data-intensive applications in the edge and cloud, are driving the next wave of transformation in computing systems architecture. The resulting paradigm shift in computing is centered around dynamic, intelligent and yet seamless interconnection of IoT, edge and cloud resources in one computing system, to form a continuum.

+ +

A continuum, today also referred to as cloud continuum, IoT continuum, edge-to-cloud or fog-to- cloud, is expected to provide the means for data processing both in the edge and cloud, while inferring and persisting important information for post-mortem and offline analysis. We envision a holistic approach towards the solutioning of this technology trend in future systems, by architecting, designing and implementing the continuum as extensible, open, secure, adaptable, AI-powered as well as well highly performant and technology agnostic, managed through a meta OS, i.e., IoT2Cloud Operating System (ICOS).

+ +

+ +

Features

+ +
    +
  • Devices volatility and heterogeneity, continuum infrastructure virtualization and diverse network connectivity
  • +
  • Optimized and scalable service execution and performance, as well as resources consumptions, including power consumption
  • +
  • Guaranteed trust, security and privacy
  • +
  • Reduction of integration costs and effective mitigation of cloud provider lock-in effects, in a data-driven system built upon the principles of openness, adaptability, data sharing and a future edge market scenario for services and data
  • +
+ +

+ +

Use cases

+
    +
  • In-car Advanced Infotainment and Multimedia Management system (IAIMM)
  • +
  • Agriculture Operational Robotic Platform (AORP)
  • +
  • Railway Structural Alert Monitoring system (RSAM)
  • +
  • Energy Management and Decision Support system (EMDS)
  • +
+ +

Consortium

+ +
    +
  • Atos
  • +
  • Barcelona Supercomputing Center
  • +
  • CeADAR - Ireland’s Centre for Applied AI
  • +
  • Engineering
  • +
  • Ferrocarrils de la Generalitat de Catalunya (FGC)
  • +
  • Lukasiewicz - Poznanski Instytut Technologiczny
  • +
  • National and Kapodistrian University of Athens
  • +
  • Red Hat
  • +
  • SixSQ
  • +
  • Stellantis
  • +
  • Suite 5
  • +
  • Technische Universitãt Braunschweig
  • +
  • Universitat Politécnica de Catalunya
  • +
  • World Sensing
  • +
  • XLab
  • +
  • Zetta Scale
  • +
+ +

To learn more about the ICOS project, visit the ICOS project page. Read more about it in the Red Hat Research blog.

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ict-competition/index.html b/docs/ict-competition/index.html new file mode 100644 index 0000000000..0c12b6fe23 --- /dev/null +++ b/docs/ict-competition/index.html @@ -0,0 +1,762 @@ + + + + + + +Huawei ICT Competition Brazil 2018-2019 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

A Huawei University promove pela primeira vez no Brasil o ICT Competition, um campeonato mundial promovido anualmente pela companhia para estudantes de TIC – Tecnologia da Informação e Comunicação . Com a participação de mais de 50 países, o programa deve receber mais de 80 mil alunos de cerca de mil instituições de ensino em sua primeira fase, que acontece por meio de uma prova online.

+ +

Os estudantes aprovados na primeira fase (top 50) competirão em uma seletiva nacional, que determinará quem serão os representantes do Brasil na fase regional no Mexico (top 6), e posteriarmente na fase final, que acontecerá na China em 2019. Os finalistas também poderão conhecer os laboratórios de Pesquisa e Desenvolvimento da sede global da companhia, além de receber certificados de acordo com sua colocação e concorrer a smartphones Huawei.

+ +

Tracks

+ +

Network

+
    +
  • Routing & Switching
  • +
  • WLAN
  • +
  • Security
  • +
+ +

Cloud

+
    +
  • Cloud
  • +
  • Big Data
  • +
  • Storage
  • +
+ +

Etapas

+ +
    +
  • A primeira é o self-learning a onde serão disponibilizados diversos materiais/labs/treinamentos para se preparar para os testes;
  • +
  • A segunda etapa é um teste online que irá classificar os melhores candidatos para a próxima fase (top 50);
  • +
  • A terceira etapa é a semi-final, na qual serão escolhidos os vencedores de cada track (top 6). Os vencedores da semi-final de cada país participarão da final regional na Cidade do México, México.
  • +
+ +

Os participantes do top 50 ganham um voucher de 200$ para realizar as provas HCIA de qualquer track da Huawei, e os vencedores poderão participar da etapa mundial em Shenzhen, China.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/icwn15/index.html b/docs/icwn15/index.html new file mode 100644 index 0000000000..1d058edd58 --- /dev/null +++ b/docs/icwn15/index.html @@ -0,0 +1,765 @@ + + + + + + +ICWN 2015 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing

+ +

Agenda

+ +

Infrastructured Mobility Management Approach for Future Internet ETArch Networks

+
    +
  • Felipe Sampaio Dantas da Silva, Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil
  • +
  • Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil
  • +
  • Douglas Maciel, Federal University of Rio Grande do Norte, Brazil
  • +
  • José Castillo Lema, Universidade de São Paulo, Brazil
  • +
  • Flavio de Oliveira Silva, Federal University of Uberlândia, Brazil
  • +
+ +

Cite this

+ +

Plain text

+ +

F. Silva, A. Neto, D. Maciel, J. Castillo-Lema and F. Silva, “Infrastructured Mobility Management Approach for Future Internet ETArch Networks”, 2015 World Congress in Computer Science, Computer Engineering and Applied Computing (ICWN), Las Vegas, Nevada, USA, 2014, pp. 39-45.

+ +

BibTeX

+ +
@INPROCEEDINGS {24637,
+  author={A. Neto},
+  doi={},
+  booktitle={International Conference on Wireless Networks ICWN},
+  title={Infrastructured Mobility Management Approach for Future Internet ETArch Networks},
+  year={2015},
+  month={June},
+  volume={1},
+  pages={39-45}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/iffe-mbd/index.html b/docs/iffe-mbd/index.html new file mode 100644 index 0000000000..c828b06b21 --- /dev/null +++ b/docs/iffe-mbd/index.html @@ -0,0 +1,786 @@ + + + + + + +IFFE Máster en Big Data y Analítica de Negocio (MBD) - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + + + +

GitHub +GitHub language count +GitHub top language +visitors +GitHub last commit

+ +

IFFE

+ +

+ +

Máster en Big Data y Analítica de Negocio (MBD)

+ +

+ +

Herramientas analíticas en AWS

+ +

Cada proyecto se refiere a clases y/o labs realizados en aula.

+ +

Siéntase libre de desarrollar estos ejemplos, mientras sean válidos, aceptaré pull requests 😄.

+ + + +



+ +

+ + + + + + + + + + + + +

+ +

+ + + + + + + + + +

+ +

+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/imdea/index.html b/docs/imdea/index.html new file mode 100644 index 0000000000..0545f29e96 --- /dev/null +++ b/docs/imdea/index.html @@ -0,0 +1,739 @@ + + + + + + +Telecom cloud-native development: an industry point of view - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Telcos are increasingly moving from physical/virtual to cloud-native network functions in the context of 5G adoption. In this talk we will describe the telecom network transformation journey, benefits of cloud-native deployments, technical requirements/constraints of the underlying cloud service managers, the role of open source technologies and the use of the operator pattern in telecom contexts.

+ +

Event: link

+ +

Date: 9 Jun 2023

+ +

Location: MR-A1 [Ramón] & MR-A2 [Cajal], IMDEA Networks Institute, Avda. del Mar Mediterráneo 22, 28918 Leganés – Madrid

+ +

Time: 12:00

+ +

Add to Calendar: iCalendar Outlook Google

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000000..d0f3a114f4 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,10017 @@ + + + + + + +GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/intel-network-builders/index.html b/docs/intel-network-builders/index.html new file mode 100644 index 0000000000..777e4abe4e --- /dev/null +++ b/docs/intel-network-builders/index.html @@ -0,0 +1,802 @@ + + + + + + +Intel Network Builders University - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Intel® Network Builders University is a comprehensive network functions virtualization (NFV) and software defined networking (SDN) training program. The university includes a broad collection of online content training to help technical professionals in the network industry to improve their knowledge of key Intel® technologies, industry trends, and technical aspects of NFV deployments.

+ +

I would like to recomend its courses to everyone who is interested in learning more about OpenStack, 4G, DPDK and Open vSwitch.

+ +

Intel proposes three learning paths:

+ +

+ +

Foundational Learning Pathway

+
    +
  • Software Defined Infrastructure (SDI) – A World Where the Application Defines the System
  • +
  • Network Transformation
  • +
  • NFV Technologies
  • +
  • NFV/SDN Essentials Series – Network Virtualization
  • +
  • NFV/SDN Essentials Series – Virtualization Concepts
  • +
  • NFV/SDN Essentials Series – Network Functions Virtualization
  • +
  • NFV/SDN Essentials Series – Cloud IaaS with OpenStack
  • +
  • NFV/SDN Essentials Series – Software-Defined Networking
  • +
  • NFV/SDN Essentials Series – Deployment Use Cases
  • +
  • The Intel® Xeon® Scalable Processor: Foundations for Communications Service Providers
  • +
  • Server Ingredients: Virtualization 101
  • +
  • Server Ingredients: Virtualization 102
  • +
  • Cloud 101
  • +
  • Open Source and NFV
  • +
  • DPDK 101
  • +
+ +

Intermediate Learning Pathway

+
    +
  • VNF re-architecting
  • +
  • NFVI Hardware Configurations
  • +
  • Hyperscan Overview
  • +
  • Intel ® Xeon ® Scalable Platform Technical Deep Dive
  • +
  • DPDK 201
  • +
  • DPDK Intro
  • +
  • DPDK Open vSwitch: Accelerating the Path to the Guest
  • +
  • Intel’s NFV Technologies Management & Orchestration
  • +
  • Intel® QuickAssist Technology Overview – NDA Content
  • +
  • Extend Cloud and Data Center Capacity with Intel® QuickAssist Technology
  • +
  • OpenStack* Enhanced Platform Awareness 101
  • +
  • OpenStack* Enhanced Platform Awareness 102
  • +
  • Virtual Enterprise Customer Premises Equipment (vE-CPE) Overview
  • +
  • Gi-LAN Overview
  • +
  • Virtual IP Multimedia Subsystem (vIMS) Overview
  • +
+ +

Advanced Learning Pathway

+
    +
  • How to Maximize Performance of NFV on Intel® Architecture
  • +
  • Setting Up DPDK on Different Operating Systems
  • +
  • Open vSwitch with DPDK Architectural Deep Dive
  • +
  • VSPERF Deep Dive: Virtual Switch performance in OPNFV
  • +
  • Using DPDK and OvS to Accelerate Virtual Switching
  • +
  • Container Orchestration with Kubernetes*
  • +
  • Integration of OpenDaylight Service Function Chaining and Vector Packet Processing
  • +
  • Introduction to SDN Controller and VIM Integration – OpenStack* and OpenDaylight* Integration
  • +
  • NetVirt* Features and Their Use Cases
  • +
  • Virtual Enterprise Customer Premises Equipment (vE-CPE) Reference Architecture
  • +
  • Virtual Enterprise Customer Premises Equipment (vE-CPE) Use Cases
  • +
  • Virtual Enterprise Customer Premises Equipment (vE-CPE) Operations
  • +
  • Gi-LAN Deep Dive
  • +
  • vGi-LAN Architecture
  • +
  • Service Function Chaining
  • +
  • IP Multimedia Subsystem (IMS) Architecture
  • +
  • Virtual IP Multimedia Subsystem (vIMS) Architecture
  • +
  • Virtual IP Multimedia Subsystem (vIMS) Additional Benefits
  • +
+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ipt-cloud/index.html b/docs/ipt-cloud/index.html new file mode 100644 index 0000000000..73adf897f7 --- /dev/null +++ b/docs/ipt-cloud/index.html @@ -0,0 +1,761 @@ + + + + + + +IPT curta duração - Cloud Computing - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Curso: CLOUD COMPUTING

+ + + + + + + + +
IPT – USPCURSOS DE ESPECIALIZAÇÃO
+ +

Carga horária: 40 horas

+
    +
  • Fundamentos de Computação em Nuvem
  • +
  • Microsoft Azure, Amazon AWS e outros players
  • +
  • IaaS - Infra como Serviço
  • +
  • Storage como Serviço
  • +
  • Redes em Nuvem
  • +
  • Alocação de Recursos
  • +
  • Manutenção e Operação
  • +
+ +

– Abordagem Hands-on –

+ +

– Aulas Síncronas –

+ +

Instituto de Pesquisas Tecnológicas do Estado de São Paulo – IPT

+ +

Av. Prof. Almeida Prado, 532, Prédio 56, Cidade Universitária, São Paulo

+ +

Informações e inscrições

+ +

Andréa Valero – E-mail: cursos@ipt.br – fone: (11) 3767-4226

+ +

Faça aqui o download do folheto

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/iscc13/index.html b/docs/iscc13/index.html new file mode 100644 index 0000000000..5628673e8f --- /dev/null +++ b/docs/iscc13/index.html @@ -0,0 +1,765 @@ + + + + + + +IEEE ISCC 2013 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

2013 IEEE Symposium on Computers and Communications (ISCC)

+ +

Proceedings

+ +

Over-provisioning centric network resource control in Future Internet systems

+ +

DOI:10.1109/ISCC.2013.6754948

+ +
    +
  • Sandino Jardim (Federal University of Goias, Brazil)
  • +
  • Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Jose Castillo Lema (Universidade da Coruña, Spain)
  • +
  • Eduardo Cerqueira (Federal University of Para & UFPA, Brazil)
  • +
  • Felipe Silva (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

S. Jardim, A. Neto, J. C. Lema, E. Cerqueira and F. Silva, “Over-provisioning centric network resource control in Future Internet systems”, 2013 IEEE Symposium on Computers and Communications (ISCC), Split, 2013, pp. 000213-000218, doi: 10.1109/ISCC.2013.6754948.

+ +

BibTeX

+ +
@INPROCEEDINGS {6754948,
+  author={S. {Jardim} and A. {Neto} and J. C. {Lema} and E. {Cerqueira} and F. {Silva}},
+  booktitle={2013 IEEE Symposium on Computers and Communications (ISCC)},
+  title={Over-provisioning centric network resource control in Future Internet systems},
+  year={2013},
+  volume={},
+  number={},
+  pages={000213-000218}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/iscc14/index.html b/docs/iscc14/index.html new file mode 100644 index 0000000000..4484fbc541 --- /dev/null +++ b/docs/iscc14/index.html @@ -0,0 +1,771 @@ + + + + + + +IEEE ISCC 2014 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

The nineteenth IEEE Symposium on Computers And Communications

+ +

Program

+ +

Entity Title Architecture Extensions Towards Advanced Quality-oriented Mobility Control Capabilities

+ +

DOI:10.1109/ISCC.2014.6912459

+ +
    +
  • Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil)
  • +
  • José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain)
  • +
  • Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil)
  • +
  • Pedro Frosi Rosa (Federal University of Uberlândia, Brazil)
  • +
  • Daniel Corujo (Instituto de Telecomunicações Aveiro, Portugal)
  • +
  • Carlos Eduardo Magalhães Guimarães (Instituto de Telecomunicações - Pólo de Aveiro, Portugal)
  • +
  • Rui L Aguiar (University of Aveiro, Portugal)
  • +
+ +

Cite this

+ +

Plain text

+ +

F. Silva et al., “Entity title architecture extensions towards advanced quality-oriented mobility control capabilities”, 2014 IEEE Symposium on Computers and Communications (ISCC), Funchal, 2014, pp. 1-6, doi: 10.1109/ISCC.2014.6912459.

+ +

BibTeX

+ +
@INPROCEEDINGS {6912459,
+  author={F. {Silva} and J. {Castillo-Lema} and A. {Neto} and F. {Silva} and P. {Rosa} and D. {Corujo} and C. {Guimarães} and R. {Aguiar}},
+  booktitle={2014 IEEE Symposium on Computers and Communications (ISCC)},
+  title={Entity title architecture extensions towards advanced quality-oriented mobility control capabilities},
+  year={2014},
+  volume={},
+  number={},
+  pages={1-6}}
+
+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/istio-fundamentals/index.html b/docs/istio-fundamentals/index.html new file mode 100644 index 0000000000..ab7601212d --- /dev/null +++ b/docs/istio-fundamentals/index.html @@ -0,0 +1,772 @@ + + + + + + +Istio and Envoy Fundamentals by Tetrate - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Istio Fundamentals and Envoy Fundamentals courses from the Tetrate Academy for everyone interested in service mesh arquitectures.

+ +

Istio Fundamentals

+ +

A course that enables users to learn Istio easily with concept text, labs, and quizzes. Istio is an open-source service mesh platform that helps microservices communicate with each other easily.

+ +

What the Course Covers

+ +
    +
  • Service Mesh and Istio Overview
  • +
  • Installing Istio
  • +
  • Observability: Telemetry and Logs
  • +
  • Traffic Management
  • +
  • Security
  • +
  • Advanced Features
  • +
  • Troubleshooting
  • +
  • Real World Examples
  • +
+ +

Envoy Fundamentals

+ +

Envoy is an open-source edge and service proxy that is a key part of modern, cloud-native applications.This free course provides a comprehensive, five-part tour of Envoy with concept text, labs, and quizzes.

+ +

What the Course Covers

+ +
    +
  • Introduction
  • +
  • HTTP Connection Manager (HCM)
  • +
  • Clusters
  • +
  • Dynamic Configuration
  • +
  • Listener Subsystem
  • +
+ +

Free certification

+ +

At the end of the course, you can earn one certificate per course by passing a final exam.

+ +

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/kafka/index.html b/docs/kafka/index.html new file mode 100644 index 0000000000..5acfecf62d --- /dev/null +++ b/docs/kafka/index.html @@ -0,0 +1,822 @@ + + + + + + +Confluent Fundamentals Accreditation - Apache Kafka - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Confluent Fundamentals for Apache Kafka® course and Confluent Fundamentals Accreditation certification for anyone interested learning more about the Apache Kafka project.

+ +

Training and exam certification are free.

+ +

Course Objectives

+ +
    +
  • Gain an understanding of Apache Kafka® and the Confluent Platform
  • +
  • Explore use cases
  • +
  • Receive an overview of Kafka’s core concepts that enable it to power a highly scalable, highly available and resilient real-time event streaming platform
  • +
  • Be introduced to the Confluent Platform, offering an enterprise-ready, real-time event streaming platform powered by Apache Kafka®
  • +
  • Begin preparation to attend Apache Kafka® Administration by Confluent and/or the Confluent Developer Skills for Building Apache Kafka® training courses.
  • +
+ +

Content

+ +
    +
  • Motivation and Customer Use Cases +
      +
    • Motivation for a paradigm change to “Event-driven”
    • +
    • How Kafka is the backbone of real-time event streaming
    • +
    • How other major players in the market use Kafka
    • +
    • Customer Use Cases +
        +
      • Microservices, IoT and Edge Computing
      • +
      • Core Banking, payments engine and fraud detection
      • +
      • Cyber Data Collection and Dissemination
      • +
      • ESB Replacement
      • +
      • Data Pipelining
      • +
      • eCommerce and Customer 360
      • +
      • Mainframe offloading
      • +
      +
    • +
    +
  • +
  • Apache Kafka® Fundamentals +
      +
    • Architecture
    • +
    • ZooKeeper’s role
    • +
    • Topics, Partitions and Segments
    • +
    • The commit log and streams
    • +
    • Brokers and Broker replication
    • +
    • Producers Basics
    • +
    • Consumers, Consumer groups and Offsets
    • +
    +
  • +
  • How Kafka Works +
      +
    • High-level code overview for a basic producer and a basic consumer
    • +
    • High Availability through Replication
    • +
    • Data Retention Policies
    • +
    • Producer Design and Producer Guarantees
    • +
    • Delivery Guarantees, including Exactly Once Semantic
    • +
    • Partition strategies
    • +
    • Consumer group rebalances
    • +
    • Compacted Topics
    • +
    • Troubleshooting strategies
    • +
    • Security overview
    • +
    +
  • +
  • Integrating Kafka into your Environment +
      +
    • Get streams of data into and out of Kafka with Kafka Connect and REST Proxy
    • +
    • Maintain data formats and ensure compatibility with Schema Registry and Avro
    • +
    • Build real-time streaming applications with Confluent ksqlDB & Kafka Streams
    • +
    +
  • +
  • The Confluent Platform +
      +
    • The Streaming Platform as the Central Nervous System
    • +
    • Deployment Models — on premise versus SaaS
    • +
    • The Confluent Control Center
    • +
    • Role Based Access Control (RBAC)
    • +
    • The Confluent CLI
    • +
    • Confluent Operator
    • +
    • The Confluent Hub for Certified Connectors
    • +
    +
  • +
+ +

Free certification

+ +

At the end of the course, you can earn a badge by passing a final exam.

+ +

+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/kasten/index.html b/docs/kasten/index.html new file mode 100644 index 0000000000..551efbd390 --- /dev/null +++ b/docs/kasten/index.html @@ -0,0 +1,792 @@ + + + + + + +Kasten - Kubernetes data protection - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Kasten courses from the Learning.kaste.io platform to everyone interested in Kubernetes data protection.

+ +

Labs

+ +

Introductory

+ +
    +
  • KubeCon + CloudNativeCon Special Edition Lab +
      +
    • Deploy K10
    • +
    • Backup a data service
    • +
    • Delete data
    • +
    • Recover K10
    • +
    +
  • +
+ +

Module #1

+ +
    +
  • Build your first Kubernetes Cluster +
      +
    • Learn Kubernetes Structure
    • +
    • Understand abstractions
    • +
    • Create your own cluster
    • +
    +
  • +
  • Build a Kubernetes Application +
      +
    • Build container images
    • +
    • Run applications
    • +
    • Manage manifests for deployment
    • +
    • Discover Kubestr
    • +
    +
  • +
  • Back-up your Kubernetes Application +
      +
    • Learn unique Kubernetes requirements
    • +
    • Understand step-by-step backup procedures
    • +
    • Learn Kasten K10 – #1 backup and DR for Kubernetes
    • +
    +
  • +
+ +

Module #2

+ +
    +
  • Application Consistency +
      +
    • Learn how Kubernetes-native application backup and recovery works using Kasten K10 and Kanister
    • +
    • Learn application-level data management
    • +
    +
  • +
+ +

Free badges

+ +

At the end of the course, you can earn badges by completing the labs and avaliations.

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/kubemark-ocp/index.html b/docs/kubemark-ocp/index.html new file mode 100644 index 0000000000..d5c90dcab7 --- /dev/null +++ b/docs/kubemark-ocp/index.html @@ -0,0 +1,876 @@ + + + + + + +Kubemark on OpenShift - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, hollow nodes are extremely light (<30 MiB).

+ +

The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks).

+ +

Hands to work

+ +

We won’t be using the Cluster API Kubemark Provider for this demo, and instead we will be using directly Kubemark itself.

+ +

Let’s assume we have a working OpenShift cluster available. We will be leveraging a Red Hat OpenShift Local instance (formerly Red Hat CodeReady Containers) for this demo:

+
❯ oc version
+Client Version: 4.13.6
+Kustomize Version: v4.5.7
+Server Version: 4.13.6
+Kubernetes Version: v1.26.6+73ac561
+
+❯ oc get node
+NAME                 STATUS   ROLES                         AGE     VERSION
+crc-2zx29-master-0   Ready    control-plane,master,worker   54d     v1.26.6+73ac561
+
+ +

Let’s create a new project, secret and corresponding permissions:

+
❯ oc new-project kubemark
+Now using project "kubemark" on server "https://api.crc.testing:6443".
+
+❯ oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG
+secret/kubeconfig created
+
+❯ oc adm policy add-scc-to-user privileged -z default
+clusterrole.rbac.authorization.k8s.io/system:openshift:scc:privileged added: "default"
+
+ +

Let’s create the Kubemark pod (which in turn will automatically instantiate a new node):

+
❯ cat <<EOF | oc apply -f -
+apiVersion: v1
+kind: Pod
+metadata:
+  labels:
+    app: hollow-node
+  name: kubemark-node
+  namespace: kubemark
+spec:
+  containers:
+    - args:
+        - --v=3
+        - --morph=kubelet
+        - --name=kubemark-node
+        - --extended-resources=cpu=1,memory=4G
+      command:
+        - /kubemark
+      image: quay.io/cluster-api-provider-kubemark/kubemark:v1.26.7
+      name: hollow-node
+      securityContext:
+        privileged: true
+      volumeMounts:
+        - mountPath: /kubeconfig
+          name: kubeconfig
+        - mountPath: /run/containerd/containerd.sock
+          name: containerd-sock
+  volumes:
+    - name: kubeconfig
+      secret:
+        defaultMode: 420
+        secretName: kubeconfig
+    - hostPath:
+        path: /run/crio/crio.sock
+        type: Socket
+      name: containerd-sock
+EOF
+pod/kubemark-node created
+
+ +

Let’s check the if new node was properly registered:

+
❯ oc get po
+NAME             READY   STATUS    RESTARTS   AGE
+kubemark-node    1/1     Running   0          5s
+
+❯ oc get node
+NAME                 STATUS   ROLES                         AGE     VERSION
+crc-2zx29-master-0   Ready    control-plane,master,worker   54d     v1.26.6+73ac561
+kubemark-node        Ready    <none>                        4s      v1.26.7
+
+ +

The cluster should be healthy:

+
❯ oc get co
+NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
+authentication                             4.13.6    True        False         False      12d
+cluster-api                                4.13.6    True        False         False      13d
+config-operator                            4.13.6    True        False         False      54d
+console                                    4.13.6    True        False         False      12d
+control-plane-machine-set                  4.13.6    True        False         False      54d
+dns                                        4.13.6    True        False         False      12d
+etcd                                       4.13.6    True        False         False      54d
+image-registry                             4.13.6    True        False         False      12d
+ingress                                    4.13.6    True        False         False      54d
+kube-apiserver                             4.13.6    True        False         False      54d
+kube-controller-manager                    4.13.6    True        False         False      54d
+kube-scheduler                             4.13.6    True        False         False      54d
+kube-storage-version-migrator              4.13.6    True        False         False      12d
+machine-api                                4.13.6    True        False         False      54d
+machine-approver                           4.13.6    True        False         False      54d
+machine-config                             4.13.6    True        False         False      54d
+marketplace                                4.13.6    True        False         False      54d
+network                                    4.13.6    True        False         False      54d
+openshift-apiserver                        4.13.6    True        False         False      12d
+openshift-controller-manager               4.13.6    True        False         False      12d
+openshift-samples                          4.13.6    True        False         False      54d
+operator-lifecycle-manager                 4.13.6    True        False         False      54d
+operator-lifecycle-manager-catalog         4.13.6    True        False         False      54d
+operator-lifecycle-manager-packageserver   4.13.6    True        False         False      119m
+platform-operators-aggregated              4.13.6    True        False         False      119m
+service-ca                                 4.13.6    True        False         False      54d
+
+ +

And there should a few pods already “running” in the new hollow node:

+
❯ oc get pods -A --field-selector spec.nodeName=kubemark-node
+NAMESPACE                           NAME                                  READY   STATUS     RESTARTS   AGE
+hostpath-provisioner                csi-hostpathplugin-8p9j5              4/4     Running    0          17m
+openshift-dns                       dns-default-lt7g8                     2/2     Running    0          17m
+openshift-dns                       node-resolver-9plz7                   1/1     Running    0          17m
+openshift-image-registry            node-ca-x7hq7                         1/1     Running    0          17m
+openshift-ingress-canary            ingress-canary-l2mlx                  1/1     Running    0          17m
+openshift-machine-config-operator   machine-config-daemon-smq5z           2/2     Running    0          17m
+openshift-multus                    multus-7xp8p                          1/1     Running    0          17m
+openshift-multus                    multus-additional-cni-plugins-rv6j7   0/1     Init:0/6   0          17m
+openshift-multus                    network-metrics-daemon-zh2vz          2/2     Running    0          17m
+openshift-network-diagnostics       network-check-target-l85xq            1/1     Running    0          17m
+openshift-sdn                       sdn-rv9mb                             2/2     Running    0          17m
+
+
+ +

Let’s try to create some pods on the new hollow node:

+
❯ oc run test --image nginx --overrides='{"spec": { "nodeSelector": {"kubernetes.io/hostname": "kubemark-node"}}}'
+pod/test created
+
+❯ oc get po -o wide test
+NAME   READY   STATUS    RESTARTS   AGE   IP                NODE            NOMINATED NODE   READINESS GATES
+test   1/1     Running   0          36s   192.168.192.168   kubemark-node   <none>           <none>
+
+ +

Finally, bear in mind that in order to create new hollow nodes you will have to change two fields in the pod definition:

+
    +
  • The pod name: metadata.name
  • +
  • The name of the hollow node: spec.containers.args.--name
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/kubemark/index.html b/docs/kubemark/index.html new file mode 100644 index 0000000000..fc21fbc390 --- /dev/null +++ b/docs/kubemark/index.html @@ -0,0 +1,1098 @@ + + + + + + +Kubernetes control plane scale testing with Kubemark - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +
+ + +
+ + + +
+

Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kubernetes Test Rig and DevConf.cz 2022 Testing at Scale with Cluster API and Kubemark (demo).

+
+ +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, hollow nodes are extremely light (<30 MiB).

+ +

The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks).

+ +

Architecture

+ +

On a very high level Kubemark cluster consists of two parts: real master components and a set of “hollow” nodes. The prefix hollow means an implementation/instantiation of a component with all moving parts mocked out. The best example is HollowKubelet, which pretends to be an ordinary Kubelet, but does not start anything, nor mount any volumes -it just lies it does.

+ +

Currently master components run on a dedicated machine(s), and HollowNodes run on an external management Kubernetes cluster. This design has the advantage of completely isolating master resources from everything else.

+ +

Integration with Cluster API

+ +

Kubernetes Cluster API (CAPI) is a project focused on providing declarative APIs and tooling to simplify provisioning, upgrading, and operating multiple Kubernetes clusters. It uses Kubernetes-style APIs and patterns to automate cluster lifecycle management for platform operators. The supporting infrastructure, like virtual machines, networks, load balancers, and VPCs, as well as the Kubernetes cluster configuration are all defined in the same way that application developers operate deploying and managing their workloads. This enables consistent and repeatable cluster deployments across a wide variety of infrastructure environments.

+ +

The Cluster API community has developed a Cluster API Kubemark Provider, allowing users to deploy fake, Kubemark-backed machines to their clusters. This is useful in a variety of scenarios, such load-testing and simulation testing.

+ +

Hands to work

+ +

On the host docker (we will be using a fresh Ubuntu 22.04 virtual machine) we will use kind (Kubernetes in Docker, a container running the necessary kubernetes pieces) to create the CAPI Management Cluster. Next, we will use the clusterctl tool to create a second cluster (using kind as well) for the Kubemark workload (the cluster under test). Lastly, we want to create new nodes for the Kubemark Control Plane Cluster (the cluster under test) and Kubemark requires that we create these hollow nodes as pods running on a cluster that can join the control plane. The Cluster API Kubemark provider then creates pods within the CAPI Management Cluster which will join the Kubemark Control Plane Cluster (the cluster under test/worload cluster) as nodes.

+ +

+ +

For the demo we will be using a Ubuntu 22.04 virtual machine with 4 vCPUs, 4 GiB of memory and 100 GiB disk.

+ +

Environment setup

+ +

I will be using Lima (Linux virtual machines) to create and manage the VM:

+ +
$ limactl start --name=ubuntu22.04 template://ubuntu-lts
+$ limactl shell ubuntu22.04
+
+ +

We will use cluster-apikubemark-ansible playbooks to automate the deploy of:

+
    +
  • Golang
  • +
  • Build tools
  • +
  • Docker
  • +
  • Docker local registry
  • +
  • Kind
  • +
  • Kubectl
  • +
  • Kustomize
  • +
  • Kubebuilder
  • +
  • Cluster API
  • +
  • Cluster API Kubemark provider
  • +
+ +

Prepare the host to run ansible:

+
    +
  • Install ansible (not ansible-core) +
     $ sudo apt install ansible
    + $ ssh-keygen
    + $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    +
    +
  • +
  • Clone and and prepare the playbooks: +
     $ git clone https://github.com/elmiko/cluster-api-kubemark-ansible.git
    + $ cd cluster-api-kubemark-ansible
    + $ echo -e "[defaults]\nallow_world_readable_tmpfiles=true" > ansible.cfg
    +
    +
  • +
  • Update inventory/hosts if you need to change addresses and/or users and run the first playbook: +
     $ ansible-playbook -i inventory/hosts setup_devel_environment.yaml
    +
    +

    Once it is finished you will be able to login to the host as the devel user listed in the hosts file. All the development tools should be ready for access.

    +
  • +
  • Run the second playbook to build the clusterctl binary, all the controller images and push the images to the local registry. +
     ansible-playbook -i inventory/hosts build_clusterctl_and_images.yaml
    +
    +
  • +
+ +

Creating the cluster

+ +

We will use the capi-hacks repo playbooks to aid with Kubemark deployment.

+ +

Ensure the docker local registry was created in the previous steps, if not use the 00-start-localregistry.sh script:

+
$ docker ps
+CONTAINER ID   IMAGE                  COMMAND                  CREATED      STATUS          PORTS                                  NAMES
+7064a4208e15   registry:2             "/entrypoint.sh /etc…"   4 days ago   Up 46 minutes   127.0.0.1:5000->5000/tcp               kind-registry
+
+ +

Clone the capi-hacks repo:

+
$ git clone https://github.com/elmiko/capi-hacks.git
+$ cd capi-hacks
+
+ +

Create the CAPI management cluster. This cluster will host the CAPI components and Kubemark hollow nodes:

+
$ ./01-start-mgmt-cluster.sh
+$ kind get clusters
+mgmt
+
+ +

Wait for the node to become ready and configure the management cluster to use the local registry:

+
$ kubectl get node
+NAME                 STATUS   ROLES                  AGE   VERSION
+mgmt-control-plane   Ready    control-plane,master   44s   v1.23.6
+
+$ ./02-apply-localregistryhosting-configmap.sh
+
+ +

Deploy the Cluster API (capi) and Cluster API Kubemark Provider (capk) components and wait for their pods to become ready:

+ +
$ ./03-clusterctl-init.sh
+
+$ kubectl get deploy -A | grep cap
+capd-system                         capd-controller-manager                         1/1     1            1           10m
+capi-kubeadm-bootstrap-system       capi-kubeadm-bootstrap-controller-manager       1/1     1            1           11m
+capi-kubeadm-control-plane-system   capi-kubeadm-control-plane-controller-manager   1/1     1            1           11m
+capi-system                         capi-controller-manager                         1/1     1            1           11m
+capk-system                         capk-controller-manager                         1/1     1            1           10m
+
+ +

Create the a new kind (docker provider) cluster for the control plane under test:

+
$ kubectl apply -f kubemark/kubemark-workload-control-plane.yaml
+
+ +

Wait for the machine to transition from provisioning to running state:

+
$ kubectl get machine
+NAME                                    CLUSTER             NODENAME                                PROVIDERID                                         PHASE     AGE     VERSION
+kubemark-workload-control-plane-lvkcv   kubemark-workload   kubemark-workload-control-plane-lvkcv   docker:////kubemark-workload-control-plane-lvkcv   Running   3m31s   v1.23.6
+
+$ kubectl get clusters
+NAME                PHASE         AGE     VERSION
+kubemark-workload   Provisioned   4m4s
+
+$ kind get clusters
+kubemark-workload
+mgmt
+
+ +

Let’s take a look to the new kubemark-workload kind cluster that will host the control plane under test. As you can see the node is in NotReady state (because there is no CNI deployed) and the CNI dependant pods are in Pending state:

+
$ ./get-kubeconfig.sh kubemark-workload
+
+$ kubectl get node --kubeconfig=kubeconfig.kubemark-workload
+NAME                                    STATUS     ROLES                  AGE   VERSION
+kubemark-workload-control-plane-lvkcv   NotReady   control-plane,master   46m   v1.23.6
+
+$ kubectl get po -A --kubeconfig=kubeconfig.kubemark-workload
+NAMESPACE     NAME                                                            READY   STATUS    RESTARTS   AGE
+kube-system   coredns-79dc848587-8qbgk                                        0/1     Pending   0          6m31s
+kube-system   coredns-79dc848587-n9428                                        0/1     Pending   0          6m31s
+kube-system   etcd-kubemark-workload-control-plane-lvkcv                      1/1     Running   0          6m39s
+kube-system   kube-apiserver-kubemark-workload-control-plane-lvkcv            1/1     Running   0          6m39s
+kube-system   kube-controller-manager-kubemark-workload-control-plane-lvkcv   1/1     Running   0          6m39s
+kube-system   kube-proxy-skgc9                                                1/1     Running   0          6m31s
+kube-system   kube-scheduler-kubemark-workload-control-plane-lvkcv            1/1     Running   0          6m39s
+
+ +

Let’s deploy OVN-Kubernetes on the cluster (more information on how to deploy OVN-K on a preexisting kind cluster in this past blog post. OVN-Kubernetes is a CNI for Kubernetes based on the Open Virtual Network (OVN) project:

+
$ ./deploy-cni-ovn.sh $(pwd)/kubeconfig.kubemark-workload kubemark-workload
+
+ +

Check if the nodes and the CNI dependant pods have transitioned to Ready state and the OVN pods are present:

+
$ kubectl get node --kubeconfig=kubeconfig.kubemark-workload
+NAME                                    STATUS   ROLES                  AGE   VERSION
+kubemark-workload-control-plane-lvkcv   Ready    control-plane,master   78m   v1.23.6
+
+$ kubectl get po -A --kubeconfig=kubeconfig.kubemark-workload
+NAMESPACE        NAME                                                            READY   STATUS    RESTARTS   AGE
+default          test2                                                           1/1     Running   0          3m4s
+kube-system      coredns-79dc848587-8qbgk                                        1/1     Running   0          78m
+kube-system      coredns-79dc848587-n9428                                        1/1     Running   0          78m
+kube-system      etcd-kubemark-workload-control-plane-lvkcv                      1/1     Running   0          78m
+kube-system      kube-apiserver-kubemark-workload-control-plane-lvkcv            1/1     Running   0          78m
+kube-system      kube-controller-manager-kubemark-workload-control-plane-lvkcv   1/1     Running   0          78m
+kube-system      kube-proxy-skgc9                                                1/1     Running   0          78m
+kube-system      kube-scheduler-kubemark-workload-control-plane-lvkcv            1/1     Running   0          78m
+ovn-kubernetes   ovnkube-db-7d8fdc7dfb-2pf8m                                     2/2     Running   0          6m42s
+ovn-kubernetes   ovnkube-master-6dbd568bb5-89s7c                                 2/2     Running   0          6m41s
+ovn-kubernetes   ovnkube-node-7s7r5                                              3/3     Running   0          6m33s
+ovn-kubernetes   ovs-node-gnpv9                                                  1/1     Running   0          6m41s
+
+ +

At this point we are ready to deploy Kubemark hollow nodes in the managment cluster. This step will create 4 Kubemark hollow nodes:

+
kubectl apply -f kubemark/kubemark-workload-md0.yaml
+
+ +

Let’s check things from the managment cluster perspective first:

+
$ kubectl get machine
+NAME                                     CLUSTER             NODENAME                                PROVIDERID                                         PHASE     AGE   VERSION
+kubemark-workload-control-plane-lvkcv    kubemark-workload   kubemark-workload-control-plane-lvkcv   docker:////kubemark-workload-control-plane-lvkcv   Running   84m   v1.23.6
+kubemark-workload-md-0-764cb59d5-8c62j   kubemark-workload   kubemark-workload-md-0-v7592            kubemark://kubemark-workload-md-0-v7592            Running   57s   v1.23.6
+kubemark-workload-md-0-764cb59d5-bb2p4   kubemark-workload   kubemark-workload-md-0-4955k            kubemark://kubemark-workload-md-0-4955k            Running   57s   v1.23.6
+kubemark-workload-md-0-764cb59d5-hwlh7   kubemark-workload   kubemark-workload-md-0-m82cf            kubemark://kubemark-workload-md-0-m82cf            Running   57s   v1.23.6
+kubemark-workload-md-0-764cb59d5-jrmgt   kubemark-workload   kubemark-workload-md-0-82m9j            kubemark://kubemark-workload-md-0-82m9j            Running   57s   v1.23.6
+
+$ kubectl get po
+NAME                           READY   STATUS    RESTARTS   AGE
+kubemark-workload-md-0-4955k   1/1     Running   0          90s
+kubemark-workload-md-0-82m9j   1/1     Running   0          90s
+kubemark-workload-md-0-m82cf   1/1     Running   0          90s
+kubemark-workload-md-0-v7592   1/1     Running   0          90s
+
+ +

Finally, let’s check things from the cluster under test perspective:

+
$ kubectl get node --kubeconfig=kubeconfig.kubemark-workload
+NAME                                    STATUS   ROLES                  AGE     VERSION
+kubemark-workload-control-plane-lvkcv   Ready    control-plane,master   84m     v1.23.6
+kubemark-workload-md-0-4955k            Ready    <none>                 2m11s   v1.23.6
+kubemark-workload-md-0-82m9j            Ready    <none>                 2m6s    v1.23.6
+kubemark-workload-md-0-m82cf            Ready    <none>                 2m10s   v1.23.6
+kubemark-workload-md-0-v7592            Ready    <none>                 2m9s    v1.23.6
+
+ +

Creating resources on the workload cluster

+ +

Let’s create a simple pod and service:

+
$ kubectl run test --image nginx --kubeconfig=kubeconfig.kubemark-workload
+pod/test created
+
+$ kubectl get po -o wide --kubeconfig=kubeconfig.kubemark-workload
+NAME   READY   STATUS    RESTARTS   AGE    IP                NODE                           NOMINATED NODE   READINESS GATES
+test   1/1     Running   0          100s   192.168.192.168   kubemark-workload-md-0-m82cf   <none>           <none>
+
+$ kubectl expose po/test --port 5000 --kubeconfig=kubeconfig.kubemark-workload
+service/test exposed
+
+$ kubectl get service --kubeconfig=kubeconfig.kubemark-workload
+NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
+kubernetes   ClusterIP   192.168.122.1    <none>        443/TCP    87m
+test         ClusterIP   192.168.122.93   <none>        5000/TCP   7s
+
+ +

Let’s check OVN databases:

+
$ POD=$(kubectl get pod -n ovn-kubernetes -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' --kubeconfig=kubeconfig.kubemark-workload | grep ovnkube-db-) ; kubectl exec -ti $POD -n ovn-kubernetes -c nb-ovsdb --kubeconfig=kubeconfig.kubemark-workload -- bash
+
+[root@kubemark-workload-control-plane-lvkcv ~]# ovn-nbctl ls-list
+712ca431-ff74-4aef-af8d-00acee6e40dd (ext_kubemark-workload-control-plane-lvkcv)
+95755675-c275-4d04-bd35-713ba7597c0c (join)
+d7264e2c-4e4e-44fe-9eae-5b99facca098 (kubemark-workload-control-plane-lvkcv)
+ee3c0a20-7df2-421b-8e9e-b676080d6976 (kubemark-workload-md-0-4955k)
+b4f230a6-9151-44cd-8fa9-4f489799274e (kubemark-workload-md-0-82m9j)
+a27e961a-6aaf-4e33-999c-9e7fd73611fa (kubemark-workload-md-0-m82cf)
+48b096d8-42c5-4d18-b226-924ec60af0c5 (kubemark-workload-md-0-v7592)
+
+[root@kubemark-workload-control-plane-lvkcv ~]# ovn-nbctl lb-list
+UUID                                    LB                  PROTO      VIP                    IPs
+8ffbeb8b-c2ba-4549-9a5b-5ac9577c4271    Service_default/    tcp        192.168.122.1:443      172.18.0.5:6443
+e4b5bceb-3b51-48e9-be67-7b45fb966caf    Service_default/    tcp        192.168.122.93:5000    192.168.192.168:5000
+654c5590-a2b7-4a6e-bf04-d8c1c78b0267    Service_default/    tcp        192.168.122.1:443      169.254.169.2:6443
+ca23b927-4b87-4fdd-b16c-f8c3d824e6e6    Service_kube-sys    tcp        192.168.122.10:53      10.244.0.3:53,10.244.0.4:53
+                                                            tcp        192.168.122.10:9153    10.244.0.3:9153,10.244.0.4:9153
+699e0b39-1be8-4db7-953f-dbc836d42faf    Service_kube-sys    udp        192.168.122.10:53      10.244.0.3:53,10.244.0.4:53
+
+[root@kubemark-workload-control-plane-lvkcv ~]# ovn-sbctl list port_binding default_test
+_uuid               : 26050c0d-0e5d-4496-b0ee-0b3df1bb40c9
+additional_chassis  : []
+additional_encap    : []
+chassis             : []
+datapath            : 1ac0b646-9d4d-432e-9e59-64db6520973f
+encap               : []
+external_ids        : {namespace=default, pod="true"}
+gateway_chassis     : []
+ha_chassis_group    : []
+logical_port        : default_test
+mac                 : ["0a:58:0a:f4:02:03 10.244.2.3"]
+mirror_rules        : []
+nat_addresses       : []
+options             : {iface-id-ver="b505da18-8294-41ac-a25e-ffeeb5d3b7fb", requested-chassis=kubemark-workload-md-0-m82cf}
+parent_port         : []
+port_security       : ["0a:58:0a:f4:02:03 10.244.2.3"]
+requested_additional_chassis: []
+requested_chassis   : []
+tag                 : []
+tunnel_key          : 2
+type                : ""
+up                  : false
+virtual_parent      : []
+
+ +

Scaling the cluster

+ +

Let’s check how many resources Kubemark hollow nodes consume (<30 MiB, compared to 650 MiB of a normal ovnkube worker):

+
$ kubectl top pod
+NAME                           CPU(cores)   MEMORY(bytes)
+kubemark-workload-md-0-4955k   38m          28Mi
+kubemark-workload-md-0-82m9j   36m          28Mi
+kubemark-workload-md-0-m82cf   45m          29Mi
+kubemark-workload-md-0-v7592   41m          28Mi
+
+ +

In our 4 GiB VM we have 1GiB available:

+
$ free -h
+               total        used        free      shared  buff/cache   available
+Mem:           3.8Gi       2.5Gi       170Mi        25Mi       1.2Gi       1.0Gi
+
+ +

Lets create a total of 30 Kubemark hollow nodes:

+ +
$ kubectl patch --type merge MachineDeployment kubemark-workload-md-0 -p '{"spec":{"replicas":30}}'
+
+$ kubectl get machine | grep kubemark-workload-md-0 | grep Running | wc -l
+30
+
+$ kubectl get po | grep kubemark-workload | grep Running | wc -l
+30
+
+$ free -h
+               total        used        free      shared  buff/cache   available
+Mem:           3.8Gi       3.2Gi       112Mi        28Mi       548Mi       347Mi
+
+ +

Stressing the cluster

+ +

Let’s use kube-burner to stress our workload cluster. Kube-burner is a tool aimed at stressing kubernetes clusters, by creating/deleting objects declared in jobs.

+ +

Let’s install kube-burner:

+
$ wget https://github.com/cloud-bulldozer/kube-burner/releases/download/v1.2/kube-burner-1.2-Linux-x86_64.tar.gz
+
+$ sudo install -o root -g root -m 0755 kube-burner /usr/local/bin/kube-burner
+
+$ kube-burner version
+Version: 1.2
+Git Commit: 563bc92b9262582391e5dffb8941b914ca19d2d3
+Build Date: 2023-01-13T10:18:17Z
+Go Version: go1.19.4
+OS/Arch: linux amd64
+
+ +

Let’s take a look at the configuration file kubeburner/cfg.yaml:

+
---
+global:
+  writeToFile: false
+  indexerConfig:
+    enabled: false
+
+jobs:
+  - name: kubelet-density
+    preLoadImages: false
+    jobIterations: 100
+    qps: 20
+    burst: 20
+    namespacedIterations: false
+    namespace: kubelet-density
+    waitWhenFinished: true
+    podWait: false
+    objects:
+      - objectTemplate: pod.yaml
+        replicas: 1
+        inputVars:
+          containerImage: gcr.io/google_containers/pause-amd64:3.0
+
+ +

Let’s create some pods on the cluster:

+
$ KUBECONFIG=kubeconfig.kubemark-workload kube-burner init -c kubeburner/cfg.yaml
+INFO[2023-01-17 15:21:25] 🔥 Starting kube-burner (1.2@563bc92b9262582391e5dffb8941b914ca19d2d3) with UUID def1da7b-a5db-4c05-bb17-167d889ef33b
+INFO[2023-01-17 15:21:25] 📈 Creating measurement factory
+INFO[2023-01-17 15:21:25] Job kubelet-density: 100 iterations with 1 Pod replicas
+INFO[2023-01-17 15:21:25] QPS: 20
+INFO[2023-01-17 15:21:25] Burst: 20
+INFO[2023-01-17 15:21:25] Triggering job: kubelet-density
+INFO[2023-01-17 15:21:26] Running job kubelet-density
+INFO[2023-01-17 15:21:32] Waiting up to 3h0m0s for actions to be completed
+INFO[2023-01-17 15:21:51] Actions in namespace kubelet-density completed
+INFO[2023-01-17 15:21:51] Finished the create job in 23s
+INFO[2023-01-17 15:21:51] Verifying created objects
+INFO[2023-01-17 15:21:52] pods found: 100 Expected: 100
+INFO[2023-01-17 15:21:52] Job kubelet-density took 26.88 seconds
+INFO[2023-01-17 15:21:52] Finished execution with UUID: def1da7b-a5db-4c05-bb17-167d889ef33b
+INFO[2023-01-17 15:21:52] 👋 Exiting kube-burner def1da7b-a5db-4c05-bb17-167d889ef33b
+
+$ kubectl get po -n kubelet-density | grep Running | wc -l
+100
+
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/kuryr/index.html b/docs/kuryr/index.html new file mode 100644 index 0000000000..cfd7d69744 --- /dev/null +++ b/docs/kuryr/index.html @@ -0,0 +1,761 @@ + + + + + + +Kuryr on OpenStack - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ +

+ +

Kuryr is Kubernetes Container Network Interface (CNI) for OpenStack, supported from OpenStack side from Red Hat OpenStack 13, for OpenShift 3.11 and for OpenShift 4.2 and above.

+ +

If you are interested on checking the performance impact, check the post Accelerate your OpenShift Network Performance on OpenStack with Kuryr from the official openshift blog.

+ +

Kuryr code lives in Kubernetes/OpenShift space, however there are some prerequisites from OpenStack side in order to properly work:

+
    +
  • Octavia, OpenStack`s load balancer as a service
  • +
  • Open vSwitch as Neutron firewall driver
  • +
  • The trunk extension to be enabled at Neutron
  • +
+ +

The following TripleO/Director Heat template satisfies these prerequisites:

+
 resource_registry:
+    OS::TripleO::Services::OctaviaApi: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-api.yaml
+    OS::TripleO::Services::OctaviaHousekeeping: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-housekeeping.yaml
+    OS::TripleO::Services::OctaviaHealthManager: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-health-manager.yaml
+    OS::TripleO::Services::OctaviaWorker: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia-worker.yaml
+    OS::TripleO::Services::OctaviaDeploymentConfig: /usr/share/openstack-tripleo-heat-templates/docker/services/octavia/octavia-deployment-config.yaml
+
+parameter_defaults:
+    # This flag enables internal generation of certificates for communication
+    # with amphorae. Use OctaviaCaCert, OctaviaCaKey, OctaviaCaKeyPassphrase
+    # and OctaviaClient cert to configure secure production environments.
+    OctaviaGenerateCerts: true
+
+    # As an Octavia Load Balancer is used to access the OpenShift API, there is a need to increase their listeners
+    # default timeouts for the connections. The default timeout is 50 seconds. Increase the timeout to 20 minutes
+    OctaviaTimeoutClientData: 1200000
+    OctaviaTimeoutMemberData: 1200000
+
+    NeutronOVSFirewallDriver: 'openvswitch'
+
+    # In RHOSP 13, the trunk extension is enabled by default at Neutron, if that is not the case, make sure
+    # to add trunk the comma separated list of service plugin entrypoints defined in NeutronServicePlugins
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/kyverno-fundamentals/index.html b/docs/kyverno-fundamentals/index.html new file mode 100644 index 0000000000..1dcbfb7b7a --- /dev/null +++ b/docs/kyverno-fundamentals/index.html @@ -0,0 +1,755 @@ + + + + + + +Kyverno Fundamentals Certification - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

I would like to strongly recomend the Kyverno Fundamentals Certification course for everyone interested in Kubernetes security.

+ +

Kyverno is a policy engine designed for Kubernetes. With Kyverno, policies are managed as Kubernetes resources and no new language is required to write policies. This allows using familiar tools such as kubectl, git, and kustomize to manage policies. Kyverno policies can validate, mutate, and generate Kubernetes resources. The Kyverno CLI can be used to test policies and validate resources as part of a CI/CD pipeline.

+ +

This Kyverno Fundamentals Certification will test you the basic concepts of Kyverno, along with installation, policy definitions, results, and security.

+ +

What the Course Covers

+ +
    +
  • About Kyverno
  • +
  • Basic Concepts
  • +
  • Installation
  • +
  • Policy Definitions
  • +
  • Quiz
  • +
+ +

Free certification

+ +

At the end of the course, you can earn a certificate by passing a final exam.

+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/lanoms15/index.html b/docs/lanoms15/index.html new file mode 100644 index 0000000000..ea0edfbebd --- /dev/null +++ b/docs/lanoms15/index.html @@ -0,0 +1,739 @@ + + + + + + +LANOMS 2015 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

8th Latin American Network Operations and Management Symposium

+ +

Agenda

+ +

SDN-based Control Plane Extensions for Mobility Management Improvement in Future Internet Networks

+
    +
  • Felipe Sampaio Dantas da Silva, Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil
  • +
  • Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil
  • +
  • Douglas Maciel, Federal University of Rio Grande do Norte, Brazil
  • +
  • José Castillo Lema, Universidade de São Paulo, Brazil
  • +
  • Flavio de Oliveira Silva, Federal University of Uberlândia, Brazil
  • +
+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/latincom12/index.html b/docs/latincom12/index.html new file mode 100644 index 0000000000..5328885064 --- /dev/null +++ b/docs/latincom12/index.html @@ -0,0 +1,765 @@ + + + + + + +IEEE LATINCOM 2012 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

2012 IEEE Latin-America Conference on Communications

+ +

Proceedings

+ +

Applying advanced network resource provisioning in future internet systems

+ +

DOI:10.1109/LATINCOM.2012.6506000

+ +
    +
  • S. Jardim (Informatics Institute, Federal University of Goiás, Goiânia, Brazil)
  • +
  • A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil)
  • +
  • J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain)
  • +
  • E. Cerqueira (Computer Engineering, Federal University of Para (UFPA), Belém, Brazil)
  • +
  • H. Barros (Federal University of Rio Grande do Norte (UFRN), Natal, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

S. Jardim, A. Neto, J. Castillo, E. Cerqueira and H. Barros, “Applying advanced network resource provisioning in future internet systems”, 2012 IEEE Latin-America Conference on Communications, Cuenca, 2012, pp. 1-6, doi: 10.1109/LATINCOM.2012.6506000.

+ +

BibTeX

+ +
@INPROCEEDINGS {6506000,
+  author={S. {Jardim} and A. {Neto} and J. {Castillo} and E. {Cerqueira} and H. {Barros}},
+  booktitle={2012 IEEE Latin-America Conference on Communications}, 
+  title={Applying advanced network resource provisioning in future internet systems}, 
+  year={2012},
+  volume={},
+  number={},
+  pages={1-6}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/lf-courses/index.html b/docs/lf-courses/index.html new file mode 100644 index 0000000000..0a11bd6335 --- /dev/null +++ b/docs/lf-courses/index.html @@ -0,0 +1,772 @@ + + + + + + +Linux Foundation Training & Certification courses - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Linux Foundation Training & Certification provides free online-learning courses on a range of open source topics from Linux to blockchain, networking to cloud, and everything in between.

+ +
    +
  • Earn certificates and badges
  • +
  • Free
  • +
+ +

Learning path

+ +
    +
  1. Inclusive Speaker Orientation (LFC101)
  2. +
  3. Inclusive Open Source Community Orientation (LFC102)
  4. +
  5. A Beginner’s Guide to Open Source Software Development (LFD102)
  6. +
  7. Secure Software Development: Requirements, Design, and Reuse (LFD104x)
  8. +
  9. Secure Software Development: Implementation (LFD105x)
  10. +
  11. Secure Software Development: Verification and More Specialized Topics (LFD106x)
  12. +
  13. Open Source Licensing Basics for Software Developers (LFC191)
  14. +
  15. Generating a Software Bill of Materials (LFC192)
  16. +
  17. Fundamentals of Professional Open Source Management (LFC110)
  18. +
  19. Open Source Management & Strategy
  20. +
  21. Introduction to GitOps (LFS169)
  22. +
+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/linux-trivia/index.html b/docs/linux-trivia/index.html new file mode 100644 index 0000000000..165e885b86 --- /dev/null +++ b/docs/linux-trivia/index.html @@ -0,0 +1,743 @@ + + + + + + +Legends of Linux Trivia - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + +

How well do you know Linux?

+ +

Red Hat is offering three nifty badges for Linux lovers and badge collectors alike. Successfully complete a single Red Hat quiz to earn the badge of your choice below. Or complete them all to earn all three. Sounds pretty easy, right? Well, there is a catch … you have to score 100% on the quiz.

+ +

Red Hat Enterprise Linux Trivia - Red Hat Titan

+ +

+ +

Linux Command-Line Trivia - Command-Line Captain

+ +

+ +

Linux Open Source Trivia - Open Sourcer-er

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/locust-ccnclient/index.html b/docs/locust-ccnclient/index.html new file mode 100644 index 0000000000..f87c502aca --- /dev/null +++ b/docs/locust-ccnclient/index.html @@ -0,0 +1,743 @@ + + + + + + +Locust CCN client - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + + + +

GitHub +GitHub top language +GitHub Pipenv locked Python version +GitHub Pipenv locked dependency version

+ +

locust-ccnclient

+ +

A Locust CCN client compatible with ccn-lite.

+ +

It allows the execution of load test experiments againts a CCN network.

+ +

+ + + + +

+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/loki/index.html b/docs/loki/index.html new file mode 100644 index 0000000000..62c0015f05 --- /dev/null +++ b/docs/loki/index.html @@ -0,0 +1,724 @@ + + + + + + +LOKI - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/magma-cert/index.html b/docs/magma-cert/index.html new file mode 100644 index 0000000000..933a18772e --- /dev/null +++ b/docs/magma-cert/index.html @@ -0,0 +1,747 @@ + + + + + + +MT101x: Magma Technical Certification Exam - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

The purpose of the Magma certification test is to evaluate the technical abilities of engineers to deploy and operate Magma. The test will consist of 25 questions that will test your knowledge of the three main Magma components: the access gateway, the Orc8r, and the network management system. During this test, you will be free to use all resources available to you. A score of 80% or higher is required to pass the test.

+ +

Prior to taking the test, you should have previously reviewed all documentation on the Magma Docusaurus website and the Github repository. This includes reviewing the Access Gateway Overview and Orc8r Overview subpages to understand the major services involved with Magma. These documents will be the primary sources for the information on the tests. Additionally, you should have installed an end to end test setup of Magma within your lab or working environment.

+ +

Registration

+ +

Register now

+ +

Free certification

+ +

At the end of the course, you can earn a certificate by passing a final exam.

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mandic-webinar/index.html b/docs/mandic-webinar/index.html new file mode 100644 index 0000000000..40295cadf0 --- /dev/null +++ b/docs/mandic-webinar/index.html @@ -0,0 +1,722 @@ + + + + + + +Webinar Mandic Cloud - IPv6 no OpenStack - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/maua-sdn/index.html b/docs/maua-sdn/index.html new file mode 100644 index 0000000000..50c59d233e --- /dev/null +++ b/docs/maua-sdn/index.html @@ -0,0 +1,727 @@ + + + + + + +Curso de Especialização - Tecnologias Habilitadoras para Internet do Futuro - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mct/index.html b/docs/mct/index.html new file mode 100644 index 0000000000..7ed97e31ea --- /dev/null +++ b/docs/mct/index.html @@ -0,0 +1,822 @@ + + + + + + +Microsoft Certified Trainer (MCT) program - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Become a Microsoft Certified Trainer

+ +

Microsoft Certified Trainers (MCTs) are the premier technical and instructional experts in Microsoft technologies. Join this exclusive group of worldwide Microsoft technical training professionals and reap the benefits of MCT training certification and membership.

+ +

You will get exclusive benefits as an MCT including access to the complete library of official Microsoft training and certification products, substantial discounts on exams, books, and Microsoft products. In addition, you will be able to use Microsoft readiness resources to help you enhance your training career and engage with other MCT members in an online community forum. You will also receive invitations to exclusive Microsoft and local MCT community events.

+ +

As a Microsoft Certified Trainer, you need to earn a Microsoft Certification, validating your experience and knowledge in using Microsoft products and solutions for each course you deliver.

+ +

The Microsoft Certified Trainer program is an annual membership program. You must meet program requirements, complete an online application, and pay an annual fee to renew your training certification for the coming year.

+ +

Program Benefits

+ +

As a Microsoft Certified Trainer, you will gain access to a personalized dashboard, where you can find a wide variety of useful MCT resources, download your MCT certificate, and view discounts available to you!

+ +

In addition, you will have access to MCT Central, which helps MCTs stay up-to-date on the latest news, find jobs, connect with other MCTs around the world, and reach out to your MCT Regional Lead.

+ +

Explore all the benefits available to MCTs.

+ +

MCT program entry requirements

+ +
    +
  • Possess a current Microsoft Certification or qualification eligible for the MCT program +
      +
    • Microsoft Certified: Azure Administrator Associate
    • +
    • Microsoft Certified: Azure Developer Associate
    • +
    • Microsoft Certified: Azure Security Engineer Associate
    • +
    • Microsoft Certified: Azure DevOps Engineer Expert
    • +
    • Microsoft Certified: Azure Solutions Architect Expert
    • +
    • Microsoft Certified: Azure AI Engineer Associate
    • +
    • Microsoft Certified: Azure Data Scientist Associate
    • +
    • Microsoft Certified: Azure Data Engineer Associate
    • +
    • Microsoft Certified: Azure Database Administrator Associate
    • +
    • Microsoft Certified: Azure Stack Hub Operator Associate
    • +
    • Microsoft Certified: Azure Network Engineer Associate
    • +
    • Microsoft Certified: Windows Server Hybrid Administrator Associate
    • +
    • Microsoft 365 Certified: Enterprise Administrator Expert
    • +
    • Microsoft 365 Certified: Modern Desktop Administrator Associate
    • +
    • Microsoft 365 Certified: Security Administrator Associate
    • +
    • Microsoft 365 Certified: Messaging Administrator Associate
    • +
    • Microsoft 365 Certified: Developer Associate
    • +
    • Microsoft 365 Certified: Teams Administrator Associate
    • +
    • Microsoft 365 Certified: Teams Voice Engineer Expert
    • +
    • Microsoft Certified: Power BI Data Analyst Associate
    • +
    • Microsoft Certified: Power Platform Functional Consultant Associate
    • +
    • Microsoft Certified: Power Platform App Maker Associate
    • +
    • Microsoft Certified: Power Platform Developer Associate
    • +
    • Microsoft Certified: Power Platform Solution Architect Expert
    • +
    • Microsoft Certified: Dynamics 365 Business Central Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Sales Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Customer Service Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Marketing Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Field Service Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Finance Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Supply Chain Management, Manufacturing Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Supply Chain Management Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365 Commerce Functional Consultant Associate
    • +
    • Microsoft Certified: Dynamics 365: Finance and Operations Apps Developer Associate
    • +
    • Microsoft Certified: Dynamics 365: Finance and Operations Apps Solution Architect Expert
    • +
    • Microsoft Certified: Security Operations Analyst Associate
    • +
    • Microsoft Certified: Identity and Access Administrator Associate
    • +
    • Microsoft Certified: Information Protection Administrator Associate
    • +
    • Microsoft Office Specialist (MOS): Master 2016, Master 2013, Expert Excel 2016, Expert Excel 2013, Expert Word 2016, Expert Word 2013, Word Associate (Word and Word 2019), Excel Associate (Excel and Excel 2019), PowerPoint Associate (PowerPoint and PowerPoint 2019), Outlook Associate (Outlook and Outlook 2019), Microsoft Office Specialist: Associate (Office 365 and Office 2019), Word Expert (Word and Word 2019), Excel Expert (Excel and Excel 2019), Access Expert (Access and Access 2019) or Microsoft Office Specialist: Expert (Office 365 and Office 2019)
    • +
    +
  • +
  • Demonstrate instructional skills verified by one of the following Instructional Skills Certification +
      +
    • CompTIA CTT+.
    • +
    • Essential Educate Trainer (internal Microsoft - certification).
    • +
    • Fourth Dimension Technologies, Inc.
    • +
    • Friesen Kaye and Associates.
    • +
    • Global Knowledge Instructional Skills Certification.
    • +
    • IAMCT Approved Technical Trainer (IAMCT ATT).
    • +
    • IPM (Institut für Personalberatung und Managemententwicklung).
    • +
    • Learning and Performance Institute Trainer Performance Monitoring and Assessment (TPMA).
    • +
    • Learning Tree Train the Trainer Program.
    • +
    • Marcom Deli.
    • +
    • Microsoft Certified Trainer Instructional Skills Certification (MCT-ISC).
    • +
    • Microsoft Customer Service & Support (CSS) Trainer Certification.
    • +
    • Microsoft Core Training Skills.
    • +
    • New Horizons Instructional Skills Certification.
    • +
    • PrepMasters USA.
    • +
    • Modern Classroom Certified Trainer (MCCT®) [For college staff or professors only].
    • +
    • Certified Virtual Educator [For college staff or professors only].
    • +
    • Sinerji Egitim
    • +
    +
  • +
  • OR provide reference supporting at least one year of instructional experience.
  • +
+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mdthesis/index.html b/docs/mdthesis/index.html new file mode 100644 index 0000000000..2268500e03 --- /dev/null +++ b/docs/mdthesis/index.html @@ -0,0 +1,755 @@ + + + + + + +Evolving Future Internet clean-slate ETArch with QoS control-plane extensions - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

Biblioteca Digital Brasileira de Teses e Dissertações

+ +

Cite this

+ +

APA

+

Lema, J. C. (2014). Evolving Future Internet clean-slate Entity Title Architecture with quality-oriented control-plane extensions.

+ +

Chicago

+

Lema, José Castillo. Evolving Future Internet Clean-slate Entity Title Architecture With Quality-oriented Control-plane Extensions. 2014.

+ +

MLA

+

Lema, José Castillo. Evolving Future Internet Clean-slate Entity Title Architecture With Quality-oriented Control-plane Extensions. 2014.

+ +

Publications

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/microsoft-ignite/index.html b/docs/microsoft-ignite/index.html new file mode 100644 index 0000000000..54d3063de6 --- /dev/null +++ b/docs/microsoft-ignite/index.html @@ -0,0 +1,800 @@ + + + + + + +Microsoft Ignite Cloud Skills Challenge - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Complete one challenge and earn a free Microsoft Certification exam.

+ +

Select one challenge that’s right for you – there are 12 challenges to choose from. Once you complete that challenge you will earn a free Microsoft Certification exam which will get delivered on December 7th, 2021.

+ +

The challenge ends on November 30, 2021 at 4:00 PM (16:00) UTC. Make sure all modules in your challenge are complete before time runs out.

+ +

Challenges

+ +
    +
  • Teams Admin Challenge
  • +
  • Teams Voice Engineer Challenge
  • +
  • Desktop and Device Management Challenge
  • +
  • Dynamics 365 Sales Consultant Challenge
  • +
  • Power Platform Developer Challenge
  • +
  • Azure Admin Challenge
  • +
  • Azure Developer Challenge
  • +
  • Azure Database Admin Challenge
  • +
  • Windows Server Hybrid Admin Challenge
  • +
  • Dynamics 365 Supply Chain Mgmt Challenge
  • +
  • Security Operations Analyst Challenge
  • +
  • Identity + Information Protection Challenge
  • +
+ +

+ +

Eligible exams

+ +
    +
  • Azure +
      +
    • AZ-104: Microsoft Azure Administrator
    • +
    • AZ-204: Developing Solutions for Microsoft Azure
    • +
    • DP-300: Administering Relational Databases on Microsoft Azure
    • +
    • AZ-800: Administering Windows Server Hybrid Core Infrastructure
    • +
    • AZ-801: Configuring Windows Server Hybrid Advanced Services
    • +
    +
  • +
  • Dynamics 365 +
      +
    • MB-210: Microsoft Dynamics 365 Sales
    • +
    • MB-330: Microsoft Dynamics 365 Supply Chain Management
    • +
    +
  • +
  • Microsoft 365 +
      +
    • MD-100: Windows 10
    • +
    • MD-101: Managing Modern Desktops
    • +
    • MS-700: Managing Microsoft Teams
    • +
    • MS-720: Microsoft Teams Voice Engineer
    • +
    +
  • +
  • Power Platform +
      +
    • PL-400: Microsoft Power Platform Developer
    • +
    +
  • +
  • Security, Compliance, and Identity +
      +
    • SC-200: Microsoft Security Operations Analyst
    • +
    • SC-300: Microsoft Identity and Access Administrator
    • +
    • SC-400: Microsoft Information Protection Administrator
    • +
    +
  • +
+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mie/index.html b/docs/mie/index.html new file mode 100644 index 0000000000..3f639c0040 --- /dev/null +++ b/docs/mie/index.html @@ -0,0 +1,747 @@ + + + + + + +Microsoft Innovative Educator (MIE) programs - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

About the Microsoft Innovative Educator Programs

+ +

The Microsoft Innovative Educator (MIE) programs recognize global educator visionaries who are using technology to pave the way for their peers for better learning and student outcomes. These are a variety of programs to help both educators who are just beginning this journey, as well as programs for educators who are leaders in innovative education.

+ +

Microsoft Innovative Educator

+ +

Start your journey by becoming a Microsoft Innovative Educator. MIEs use Microsoft tools in the classroom and have learned the fundamentals of some of these tools. This is the first step on a journey of joining a professional learning network of enthusiastic educators who come together to learn, share, and grow.

+ +

Requirements:

+ + +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mininfv/index.html b/docs/mininfv/index.html new file mode 100644 index 0000000000..6c45068dc6 --- /dev/null +++ b/docs/mininfv/index.html @@ -0,0 +1,1070 @@ + + + + + + +GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+ + + + +
+ + +
+ + + + + + + +

DOI +GitHub release (latest by date) +GitHub tag (latest by date) +GitHub top language +visitors +GitHub Pipenv locked Python version +GitHub Pipenv locked dependency version +GitHub Pipenv locked dependency version +GitHub Pipenv locked dependency version +GitHub +Python application

+ +

mini-nfv

+

Mini-nfv is a framework for NFV Orchestration with a general purpose VNF Manager to deploy and operate Virtual Network Functions (VNFs) and Network Services on Mininet. It is based on ETSI MANO Architectural Framework.

+ +

Mini-nfv manages the life-cycle of a Virtual Network Function (VNF). Mini-nfv takes care of deployment, monitoring, scaling and removal of VNFs on Mininet.

+ +

Mini-nfv allows loading OASIS TOSCA templates (V1.0 CSD 03) into Mininet, following an OpenStack Tacker’s alike workflow. Within Tacker’s documentation it can be found a comprehensive VNF Descriptor Template Guide.

+ +

Mini-nfv uses TOSCA for VNF meta-data definition. Within TOSCA, mini-nfv uses NFV profile schema:

+ + +

Publications

+ + +

Use cases

+

In the OpenStack world, Tacker is the project implementing a generic VNFM and NFVO. At the input consumes Tosca-based templates, which are then used to spin up VMs on OpenStack. While it is true that today exist various tools that simplify the deployment of an OpenStack cloud (i.e.: devstack), deploying, configuring and managing OpenStack environments is still a time-consuming process with a considerable learning curve.

+ +

On the other hand, Mininet has shown itself as a great tool for agile network/SDN/NFV experimentation. The goal of mini-nfv is to alleviate the developers’ tedious task of setting up a whole service chaining environment and let them focus on their own work (e.g., developing a particular VNF, prototyping, implementing an orchestration algorithm or a customized traffic steering).

+ +

Automation / Jinja2 support

+ +

On top of that, mini-nfv supports Jinja2, a full featured and designer-friendly template engine for Python, with an integrated sandboxed execution environment. This way, developers can easily automate the scale-out of vNF deployments and NFV orquestration graphs within the TOSCA templates. Inside the TOSCA templates, variables or expressions can be defined, as in for example:

+
ip_dst_prefix: ’{{ ip_dst }}’
+
+

It is also possible to define tags, which control the logic of the template:

+
{% ip_masq == 24 %}
+
+

Variables will then be replaced with values when the templates are rendered. This can be done interactively through mini-nfv CLI, as in:

+
px import yaml; net.values=yaml.load (’---\nip_dst: 10.0.40.10/24’)
+
+

Like this, using only one parametrized template it is possible to deploy any number of VNFs/VNFDs/VNFFGs with varying parameters.

+ +

Characteristics

+

NFV Catalog

+
    +
  • VNF Descriptors
  • +
  • Network Services Decriptors
  • +
  • VNF Forwarding Graph Descriptors
  • +
+ +

VNF Manager

+
    +
  • Basic life-cycle of VNF (create/update/delete)
  • +
  • Facilitate initial configuration of VNF
  • +
+ +

NFVO Orquestrator

+
    +
  • Templatized end-to-end Network Service deployment using decomposed VNFs
  • +
  • VNF placement policy – ensure efficient placement of VNFs
  • +
  • VNFs connected using an Service Function Chain (SFC) - described in a VNF Forwarding Graph Descriptor
  • +
  • Symmetrical and asymmetrical traffic from and to the VNFs! (currently Tacker/OpenStack VIM driver only support asymmetrical unidirectional traffic)
  • +
+ +

Mini-nfv supports:

+
    +
  • Jinja2 templating, to automate the scale-out of vNF deplyments and NFV orquestration graphs within the TOSCA templates +
  • +
  • network definition via VL +
  • +
  • IP/mac definition via CP +
  • +
  • emulation of num CPUs and flavor properties through Mininet’s CPULimitedHost +
  • +
  • cloud-init scripts +
  • +
+ +

Mini-nfv ignores:

+
    +
  • RAM and disk properties
  • +
  • Floating IPs
  • +
  • NUMA topology
  • +
  • SR-IOV
  • +
+ +

Mini-nfv has not implemented (yet):

+
    +
  • Monitoring/autoscaling of VNFs
  • +
  • Network Service Descriptors (NSDs)
  • +
  • Explicit support for containers/NETCONF/Click-based VNFs
  • +
+ +

Network definition

+

If not specified otherwise, mini-nfv will create 3 standards networks:

+
    +
  • net_mgmt: 192.168.120.0/24
  • +
  • net0: 10.10.0.0/24
  • +
  • net1: 10.10.1.0/24
  • +
+ +

It is also possible to manually define the networks, within the Virtual Link (VL) definition, see tosca-vnfd-network.yaml:

+
VL2:
+  type: tosca.nodes.nfv.VL
+  properties:
+    network_name: custom_net0
+    vendor: Tacker
+    ip_version: 4
+    cidr: '20.0.0.0/24'
+    start_ip: '20.0.0.50'
+    end_ip: '20.0.0.200'
+    gateway_ip: '20.0.0.1'
+
+ +

IP/MAC definition

+

If not specified otherwise, mini-nfv will assign random IPs within the defined networks. +However, it is also possibly to manually define IP/MAC for a VNF, within the Connection Point (CP) definition, see tosca-vnfd-mac-ip.yaml:

+
CP1:
+  type: tosca.nodes.nfv.CP.Tacker
+  properties:
+    management: true
+    mac_address: 6c:40:08:a0:de:0a
+    ip_address: 10.10.1.12
+    order: 0
+    anti_spoofing_protection: false
+  requirements:
+    - virtualLink:
+        node: VL1
+    - virtualBinding:
+        node: VDU1
+
+ +

Flavor and number of cpus

+

Mini-nfv emulates VNF resource configuration defined via num_cpus properties:

+
VDU1:
+  type: tosca.nodes.nfv.VDU.Tacker
+  capabilities:
+    nfv_compute:
+      properties:
+        num_cpus: 1
+        mem_size: 512 MB
+        disk_size: 1 GB
+
+

or through flavor:

+
VDU1:
+  type: tosca.nodes.nfv.VDU.Tacker
+  properties:
+    flavor: m1.tiny
+
+

Mini-nfv maps flavors and number of cpus property configuration into Mininet’s CPULimitedHost. +Currently, mini-nfv support the folowing flavors:

+
    +
  • m1.tiny: 1 cpu
  • +
  • m1.small: 1 cpu
  • +
  • m1.medium: 2 cpus
  • +
  • m1.large: 4 cpus
  • +
  • m1.xlargue: 8 cpus
  • +
+ +

Mini-nfv will assign 1/(8-num_cpus))) to each VNF.

+ +

Cloud-init

+

Mini-nfv supports VNFs configuration through user-data, see tosca-vnfd-userdata.yaml:

+
VDU1:
+  type: tosca.nodes.nfv.VDU.Tacker
+  properties:
+    user_data_format: RAW
+    user_data: |
+      #!/bin/sh
+      echo "my hostname is `hostname`" > /tmp/hostname
+      df -h > /tmp/diskinfo
+
+ +

Dependencies

+

Mini-nfv was tested on Ubuntu 14.04, 16.04 and 18.04.

+ +

APT dependencies:

+
    +
  • mininet
  • +
  • +openvswitch-testcontroller (in Ubuntu 16.04 and 18.04)
  • +
  • +python-netaddr (it can also be installed via pip)
  • +
  • +python-yaml (it can also be installed via pip)
  • +
+ +

Via pip

+
$ pip install -r ./requirements.txt
+
+ +

Via pipenv

+
$ pipenv install
+
+ +

If you are running Ubuntu 16.04, the openvswitch-ovscontroller was recently renamed to openvswitch-testcontroller. +To solve it, you need to create a symbolic link to ovs-testcontroller that is called ovs-controller.

+
$ sudo ln /usr/bin/ovs-testcontroller /usr/bin/ovs-controller
+
+

In Ubuntu 18.04 openvswitch-testcontroller must be stopped before running mini-nfv in standalone mode.

+
$ sudo systemctl stop openvswitch-testcontroller.service
+
+ +

mini-nfv

+
Usage: mininfv [options]
+
+The mininfv utility loads vNFs into Mininet networks from the command line.
+It can create parametrized topologies, invoke the mininfv CLI, and run tests.
+
+Options:
+  -h, --help            show this help message and exit
+  --controller=CONTROLLER
+                        remote=RemoteController
+
+

Whithou any explicit options mininfv runs mininet with its default controller. This way can be usefull to test the VNF Manager functionality with full connectivity between VNFs hosts and NFV Orchestration capabilities without the need of running POX, Ryu or other SDN controller. However, if you wish to include a SDN controller into your experiments mininfv must be run with the --controller=remote option alongside with the controller running in the background, for example:

+
$ ./pox.py pox.forwarding.l3_learning openflow.discovery                              or
+$ ./pox.py log.level --DEBUG pox.forwarding.l3_learning openflow.discovery           (debug mode)
+
+ +

mini-nfv debugging

+

During a mini-nfv session, the openvswitch status can be debugging using the following commands (from outside mininfv CLI):

+
$ sudo ovs-vsctl show 
+bece8326-e719-4b6f-abee-a422f6904808
+    Bridge "s192.168.1"
+        Controller "tcp:127.0.0.1:6633"
+            is_connected: true
+        fail_mode: secure
+        Port "s192.168.1"
+            Interface "s192.168.1"
+                type: internal
+        Port "s192.168.1-eth1"
+            Interface "s192.168.1-eth1"
+    ovs_version: "2.5.4"
+
+ +

To show the ports attached to a specific switch:

+
$ sudo ovs-ofctl show s192.168.1
+OFPT_FEATURES_REPLY (xid=0x2): dpid:00000000000000c0
+n_tables:254, n_buffers:256
+capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
+actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
+ 1(s192.168.1-eth1): addr:72:cb:47:5b:23:ec
+     config:     0
+     state:      0
+     current:    10GB-FD COPPER
+     speed: 10000 Mbps now, 0 Mbps max
+ LOCAL(s192.168.1): addr:ae:89:9f:63:e5:47
+     config:     PORT_DOWN
+     state:      LINK_DOWN
+     speed: 0 Mbps now, 0 Mbps max
+OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0
+
+ +

To dump the flows of a specific switch:

+
$ sudo ovs-ofctl dump-flows s192.168.1
+NXST_FLOW reply (xid=0x4):
+ cookie=0x0, duration=244.774s, table=0, n_packets=9, n_bytes=434, idle_age=0, priority=0 actions=CONTROLLER:128
+
+ +

From inside the mini-nfv session CLI, there are some commands that could also be usefull for debugging purposes:

+
mininfv> dump
+<Host http_cl: http_cl-eth0:192.168.120.1 pid=26425> 
+<OVSSwitch s192.168.1: lo:127.0.0.1,s192.168.1-eth1:None pid=26420> 
+<OVSController c0: 127.0.0.1:6633 pid=26409> 
+
+mininfv> dpctl dump-flows
+*** s192.168.1 ------------------------------------------------------------------------
+NXST_FLOW reply (xid=0x4):
+ cookie=0x0, duration=682.379s, table=0, n_packets=14, n_bytes=644, idle_age=432, priority=0 actions=CONTROLLER:128
+
+ +

VNF Manager

+ +
    +
  • +

    VNFD creation/listing/removal/template show

    + +
    +
     $ sudo ./mininfv.py
    + *** Configuring hosts
    + *** Starting controller
    + *** Starting 0 switches
    + *** Starting CLI:
    +
    + mininfv> vnfd_<TAB>
    + vnfd_create         vnfd_delete         vnfd_list           vnfd_template_show  
    +
    + mininfv> vnfd_create
    + Use: vnfd_create --vnfd-file <yaml file path> <VNFD-NAME>
    +
    + mininfv> vnfd_create --vnfd-file samples/vnfd/tosca-vnfd-userdata.yaml vnfd-userdata
    +
    + mininfv> vnfd_create --vnfd-file samples/vnfd/tosca-vnfd-hello-world.yaml vnfd-helloworld
    +
    + mininfv> vnfd_list
    + vnfd-helloworld: Demo example
    + vnfd-userdata: Demo with user-data
    +
    + mininfv> vnfd_template_show vnfd-userdata
    + {'VDU1': {'type': 'tosca.nodes.nfv.VDU.Tacker', 'properties': {'image': 'cirros-0.3.5-x86_64-disk', 'user_data_format': 'RAW', 'config': 'param0: key1\nparam1: key2\n', 'user_data': '#!/bin/sh\necho "my hostname is `hostname`" > /tmp/hostname\ndf -h > /tmp/diskinfo\n', 'mgmt_driver': 'noop'}, 'capabilities': {'nfv_compute': {'properties': {'mem_size': '512 MB', 'num_cpus': 1, 'disk_size': '1 GB'}}}}, 'CP1': {'type': 'tosca.nodes.nfv.CP.Tacker', 'requirements': [{'virtualLink': {'node': 'VL1'}}, {'virtualBinding': {'node': 'VDU1'}}], 'properties': {'anti_spoofing_protection': False, 'management': True, 'order': 0}}, 'VL1': {'type': 'tosca.nodes.nfv.VL', 'properties': {'network_name': 'net_mgmt', 'vendor': 'ACME'}}}
    +
    + mininfv> vnfd_delete vnfd-userdata
    +
    + mininfv> vnfd_list
    + vnfd-helloworld: Demo example
    +
    +

    Or just source vnfd_test from mininfv:

    +
    +
     mininfv> source samples/topology/vnfd_test
    + *** Creating vnfds userdata and hello-world ...
    + *** Listing vnfds ...
    + vnfd-helloworld: Demo example
    + vnfd-userdata: Demo with user-data
    +
    + *** Showing vnf template ...
    + {'tosca_definitions_version': 'tosca_simple_profile_for_nfv_1_0_0', 'metadata': {'template_name': 'sample-vnfd-userdata'}, 'description': 'Demo with user-data', 'topology_template': {'node_templates': {'VDU1': {'type': 'tosca.nodes.nfv.VDU.Tacker', 'properties': {'image': 'cirros-0.3.5-x86_64-disk', 'user_data_format': 'RAW', 'config': 'param0: key1\nparam1: key2\n', 'user_data': '#!/bin/sh\necho "my hostname is `hostname`" > /tmp/hostname\necho 1 > /proc/sys/net/ipv4/ip_forward\nip route add default via 192.168.120.10\n', 'mgmt_driver': 'noop'}, 'capabilities': {'nfv_compute': {'properties': {'mem_size': '512 MB', 'num_cpus': 1, 'disk_size': '1 GB'}}}}, 'CP1': {'type': 'tosca.nodes.nfv.CP.Tacker', 'requirements': [{'virtualLink': {'node': 'VL1'}}, {'virtualBinding': {'node': 'VDU1'}}], 'properties': {'anti_spoofing_protection': False, 'management': True, 'order': 0}}, 'VL1': {'type': 'tosca.nodes.nfv.VL', 'properties': {'network_name': 'net_mgmt', 'vendor': 'ACME'}}}}}
    +
    +
    +
  • +
  • +VNF creation/listing/removal +
    +
     $ sudo ./mininfv.py
    + *** Configuring hosts
    + *** Starting controller
    + *** Starting 0 switches
    + *** Starting CLI:
    +
    + mininfv> vnf_<TAB>
    + vnf_create  vnf_delete  vnf_list
    +
    + mininfv> vnf_create
    + Use: vnf_create --vnfd-name <VNFD-NAME> <VNF-NAME>
    +      vnf_create --vnfd-file <yaml file path> <VNFD-NAME>
    +      vnf_create --vnfd-template <yaml file path> <VNFD-NAME>
    +
    + mininfv> vnf_create --vnfd-file samples/vnfd/tosca-vnfd-userdata.yaml vnfUD
    + *** Initializing VDU vnf-userdata ...
    + *** user-data : ('#!/bin/sh\necho "my hostname is `hostname`" > /tmp/hostname\ndf -h > /tmp/diskinfo\n',)
    +
    + mininfv> nodes
    + available nodes are: 
    + c0 s192.168.1 vnfUD
    +
    + mininfv> vnf_list
    + ['vnfUD']
    +
    + mininfv> vnfUD ifconfig
    + ud-eth0   Link encap:Ethernet  HWaddr 76:2c:90:f5:72:13  
    +           inet addr:192.168.120.10  Bcast:192.168.120.255  Mask:255.255.255.0
    +           inet6 addr: fe80::742c:90ff:fef5:7213/64 Scope:Link
    +           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    +           RX packets:41 errors:0 dropped:10 overruns:0 frame:0
    +           TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
    +           collisions:0 txqueuelen:1000 
    +           RX bytes:6751 (6.7 KB)  TX bytes:648 (648.0 B)
    +
    + mininfv> vnf_delete vnf-userdata
    +
    + mininfv> nodes
    + available nodes are: 
    + c0 s192.168.1
    +
    + mininfv> vnf_list
    + []
    +
    +

    Or just source vnf_test from mininfv:

    +
    +
     mininfv> source samples/topology/vnf_test
    + *** Starting vnf <tosca-vnfd-userdata.yaml> ...
    + *** Initializing VDU vnfUD ...
    + *** vnfUD : ('#!/bin/sh\necho "my hostname is `hostname`" > /tmp/hostname\necho 1 > /proc/sys/net/ipv4/ip_forward\nip route add default via 192.168.120.10\n',)
    +
    + *** Listing vNF interfaces:
    + vnfUD-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    +         inet 192.168.120.10  netmask 255.255.255.0  broadcast 192.168.120.255
    +         inet6 fe80::7032:2dff:fe89:175e  prefixlen 64  scopeid 0x20<link>
    +         ether 72:32:2d:89:17:5e  txqueuelen 1000  (Ethernet)
    +         RX packets 0  bytes 0 (0.0 B)
    +         RX errors 0  dropped 0  overruns 0  frame 0
    +         TX packets 0  bytes 0 (0.0 B)
    +         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    +
    + *** Listing nodes:
    + available nodes are: 
    + c0 s192.168.1 vnfUD
    +
    +
  • +
  • +Adding hosts to the topology +
    +
     $ sudo ./mininfv.py
    + *** Configuring hosts
    + *** Starting controller
    + *** Starting 0 switches
    + *** Starting CLI:
    +
    + mininfv> add_host
    + Use: add_host <HOST-NAME> [<IP1/masc> <IP2/masc> ...]
    +
    + mininfv> add_host h1 10.0.0.11/24 20.0.0.11/24
    +
    + mininfv> nodes
    + available nodes are: 
    + c0 h1 s10.0.0.0 s20.0.0.0 ud
    +
    + mininfv> h1 ifconfig
    + h1-eth0   Link encap:Ethernet  HWaddr 3e:b2:ba:99:4e:dc  
    +           inet addr:10.0.0.11  Bcast:10.255.255.255  Mask:255.255.255.0
    +           inet6 addr: fe80::3cb2:baff:fe99:4edc/64 Scope:Link
    +           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    +           RX packets:24 errors:0 dropped:1 overruns:0 frame:0
    +           TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
    +           collisions:0 txqueuelen:1000 
    +           RX bytes:3445 (3.4 KB)  TX bytes:578 (578.0 B)
    +
    + h1-eth1   Link encap:Ethernet  HWaddr aa:08:cf:38:e8:d5  
    +           inet addr:20.0.0.10  Bcast:20.255.255.255  Mask:255.255.255.0
    +           inet6 addr: fe80::a808:cfff:fe38:e8d5/64 Scope:Link
    +           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    +           RX packets:25 errors:0 dropped:1 overruns:0 frame:0
    +           TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
    +           collisions:0 txqueuelen:1000 
    +           RX bytes:3515 (3.5 KB)  TX bytes:578 (578.0 B)
    +
    + mininfv> add_host h2 10.0.0.12/24
    +
    + mininfv> switch s10.0.0.0 start
    +
    + mininfv> h1 ping -c3 h2
    + PING 10.0.0.12 (10.0.0.12) 56(84) bytes of data.
    + 64 bytes from 10.0.0.12: icmp_seq=1 ttl=64 time=2.93 ms
    + 64 bytes from 10.0.0.12: icmp_seq=2 ttl=64 time=0.736 ms
    + 64 bytes from 10.0.0.12: icmp_seq=3 ttl=64 time=0.142 ms
    +
    + --- 10.0.0.12 ping statistics ---
    + 3 packets transmitted, 3 received, 0% packet loss, time 2032ms
    + rtt min/avg/max/mdev = 0.142/1.270/2.934/1.201 ms
    +
    +

    Or just source host_test from mininfv:

    +
    +
     mininfv> source samples/topology/host_test
    + *** Creating host h1 with two interfaces ...
    + *** Listing interfaces of the host:
    + h1-eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    +         inet 10.0.0.11  netmask 255.255.255.0  broadcast 10.0.0.255
    +         inet6 fe80::609d:6fff:fe6e:eae8  prefixlen 64  scopeid 0x20<link>
    +         ether 62:9d:6f:6e:ea:e8  txqueuelen 1000  (Ethernet)
    +         RX packets 1  bytes 90 (90.0 B)
    +         RX errors 0  dropped 0  overruns 0  frame 0
    +         TX packets 1  bytes 90 (90.0 B)
    +         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    +
    + h1-eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    +         inet 20.0.0.11  netmask 255.255.255.0  broadcast 20.0.0.255
    +         inet6 fe80::bc42:45ff:fee1:6e0b  prefixlen 64  scopeid 0x20<link>
    +         ether be:42:45:e1:6e:0b  txqueuelen 1000  (Ethernet)
    +         RX packets 0  bytes 0 (0.0 B)
    +         RX errors 0  dropped 0  overruns 0  frame 0
    +         TX packets 0  bytes 0 (0.0 B)
    +         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    +
    + *** Creating host h2
    + *** Starting switch ...
    + *** Listing nodes:
    + available nodes are: 
    + c0 h1 h2 s10.0.0.0 s192.168.1 s20.0.0.0 vnfUD
    +
    + *** Testing conectivity ...
    + PING 10.0.0.12 (10.0.0.12) 56(84) bytes of data.
    + 64 bytes from 10.0.0.12: icmp_seq=1 ttl=64 time=3.43 ms
    + 64 bytes from 10.0.0.12: icmp_seq=2 ttl=64 time=0.716 ms
    + 64 bytes from 10.0.0.12: icmp_seq=3 ttl=64 time=0.111 ms
    +
    + --- 10.0.0.12 ping statistics ---
    + 3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    + rtt min/avg/max/mdev = 0.111/1.419/3.430/1.443 ms
    +
    +
  • +
+ +

NFV Orchestrator

+ +
    +
  • +VNFFG creation/listing/removal +
    +
     $ sudo ./mininfv.py
    + *** Configuring hosts
    + *** Starting controller
    + *** Starting 0 switches
    + *** Starting CLI:
    +
    + mininfv> vnf_create --vnfd-file samples/vnfd/tosca-vnfd-userdata.yaml vnfUD
    + *** Initializing VDU vnf-userdata ...
    + *** user-data : ('#!/bin/sh\necho "my hostname is `hostname`" > /tmp/hostname\ndf -h > /tmp/diskinfo\n',)
    +
    + mininfv> add_host http_cl 192.168.120.1/24
    +
    + mininfv> add_host http_sr 192.168.120.2/24
    +
    + mininfv> nodes
    + available nodes are: 
    + c0 http_cl http_sr s192.168.1 vnfUD
    +
    + mininfv> switch s192.168.1 start
    +
    + mininfv> py http_sr.cmdPrint('python -m SimpleHTTPServer 80 &')
    +
    + mininfv> vnffg_<TAB>
    + vnffg_create  vnffg_delete  vnffg_list
    +
    + mininfv> vnffg_create
    + Use: vnffg-create --vnffgd-name <vnffgd-name> --vnf-mapping <vnf-mapping>
    +                   --symmetrical <boolean> <vnffg-name>
    +      vnffg-create --vnffgd-template <vnffgd-template> --vnf-mapping <vnf-mapping>
    +                   --symmetrical <boolean> <vnffg-name>
    +
    + mininfv> vnffg_create --vnffgd-template samples/vnffgd/tosca-vnffgd-helloworld.yaml --vnf-mapping vnfd-helloworld:'vnfUD' --symmetrical false vnffg-sample
    +
    + mininfv> vnffg_list
    + ['vnffg-sample']
    +
    + mininfv> xterm vnfUD
    +
    + mininfv> http_cl curl http_sr
    + <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html>
    + ...
    +
    + mininfv> vnffg_delete vnffg-sample
    +
    + mininfv> vnffg_list
    + []
    +
    + +

    Or just source vnffg_test from mininfv: + mininfv> source samples/topology/vnffg_test

    + +

    In the xterm window of the vnfUD we opened at step 11, if we sniff the interface we can see the http and icmp traffic corresponding to the curl and ping passing through the VNF interface: +Screenshot of the VNF xterm

    +
  • +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + +
+ + +
+ + + +
+ +
+ + +
+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mswim15/index.html b/docs/mswim15/index.html new file mode 100644 index 0000000000..f8de48b5b9 --- /dev/null +++ b/docs/mswim15/index.html @@ -0,0 +1,770 @@ + + + + + + +MSWiM 2015 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems

+ +

Agenda

+ +

Network-Initiated Quality-oriented Mobility Management Approach for Next Generation ETArch Networks

+ +
    +
  • Felipe Sampaio Dantas da Silva, Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil
  • +
  • Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil
  • +
  • Douglas Maciel, Federal University of Rio Grande do Norte, Brazil
  • +
  • José Castillo Lema, Universidade de São Paulo, Brazil
  • +
  • Flavio de Oliveira Silva, Federal University of Uberlândia, Brazil
  • +
+ +

Cite this

+ +

ACM

+ +

Felipe S. Dantas Silva, Augusto J.V. Neto, Douglas Braz Maciel, Jose Castillo-Lema, Flávio de Oliveira Silva, and Pedro Frosi Rosa. 2015. SDN Based Control Plane Extensions for Mobility Management Improvement in Next Generation ETArch Networks. In Proceedings of the 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (MSWiM ’15). Association for Computing Machinery, New York, NY, USA, 189–193.

+ +

BibTeX

+ +
@inproceedings {10.1145/2811587.2811632,
+  author = {Silva, Felipe S. Dantas and Neto, Augusto J.V. and Maciel, Douglas Braz and Castillo-Lema, Jose and Silva, Fl\'{a}vio de Oliveira and Rosa, Pedro Frosi},
+  title = {SDN Based Control Plane Extensions for Mobility Management Improvement in Next Generation ETArch Networks},
+  year = {2015},
+  isbn = {9781450337625},
+  publisher = {Association for Computing Machinery},
+  address = {New York, NY, USA},
+  booktitle = {Proceedings of the 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems},
+  pages = {189–193},
+  numpages = {5},
+  keywords = {etarch network, quality of service, software defined networking, mobility management, load balancing},
+  location = {Cancun, Mexico},
+  series = {MSWiM ’15}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/mycodeisopen/index.html b/docs/mycodeisopen/index.html new file mode 100644 index 0000000000..2b060064ce --- /dev/null +++ b/docs/mycodeisopen/index.html @@ -0,0 +1,719 @@ + + + + + + +My code is open - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/netsoft19/index.html b/docs/netsoft19/index.html new file mode 100644 index 0000000000..7610ed670d --- /dev/null +++ b/docs/netsoft19/index.html @@ -0,0 +1,766 @@ + + + + + + +IEEE NetSoft/S4SI 2019 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures

+ +

Agenda

+ +

Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping

+ +

DOI:10.1109/NETSOFT.2019.8806686

+ +
    +
  • José Castillo Lema, Universidade de São Paulo, Brazil
  • +
  • Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil
  • +
  • Flavio de Oliveira Silva, Federal University of Uberlândia, Brazil
  • +
  • Sergio Kofuji, Universidade de São Paulo, Brazil
  • +
+ +

Cite this

+ +

Plain text

+

J. Castillo-Lema, A. Venâncio Neto, F. de Oliveira and S. Takeo Kofuji, “Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping”, 2019 IEEE Conference on Network Softwarization (NetSoft), Paris, France, 2019, pp. 506-512, doi: 10.1109/NETSOFT.2019.8806686.

+ +

BibTeX

+
@INPROCEEDINGS{8806686,
+  author={J. {Castillo-Lema} and A. {Venâncio Neto} and F. {de Oliveira} and S. {Takeo Kofuji}},
+  booktitle={2019 IEEE Conference on Network Softwarization (NetSoft)},
+  title={Mininet-NFV: Evolving Mininet with OASIS TOSCA NVF profiles Towards Reproducible NFV Prototyping},
+  year={2019},
+  volume={},
+  number={},
+  pages={506-512}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/netsoft23/index.html b/docs/netsoft23/index.html new file mode 100644 index 0000000000..45f7966a3e --- /dev/null +++ b/docs/netsoft23/index.html @@ -0,0 +1,772 @@ + + + + + + +NetSoft 2023 - Network Softwarization in the Era of Complexity - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +
+ + +
+ + + +

+ +

About

+ +

The 9th IEEE International Conference on Network Softwarization (IEEE NetSoft 2023) will be held in Madrid, Spain from June 19 to June 23, 2023. The conference will be hosted by University Carlos III of Madrid, one of the best Spanish universities in many technical areas, in its downtown campus in Madrid.

+ +

The theme of the IEEE NetSoft 2023 Boosting Future Networks through Advanced Softwarization reflects the vision that future networks will also integrate a native service dimension in a continuum compute-connectivity environment crossing different network segments/providers/domains and enabled by softwarization coupled with new advanced architectures, frameworks, and models. This will allow greater flexibility, reliability, adaptability, and efficiency for both network operations and service deployments for the benefit of an ecosystem of different application layers/developers/components. This will also lay the foundation to head beyond the current inter-networking capabilities in Future Internet architectures and to further convergence between internetworking and IP layer re-engineering.

+ +

As in previous events, the IEEE NetSoft 2023 will showcase the latest research and development results from academia and industry in the area of AI/ML, SDN/NFV, edge/fog networking, management and orchestration, network slicing, energy efficiency, cloud-native deployments, security among others promising research areas in the context of Future Internet with the final aim of enabling an open softwarized network environment featured by full automation and autonomicity, native network slicing, and AI-based and dynamic control, management and orchestration.

+ +

IEEE NetSoft 2023 will feature an intense five-day conference program. The core of the conference will run from June 20 to June 22 and will feature inspiring Keynote Talks delivered by world-class researchers and industry representatives. It also includes a Distinguished Expert Panel, Technical Sessions, as well as Demos showcasing prototypes and proof-of-concept implementations of ongoing research ideas. On June 19 and June 23, the program includes workshops and tutorials that will provide the opportunity to deep dive into the focused topics on network softwarization. In addition, in this edition for the first time a PhD symposium will take place to engage PhD students in the vibrant NetSoft community and give them the opportunity to exchange ideas and receive valuable and constructive feedback for PhD work.

+ +

Network Softwarization in the Era of Complexity

+ +

The IEEE International Conference on Network Softwarization (NetSoft) has a long-standing tradition of hosting a Distinguished Expert Panel (DEP) at the end of the three main conference days. The DEP offers the audience the possibility to hear the opinions and visions of renowned experts coming from academia, industry, and government agencies on the most relevant aspects of network softwarization, as well as to actively interact with them.

+ +

The NetSoft 2023 conference theme (Boosting Future Networks through Advanced Softwarization) reflects the vision of networks characterized by unprecedented levels of complexity, which can be dealt with only through the flexibility, reliability, efficiency, and abstraction capabilities offered by network softwarization and its advanced architectures, frameworks, and models. How to approach such complexity from a perspective that has practical implications on industry and society, taking advantage of the pervasiveness of communications and their evolution toward intelligent paradigms, will be discussed in the NetSoft 2023 DEP, scheduled on Thursday, June 22.

+ +

The panel will be centered on the topic Network Softwarization in the Era of Complexity and the discussion will continue on two interesting subtopics: Industrialization of Network Softwarization and Network Softwarization: Pervasiveness and Intelligence. Champions from industry and academia will present their views and introduce the challenges, stimulating the participation of the other panelists as well as the audience.

+ +

Panelists

+
    +
  • Rui Aguiar, IT Aveiro, Portugal
  • +
  • Javier Antich Romaguera, Selector AI, Spain
  • +
  • Jose Castillo Lema, Red Hat, Spain
  • +
  • Abhimanyu Gosain, Northeastern University, USA
  • +
  • Ricard Vilalta, CTTC, Spain
  • +
+ +

Co-chairs

+
    +
  • Luis Miguel Contreras Murillo, Telefonica I+D, Spain
  • +
  • Walter Cerroni, University of Bologna, Italy
  • +
+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/networks12/index.html b/docs/networks12/index.html new file mode 100644 index 0000000000..3f4f160739 --- /dev/null +++ b/docs/networks12/index.html @@ -0,0 +1,765 @@ + + + + + + +NETWORKS 2012 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS)

+ +

Proceedings

+ +

Applying over-provisioning centric resource control in context-sensitive networks

+ +

DOI:10.1109/NETWKS.2012.6381689

+ +
    +
  • J. Castillo-Lema (Computer Engineering, Universidade da Coruña, Spain)
  • +
  • E. Cruz (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil)
  • +
  • A. Neto (Teleinformatics Engineering, Federal University of Ceará, Fortaleza, Brazil)
  • +
  • S. Sargento (Institute of Telecommunications, University of Aveiro, Portugal)
  • +
  • E. Cerqueira (Computer Engineering, Federal University of Para (UFPA), Belém-PA, Brazil)
  • +
+ +

Cite this

+ +

Plain text

+ +

J. Castillo-Lema, E. Cruz, A. Neto, S. Sargento and E. Cerqueira, “Applying over-provisioning centric resource control in context-sensitive networks”, 2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS), Rome, 2012, pp. 1-6, doi: 10.1109/NETWKS.2012.6381689.

+ +

BibTeX

+ +
@INPROCEEDINGS {6381689,
+  author={J. {Castillo-Lema} and E. {Cruz} and A. {Neto} and S. {Sargento} and E. {Cerqueira}},
+  booktitle={2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS)},
+  title={Applying over-provisioning centric resource control in context-sensitive networks},
+  year={2012},
+  volume={},
+  number={},
+  pages={1-6}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/newyear/index.html b/docs/newyear/index.html new file mode 100644 index 0000000000..c390714458 --- /dev/null +++ b/docs/newyear/index.html @@ -0,0 +1,727 @@ + + + + + + +Happy new year! - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/newyear22/index.html b/docs/newyear22/index.html new file mode 100644 index 0000000000..e07b8796ac --- /dev/null +++ b/docs/newyear22/index.html @@ -0,0 +1,727 @@ + + + + + + +Happy new year! - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/newyear23/index.html b/docs/newyear23/index.html new file mode 100644 index 0000000000..e328071424 --- /dev/null +++ b/docs/newyear23/index.html @@ -0,0 +1,723 @@ + + + + + + +Happy new year! - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ocp43-on-rhosp13/index.html b/docs/ocp43-on-rhosp13/index.html new file mode 100644 index 0000000000..48a7b42a98 --- /dev/null +++ b/docs/ocp43-on-rhosp13/index.html @@ -0,0 +1,945 @@ + + + + + + +OpenShift 4.3 on RHOSP 13: Installation and Integrations - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +
+ + +
+ + + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octavia TBD).

+ +

Prerequisites

+
    +
  • This was not a disconnected environment. Note that virtual machines have to be born with proper DNS configuration for OpenShift to download proper CoreOS images (NeutronDhcpAgentDnsmasqDnsServer parameter from Director).
  • +
  • On Ceph RGW, the account in url option must be enabled (rgw_swift_account_in_url: true parameter from Director).
  • +
+ +

Installation

+

Following official documentation: https://access.redhat.com/documentation/en-us/openshift_container_platform/4.3/html-single/installing_on_openstack/index

+ +

Prepared a bastion server within the OpenShift project for convenience, downloaded into it the OpenStack credentials file and added the password into it.

+
[cloud-user@bastion ~]$ ./openshift-install create install-config --dir=installationDoc
+? SSH Public Key /home/cloud-user/.ssh/id_rsa.pub
+? Platform openstack
+? Cloud openstack
+? ExternalNetwork public
+? APIFloatingIPAddress 192.168.226.42
+? FlavorName openshift
+? Base Domain openshift.com.br
+? Cluster Name lab01
+? Pull Secret [? for help] ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

The resulting configuration:

+
[cloud-user@bastion ~]$ cat installationDoc/install-config.yaml
+apiVersion: v1
+baseDomain: openshift.com.br
+compute:
+- hyperthreading: Enabled
+  name: worker
+  platform: {}
+  replicas: 1
+controlPlane:
+  hyperthreading: Enabled
+  name: master
+  platform: {}
+  replicas: 1
+metadata:
+  creationTimestamp: null
+  name: lab01
+networking:
+  clusterNetwork:
+  - cidr: 10.128.0.0/14
+    hostPrefix: 23
+  machineCIDR: 10.0.0.0/16
+  networkType: OpenShiftSDN
+  serviceNetwork:
+  - 172.30.0.0/16
+platform:
+  openstack:
+    cloud: openstack
+    computeFlavor: openshift
+    externalDNS: null
+    externalNetwork: public
+    lbFloatingIP: 192.168.226.42
+    octaviaSupport: "0"
+    region: ""
+    trunkSupport: "1"
+publish: External
+pullSecret: '{"auths":{"cloud.openshift.com":{"auth”:”abc==","email":"jlema@redhat.com"},"quay.io":{"auth”:”abc==","email":"jlema@redhat.com"},"registry.connect.redhat.com":{"auth”:”abc==”,”email":"jlema@redhat.com"},"registry.redhat.io":{"auth”:”abc==,”,”email":"jlema@redhat.com"}}}'
+sshKey: |
+  ssh-rsa abc== cloud-user@bastion‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

As opposed to what the documentation says regarding the number of replicas (a positive integer greater than or equal to 3 for control nodes and greater to 2 for worker nodes), the installation actually works with 1 control node and 1 worker.

+ +

Proceed with the actual installation:

+
[cloud-user@bastion ~]$ ./openshift-install create cluster --dir=installationDoc --log-level=debug ‍‍‍‍‍‍‍
+First try we got this error:
+...
+INFO Creating infrastructure resources...
+...
+
+INFO Waiting up to 30m0s for the Kubernetes API at https://api.lab01.openshift.oss.timbrasil.com.br:6443...
+ERROR Attempted to gather ClusterOperator status after installation failure: listing
+INFO Pulling debug logs from the bootstrap machine
+ERROR Attempted to gather debug logs after installation failure: failed to create SSH client, ensure the proper ssh key is in your keyring or specify with --key: dial tcp 192.168.226.40:22: connect: connection refused
+FATAL Bootstrap failed to complete: waiting for Kubernetes API: context deadline exceeded
+
+ +

It was a MTU issue, as our environment has jumbo frames as its default. Actually, there is no way to set MTU in IPI installations, and it was decided to wait to a future feature where you will be able to create your networking in OpenStack and then instruct the installer to use the existing networking resources while still installing with the IPI workflow (something like bring your own network).

+ +

The (not very elegant) solution was to wait for the network creation, and manually configure the MTU, before the virtual machines are created:

+
[cloud-user@bastion ~]$ watch -n 10 openstack network list
+[cloud-user@bastion ~]$ openstack network set --mtu 1400 lab01-n67mh-openshift‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

Another issue we found at this point it is that for some reason the openshift-installer does not use soft anti-affinity policies (different from AWS and from OpenStack UPI installation), and may create all the masters/workers in the same server. The only option to accomplish this would be to define different regions for the nodes, which is not supported from RHOSP side.

+ +

Finally, installation completed: +

+ +

Cinder Integration

+

Worked out of the box:

+
[cloud-user@bastion ~]$ oc get storageClass
+NAME                 TYPE
+standard (default)   kubernetes.io/cinder‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+[cloud-user@bastion ~]$ oc describe storageClass standard
+Name:           standard
+IsDefaultClass: Yes
+Annotations:    storageclass.kubernetes.io/is-default-class=true
+Provisioner:    kubernetes.io/cinder
+Parameters:     <none>
+Events:         <none>‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+[cloud-user@bastion ~]$ oc get -o yaml storageClass standard
+allowVolumeExpansion: true
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+  annotations:
+    storageclass.kubernetes.io/is-default-class: "true"
+  creationTimestamp: 2020-03-24T18:17:11Z
+  name: standard
+  ownerReferences:
+  - apiVersion: v1
+    kind: clusteroperator
+    name: storage
+    uid: 82643882-1e38-4fdd-98c2-fb19636ad003
+  resourceVersion: "10307"
+  selfLink: /apis/storage.k8s.io/v1/storageclasses/standard
+  uid: 7bb9919c-2ea7-4f1d-aedf-111b6c16e68c
+provisioner: kubernetes.io/cinder
+reclaimPolicy: Delete
+volumeBindingMode: WaitForFirstConsumer‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

Create a persistent volume claim from this template:

+
apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+ name: vol-teste-vai
+spec:
+ accessModes:
+  - ReadWriteOnce
+ resources:
+   requests:
+     storage: 10Gi
+ storageClassName: standard‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

As the volumeBindingMode is set to WaitForFirstConsumer, we had to actually attach the PV to a deployment in order to the Cinder volume to be created. For that, we used OpenShift GUI: +

+ +

From OpenShift side:

+
[cloud-user@bastion ~]$ oc get pv
+NAME                                       CAPACITY   ACCESSMODES   RECLAIMPOLICY   STATUS    CLAIM                   STORAGECLASS   REASON    AGE
+pvc-691a2bbb-0d5a-4d2f-94e2-f50708085c7d   10Gi       RWO           Delete          Bound     default/vol-teste-vai   standard                 55s‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

From OpenStack side, the actual Cinder volume created dynamically by OpenShift:

+
(overcloudrc) [cloud-user@bastion ~]$ openstack volume list
++--------------------------------------+--------------------------------------------------------------+-----------+------+-------------+
+| ID                                   | Name                                                         | Status    | Size | Attached to |
++--------------------------------------+--------------------------------------------------------------+-----------+------+-------------+
+| b75c57b4-ea8f-4d73-b0d6-28ab02458842 | lab01-9v54g-dynamic-pvc-691a2bbb-0d5a-4d2f-94e2-f50708085c7d | available |   10 |             |
++--------------------------------------+--------------------------------------------------------------+-----------+------+-------------+‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+ +

Swift Integration

+

Worked out of the box.

+ +

From OpenStack side:

+
(overcloud) [stack@manager ~]$ openstack container list
++----------------------------------------------------------------+
+| Name                                                           |
++----------------------------------------------------------------+
+| lab01-9v54g-image-registry-phbhqxrotxhvfkunvehpebfyeyajvoiirer |
++----------------------------------------------------------------+‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
+
+

We can see the docker registry images inside the container:

+
(overcloud) [stack@manager ~]$ swift list lab01-9v54g-image-registry-phbhqxrotxhvfkunvehpebfyeyajvoiirer | grep registry
+files/docker/registry/v2/blobs/sha256/02/02c05272c8dd4f99d68e12066db506412bef3c460dbb4a587a7cafc8af593e35/data
+files/docker/registry/v2/blobs/sha256/45/455ea8ab06218495bbbcb14b750a0d644897b24f8c5dcf9e8698e27882583412/data
+files/docker/registry/v2/blobs/sha256/46/46fc24a071a44b29a3ba49c94f75a47514a56470d539c9204f3e7688973fc93a/data
+files/docker/registry/v2/blobs/sha256/4a/4abfcf58ff10724f3886be18423f80a481e90c4b258fbecad6ea06917a266003/data
+files/docker/registry/v2/blobs/sha256/56/566b3d0a5bcd5903e86174ab1551a402b1c0dade2aa918d86895516bd2d0dd43/data
+files/docker/registry/v2/blobs/sha256/6d/6d3329d5faa944944d54166b52dd7d11fcb99e6467950b5679095a44346c1cc8/data
+files/docker/registry/v2/blobs/sha256/81/8170b35922ece1799b004d6fe41e253808d47da894197d3c7fe2b49614336fa7/data
+files/docker/registry/v2/blobs/sha256/84/84e620d0abe585d05a7bed55144af0bc5efe083aed05eac1e88922034ddf1ed2/data
+files/docker/registry/v2/blobs/sha256/b5/b57725894ce17afd25fefcef7fdb2467837e85834bf482759b9ca67b261a3724/data
+files/docker/registry/v2/blobs/sha256/bb/bb13d92caffa705f32b8a7f9f661e07ddede310c6ccfa78fb53a49539740e29b/data
+files/docker/registry/v2/repositories/openshift/python/_layers/sha256/455ea8ab06218495bbbcb14b750a0d644897b24f8c5dcf9e8698e27882583412/link
+files/docker/registry/v2/repositories/openshift/python/_layers/sha256/46fc24a071a44b29a3ba49c94f75a47514a56470d539c9204f3e7688973fc93a/link
+files/docker/registry/v2/repositories/openshift/python/_layers/sha256/4abfcf58ff10724f3886be18423f80a481e90c4b258fbecad6ea06917a266003/link
+files/docker/registry/v2/repositories/openshift/python/_layers/sha256/8170b35922ece1799b004d6fe41e253808d47da894197d3c7fe2b49614336fa7/link
+files/docker/registry/v2/repositories/openshift/python/_layers/sha256/84e620d0abe585d05a7bed55144af0bc5efe083aed05eac1e88922034ddf1ed2/link
+files/docker/registry/v2/repositories/openshift/python/_layers/sha256/bb13d92caffa705f32b8a7f9f661e07ddede310c6ccfa78fb53a49539740e29b/link
+files/docker/registry/v2/repositories/openshift/python/_manifests/revisions/sha256/566b3d0a5bcd5903e86174ab1551a402b1c0dade2aa918d86895516bd2d0dd4/‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍link
+
+ +

Keystone Integration

+

Tricky when using self-signed certificates from OpenStack side. Openshift Keystone Identity Provider only works with https keystone endpoints.

+ +

From the other side, there are several issues for deploying OpenShift on top endpoints with self-signed certificates:

+ + +

TBD

+ +

Neutron/Octavia Integration (Kuryr)

+

TBD

+ +

References

+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/onf-webinar-21/index.html b/docs/onf-webinar-21/index.html new file mode 100644 index 0000000000..9ece5bc607 --- /dev/null +++ b/docs/onf-webinar-21/index.html @@ -0,0 +1,783 @@ + + + + + + +Webinar: Working with ONF to transform mobile and broadband networks in LATAM 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Don’t miss this virtual event sponsored by the ONF CALA Ambassador team. In this webinar you will learn about the Open Networking Foundation (ONF), a non-profit, operator-led consortium that is focused on driving transformation of network infrastructure and carrier business models around the world. The ONF serves as the umbrella for a number of projects building solutions for mobile and broadband operators by leveraging network disaggregation, white box economics and open source software to revolutionize the carrier industry.

+ +

Agenda

+ +
    +
  • Introduction +
      +
    • Who is ONF
    • +
    • ONF CALA Team
    • +
    • ONF Open Source Project Ecosystem
    • +
    +
  • +
  • Stratum: thin switch implementing next generation SDN interfaces.
  • +
  • Trellis: multi-purpose leaf-spine fabric supporting distributed access networks, NFV and edge cloud applications.
  • +
  • ODTN: open and disaggregated source data center interconnect solution.
  • +
  • SEBA: lightweight platform that supports a multitude of virtualized access technologies at the edge of the carrier network, including PON, G.Fast and eventually DOCSIS and more.
  • +
  • SD-RAN: Complementary to the O-RAN architecture, it includes a near-real-time RIC (nRT-RIC) and a set of exemplar xApps for controlling the RAN.
  • +
  • Aether: the first open source 5G Connected Edge platform for enabling enterprise digital transformation.
  • +
  • Q&As
  • +
+ +

Join us to learn about ONF and these open source projects and how you can participate in the community. Note that the information covered in both of these webinars will be the same – one will be in Spanish and the other Portuguese.

+ +

Sign-up Now for Live Webinar

+ +

May 11, 11:00am (GMT-5) – in Spanish – REGISTER NOW

+ +

May 13, 11:00am (GMT-3) – in Portuguese – REGISTER NOW

+ +

CALA Ambassador Speakers

+ + + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/onf-webinar/index.html b/docs/onf-webinar/index.html new file mode 100644 index 0000000000..62d9f4d0af --- /dev/null +++ b/docs/onf-webinar/index.html @@ -0,0 +1,739 @@ + + + + + + +Webinar: Working with ONF to transform mobile and broadband networks in LATAM 2020 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Don’t miss this virtual event sponsored by the ONF LATAM Ambassador team. In this webinar you will learn about the Open Networking Foundation (ONF), a non-profit, operator-led consortium that is focused on driving transformation of network infrastructure and carrier business models around the world. The ONF serves as the umbrella for a number of projects building solutions for mobile and broadband operators by leveraging network disaggregation, white box economics and open source software to revolutionize the carrier industry.

+ +

With a robust community of operators, vendors and system integrators, ONF member companies have the opportunity to add their innovations and use cases to solutions that can be inserted into operator PoCs and trials, and be deployed into production networks.

+ +

Join us to learn about the exciting organization, its open source projects and how you can join and participate in the community.

+ +

This webinar will be delivered in Portuguese, Oct 23, 2020 10:00AM BRT. Register here.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/onf/index.html b/docs/onf/index.html new file mode 100644 index 0000000000..c500040aa3 --- /dev/null +++ b/docs/onf/index.html @@ -0,0 +1,779 @@ + + + + + + +Open Networking Foundation - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

Open Networking Foundation

+

+ +

The Open Networking Foundation (ONF) is a non-profit operator led consortium driving transformation of network infrastructure and carrier business models.

+ +

We are an open, collaborative, community of communities. The ONF serves as the umbrella for a number of projects building solutions by leveraging network disaggregation, white box economics, open source software and software defined standards to revolutionize the carrier industry, including among others:

+ +
    +
  • Stratum: thin switch implementing next generation SDN interfaces.
  • +
  • Trellis: multi-purpose leaf-spine fabric supporting distributed access networks, NFV and edge cloud applications.
  • +
  • ODTN: open and disaggregated source data center interconnect solution.
  • +
  • SEBA: lightweight platform that supports a multitude of virtualized access technologies at the edge of the carrier network, including PON, G.Fast and eventually DOCSIS and more.
  • +
  • SD-RAN: Complementary to the O-RAN architecture, it includes a near-real-time RIC (nRT-RIC) and a set of exemplar xApps for controlling the RAN.
  • +
  • Aether: the first open source 5G Connected Edge platform for enabling enterprise digital transformation.
  • +
+ +

ONF Ambassador Program

+

+ +

The ONF Ambassador Program empowers anyone knowledgeable and passionate about ONF projects and initiatives to promote these in their part of the world. The program provides a simple framework and tools to help organize or attend events, recruit and mentor new contributors, and support a local developer community.If you feel that you want to represent and promote ONF, its mission, and projects in your region, and inspire, recruit, and support new contributors, please apply here to become an ONF Ambassador.

+ +

LATAM/CALA Community

+ +

The ONF LATAM/CALA Ambassador team have been delivering spanish and portuguese webinars to talk about ONF and its related open source projects and how you can participate in the community:

+ +

+ + + +

CALA Ambassador Members

+ + + +

Profile

+

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack1-keystone/index.html b/docs/openstack1-keystone/index.html new file mode 100644 index 0000000000..ad09f579ff --- /dev/null +++ b/docs/openstack1-keystone/index.html @@ -0,0 +1,1189 @@ + + + + + + +OpenStack series I: Keystone - Identity Manager - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 1 - OpenStack Keystone

+ +

Identity Manager

+

Usaremos o serviço Keystone para aprender alguns conceitos importantes de autenticação/autorização de usuários:

+
    +
  • projetos
  • +
  • róis
  • +
  • quotas
  • +
  • endpoints
  • +
+ +

Pre-reqs

+ +
    +
  1. Listar os serviços Linux que compõem o Keystone: +
    $ systemctl | grep devstack@keystone
    +devstack@keystone.service                                                                        loaded active running   Devstack devstack@keystone.service
    +
    +
  2. +
  3. Conferir a saúde dos serviços: +
    $ systemctl status devstack@keystone
    +● devstack@keystone.service - Devstack devstack@keystone.service
    +   Loaded: loaded (/etc/systemd/system/devstack@keystone.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Thu 2020-10-01 10:39:31 PDT; 3 days ago
    + Main PID: 862 (uwsgi)
    +   Status: "uWSGI is ready"
    +   CGroup: /system.slice/system-devstack.slice/devstack@keystone.service
    +           ├─862 keystoneuWSGI maste
    +           ├─912 keystoneuWSGI worker
    +           └─914 keystoneuWSGI worker
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: DEBUG keystone.policy.backends.rules [None req-0b250eac-2081-49bb-bf22-f6fc6b232040 None
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: DEBUG keystone.common.authorization [None req-0b250eac-2081-49bb-bf22-f6fc6b232040 None N
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: [pid: 914|app: 0|req: 131/264] 192.168.17.131 () {62 vars in 1401 bytes} [Sun Oct  4 17:1
    +
    +
  4. +
  5. Mostrar os logs do serviço: +
    $ journalctl -f -u devstack@keystone
    +-- Logs begin at Thu 2020-10-01 10:39:16 PDT. --
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: DEBUG keystone.policy.backends.rules [None req-0b250eac-2081-49bb-bf22-f6fc6b232040 None None] enforce identity:validate_token: {'is_delegated_auth': False, 'access_token_id': None, 'user_id': u'e17c0f6e879c4b8d860ec69a2b28ffff', 'roles': [u'ResellerAdmin', u'admin', u'service'], 'user_domain_id': u'default', 'consumer_id': None, 'trustee_id': None, 'is_domain': False, 'is_admin_project': True, 'trustor_id': None, 'token': <KeystoneToken (audit_id=-ZpKXigzR7eMBVPnVEKdFg, audit_chain_id=-ZpKXigzR7eMBVPnVEKdFg) at 0x7f686de864f0>, 'project_id': u'83667b3fd3964824ae4276cfc8610829', 'trust_id': None, 'project_domain_id': u'default'} {{(pid=914) enforce /opt/stack/keystone/keystone/policy/backends/rules.py:33}}
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: DEBUG keystone.common.authorization [None req-0b250eac-2081-49bb-bf22-f6fc6b232040 None None] RBAC: Authorization granted {{(pid=914) check_policy /opt/stack/keystone/keystone/common/authorization.py:240}}
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: [pid: 914|app: 0|req: 131/264] 192.168.17.131 () {62 vars in 1401 bytes} [Sun Oct  4 17:16:40 2020] GET /identity/v3/auth/tokens => generated 4921 bytes in 22 msecs (HTTP/1.1 200) 6 headers in 380 bytes (1 switches on core 0)
    +Oct 04 17:16:40 ubuntu devstack@keystone.service[862]: DEBUG keystone.middleware.auth [None req-08e49b2e-1253-43d8-8810-83c8d135eab4 None None] Authenticating user token {{(pid=912) process_request /usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token/__init__.py:400}}
    +...
    +
    +
  6. +
  7. Mostrar o arquivo de configuração: +
    $ less /etc/keystone/keystone.conf
    +
    +
  8. +
  9. Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: +
    $ source devstack/openrc admin
    +WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +    
    +$ env | grep OS_
    +OS_PROJECT_DOMAIN_ID=default
    +OS_REGION_NAME=RegionOne
    +OS_USER_DOMAIN_ID=default
    +OS_PROJECT_NAME=demo
    +OS_IDENTITY_API_VERSION=3
    +OS_PASSWORD=nomoresecret
    +OS_AUTH_TYPE=password
    +OS_AUTH_URL=http://192.168.17.131/identity
    +OS_USERNAME=admin
    +OS_TENANT_NAME=demo
    +OS_VOLUME_API_VERSION=2
    +
    +
  10. +
  11. Listar os módulos instalados no OpenStack: +
    $ openstack service list
    ++----------------------------------+-------------+----------------+
    +| ID                               | Name        | Type           |
    ++----------------------------------+-------------+----------------+
    +| 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    +| 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    +| 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    +| 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    +| 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    +| 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    +| 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    +| 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    +| 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    +| cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    +| d8b098869281469bbd90bbc762aad340 | glance      | image          |
    +| fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    ++----------------------------------+-------------+----------------+
    +
    +
  12. +
  13. Mostrar todas as opções para um comando determinado do OpenStack (neste caso openstack service, mas serve para qualquer um): +
    $ openstack service --help
    +Command "service" matches:
    +  service create
    +  service delete
    +  service list
    +  service provider create
    +  service provider delete
    +  service provider list
    +  service provider set
    +  service provider show
    +  service set
    +  service show
    +
    +
  14. +
+ +

Endpoints

+ +
    +
  1. Mostrar a saída de um comando de OpenStack em formato estendido (neste caso openstack service list, mas tem muitos outros que também aceitam): +
    $ openstack service list --long
    ++----------------------------------+-------------+----------------+-----------------------------------+---------+
    +| ID                               | Name        | Type           | Description                       | Enabled |
    ++----------------------------------+-------------+----------------+-----------------------------------+---------+
    +| 14776d964367470ea97ae0f0395be6de | neutron     | network        | Neutron Service                   | True    |
    +| 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         | Cinder Volume Service             | True    |
    +| 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy | Nova Compute Service (Legacy 2.0) | True    |
    +| 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      | Placement Service                 | True    |
    +| 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |                                   | True    |
    +| 5f271b049588412d8e0a11b2fea5469c | nova        | compute        | Nova Compute Service              | True    |
    +| 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       | Cinder Volume Service V2          | True    |
    +| 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       | Cinder Volume Service V3          | True    |
    +| 82020edd889243c2ac97416014376f12 | swift       | object-store   | Swift Service                     | True    |
    +| cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation | Heat CloudFormation Service       | True    |
    +| d8b098869281469bbd90bbc762aad340 | glance      | image          | Glance Image Service              | True    |
    +| fc980824a1954be882a9af7591f78e99 | heat        | orchestration  | Heat Orchestration Service        | True    |
    ++----------------------------------+-------------+----------------+-----------------------------------+---------+
    +
    +
  2. +
  3. Mostrar os endpoints dos módulos instalados no OpenStack: +
    $ openstack catalog list
    ++-------------+----------------+--------------------------------------------------------------------------------+
    +| Name        | Type           | Endpoints                                                                      |
    ++-------------+----------------+--------------------------------------------------------------------------------+
    +| neutron     | network        | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131:9696/                                          |
    +|             |                |                                                                                |
    +| cinder      | volume         | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/volume/v1/faac34f01fb2464295bcea501b18b741     |
    +|             |                |                                                                                |
    +| nova_legacy | compute_legacy | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/compute/v2/faac34f01fb2464295bcea501b18b741    |
    +|             |                |                                                                                |
    +| placement   | placement      | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/placement                                      |
    +|             |                |                                                                                |
    +| keystone    | identity       | RegionOne                                                                      |
    +|             |                |   admin: http://192.168.17.131/identity                                        |
    +|             |                | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/identity                                       |
    +|             |                |                                                                                |
    +| nova        | compute        | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/compute/v2.1                                   |
    +|             |                |                                                                                |
    +| cinderv2    | volumev2       | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/volume/v2/faac34f01fb2464295bcea501b18b741     |
    +|             |                |                                                                                |
    +| cinderv3    | volumev3       | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/volume/v3/faac34f01fb2464295bcea501b18b741     |
    +|             |                |                                                                                |
    +| swift       | object-store   | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131:8080/v1/AUTH_faac34f01fb2464295bcea501b18b741  |
    +|             |                | RegionOne                                                                      |
    +|             |                |   admin: http://192.168.17.131:8080                                            |
    +|             |                |                                                                                |
    +| heat-cfn    | cloudformation | RegionOne                                                                      |
    +|             |                |   internal: http://192.168.17.131/heat-api-cfn/v1                              |
    +|             |                | RegionOne                                                                      |
    +|             |                |   admin: http://192.168.17.131/heat-api-cfn/v1                                 |
    +|             |                | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/heat-api-cfn/v1                                |
    +|             |                |                                                                                |
    +| glance      | image          | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/image                                          |
    +|             |                |                                                                                |
    +| heat        | orchestration  | RegionOne                                                                      |
    +|             |                |   internal: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741 |
    +|             |                | RegionOne                                                                      |
    +|             |                |   admin: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741    |
    +|             |                | RegionOne                                                                      |
    +|             |                |   public: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741   |
    +|             |                |                                                                                |
    ++-------------+----------------+--------------------------------------------------------------------------------+
    +
    +
  4. +
  5. Mostrar informação sobre um endpoint específico: +
    $ openstack catalog show identity
    ++-----------+------------------------------------------+
    +| Field     | Value                                    |
    ++-----------+------------------------------------------+
    +| endpoints | RegionOne                                |
    +|           |   admin: http://192.168.17.131/identity  |
    +|           | RegionOne                                |
    +|           |   public: http://192.168.17.131/identity |
    +|           |                                          |
    +| id        | 5d8f64102deb4f62a559776a899cb63e         |
    +| name      | keystone                                 |
    +| type      | identity                                 |
    ++-----------+------------------------------------------+
    +
    +
  6. +
+ +

Projetos, usuários e róis

+ +
    +
  1. Listar os projetos: +
    $ openstack project list
    ++----------------------------------+--------------------+
    +| ID                               | Name               |
    ++----------------------------------+--------------------+
    +| 2c8b4728bc734b8494cf6063a1e6a9b9 | swiftprojecttest4  |
    +| 3a44ca9b3f1443ec991fc5f3c04e6550 | admin              |
    +| 429e48adaf69425a8f70a05428c7186d | invisible_to_admin |
    +| 7997a29ad48643049a0e6940b84ca332 | swiftprojecttest1  |
    +| 83667b3fd3964824ae4276cfc8610829 | service            |
    +| bf12878841014a839254265091e5abe6 | alt_demo           |
    +| f99e64fd5bbb4c8099e97e441f5dddf6 | swiftprojecttest2  |
    +| faac34f01fb2464295bcea501b18b741 | demo               |
    ++----------------------------------+--------------------+
    +
    +
  2. +
  3. Criar um projeto e conferir que foi criado: +
    $ openstack project create --description "Projeto FIAP" fiap
    ++-------------+----------------------------------+
    +| Field       | Value                            |
    ++-------------+----------------------------------+
    +| description | Projeto FIAP                     |
    +| domain_id   | default                          |
    +| enabled     | True                             |
    +| id          | 0cdadaa5b492416f88a5379e110392cb |
    +| is_domain   | False                            |
    +| name        | fiap                             |
    +| parent_id   | default                          |
    ++-------------+----------------------------------+
    +    
    +$ openstack project list
    ++----------------------------------+--------------------+
    +| ID                               | Name               |
    ++----------------------------------+--------------------+
    +| 2c8b4728bc734b8494cf6063a1e6a9b9 | swiftprojecttest4  |
    +| 3a44ca9b3f1443ec991fc5f3c04e6550 | admin              |
    +| 429e48adaf69425a8f70a05428c7186d | invisible_to_admin |
    +| 51d9f2de8a974698a0f8f42dd1e395c2 | fiap               |
    +| 7997a29ad48643049a0e6940b84ca332 | swiftprojecttest1  |
    +| 83667b3fd3964824ae4276cfc8610829 | service            |
    +| bf12878841014a839254265091e5abe6 | alt_demo           |
    +| f99e64fd5bbb4c8099e97e441f5dddf6 | swiftprojecttest2  |
    +| faac34f01fb2464295bcea501b18b741 | demo               |
    ++----------------------------------+--------------------+
    +    
    +$ openstack project list  | grep fiap
    +| 51d9f2de8a974698a0f8f42dd1e395c2 | fiap               |
    +
    +
  4. +
  5. Mostrar o projeto recém criado: +
    $ openstack project show fiap
    ++-------------+----------------------------------+
    +| Field       | Value                            |
    ++-------------+----------------------------------+
    +| description | Projeto FIAP                     |
    +| domain_id   | default                          |
    +| enabled     | True                             |
    +| id          | 51d9f2de8a974698a0f8f42dd1e395c2 |
    +| is_domain   | False                            |
    +| name        | fiap                             |
    +| parent_id   | default                          |
    ++-------------+----------------------------------+
    +
    +
  6. +
  7. Criar um usuário: +
    $ openstack user create --password-prompt aluno-fiap
    +User Password:
    +Repeat User Password:
    ++---------------------+----------------------------------+
    +| Field               | Value                            |
    ++---------------------+----------------------------------+
    +| domain_id           | default                          |
    +| enabled             | True                             |
    +| id                  | 46ca1d0eb6f44c9faeb83c44f2c7e17b |
    +| name                | aluno-fiap                       |
    +| options             | {}                               |
    +| password_expires_at | None                             |
    ++---------------------+----------------------------------+
    +
    +
  8. +
  9. Listar os róis: +
    $ openstack role list
    ++----------------------------------+-----------------+
    +| ID                               | Name            |
    ++----------------------------------+-----------------+
    +| 146e0c64a8934561a6431ed3d8eae8e4 | Member          |
    +| 178aa4dd963546c5b3817dfa83be4f5e | anotherrole     |
    +| 5e66e0a80e7a4b7fb0a363c16e8ad9f7 | heat_stack_user |
    +| 783926282c054f1aa0e16794754cebfa | service         |
    +| 9fe2ff9ee4384b1894a90878d3e92bab | _member_        |
    +| e2c1c5a8dde74ec99e7bfa8186c48c6a | admin           |
    +| ec2d6b8e586b4e149c4527dc104ffbf6 | ResellerAdmin   |
    ++----------------------------------+-----------------+
    +
    +
  10. +
  11. Associar o usuário com o projeto como membro: +
    $ openstack role add --project fiap --user aluno-fiap Member
    +
    +
  12. +
  13. Conferir a designação do rol: +
    $ openstack role assignment list --project fiap
    ++----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    +| Role                             | User                             | Group | Project                          | Domain | Inherited |
    ++----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    +| 146e0c64a8934561a6431ed3d8eae8e4 | 46ca1d0eb6f44c9faeb83c44f2c7e17b |       | 51d9f2de8a974698a0f8f42dd1e395c2 |        | False     |
    ++----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    +
    +
  14. +
+ +

Quotas

+ +
    +
  1. Mostrar as quotas do projeto: +
    $ openstack quota show fiap
    ++-----------------------+----------------------------------+
    +| Field                 | Value                            |
    ++-----------------------+----------------------------------+
    +| backup-gigabytes      | 1000                             |
    +| backups               | 10                               |
    +| cores                 | 20                               |
    +| fixed-ips             | -1                               |
    +| floating-ips          | 50                               |
    +| gigabytes             | 1000                             |
    +| gigabytes_lvmdriver-1 | -1                               |
    +| groups                | 10                               |
    +| health_monitors       | None                             |
    +| injected-file-size    | 10240                            |
    +| injected-files        | 5                                |
    +| injected-path-size    | 255                              |
    +| instances             | 10                               |
    +| key-pairs             | 100                              |
    +| l7_policies           | None                             |
    +| listeners             | None                             |
    +| load_balancers        | None                             |
    +| location              | None                             |
    +| name                  | None                             |
    +| networks              | 100                              |
    +| per-volume-gigabytes  | -1                               |
    +| pools                 | None                             |
    +| ports                 | 500                              |
    +| project               | 51d9f2de8a974698a0f8f42dd1e395c2 |
    +| project_name          | fiap                             |
    +| properties            | 128                              |
    +| ram                   | 51200                            |
    +| rbac_policies         | 10                               |
    +| routers               | 10                               |
    +| secgroup-rules        | 100                              |
    +| secgroups             | 10                               |
    +| server-group-members  | 10                               |
    +| server-groups         | 10                               |
    +| snapshots             | 10                               |
    +| snapshots_lvmdriver-1 | -1                               |
    +| subnet_pools          | -1                               |
    +| subnets               | 100                              |
    +| volumes               | 10                               |
    +| volumes_lvmdriver-1   | -1                               |
    ++-----------------------+----------------------------------+
    +
    +
  2. +
  3. Atualizar a quota de cores e comprovar que foi aplicada: +
    $ openstack quota set --cores 30 fiap
    +    
    +$ openstack quota show fiap
    ++-----------------------+----------------------------------+
    +| Field                 | Value                            |
    ++-----------------------+----------------------------------+
    +| backup-gigabytes      | 1000                             |
    +| backups               | 10                               |
    +| cores                 | 30                               |
    +| fixed-ips             | -1                               |
    +| floating-ips          | 50                               |
    +| gigabytes             | 1000                             |
    +| gigabytes_lvmdriver-1 | -1                               |
    +| groups                | 10                               |
    +| health_monitors       | None                             |
    +| injected-file-size    | 10240                            |
    +| injected-files        | 5                                |
    +| injected-path-size    | 255                              |
    +| instances             | 10                               |
    +| key-pairs             | 100                              |
    +| l7_policies           | None                             |
    +| listeners             | None                             |
    +| load_balancers        | None                             |
    +| location              | None                             |
    +| name                  | None                             |
    +| networks              | 100                              |
    +| per-volume-gigabytes  | -1                               |
    +| pools                 | None                             |
    +| ports                 | 500                              |
    +| project               | 51d9f2de8a974698a0f8f42dd1e395c2 |
    +| project_name          | fiap                             |
    +| properties            | 128                              |
    +| ram                   | 51200                            |
    +| rbac_policies         | 10                               |
    +| routers               | 10                               |
    +| secgroup-rules        | 100                              |
    +| secgroups             | 10                               |
    +| server-group-members  | 10                               |
    +| server-groups         | 10                               |
    +| snapshots             | 10                               |
    +| snapshots_lvmdriver-1 | -1                               |
    +| subnet_pools          | -1                               |
    +| subnets               | 100                              |
    +| volumes               | 10                               |
    +| volumes_lvmdriver-1   | -1                               |
    ++-----------------------+----------------------------------+
    +    
    +$ openstack quota show fiap | grep cores
    +| cores                 | 30                               |
    +
    +
  4. +
+ +

Clean-up

+ +
    +
  1. Deletar o projeto e usuário: +
    $ openstack user delete aluno-fiap
    +    
    +$ openstack project delete fiap
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Refazer o mesmo processo via Horizon Dashboard: +
      +
    • Listar endpoints +
    • +
    • Listar projetos
    • +
    • Criar projeto
    • +
    • Criar usuário +
    • +
    • Associar usuário com projeto +
    • +
    • Mostrar quotas de um projeto
    • +
    • Mudar quotas de um projeto
    • +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack2-glance/index.html b/docs/openstack2-glance/index.html new file mode 100644 index 0000000000..777302c11b --- /dev/null +++ b/docs/openstack2-glance/index.html @@ -0,0 +1,997 @@ + + + + + + +OpenStack series II: Glance - Image Service - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 2 - OpenStack Glance

+ +

Image Service

+

Usaremos o serviço Glance para aprender alguns conceitos importantes de imagens/snapshots de máquinas virtuais:

+
    +
  • formatos: qcow2, raw, vmdk, ami, …
  • +
  • conversão entre formatos: ferramenta qemu-img
  • +
  • snapshots
  • +
+ +

Pre-reqs

+ +
    +
  1. Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: +
     $ source devstack/openrc admin
    + WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +    
    + $ env | grep OS_
    + OS_PROJECT_DOMAIN_ID=default
    + OS_REGION_NAME=RegionOne
    + OS_USER_DOMAIN_ID=default
    + OS_PROJECT_NAME=demo
    + OS_IDENTITY_API_VERSION=3
    + OS_PASSWORD=nomoresecret
    + OS_AUTH_TYPE=password
    + OS_AUTH_URL=http://192.168.17.131/identity
    + OS_USERNAME=admin
    + OS_TENANT_NAME=demo
    + OS_VOLUME_API_VERSION=2
    +
    +
  2. +
  3. Listar os serviços Linux que compõem o Glance: +
     $ systemctl | grep devstack@g
    +
    +
  4. +
  5. Conferir a saúde dos serviços: +
     $ systemctl status devstack@g*
    + ● devstack@g-api.service - Devstack devstack@g-api.service
    +    Loaded: loaded (/etc/systemd/system/devstack@g-api.service; enabled; vendor p
    +    Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 2min 19s ago
    +  Main PID: 757 (uwsgi)
    +    Status: "uWSGI is ready"
    +    CGroup: /system.slice/system-devstack.slice/devstack@g-api.service
    +            ├─757 glance-apiuWSGI maste
    +            ├─808 glance-apiuWSGI worker
    +            └─809 glance-apiuWSGI worker
    +
    + ● devstack@g-reg.service - Devstack devstack@g-reg.service
    +    Loaded: loaded (/etc/systemd/system/devstack@g-reg.service; enabled; vendor p
    +    Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 2min 20s ago
    +  Main PID: 750 (glance-registry)
    +    CGroup: /system.slice/system-devstack.slice/devstack@g-reg.service
    +            ├─ 750 /usr/bin/python /usr/local/bin/glance-registry --config-file=/
    +            ├─2287 /usr/bin/python /usr/local/bin/glance-registry --config-file=/
    +            ├─2309 /usr/bin/python /usr/local/bin/glance-registry --config-file=/
    +            ├─2327 /usr/bin/python /usr/local/bin/glance-registry --config-file=/
    +            └─2332 /usr/bin/python /usr/local/bin/glance-registry --config-file=/
    +
    +
  6. +
  7. Mostrar os logs do serviço: +
     $ journalctl -u devstack@g-api
    +
    +
  8. +
  9. Mostrar os arquivos de configuração: +
     $ less /etc/glance/glance-api.conf
    +    
    + $ less /etc/glance/policy.json
    +
    +
  10. +
  11. Listar os módulos instalados no OpenStack: +
     $ openstack service list
    + +----------------------------------+-------------+----------------+
    + | ID                               | Name        | Type           |
    + +----------------------------------+-------------+----------------+
    + | 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    + | 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    + | 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    + | 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    + | 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    + | 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    + | 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    + | 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    + | 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    + | cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    + | d8b098869281469bbd90bbc762aad340 | glance      | image          |
    + | fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    + +----------------------------------+-------------+----------------+
    +    
    + $ openstack service show glance
    + +-------------+----------------------------------+
    + | Field       | Value                            |
    + +-------------+----------------------------------+
    + | description | Glance Image Service             |
    + | enabled     | True                             |
    + | id          | d8b098869281469bbd90bbc762aad340 |
    + | name        | glance                           |
    + | type        | image                            |
    + +-------------+----------------------------------+
    +
    +
  12. +
+ +

Imagens

+ +
    +
  1. Mostrar informação sobre a imagem (se encontra na pasta HOME do usuário): +
     $ qemu-img info xenial-server-cloudimg-amd64-disk1.img
    + image: xenial-server-cloudimg-amd64-disk1.img
    + file format: qcow2
    + virtual size: 2.2G (2361393152 bytes)
    + disk size: 277M
    + cluster_size: 65536
    + Format specific information:
    +     compat: 0.10
    +     refcount bits: 16
    +
    +
  2. +
  3. Converter a imagem de formato qcow2 a formato raw: +
     $ qemu-img convert -f qcow2 -O raw xenial-server-cloudimg-amd64-disk1.img xenial-server-cloudimg-amd64-disk1.raw
    +
    +
  4. +
  5. Listar as duas imagens e conferir a diferencia de tamanho: +
     $ ls -lh xenial-server-cloudimg-amd64-disk1.*
    + -rw-rw-r-- 1 os os 277M Mar 13  2018 xenial-server-cloudimg-amd64-disk1.img
    + -rw-r--r-- 1 os os 2.2G Oct 19 11:27 xenial-server-cloudimg-amd64-disk1.raw
    +
    +
  6. +
  7. Subir a imagem para o OpenStack: +
    $ openstack image create --file xenial-server-cloudimg-amd64-disk1.img --disk-format qcow2 --public ubuntu-xenial
    ++------------------+------------------------------------------------------+
    +| Field            | Value                                                |
    ++------------------+------------------------------------------------------+
    +| checksum         | e924d1602ff88edca0a02e2ff129a810                     |
    +| container_format | bare                                                 |
    +| created_at       | 2020-10-19T18:31:17Z                                 |
    +| disk_format      | qcow2                                                |
    +| file             | /v2/images/029010d7-d0a1-429a-a6e7-79bec998bfb7/file |
    +| id               | 029010d7-d0a1-429a-a6e7-79bec998bfb7                 |
    +| min_disk         | 0                                                    |
    +| min_ram          | 0                                                    |
    +| name             | ubuntu-xenial                                        |
    +| owner            | faac34f01fb2464295bcea501b18b741                     |
    +| protected        | False                                                |
    +| schema           | /v2/schemas/image                                    |
    +| size             | 289996800                                            |
    +| status           | active                                               |
    +| tags             |                                                      |
    +| updated_at       | 2020-10-19T18:31:22Z                                 |
    +| virtual_size     | None                                                 |
    +| visibility       | public                                               |
    ++------------------+------------------------------------------------------+
    +
    + +

    Se o paso anterior der o seguinte erro:

    +
    $ openstack image create --file xenial-server-cloudimg-amd64-disk1.img --disk-format qcow2 --public ubuntu-xenial
    +502 Bad Gateway: Bad Gateway: The proxy server received an invalid: response from an upstream server.: Apache/2.4.18 (Ubuntu) Server at 192.168.17.131 Port 80 (HTTP 502)
    +
    + +

    Provavelmente a VM do DevStack foi restartada. Para concertar o Swift (backend do Glance):

    +
    $ sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8 /opt/stack/data/drives/images/swift.img /opt/stack/data/drives/sdb1
    +
    + +

    Tentar de novo o comando de criação de imagem.

    +
  8. +
  9. Listar as imagens que se encontram no ambiente e conferir o estado: +
    $ openstack image list
    ++--------------------------------------+--------------------------+--------+
    +| ID                                   | Name                     | Status |
    ++--------------------------------------+--------------------------+--------+
    +| cd992dd3-2197-49fe-9f0e-43d783d18a5c | cirros-0.3.5-x86_64-disk | active |
    +| 029010d7-d0a1-429a-a6e7-79bec998bfb7 | ubuntu-xenial            | active |
    ++--------------------------------------+--------------------------+--------+
    +
    +
  10. +
  11. Mostrar a informação sobre a imagem: +
    $ openstack image show ubuntu-xenial
    ++------------------+------------------------------------------------------+
    +| Field            | Value                                                |
    ++------------------+------------------------------------------------------+
    +| checksum         | e924d1602ff88edca0a02e2ff129a810                     |
    +| container_format | bare                                                 |
    +| created_at       | 2020-10-19T18:31:17Z                                 |
    +| disk_format      | qcow2                                                |
    +| file             | /v2/images/029010d7-d0a1-429a-a6e7-79bec998bfb7/file |
    +| id               | 029010d7-d0a1-429a-a6e7-79bec998bfb7                 |
    +| min_disk         | 0                                                    |
    +| min_ram          | 0                                                    |
    +| name             | ubuntu-xenial                                        |
    +| owner            | faac34f01fb2464295bcea501b18b741                     |
    +| protected        | False                                                |
    +| schema           | /v2/schemas/image                                    |
    +| size             | 289996800                                            |
    +| status           | active                                               |
    +| tags             |                                                      |
    +| updated_at       | 2020-10-19T18:31:22Z                                 |
    +| virtual_size     | None                                                 |
    +| visibility       | public                                               |
    ++------------------+------------------------------------------------------+
    +
    +
  12. +
  13. Colocar um metadato na imagem e conferir que foi aplicado na mesma: +
    $ openstack image set ubuntu-xenial --property os_name=linux
    +    
    +$ openstack image show ubuntu-xenial
    ++------------------+------------------------------------------------------+
    +| Field            | Value                                                |
    ++------------------+------------------------------------------------------+
    +| checksum         | e924d1602ff88edca0a02e2ff129a810                     |
    +| container_format | bare                                                 |
    +| created_at       | 2020-10-19T18:31:17Z                                 |
    +| disk_format      | qcow2                                                |
    +| file             | /v2/images/029010d7-d0a1-429a-a6e7-79bec998bfb7/file |
    +| id               | 029010d7-d0a1-429a-a6e7-79bec998bfb7                 |
    +| min_disk         | 0                                                    |
    +| min_ram          | 0                                                    |
    +| name             | ubuntu-xenial                                        |
    +| owner            | faac34f01fb2464295bcea501b18b741                     |
    +| properties       | os_name='linux'                                      |
    +| protected        | False                                                |
    +| schema           | /v2/schemas/image                                    |
    +| size             | 289996800                                            |
    +| status           | active                                               |
    +| tags             |                                                      |
    +| updated_at       | 2020-10-19T18:32:17Z                                 |
    +| virtual_size     | None                                                 |
    +| visibility       | public                                               |
    ++------------------+------------------------------------------------------+
    +    
    +$ openstack image show ubuntu-xenial | grep prop
    +| properties       | os_name='linux'                                      |
    +
    +
  14. +
+ +

Clean-up

+ +
    +
  1. Deletar a imagem: +
    $ openstack image delete ubuntu-xenial
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Repetir o processo via Horizon Dashboard, criação de imagem e assignação de metadatos:: +
      +
    • Criação de imagem
    • +
    • Assinação de metadata + +
    • +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack3-nova/index.html b/docs/openstack3-nova/index.html new file mode 100644 index 0000000000..c9e1be6501 --- /dev/null +++ b/docs/openstack3-nova/index.html @@ -0,0 +1,1511 @@ + + + + + + +OpenStack series III: Nova - Compute Service - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 27 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 3 - OpenStack Nova

+ +

Compute Service

+

Usaremos o serviço Nova para aprender alguns conceitos importantes sobre máquinas virtuais:

+ + +

Pre-reqs

+ +
    +
  1. Conferir se as extensões de virtualizações estão presentes no processador: +
     $ grep -E ' svm | vmx ' /proc/cpuinfo
    +
    +
  2. +
  3. Listar os serviços Linux que compõem o Nova: +
    $ systemctl | grep devstack@n
    +devstack@n-api-meta.service                                                                      loaded active running   Devstack devstack@n-api-meta.service
    +devstack@n-api.service                                                                           loaded active running   Devstack devstack@n-api.service
    +devstack@n-cauth.service                                                                         loaded active running   Devstack devstack@n-cauth.service
    +devstack@n-cond-cell1.service                                                                    loaded active running   Devstack devstack@n-cond-cell1.service
    +devstack@n-cpu.service                                                                           loaded active running   Devstack devstack@n-cpu.service
    +devstack@n-novnc.service                                                                         loaded active running   Devstack devstack@n-novnc.service
    +devstack@n-sch.service                                                                           loaded active running   Devstack devstack@n-sch.service
    +devstack@n-super-cond.service                                                                    loaded active running   Devstack devstack@n-super-cond.service
    +
    +
  4. +
  5. Conferir a saúde dos serviços: +
    $ systemctl status devstack@n*
    +● devstack@n-cauth.service - Devstack devstack@n-cauth.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-cauth.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 798 (nova-consoleaut)
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-cauth.service
    +           └─798 /usr/bin/python /usr/local/bin/nova-consoleauth --config-file /etc/nova/nova.conf
    +               
    +● devstack@n-sch.service - Devstack devstack@n-sch.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-sch.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 848 (nova-scheduler)
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-sch.service
    +           └─848 /usr/bin/python /usr/local/bin/nova-scheduler --config-file /etc/nova/nova.conf
    +               
    +● devstack@n-novnc.service - Devstack devstack@n-novnc.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-novnc.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 861 (nova-novncproxy)
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-novnc.service
    +           └─861 /usr/bin/python /usr/local/bin/nova-novncproxy --config-file /etc/nova/nova.conf --web /opt/stack/noV
    +               
    +● devstack@n-super-cond.service - Devstack devstack@n-super-cond.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-super-cond.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 749 (nova-conductor)
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-super-cond.service
    +           ├─ 749 /usr/bin/python /usr/local/bin/nova-conductor --config-file /etc/nova/nova.conf
    +           ├─2363 /usr/bin/python /usr/local/bin/nova-conductor --config-file /etc/nova/nova.conf
    +           └─2368 /usr/bin/python /usr/local/bin/nova-conductor --config-file /etc/nova/nova.conf
    +               
    +● devstack@n-cond-cell1.service - Devstack devstack@n-cond-cell1.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-cond-cell1.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 752 (nova-conductor)
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-cond-cell1.service
    +           ├─ 752 /usr/bin/python /usr/local/bin/nova-conductor --config-file /etc/nova/nova_cell1.conf
    +           ├─2365 /usr/bin/python /usr/local/bin/nova-conductor --config-file /etc/nova/nova_cell1.conf
    +           └─2370 /usr/bin/python /usr/local/bin/nova-conductor --config-file /etc/nova/nova_cell1.conf
    +               
    +● devstack@n-api-meta.service - Devstack devstack@n-api-meta.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-api-meta.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 770 (uwsgi)
    +   Status: "uWSGI is ready"
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-api-meta.service
    +           ├─770 nova-api-metauWSGI maste
    +           ├─877 nova-api-metauWSGI worker
    +           ├─878 nova-api-metauWSGI worker
    +           └─879 nova-api-metauWSGI http
    +    
    +● devstack@n-api.service - Devstack devstack@n-api.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-api.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 746 (uwsgi)
    +   Status: "uWSGI is ready"
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-api.service
    +           ├─746 nova-apiuWSGI maste
    +           ├─839 nova-apiuWSGI worker
    +           └─841 nova-apiuWSGI worker
    +               
    +● devstack@n-cpu.service - Devstack devstack@n-cpu.service
    +   Loaded: loaded (/etc/systemd/system/devstack@n-cpu.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 15min ago
    + Main PID: 769 (nova-compute)
    +   CGroup: /system.slice/system-devstack.slice/devstack@n-cpu.service
    +           └─769 /usr/bin/python /usr/local/bin/nova-compute --config-file /etc/nova/nova-cpu.conf
    +
    +
  6. +
  7. Mostrar os logs do serviço: +
    $ journalctl -u devstack@n*
    +
    +
  8. +
  9. Carregar as credenciais de OpenStack: +
     $ source devstack/openrc admin
    + WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +    
    + $ env | grep OS_
    + OS_PROJECT_DOMAIN_ID=default
    + OS_REGION_NAME=RegionOne
    + OS_USER_DOMAIN_ID=default
    + OS_PROJECT_NAME=demo
    + OS_IDENTITY_API_VERSION=3
    + OS_PASSWORD=nomoresecret
    + OS_AUTH_TYPE=password
    + OS_AUTH_URL=http://192.168.17.131/identity
    + OS_USERNAME=admin
    + OS_TENANT_NAME=demo
    + OS_VOLUME_API_VERSION=2
    +
    +
  10. +
  11. Listar os módulos do OpenStack: +
    $ openstack service list
    ++----------------------------------+-------------+----------------+
    +| ID                               | Name        | Type           |
    ++----------------------------------+-------------+----------------+
    +| 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    +| 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    +| 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    +| 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    +| 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    +| 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    +| 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    +| 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    +| 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    +| cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    +| d8b098869281469bbd90bbc762aad340 | glance      | image          |
    +| fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    ++----------------------------------+-------------+----------------+
    +
    +$ openstack service show nova
    ++-------------+----------------------------------+
    +| Field       | Value                            |
    ++-------------+----------------------------------+
    +| description | Nova Compute Service             |
    +| enabled     | True                             |
    +| id          | 5f271b049588412d8e0a11b2fea5469c |
    +| name        | nova                             |
    +| type        | compute                          |
    ++-------------+----------------------------------+
    +
    +
  12. +
  13. Mostrar o arquivo de configuração: +
    $ less /etc/nova/nova.conf
    +
    +
  14. +
+ +

Hypervisors

+ +
    +
  1. Mostrar os hypervisors disponíveis: +
    $ openstack hypervisor list
    ++----+---------------------+-----------------+----------------+-------+
    +| ID | Hypervisor Hostname | Hypervisor Type | Host IP        | State |
    ++----+---------------------+-----------------+----------------+-------+
    +|  1 | ubuntu              | QEMU            | 192.168.17.131 | up    |
    ++----+---------------------+-----------------+----------------+-------+
    +
    +
  2. +
  3. Mostrar a descrição do hypervisor: +
    $ openstack hypervisor show ubuntu
    ++----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    +| Field                | Value                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    ++----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    +| aggregates           | []                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    +| cpu_info             | {"vendor": "Intel", "model": "IvyBridge", "arch": "x86_64", "features": ["pge", "avx", "clflush", "sep", "syscall", "tsc_adjust", "vme", "tsc", "sse", "xsave", "erms", "cmov", "smep", "nx", "pat", "osxsave", "lm", "msr", "fpu", "fxsr", "sse4.1", "pae", "sse4.2", "pclmuldq", "pcid", "tsc-deadline", "mmx", "arat", "cx8", "mce", "de", "aes", "mca", "pse", "pni", "popcnt", "apic", "fsgsbase", "f16c", "invtsc", "lahf_lm", "rdtscp", "sse2", "ss", "hypervisor", "ssse3", "cx16", "pse36", "mtrr", "rdrand", "x2apic"], "topology": {"cores": 1, "cells": 1, "threads": 1, "sockets": 4}} |
    +| current_workload     | 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| disk_available_least | 84                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    +| free_disk_gb         | 97                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    +| free_ram_mb          | 11485                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    +| host_ip              | 192.168.17.131                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
    +| host_time            | 11:39:34                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
    +| hypervisor_hostname  | ubuntu                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    +| hypervisor_type      | QEMU                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
    +| hypervisor_version   | 2008000                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
    +| id                   | 1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| load_average         | 0.25, 0.33, 0.60                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
    +| local_gb             | 97                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    +| local_gb_used        | 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| memory_mb            | 11997                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
    +| memory_mb_used       | 512                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
    +| running_vms          | 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| service_host         | ubuntu                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    +| service_id           | 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| state                | up                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
    +| status               | enabled                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
    +| uptime               | 16 min                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
    +| users                | 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| vcpus                | 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    +| vcpus_used           | 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
    ++----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    +
    +
  4. +
  5. Mostrar estatísticas de uso dos hypervisors: +
    $ openstack hypervisor stats show
    ++----------------------+-------+
    +| Field                | Value |
    ++----------------------+-------+
    +| count                | 1     |
    +| current_workload     | 0     |
    +| disk_available_least | 84    |
    +| free_disk_gb         | 97    |
    +| free_ram_mb          | 11485 |
    +| local_gb             | 97    |
    +| local_gb_used        | 0     |
    +| memory_mb            | 11997 |
    +| memory_mb_used       | 512   |
    +| running_vms          | 0     |
    +| vcpus                | 4     |
    +| vcpus_used           | 0     |
    ++----------------------+-------+
    +
    +
  6. +
+ +

Flavors

+ +
    +
  1. Listar os flavors: +
    $ openstack flavor list
    ++--------------------------------------+-----------+-------+------+-----------+-------+-----------+
    +| ID                                   | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
    ++--------------------------------------+-----------+-------+------+-----------+-------+-----------+
    +| 1                                    | m1.tiny   |   512 |    1 |         0 |     1 | True      |
    +| 2                                    | m1.small  |  2048 |   20 |         0 |     1 | True      |
    +| 3                                    | m1.medium |  4096 |   40 |         0 |     2 | True      |
    +| 4                                    | m1.large  |  8192 |   80 |         0 |     4 | True      |
    +| 42                                   | m1.nano   |    64 |    0 |         0 |     1 | True      |
    +| 4e4c0fe2-bf78-448b-bab9-e5b186d313d8 | mini      |    64 |    1 |         0 |     1 | True      |
    +| 5                                    | m1.xlarge | 16384 |  160 |         0 |     8 | True      |
    +| 84                                   | m1.micro  |   128 |    0 |         0 |     1 | True      |
    +| c1                                   | cirros256 |   256 |    0 |         0 |     1 | True      |
    +| d1                                   | ds512M    |   512 |    5 |         0 |     1 | True      |
    +| d2                                   | ds1G      |  1024 |   10 |         0 |     1 | True      |
    +| d3                                   | ds2G      |  2048 |   10 |         0 |     2 | True      |
    +| d4                                   | ds4G      |  4096 |   20 |         0 |     4 | True      |
    ++--------------------------------------+-----------+-------+------+-----------+-------+-----------+
    +
    +
  2. +
  3. Mostrar informações sobre um flavor: +
    $ openstack flavor show m1.tiny
    ++----------------------------+---------+
    +| Field                      | Value   |
    ++----------------------------+---------+
    +| OS-FLV-DISABLED:disabled   | False   |
    +| OS-FLV-EXT-DATA:ephemeral  | 0       |
    +| access_project_ids         | None    |
    +| disk                       | 1       |
    +| id                         | 1       |
    +| name                       | m1.tiny |
    +| os-flavor-access:is_public | True    |
    +| properties                 |         |
    +| ram                        | 512     |
    +| rxtx_factor                | 1.0     |
    +| swap                       |         |
    +| vcpus                      | 1       |
    ++----------------------------+---------+
    +
    +
  4. +
  5. Criar um flavor: +
    $ openstack flavor create --public --ram 64 --vcpus 1 --disk 1 m.fiap
    ++----------------------------+--------------------------------------+
    +| Field                      | Value                                |
    ++----------------------------+--------------------------------------+
    +| OS-FLV-DISABLED:disabled   | False                                |
    +| OS-FLV-EXT-DATA:ephemeral  | 0                                    |
    +| disk                       | 1                                    |
    +| id                         | a0683bcb-b937-4c75-be19-7641eceeff78 |
    +| name                       | m.fiap                               |
    +| os-flavor-access:is_public | True                                 |
    +| properties                 |                                      |
    +| ram                        | 64                                   |
    +| rxtx_factor                | 1.0                                  |
    +| swap                       |                                      |
    +| vcpus                      | 1                                    |
    ++----------------------------+--------------------------------------+
    +
    +
  6. +
+ +

Chaves SSH

+ +
    +
  1. Criar uma chave: +
    $ openstack keypair create chave-fiap > chave-fiap.pem
    +
    +
  2. +
  3. Conferir o conteúdo da chave: +
    $ cat chave-fiap.pem
    +-----BEGIN RSA PRIVATE KEY-----
    +MIIEpAIBAAKCAQEAv2niqYsP2O0LE8OUVyFSUDuLPnrIHy8TDBqg0iy8MVEBL6F1
    +I3lRBl8F2qPU9Xb2JAkfaqxgd+nBc9dykh166Q1TYc6+sPau6GymUGlmAvknUcqU
    +Ojs2DbNEctEgKb2FIxJfTxlv+DOxOnkp2yNS1120VXKSTZaSwWkNLhzeNI3L4ijh
    +Aenemwt4k7U94PTVEmZfYLD7i+JmdOeJpXIaJrQIw1IqYoQdIW+GXet83ldDcVeM
    +BK6YtnlXv2c34Sf5DwiejofT8K7STSwpYkeP7uO6k76RtNcZYoqBZWNs+/Lm0+KL
    +pGfs02fIH4OR1XwUnHqTtcHE1POWQ8OQIT28EQIDAQABAoIBAQCX9HwvMilrgYro
    +rrwFi3toHE0HVbunHdzWIBGJqF/iGreBU4DFn5qWHztrfeIi18TBiMh7C8sthtG/
    +n8rheivH9X87R0CVBdCGzTIe5f1I4Pi48sRHkhfwOl9dcu1Alaaq1/v3tG7yMD9C
    +90smH121gTsXFnRUyfNJPZdsAxjXyFSAKbnrELNH2JHLNVj4qNrVWHYwqhJZSx5p
    +a9wqtPKCjZcqhDq4cRdvcgTNMr16N72OV6sw0v6cbzjGjXAonyy/lMt/ecN2soh+
    +tNdpAgru7/vMMWjhR+0lVvCqCrIw/2ZuE1Lkzulkf3Ih2N+gg1fWIGnX9Lw7B4Of
    +5HcxuU5NAoGBAPOIajs5em4RBcQMVMWNcT7P56Q6mQOAnpECRzAxTudnz7HGn6wF
    +IWFbYKakUzGUJgbmJXO8H8U0yUlbdc82yOBbYd13WS4WkAz7EFsgkPTGbSTaZsG9
    +33L+E13C1bmeqBnjGkKt1qaHZVDTzQ8OWg6ay7i/byv+4ki0BZnD3KkfAoGBAMk2
    +bdPenS3X/Rsbp/RZEzbttobyRPePW+gLb899QTFSOMM352hhqt5za629wonTLvql
    +z0c/VL4BuHRaxSUvZ+6SzeHBrpOp3BeDD60QR44b4wPJDaATJe4oLcEn3k10/c6Z
    +8jpKHS3Go8HyzxTkD5CbA94JJAsEoHeev8rYw4TPAoGARGZRJ/c52sYvL2QjPyU9
    +5F1yex72MRSj9KiGJBQFTFtM62qVGDSMrpKCr+tBbpBkqdVkOYBiD/qGenMUwLFr
    +dBBWiWRnCNnPdcXiTyXzcLx2lT4+VDYnF14jRFdfvfXA0xyFGKtIuZcXrr7+PjdS
    +tf1mMKqb5+h7192wIQLw7BMCgYEAnwfr6ibqqA8sNz62koPMkf9z4liddeTSySYw
    +6xeebTMFNhZ7SZ7YBBXJp3pxxakqWmSu3SsK+Vo2xY/wfaFoTcGuA56nMoJwOA0Y
    +WLqjM4iK9rTzle9MbV1IPIAcTbAH4kD+mF93jHSRfXtBfMt8GdjLR7SFzkeL5L+N
    +6u9EKTUCgYBUwwXRr+rrRtxKeO0iVmcyMyNtXWEhSXvfxR3zAdXYJ2z++wS1tPUU
    +7nyFI8L2LrAiHLs0D8e1SmbvkUkVQ9jn9+W52BH9I3s3Z/15VfOkNPNCPeZHTh3l
    +N0O5xtIRsj1V33eQf6j8eaUXPqofXshHjCkI8/9osjx9rB5+L/gjAw==
    +-----END RSA PRIVATE KEY-----
    +
    +
  4. +
  5. Listar as chaves disponíveis: +
    $ openstack keypair list
    ++------------+-------------------------------------------------+
    +| Name       | Fingerprint                                     |
    ++------------+-------------------------------------------------+
    +| chave-fiap | 83:d4:98:bf:8a:06:b2:87:68:4e:72:a4:d2:a0:b9:07 |
    ++------------+-------------------------------------------------+
    +
    +
  6. +
  7. Assignar as permissões certas na chave e conferir que foram aplicadas: +
    $ chmod 600 chave-fiap.pem
    +    
    +$ ll chave-fiap.pem
    +-rw------- 1 os os 1680 Oct 19 11:41 chave-fiap.pem
    +
    +
  8. +
  9. Listar as imagens: +
    $ openstack image list
    ++--------------------------------------+--------------------------+--------+
    +| ID                                   | Name                     | Status |
    ++--------------------------------------+--------------------------+--------+
    +| cd992dd3-2197-49fe-9f0e-43d783d18a5c | cirros-0.3.5-x86_64-disk | active |
    ++--------------------------------------+--------------------------+--------+
    +
    +
  10. +
+ +

Instâncias

+ +
    +
  1. Criar a VM: +
    $ openstack server create --flavor m.fiap --image cirros-0.3.5-x86_64-disk --key-name chave-fiap vmfiap01
    ++-------------------------------------+-----------------------------------------------------------------+
    +| Field                               | Value                                                           |
    ++-------------------------------------+-----------------------------------------------------------------+
    +| OS-DCF:diskConfig                   | MANUAL                                                          |
    +| OS-EXT-AZ:availability_zone         |                                                                 |
    +| OS-EXT-SRV-ATTR:host                | None                                                            |
    +| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                            |
    +| OS-EXT-SRV-ATTR:instance_name       |                                                                 |
    +| OS-EXT-STS:power_state              | NOSTATE                                                         |
    +| OS-EXT-STS:task_state               | scheduling                                                      |
    +| OS-EXT-STS:vm_state                 | building                                                        |
    +| OS-SRV-USG:launched_at              | None                                                            |
    +| OS-SRV-USG:terminated_at            | None                                                            |
    +| accessIPv4                          |                                                                 |
    +| accessIPv6                          |                                                                 |
    +| addresses                           |                                                                 |
    +| adminPass                           | ov2dNjfSTpjX                                                    |
    +| config_drive                        |                                                                 |
    +| created                             | 2020-10-19T18:42:32Z                                            |
    +| flavor                              | m.fiap (a0683bcb-b937-4c75-be19-7641eceeff78)                   |
    +| hostId                              |                                                                 |
    +| id                                  | fd676d99-1d15-4690-b69e-02d71947d1c5                            |
    +| image                               | cirros-0.3.5-x86_64-disk (cd992dd3-2197-49fe-9f0e-43d783d18a5c) |
    +| key_name                            | chave-fiap                                                      |
    +| name                                | vmfiap01                                                        |
    +| progress                            | 0                                                               |
    +| project_id                          | faac34f01fb2464295bcea501b18b741                                |
    +| properties                          |                                                                 |
    +| security_groups                     | name='default'                                                  |
    +| status                              | BUILD                                                           |
    +| updated                             | 2020-10-19T18:42:32Z                                            |
    +| user_id                             | fe2d2a5507ed4ad2919258d7252cebc6                                |
    +| volumes_attached                    |                                                                 |
    ++-------------------------------------+-----------------------------------------------------------------+
    +
    +
  2. +
  3. Listar as VMs: +
    $ openstack server list
    ++--------------------------------------+----------+--------+-------------------------------------------------------+--------------------------+--------+
    +| ID                                   | Name     | Status | Networks                                              | Image                    | Flavor |
    ++--------------------------------------+----------+--------+-------------------------------------------------------+--------------------------+--------+
    +| fd676d99-1d15-4690-b69e-02d71947d1c5 | vmfiap01 | ACTIVE | private=fdb5:7432:9bc4:0:f816:3eff:fe7f:435, 10.0.0.3 | cirros-0.3.5-x86_64-disk | m.fiap |
    ++--------------------------------------+----------+--------+-------------------------------------------------------+--------------------------+--------+
    +
    +
  4. +
  5. Mostrar a URL do console: +
    $ openstack console url show vmfiap01
    ++-------+-------------------------------------------------------------------------------------+
    +| Field | Value                                                                               |
    ++-------+-------------------------------------------------------------------------------------+
    +| type  | novnc                                                                               |
    +| url   | http://192.168.17.131:6080/vnc_auto.html?token=3875ba97-5bce-41c9-a4ba-9df2579fe389 |
    ++-------+-------------------------------------------------------------------------------------+
    +
    +
  6. +
  7. Acessar por console à VM e criar uma pasta ou um arquivo qualquer: +
      +
    • Pela URL do console (ou)
    • +
    • Directo pelo hypervisor:
    • +
    + +
    $ virsh list
    + Id    Name                           State
    +----------------------------------------------------
    + 1     instance-00000005              running
    +
    +$ virsh console 1
    +Connected to domain instance-00000005
    +Escape character is ^]
    +
    +login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    +vmfiap01 login: cirros
    +Password:
    +$ touch teste-fiap
    +$ ls
    +teste-fiap
    +
    +
  8. +
  9. Mostrar o log da VM: +
    $ openstack console log show vmfiap01
    +[    0.000000] Initializing cgroup subsys cpuset
    +[    0.000000] Initializing cgroup subsys cpu
    +[    0.000000] Linux version 3.2.0-80-virtual (buildd@batsu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #116-Ubuntu SMP Mon Mar 23 17:28:52 UTC 2015 (Ubuntu 3.2.0-80.116-virtual 3.2.68)
    +[    0.000000] Command line: LABEL=cirros-rootfs ro console=tty1 console=ttyS0
    +[    0.000000] KERNEL supported cpus:
    +[    0.000000]   Intel GenuineIntel
    +[    0.000000]   AMD AuthenticAMD
    +[    0.000000]   Centaur CentaurHauls
    +[    0.000000] BIOS-provided physical RAM map:
    +[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
    +[    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
    +[    0.000000]  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
    +[    0.000000]  BIOS-e820: 0000000000100000 - 0000000003fdc000 (usable)
    +[    0.000000]  BIOS-e820: 0000000003fdc000 - 0000000004000000 (reserved)
    +[    0.000000]  BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
    +[    0.000000] NX (Execute Disable) protection: active
    +[    0.000000] SMBIOS 2.8 present.
    +[    0.000000] No AGP bridge found
    +[    0.000000] last_pfn = 0x3fdc max_arch_pfn = 0x400000000
    +[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
    +[    0.000000] found SMP MP-table at [ffff8800000f6a40] f6a40
    +[    0.000000] init_memory_mapping: 0000000000000000-0000000003fdc000
    +
    +
  10. +
  11. Mostrar os eventos relacionados à VM: +
    $ openstack server event list vmfiap01
    ++------------------------------------------+--------------------------------------+--------+----------------------------+
    +| Request ID                               | Server ID                            | Action | Start Time                 |
    ++------------------------------------------+--------------------------------------+--------+----------------------------+
    +| req-83d22008-bdbd-41b4-8aae-e9ba807b6aba | fd676d99-1d15-4690-b69e-02d71947d1c5 | create | 2020-10-19T18:42:31.000000 |
    ++------------------------------------------+--------------------------------------+--------+----------------------------+
    +
    +
  12. +
  13. Desligar a VM: +
    $ openstack server stop vmfiap01
    +
    +
  14. +
  15. Listar as VMs e conferir que foi desligada: +
    $ openstack server list
    ++--------------------------------------+----------+---------+-------------------------------------------------------+--------------------------+--------+
    +| ID                                   | Name     | Status  | Networks                                              | Image                    | Flavor |
    ++--------------------------------------+----------+---------+-------------------------------------------------------+--------------------------+--------+
    +| fd676d99-1d15-4690-b69e-02d71947d1c5 | vmfiap01 | SHUTOFF | private=fdb5:7432:9bc4:0:f816:3eff:fe7f:435, 10.0.0.3 | cirros-0.3.5-x86_64-disk | m.fiap |
    ++--------------------------------------+----------+---------+-------------------------------------------------------+--------------------------+--------+
    +
    +
  16. +
  17. Listar novamente os eventos relacionados à VM e conferir que foi registrado o evento de shutdown da mesma: +
    $ openstack server event list vmfiap01
    ++------------------------------------------+--------------------------------------+--------+----------------------------+
    +| Request ID                               | Server ID                            | Action | Start Time                 |
    ++------------------------------------------+--------------------------------------+--------+----------------------------+
    +| req-a407d6cc-cb7d-41b0-92c3-2eea58fe0b53 | fd676d99-1d15-4690-b69e-02d71947d1c5 | stop   | 2020-10-19T18:48:22.000000 |
    +| req-83d22008-bdbd-41b4-8aae-e9ba807b6aba | fd676d99-1d15-4690-b69e-02d71947d1c5 | create | 2020-10-19T18:42:31.000000 |
    ++------------------------------------------+--------------------------------------+--------+----------------------------+
    +
    +
  18. +
  19. Ligar novamente a VM: +
    $ openstack server start vmfiap01
    +
    +
  20. +
+ +

Snapshots

+ +
    +
  1. Criar um snapshot da VM: +
    $ openstack server image create vmfiap01 --name vmfiap01_snap
    ++------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    +| Field            | Value                                                                                                                                                                                                                                                  |
    ++------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    +| checksum         | None                                                                                                                                                                                                                                                   |
    +| container_format | None                                                                                                                                                                                                                                                   |
    +| created_at       | 2020-10-19T18:49:32Z                                                                                                                                                                                                                                   |
    +| disk_format      | None                                                                                                                                                                                                                                                   |
    +| file             | /v2/images/7b29041a-73f6-438e-91f9-09ff7423a585/file                                                                                                                                                                                                   |
    +| id               | 7b29041a-73f6-438e-91f9-09ff7423a585                                                                                                                                                                                                                   |
    +| min_disk         | 1                                                                                                                                                                                                                                                      |
    +| min_ram          | 0                                                                                                                                                                                                                                                      |
    +| name             | vmfiap01_snap                                                                                                                                                                                                                                         |
    +| owner            | faac34f01fb2464295bcea501b18b741                                                                                                                                                                                                                       |
    +| properties       | base_image_ref='cd992dd3-2197-49fe-9f0e-43d783d18a5c', boot_roles='admin', image_type='snapshot', instance_uuid='fd676d99-1d15-4690-b69e-02d71947d1c5', owner_project_name='demo', owner_user_name='admin', user_id='fe2d2a5507ed4ad2919258d7252cebc6' |
    +| protected        | False                                                                                                                                                                                                                                                  |
    +| schema           | /v2/schemas/image                                                                                                                                                                                                                                      |
    +| size             | None                                                                                                                                                                                                                                                   |
    +| status           | queued                                                                                                                                                                                                                                                 |
    +| tags             |                                                                                                                                                                                                                                                        |
    +| updated_at       | 2020-10-19T18:49:32Z                                                                                                                                                                                                                                   |
    +| virtual_size     | None                                                                                                                                                                                                                                                   |
    +| visibility       | private                                                                                                                                                                                                                                                |
    ++------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    +
    +
  2. +
  3. Listar as imagens (aguardar que fique em estado active): +
    $ openstack image list
    ++--------------------------------------+--------------------------+--------+
    +| ID                                   | Name                     | Status |
    ++--------------------------------------+--------------------------+--------+
    +| cd992dd3-2197-49fe-9f0e-43d783d18a5c | cirros-0.3.5-x86_64-disk | active |
    +| 7b29041a-73f6-438e-91f9-09ff7423a585 | vmfiap01_snap            | queued |
    ++--------------------------------------+--------------------------+--------+
    +    
    +$ openstack image list
    ++--------------------------------------+--------------------------+--------+
    +| ID                                   | Name                     | Status |
    ++--------------------------------------+--------------------------+--------+
    +| cd992dd3-2197-49fe-9f0e-43d783d18a5c | cirros-0.3.5-x86_64-disk | active |
    +| 7b29041a-73f6-438e-91f9-09ff7423a585 | vmfiap01_snap            | active |
    ++--------------------------------------+--------------------------+--------+
    +
    +
  4. +
  5. Instanciar o snapshot: +
    $ openstack server create --flavor m.fiap --image vmfiap01_snap vmfiap02
    ++-------------------------------------+-------------------------------------------------------+
    +| Field                               | Value                                                 |
    ++-------------------------------------+-------------------------------------------------------+
    +| OS-DCF:diskConfig                   | MANUAL                                                |
    +| OS-EXT-AZ:availability_zone         |                                                       |
    +| OS-EXT-SRV-ATTR:host                | None                                                  |
    +| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                  |
    +| OS-EXT-SRV-ATTR:instance_name       |                                                       |
    +| OS-EXT-STS:power_state              | NOSTATE                                               |
    +| OS-EXT-STS:task_state               | scheduling                                            |
    +| OS-EXT-STS:vm_state                 | building                                              |
    +| OS-SRV-USG:launched_at              | None                                                  |
    +| OS-SRV-USG:terminated_at            | None                                                  |
    +| accessIPv4                          |                                                       |
    +| accessIPv6                          |                                                       |
    +| addresses                           |                                                       |
    +| adminPass                           | 4VVPhyX8EXk6                                          |
    +| config_drive                        |                                                       |
    +| created                             | 2020-10-19T18:50:58Z                                  |
    +| flavor                              | m.fiap (a0683bcb-b937-4c75-be19-7641eceeff78)         |
    +| hostId                              |                                                       |
    +| id                                  | 24731592-0fa0-4ecc-8c1e-8ebe8ec2249e                  |
    +| image                               | vmfiap01_snap (7b29041a-73f6-438e-91f9-09ff7423a585)  |
    +| key_name                            | None                                                  |
    +| name                                | vmfiap02                                              |
    +| progress                            | 0                                                     |
    +| project_id                          | faac34f01fb2464295bcea501b18b741                      |
    +| properties                          |                                                       |
    +| security_groups                     | name='default'                                        |
    +| status                              | BUILD                                                 |
    +| updated                             | 2020-10-19T18:50:58Z                                  |
    +| user_id                             | fe2d2a5507ed4ad2919258d7252cebc6                      |
    +| volumes_attached                    |                                                       |
    ++-------------------------------------+-------------------------------------------------------+
    +
    +
  6. +
  7. Listar as VMs usando o comando virsh: +
    $ virsh list
    + Id    Name                           State
    +----------------------------------------------------
    + 3     instance-00000005              running
    + 4     instance-00000006              running
    +
    +
  8. +
  9. Logar na nova VM e confirmar que o arquivo criado previamente existe: +
    $ virsh console 4
    +Connected to domain instance-00000006
    +Escape character is ^]
    +
    +login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    +vmfiap02 login: cirros
    +Password:
    +$ ls
    +teste-fiap
    +
    +
  10. +
  11. Mostrar as informações da definição da VM: +
    $ virsh dumpxml 3
    +<domain type='qemu' id='3'>
    +  <name>instance-00000005</name>
    +  <uuid>fd676d99-1d15-4690-b69e-02d71947d1c5</uuid>
    +  <metadata>
    +    <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
    +      <nova:package version="16.1.1"/>
    +      <nova:name>vmfiap01</nova:name>
    +      <nova:creationTime>2020-10-19 18:49:00</nova:creationTime>
    +      <nova:flavor name="m.fiap">
    +        <nova:memory>64</nova:memory>
    +        <nova:disk>1</nova:disk>
    +        <nova:swap>0</nova:swap>
    +        <nova:ephemeral>0</nova:ephemeral>
    +        <nova:vcpus>1</nova:vcpus>
    +      </nova:flavor>
    +      <nova:owner>
    +        <nova:user uuid="fe2d2a5507ed4ad2919258d7252cebc6">admin</nova:user>
    +        <nova:project uuid="faac34f01fb2464295bcea501b18b741">demo</nova:project>
    +      </nova:owner>
    +      <nova:root type="image" uuid="cd992dd3-2197-49fe-9f0e-43d783d18a5c"/>
    +    </nova:instance>
    +  </metadata>
    +  <memory unit='KiB'>65536</memory>
    +  <currentMemory unit='KiB'>65536</currentMemory>
    +  <vcpu placement='static'>1</vcpu>
    +  <cputune>
    +    <shares>1024</shares>
    +  </cputune>
    +  <resource>
    +    <partition>/machine</partition>
    +  </resource>
    +  <sysinfo type='smbios'>
    +    <system>
    +      <entry name='manufacturer'>OpenStack Foundation</entry>
    +      <entry name='product'>OpenStack Nova</entry>
    +      <entry name='version'>16.1.1</entry>
    +      <entry name='serial'>311453db-b8d5-3f93-65ff-6fca5aa96025</entry>
    +      <entry name='uuid'>fd676d99-1d15-4690-b69e-02d71947d1c5</entry>
    +      <entry name='family'>Virtual Machine</entry>
    +    </system>
    +  </sysinfo>
    +  <os>
    +    <type arch='x86_64' machine='pc-i440fx-zesty'>hvm</type>
    +    <boot dev='hd'/>
    +    <smbios mode='sysinfo'/>
    +  </os>
    +  <features>
    +    <acpi/>
    +    <apic/>
    +  </features>
    +  <cpu>
    +    <topology sockets='1' cores='1' threads='1'/>
    +  </cpu>
    +  <clock offset='utc'/>
    +  <on_poweroff>destroy</on_poweroff>
    +  <on_reboot>restart</on_reboot>
    +  <on_crash>destroy</on_crash>
    +  <devices>
    +    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    +    <disk type='file' device='disk'>
    +      <driver name='qemu' type='qcow2' cache='none'/>
    +      <source file='/opt/stack/data/nova/instances/fd676d99-1d15-4690-b69e-02d71947d1c5/disk'/>
    +      <backingStore type='file' index='1'>
    +        <format type='raw'/>
    +        <source file='/opt/stack/data/nova/instances/_base/ca55405a2b972c659cab9c6fc7fb9fb060ebe7d1'/>
    +        <backingStore/>
    +      </backingStore>
    +      <target dev='vda' bus='virtio'/>
    +      <alias name='virtio-disk0'/>
    +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    +    </disk>
    +    <controller type='usb' index='0' model='piix3-uhci'>
    +      <alias name='usb'/>
    +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    +    </controller>
    +    <controller type='pci' index='0' model='pci-root'>
    +      <alias name='pci.0'/>
    +    </controller>
    +    <interface type='bridge'>
    +      <mac address='fa:16:3e:7f:04:35'/>
    +      <source bridge='qbree2ccd25-fb'/>
    +      <target dev='tapee2ccd25-fb'/>
    +      <model type='virtio'/>
    +      <driver name='qemu'/>
    +      <alias name='net0'/>
    +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    +    </interface>
    +    <serial type='pty'>
    +      <source path='/dev/pts/2'/>
    +      <log file='/opt/stack/data/nova/instances/fd676d99-1d15-4690-b69e-02d71947d1c5/console.log' append='off'/>
    +      <target port='0'/>
    +      <alias name='serial0'/>
    +    </serial>
    +    <console type='pty' tty='/dev/pts/2'>
    +      <source path='/dev/pts/2'/>
    +      <log file='/opt/stack/data/nova/instances/fd676d99-1d15-4690-b69e-02d71947d1c5/console.log' append='off'/>
    +      <target type='serial' port='0'/>
    +      <alias name='serial0'/>
    +    </console>
    +    <input type='mouse' bus='ps2'>
    +      <alias name='input0'/>
    +    </input>
    +    <input type='keyboard' bus='ps2'>
    +      <alias name='input1'/>
    +    </input>
    +    <graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1' keymap='en-us'>
    +      <listen type='address' address='127.0.0.1'/>
    +    </graphics>
    +    <video>
    +      <model type='cirrus' vram='16384' heads='1' primary='yes'/>
    +      <alias name='video0'/>
    +      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    +    </video>
    +    <memballoon model='virtio'>
    +      <stats period='10'/>
    +      <alias name='balloon0'/>
    +      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    +    </memballoon>
    +  </devices>
    +  <seclabel type='dynamic' model='apparmor' relabel='yes'>
    +    <label>libvirt-fd676d99-1d15-4690-b69e-02d71947d1c5</label>
    +    <imagelabel>libvirt-fd676d99-1d15-4690-b69e-02d71947d1c5</imagelabel>
    +  </seclabel>
    +  <seclabel type='dynamic' model='dac' relabel='yes'>
    +    <label>+64055:+123</label>
    +    <imagelabel>+64055:+123</imagelabel>
    +  </seclabel>
    +</domain>
    +
    +
  12. +
+ +

Clean-up

+ +
    +
  1. Deletar as vms: +
    $ openstack server delete vmfiap01
    +$ openstack server delete vmfiap02
    +$ openstack image delete vmfiap01_snap
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Recriar desde o Horizon Dashboard: +
      +
    • Criação de flavor
    • +
    • Criação de VM
    • +
    • Criação de snapshot
    • +
    • Criação de VM a partir de snapshot + + +
    • +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack4-neutron/index.html b/docs/openstack4-neutron/index.html new file mode 100644 index 0000000000..fc8583acb1 --- /dev/null +++ b/docs/openstack4-neutron/index.html @@ -0,0 +1,1533 @@ + + + + + + +OpenStack series IV: Neutron - Network Service - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 4 - OpenStack Neutron

+ +

Network Service

+

Usaremos o serviço Neutron para aprender alguns conceitos importantes sobre virtualização de redes:

+
    +
  • criação de redes/subredes virtuais
  • +
  • virtual routers
  • +
  • security groups
  • +
  • floating IPs
  • +
+ +

Pre-reqs

+ +
    +
  1. Carregar as credenciais de OpenStack: +
     $ source devstack/openrc admin
    + WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +    
    + $ env | grep OS_
    + OS_PROJECT_DOMAIN_ID=default
    + OS_REGION_NAME=RegionOne
    + OS_USER_DOMAIN_ID=default
    + OS_PROJECT_NAME=demo
    + OS_IDENTITY_API_VERSION=3
    + OS_PASSWORD=nomoresecret
    + OS_AUTH_TYPE=password
    + OS_AUTH_URL=http://192.168.17.131/identity
    + OS_USERNAME=admin
    + OS_TENANT_NAME=demo
    + OS_VOLUME_API_VERSION=2
    +
    +
  2. +
  3. Conferir que o Neutron foi instalado no OpenStack: +
    $ openstack service list
    ++----------------------------------+-------------+----------------+
    +| ID                               | Name        | Type           |
    ++----------------------------------+-------------+----------------+
    +| 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    +| 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    +| 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    +| 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    +| 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    +| 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    +| 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    +| 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    +| 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    +| cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    +| d8b098869281469bbd90bbc762aad340 | glance      | image          |
    +| fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    ++----------------------------------+-------------+----------------+
    +
    +
  4. +
  5. Mostrar informação sobre o endpoint: +
    $ openstack catalog show neutron
    ++-----------+---------------------------------------+
    +| Field     | Value                                 |
    ++-----------+---------------------------------------+
    +| endpoints | RegionOne                             |
    +|           |   public: http://192.168.17.131:9696/ |
    +|           |                                       |
    +| id        | 14776d964367470ea97ae0f0395be6de      |
    +| name      | neutron                               |
    +| type      | network                               |
    ++-----------+---------------------------------------+
    +
    +
  6. +
  7. Conferir que a porta 9696 está aberta e associada ao Neutron: +
    $ sudo netstat -punlt | grep 9696
    +tcp        0      0 0.0.0.0:9696            0.0.0.0:*               LISTEN                    831/python
    +    
    +$ ps aux  | grep 831
    +os          831  0.2  0.9 279916 119168 ?       Ss   04:54   0:04 /usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +os         6963  0.0  0.0  14224   972 pts/2    S+   05:29   0:00 grep --color=auto 831
    +
    +
  8. +
  9. Conferir a saúde dos agentes que compõem o Neutron: +
    $ openstack network agent list
    ++--------------------------------------+--------------------+--------+-------------------+-------+-------+---------------------------+
    +| ID                                   | Agent Type         | Host   | Availability Zone | Alive | State | Binary                    |
    ++--------------------------------------+--------------------+--------+-------------------+-------+-------+---------------------------+
    +| 1714e6c2-5907-4550-ba3b-cffeeabe6600 | L3 agent           | ubuntu | nova              | :-)   | UP    | neutron-l3-agent          |
    +| 6194150e-7771-4a73-8963-5cb0f7a2a10f | Metadata agent     | ubuntu | None              | :-)   | UP    | neutron-metadata-agent    |
    +| cd64f22e-e148-48ea-b3a8-29880934cb18 | DHCP agent         | ubuntu | nova              | :-)   | UP    | neutron-dhcp-agent        |
    +| cfc5d9ac-c59a-4e07-b740-8cbda8b6ef50 | Open vSwitch agent | ubuntu | None              | :-)   | UP    | neutron-openvswitch-agent |
    ++--------------------------------------+--------------------+--------+-------------------+-------+-------+---------------------------+
    +
    +
  10. +
  11. Listar os serviços Linux que compõem o Neutron: +
    $ systemctl | grep devstack@q
    +devstack@q-agt.service                                                     loaded active running   Devstack devstack@q-agt.service
    +devstack@q-dhcp.service                                                    loaded active running   Devstack devstack@q-dhcp.service
    +devstack@q-l3.service                                                      loaded active running   Devstack devstack@q-l3.service
    +devstack@q-meta.service                                                    loaded active running   Devstack devstack@q-meta.service
    +devstack@q-svc.service                                                     loaded active running   Devstack devstack@q-svc.service
    +    
    +$ systemctl | grep openvswitch
    +openvswitch-nonetwork.service                                              loaded active exited    Open vSwitch Internal Unit
    +openvswitch-switch.service                                                 loaded active exited    Open vSwitch
    +
    +
  12. +
  13. Conferir a saúde dos serviços: +
    $ systemctl status devstack@q*
    +● devstack@q-dhcp.service - Devstack devstack@q-dhcp.service
    +   Loaded: loaded (/etc/systemd/system/devstack@q-dhcp.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 1 day 18h ago
    + Main PID: 867 (neutron-dhcp-ag)
    +   CGroup: /system.slice/system-devstack.slice/devstack@q-dhcp.service
    +           ├─ 867 /usr/bin/python /usr/local/bin/neutron-dhcp-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/dhcp_agent.ini
    +           ├─2453 sudo /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +           ├─2455 /usr/bin/python /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +           └─6523 dnsmasq --no-hosts  --strict-order --except-interface=lo --pid-file=/opt/stack/data/neutron/dhcp/4e05e1bd-50f4-494b-aacf-07d43a37d1a1/pid --dhcp-hostsfile=/opt/stack/data/neu
    +
    +● devstack@q-meta.service - Devstack devstack@q-meta.service
    +   Loaded: loaded (/etc/systemd/system/devstack@q-meta.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 1 day 18h ago
    + Main PID: 732 (neutron-metadat)
    +   CGroup: /system.slice/system-devstack.slice/devstack@q-meta.service
    +           ├─ 732 /usr/bin/python /usr/local/bin/neutron-metadata-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini
    +           ├─2331 /usr/bin/python /usr/local/bin/neutron-metadata-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini
    +           └─2338 /usr/bin/python /usr/local/bin/neutron-metadata-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/metadata_agent.ini
    +
    +● devstack@q-l3.service - Devstack devstack@q-l3.service
    +   Loaded: loaded (/etc/systemd/system/devstack@q-l3.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 1 day 18h ago
    + Main PID: 733 (neutron-l3-agen)
    +   CGroup: /system.slice/system-devstack.slice/devstack@q-l3.service
    +           ├─ 733 /usr/bin/python /usr/local/bin/neutron-l3-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini
    +           ├─3196 sudo /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +           ├─3197 /usr/bin/python /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +           ├─3365 radvd -C /opt/stack/data/neutron/ra/19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7.radvd.conf -p /opt/stack/data/neutron/external/pids/19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7.pid.radvd -m
    +           ├─3366 radvd -C /opt/stack/data/neutron/ra/19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7.radvd.conf -p /opt/stack/data/neutron/external/pids/19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7.pid.radvd -m
    +           └─3488 haproxy -f /opt/stack/data/neutron/ns-metadata-proxy/19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7.conf
    +
    +● devstack@q-agt.service - Devstack devstack@q-agt.service
    +   Loaded: loaded (/etc/systemd/system/devstack@q-agt.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 1 day 18h ago
    + Main PID: 790 (neutron-openvsw)
    +   CGroup: /system.slice/system-devstack.slice/devstack@q-agt.service
    +           ├─ 790 /usr/bin/python /usr/local/bin/neutron-openvswitch-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +           ├─2451 sudo /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +           ├─2454 /usr/bin/python /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +           └─2503 ovsdb-client monitor tcp:127.0.0.1:6640 Interface name,ofport,external_ids --format=json
    +
    +● devstack@q-svc.service - Devstack devstack@q-svc.service
    +   Loaded: loaded (/etc/systemd/system/devstack@q-svc.service; enabled; vendor preset: enabled)
    +   Active: active (running) since Mon 2020-10-19 11:22:41 PDT; 1 day 18h ago
    + Main PID: 831 (neutron-server)
    +   CGroup: /system.slice/system-devstack.slice/devstack@q-svc.service
    +           ├─ 831 /usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +           ├─2360 /usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +           ├─2361 /usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +           ├─2373 /usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +           └─2378 /usr/bin/python /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini
    +
    +$ systemctl status openvswitch-switch
    +● openvswitch-switch.service - Open vSwitch
    +   Loaded: loaded (/lib/systemd/system/openvswitch-switch.service; enabled; vendor preset: enabled)
    +   Active: active (exited) since Mon 2020-10-19 11:23:01 PDT; 1 day 18h ago
    +  Process: 1518 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
    + Main PID: 1518 (code=exited, status=0/SUCCESS)
    +   CGroup: /system.slice/openvswitch-switch.service
    +
    +
  14. +
  15. Mostrar os logs do serviço: +
    $ journalctl -u devstack@q-svc
    +
    +
  16. +
  17. Mostrar os arquivos de configuração: +
    $ less /etc/neutron/neutron.conf
    +    
    +$ less /etc/neutron/plugins/ml2/ml2_conf.ini
    +    
    +$ less /etc/neutron/policy.json
    +
    +
  18. +
  19. Mostrar os arquivos de configuração de uma forma mais clara (sem comentários nem linhas vazias): +
    $ grep -vE "^#|^$" /etc/neutron/plugins/ml2/ml2_conf.ini
    +[DEFAULT]
    +[l2pop]
    +[ml2]
    +tenant_network_types = vxlan
    +extension_drivers = port_security
    +mechanism_drivers = openvswitch,linuxbridge
    +[ml2_type_flat]
    +flat_networks = public,
    +[ml2_type_geneve]
    +vni_ranges = 1:1000
    +[ml2_type_gre]
    +tunnel_id_ranges = 1:1000
    +[ml2_type_vlan]
    +network_vlan_ranges = public
    +[ml2_type_vxlan]
    +vni_ranges = 1:1000
    +[securitygroup]
    +firewall_driver = iptables_hybrid
    +[agent]
    +tunnel_types = vxlan
    +root_helper_daemon = sudo /usr/local/bin/neutron-rootwrap-daemon /etc/neutron/rootwrap.conf
    +root_helper = sudo /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
    +[ovs]
    +datapath_type = system
    +bridge_mappings = public:br-ex
    +tunnel_bridge = br-tun
    +local_ip = 192.168.17.131
    +
    +
  20. +
+ +

Redes e subredes virtuais

+ +
    +
  1. Criar uma rede: +
    $ openstack network create rede-privada
    ++---------------------------+--------------------------------------+
    +| Field                     | Value                                |
    ++---------------------------+--------------------------------------+
    +| admin_state_up            | UP                                   |
    +| availability_zone_hints   |                                      |
    +| availability_zones        |                                      |
    +| created_at                | 2020-10-21T12:33:59Z                 |
    +| description               |                                      |
    +| dns_domain                | None                                 |
    +| id                        | f7476929-ffcd-4451-a4b0-3e109d1d782c |
    +| ipv4_address_scope        | None                                 |
    +| ipv6_address_scope        | None                                 |
    +| is_default                | False                                |
    +| is_vlan_transparent       | None                                 |
    +| mtu                       | 1450                                 |
    +| name                      | rede-privada                         |
    +| port_security_enabled     | True                                 |
    +| project_id                | faac34f01fb2464295bcea501b18b741     |
    +| provider:network_type     | vxlan                                |
    +| provider:physical_network | None                                 |
    +| provider:segmentation_id  | 93                                   |
    +| qos_policy_id             | None                                 |
    +| revision_number           | 2                                    |
    +| router:external           | Internal                             |
    +| segments                  | None                                 |
    +| shared                    | False                                |
    +| status                    | ACTIVE                               |
    +| subnets                   |                                      |
    +| tags                      |                                      |
    +| updated_at                | 2020-10-21T12:33:59Z                 |
    ++---------------------------+--------------------------------------+
    +
    +
  2. +
  3. Criar uma subrede: +
    $ openstack subnet create --network rede-privada --subnet-range 10.20.20.0/24 --ip-version 4 --dns-nameserver 8.8.8.8 subrede-privada
    ++-------------------------+--------------------------------------+
    +| Field                   | Value                                |
    ++-------------------------+--------------------------------------+
    +| allocation_pools        | 10.20.20.2-10.20.20.254              |
    +| cidr                    | 10.20.20.0/24                        |
    +| created_at              | 2020-10-21T12:34:56Z                 |
    +| description             |                                      |
    +| dns_nameservers         | 8.8.8.8                              |
    +| enable_dhcp             | True                                 |
    +| gateway_ip              | 10.20.20.1                           |
    +| host_routes             |                                      |
    +| id                      | 97ae9655-263d-4d17-8156-f030bd34367e |
    +| ip_version              | 4                                    |
    +| ipv6_address_mode       | None                                 |
    +| ipv6_ra_mode            | None                                 |
    +| name                    | subrede-privada                      |
    +| network_id              | f7476929-ffcd-4451-a4b0-3e109d1d782c |
    +| project_id              | faac34f01fb2464295bcea501b18b741     |
    +| revision_number         | 0                                    |
    +| segment_id              | None                                 |
    +| service_types           |                                      |
    +| subnetpool_id           | None                                 |
    +| tags                    |                                      |
    +| updated_at              | 2020-10-21T12:34:56Z                 |
    +| use_default_subnet_pool | None                                 |
    ++-------------------------+--------------------------------------+
    +
    +
  4. +
  5. +

    Subir duas vms via Horizon no projeto demo associadas à rede/subrede que acabamos de criar nos passos anteriores.

    +
  6. +
  7. Acessar a uma delas via console e tentar pingar a outra vm pelo IP interno. Depois tenta pingar para a Internet (p.ex. 8.8.8.8, o servidor DNS da Google, não vai conseguir): +
    $ virsh list
    + Id    Name                           State
    +----------------------------------------------------
    + 5     instance-00000007              running
    + 6     instance-00000008              running
    +
    +$ virsh  console 5
    +Connected to domain instance-00000007
    +Escape character is ^]
    +
    +login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    +vm-1 login: cirros
    +Password:
    +$ ip a
    +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    +    inet 127.0.0.1/8 scope host lo
    +    inet6 ::1/128 scope host
    +       valid_lft forever preferred_lft forever
    +2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast qlen 1000
    +    link/ether fa:16:3e:12:b4:dc brd ff:ff:ff:ff:ff:ff
    +    inet 10.20.20.10/24 brd 10.20.20.255 scope global eth0
    +    inet6 fe80::f816:3eff:fe12:b4dc/64 scope link
    +       valid_lft forever preferred_lft forever
    +           
    +$ ping 10.20.20.7
    +PING 10.20.20.7 (10.20.20.7) 56(84) bytes of data.
    +64 bytes from 10.20.20.7: icmp_seq=1 ttl=64 time=4.24 ms
    +--- 10.20.20.7 ping statistics ---
    +2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    +    
    +$ traceroute 8.8.8.8
    +traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 46 byte packets
    + 1  *  *  10.20.20.10 (10.20.20.10)  3008.291 ms !H
    + 2  10.20.20.10 (10.20.20.10)  2996.692 ms !H  2999.085 ms !H  2998.905 ms !H
    +
    +
  8. +
+ +

Virtual routers

+ +
    +
  1. Criar um roteador: +
    $ openstack router create router-fiap
    ++-------------------------+--------------------------------------+
    +| Field                   | Value                                |
    ++-------------------------+--------------------------------------+
    +| admin_state_up          | UP                                   |
    +| availability_zone_hints |                                      |
    +| availability_zones      |                                      |
    +| created_at              | 2020-10-21T12:35:21Z                 |
    +| description             |                                      |
    +| distributed             | False                                |
    +| external_gateway_info   | None                                 |
    +| flavor_id               | None                                 |
    +| ha                      | False                                |
    +| id                      | d4ea769a-6403-436d-9f8c-c9330597a247 |
    +| name                    | router-fiap                          |
    +| project_id              | faac34f01fb2464295bcea501b18b741     |
    +| revision_number         | None                                 |
    +| routes                  |                                      |
    +| status                  | ACTIVE                               |
    +| tags                    |                                      |
    +| updated_at              | 2020-10-21T12:35:21Z                 |
    ++-------------------------+--------------------------------------+
    +
    +
  2. +
  3. Associar o roteador a rede externa (pública) do OpenStack: +
    $ openstack router set --external-gateway public router-fiap
    +
    +
  4. +
  5. Adicionar uma interface do roteador à subrede previamente criada: +
    $ openstack router add subnet router-fiap subrede-privada
    +
    +
  6. +
  7. Repetir os testes de ping via console na vm previamente criada para ver se a VM sae para “a Internet” (IP 172.24.4.6): +
    $ ping 10.20.20.1
    +PING 10.20.20.1 (10.20.20.1) 56(84) bytes of data.
    +64 bytes from 10.20.20.1: icmp_seq=1 ttl=64 time=4.24 ms
    +--- 10.20.20.1 ping statistics ---
    +2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    +    
    +$ traceroute 8.8.8.8
    +traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 46 byte packets
    + 1  10.20.20.1 (10.20.20.1)  1.010 ms  1.529 ms  0.609 ms
    + 2  172.24.4.6 (172.24.4.6)  3001.284 ms !H  3004.897 ms !H  3001.027 ms !H
    +
    +
  8. +
  9. Reservar um IP público (floating IP): +
    $ openstack floating ip create public
    ++---------------------+--------------------------------------+
    +| Field               | Value                                |
    ++---------------------+--------------------------------------+
    +| created_at          | 2020-10-21T12:36:18Z                 |
    +| description         |                                      |
    +| fixed_ip_address    | None                                 |
    +| floating_ip_address | 172.24.4.13                           |
    +| floating_network_id | 85eba4fa-9b69-44cf-9e69-4f41d8b37286 |
    +| id                  | edbfe304-03b0-4a1b-a268-dd71bf389f1e |
    +| name                | 172.24.4.3                           |
    +| port_id             | None                                 |
    +| project_id          | faac34f01fb2464295bcea501b18b741     |
    +| revision_number     | 0                                    |
    +| router_id           | None                                 |
    +| status              | DOWN                                 |
    +| updated_at          | 2020-10-21T12:36:18Z                 |
    ++---------------------+--------------------------------------+
    +
    +
  10. +
  11. Associar o IP público à VM previamente criada: +
    $ openstack server add floating ip vm-1 172.24.4.13
    +
    +
  12. +
+ +

Security groups

+ +
    +
  1. Criar um security group: +
    $ openstack security group create fiap
    ++-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
    +| Field           | Value                                                                                                                                                 |
    ++-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
    +| created_at      | 2020-10-21T12:36:49Z                                                                                                                                  |
    +| description     | fiap                                                                                                                                                  |
    +| id              | b139dbf9-20b2-44cd-b39b-8de218047453                                                                                                                  |
    +| name            | fiap                                                                                                                                                  |
    +| project_id      | faac34f01fb2464295bcea501b18b741                                                                                                                      |
    +| revision_number | 2                                                                                                                                                     |
    +| rules           | created_at='2020-10-21T12:36:49Z', direction='egress', ethertype='IPv4', id='d212931e-290d-4527-a769-74ede1ce30c4', updated_at='2020-10-21T12:36:49Z' |
    +|                 | created_at='2020-10-21T12:36:49Z', direction='egress', ethertype='IPv6', id='ea4e356c-d97c-42b7-ad7c-9a0e0b0c326f', updated_at='2020-10-21T12:36:49Z' |
    +| updated_at      | 2020-10-21T12:36:49Z                                                                                                                                  |
    ++-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
    +
    +
  2. +
  3. Liberar o tráfego ICMP (para poder pingar à VM): +
    $ openstack security group rule create --ingress --protocol icmp --remote-ip 0.0.0.0/0 fiap
    ++-------------------+--------------------------------------+
    +| Field             | Value                                |
    ++-------------------+--------------------------------------+
    +| created_at        | 2020-10-21T12:37:39Z                 |
    +| description       |                                      |
    +| direction         | ingress                              |
    +| ether_type        | IPv4                                 |
    +| id                | 4b690df3-5736-47c5-a401-c0cae4ce0614 |
    +| name              | None                                 |
    +| port_range_max    | None                                 |
    +| port_range_min    | None                                 |
    +| project_id        | faac34f01fb2464295bcea501b18b741     |
    +| protocol          | icmp                                 |
    +| remote_group_id   | None                                 |
    +| remote_ip_prefix  | 0.0.0.0/0                            |
    +| revision_number   | 0                                    |
    +| security_group_id | b139dbf9-20b2-44cd-b39b-8de218047453 |
    +| updated_at        | 2020-10-21T12:37:39Z                 |
    ++-------------------+--------------------------------------+
    +
    +
  4. +
  5. Liberar o tráfego TCP (para conseguir acessar via SSH à VM): +
    $ openstack security group rule create --ingress --protocol tcp --remote-ip 0.0.0.0/0 fiap
    ++-------------------+--------------------------------------+
    +| Field             | Value                                |
    ++-------------------+--------------------------------------+
    +| created_at        | 2020-10-21T12:38:09Z                 |
    +| description       |                                      |
    +| direction         | ingress                              |
    +| ether_type        | IPv4                                 |
    +| id                | 83eb8a45-4a3e-4580-8227-b679d9d1b0fd |
    +| name              | None                                 |
    +| port_range_max    | None                                 |
    +| port_range_min    | None                                 |
    +| project_id        | faac34f01fb2464295bcea501b18b741     |
    +| protocol          | tcp                                  |
    +| remote_group_id   | None                                 |
    +| remote_ip_prefix  | 0.0.0.0/0                            |
    +| revision_number   | 0                                    |
    +| security_group_id | b139dbf9-20b2-44cd-b39b-8de218047453 |
    +| updated_at        | 2020-10-21T12:38:09Z                 |
    ++-------------------+--------------------------------------+
    +
    +
  6. +
  7. Associar o security group à VM: +
    $ openstack server list
    ++--------------------------------------+------+--------+---------------------------------------+--------------------------+--------+
    +| ID                                   | Name | Status | Networks                              | Image                    | Flavor |
    ++--------------------------------------+------+--------+---------------------------------------+--------------------------+--------+
    +| bf522bf5-3e86-4f6c-ab02-d36c2de4ee5b | vm-2 | ACTIVE | rede-privada=10.20.20.7               | cirros-0.3.5-x86_64-disk | m.fiap |
    +| 5342ee28-9516-43d4-825f-a4547a8c7cdf | vm-1 | ACTIVE | rede-privada=10.20.20.10, 172.24.4.13 | cirros-0.3.5-x86_64-disk | m.fiap |
    ++--------------------------------------+------+--------+---------------------------------------+--------------------------+--------+
    +
    +$ openstack server add security group vm-1 fiap
    +
    +
  8. +
  9. Tentar pingar a VM pelo IP interno (não é possível): +
    $ openstack server list
    ++--------------------------------------+------+--------+---------------------------------------+--------------------------+--------+
    +| ID                                   | Name | Status | Networks                              | Image                    | Flavor |
    ++--------------------------------------+------+--------+---------------------------------------+--------------------------+--------+
    +| bf522bf5-3e86-4f6c-ab02-d36c2de4ee5b | vm-2 | ACTIVE | rede-privada=10.20.20.7               | cirros-0.3.5-x86_64-disk | m.fiap |
    +| 5342ee28-9516-43d4-825f-a4547a8c7cdf | vm-1 | ACTIVE | rede-privada=10.20.20.10, 172.24.4.13 | cirros-0.3.5-x86_64-disk | m.fiap |
    ++--------------------------------------+------+--------+---------------------------------------+--------------------------+--------+
    +
    +$ ping 10.20.20.10
    +PING 10.20.20.10 (10.20.20.10) 56(84) bytes of data.
    +--- 10.20.20.10 ping statistics ---
    +10 packets transmitted, 0 received, 100% packet loss, time 8999ms
    +
    +
  10. +
  11. Conferir o ID do roteador para saber a qual network namespace temos que acessar: +
    $ openstack router list
    ++--------------------------------------+-------------+--------+-------+-------------+-------+----------------------------------+
    +| ID                                   | Name        | Status | State | Distributed | HA    | Project                          |
    ++--------------------------------------+-------------+--------+-------+-------------+-------+----------------------------------+
    +| 19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7 | router1     | ACTIVE | UP    | False       | False | faac34f01fb2464295bcea501b18b741 |
    +| d4ea769a-6403-436d-9f8c-c9330597a247 | router-fiap | ACTIVE | UP    | False       | False | faac34f01fb2464295bcea501b18b741 |
    ++--------------------------------------+-------------+--------+-------+-------------+-------+----------------------------------+
    +
    +
  12. +
  13. Listar os network namespaces: +
    $ sudo ip netns ls
    +qrouter-d4ea769a-6403-436d-9f8c-c9330597a247
    +qdhcp-f7476929-ffcd-4451-a4b0-3e109d1d782c
    +qrouter-19d71b70-0c7b-4b5b-8fe8-b11a1d3a7bf7
    +qdhcp-4e05e1bd-50f4-494b-aacf-07d43a37d1a1
    +
    +
  14. +
  15. Acessar ao network namespace do virtual router (veja que o prompt muda): +
    $ sudo ip netns exec qrouter-d4ea769a-6403-436d-9f8c-c9330597a247 bash
    +root@ubuntu:~#
    +
    +
  16. +
  17. Conferir os IPs (do gateway e floating IPs): +
    # ip a
    +1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    +    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    +    inet 127.0.0.1/8 scope host lo
    +       valid_lft forever preferred_lft forever
    +    inet6 ::1/128 scope host
    +       valid_lft forever preferred_lft forever
    +31: qg-215adae6-b3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1
    +    link/ether fa:16:3e:1f:96:43 brd ff:ff:ff:ff:ff:ff
    +    inet 172.24.4.6/24 brd 172.24.4.255 scope global qg-215adae6-b3
    +       valid_lft forever preferred_lft forever
    +    inet 172.24.4.13/32 brd 172.24.4.13 scope global qg-215adae6-b3
    +       valid_lft forever preferred_lft forever
    +    inet6 2001:db8::9/64 scope global
    +       valid_lft forever preferred_lft forever
    +    inet6 fe80::f816:3eff:fe1f:9643/64 scope link
    +       valid_lft forever preferred_lft forever
    +32: qr-609c323c-1c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default qlen 1
    +    link/ether fa:16:3e:83:e1:94 brd ff:ff:ff:ff:ff:ff
    +    inet 10.20.20.1/24 brd 10.20.20.255 scope global qr-609c323c-1c
    +       valid_lft forever preferred_lft forever
    +    inet6 fe80::f816:3eff:fe83:e194/64 scope link
    +       valid_lft forever preferred_lft forever
    +
    +
  18. +
  19. Pingar à VM e acessar via SSH: +
    root@ubuntu:~# ping 10.20.20.10
    +PING 10.20.20.10 (10.20.20.10) 56(84) bytes of data.
    +64 bytes from 10.20.20.10: icmp_seq=1 ttl=64 time=4.24 ms
    +--- 10.20.20.10 ping statistics ---
    +2 packets transmitted, 2 received, 0% packet loss, time 1002ms
    +    
    +root@ubuntu:~# ssh cirros@10.20.20.10
    +The authenticity of host '10.20.20.10 (10.20.20.10)' can't be established.
    +RSA key fingerprint is SHA256:OmSUneCH0niBARHfqLBT9pjvRPs7DHwuGZfcHEbIT4I.
    +Are you sure you want to continue connecting (yes/no)? yes
    +Warning: Permanently added '10.20.20.10' (RSA) to the list of known hosts.
    +cirros@10.20.20.10's password:
    +$
    +
    +
  20. +
  21. Listar as portas (fora do prompt do namespace): +
    $ openstack port list
    ++--------------------------------------+------+-------------------+-----------------------------------------------------------------------------------------------------+--------+
    +| ID                                   | Name | MAC Address       | Fixed IP Addresses                                                                                  | Status |
    ++--------------------------------------+------+-------------------+-----------------------------------------------------------------------------------------------------+--------+
    +| 215adae6-b393-4f0e-bafb-0a0df58654ea |      | fa:16:3e:1f:96:43 | ip_address='172.24.4.6', subnet_id='da0570da-acff-4f82-a811-1b2fe4770d46'                           | ACTIVE |
    +|                                      |      |                   | ip_address='2001:db8::9', subnet_id='b505a0fc-87aa-4317-9a58-a03d501b3fb1'                          |        |
    +| 47a2ebc7-b0a8-4ec9-9275-6f8a2426a320 |      | fa:16:3e:28:a2:2b | ip_address='10.20.20.2', subnet_id='97ae9655-263d-4d17-8156-f030bd34367e'                           | ACTIVE |
    +| 5921542f-9e21-4841-a0a0-d0f9520376b1 |      | fa:16:3e:80:11:55 | ip_address='172.24.4.13', subnet_id='da0570da-acff-4f82-a811-1b2fe4770d46'                          | N/A    |
    +|                                      |      |                   | ip_address='2001:db8::c', subnet_id='b505a0fc-87aa-4317-9a58-a03d501b3fb1'                          |        |
    +| 609c323c-1cdc-4cb5-b113-6658c589df67 |      | fa:16:3e:83:e1:94 | ip_address='10.20.20.1', subnet_id='97ae9655-263d-4d17-8156-f030bd34367e'                           | ACTIVE |
    +| 71f41315-e1d8-4716-810e-a8532e7cefdc |      | fa:16:3e:45:ed:93 | ip_address='10.0.0.2', subnet_id='d569c273-81c2-488b-9422-d1d4ee85eee7'                             | ACTIVE |
    +|                                      |      |                   | ip_address='fdb5:7432:9bc4:0:f816:3eff:fe45:ed93', subnet_id='3932e372-f808-4263-9850-e82be84a32c7' |        |
    +| 7b272383-9238-429e-9a8f-b06a3824538b |      | fa:16:3e:12:b4:dc | ip_address='10.20.20.10', subnet_id='97ae9655-263d-4d17-8156-f030bd34367e'                          | ACTIVE |
    +| aa0f0802-9d48-4647-a186-f9dacf80e772 |      | fa:16:3e:aa:12:dd | ip_address='10.0.0.1', subnet_id='d569c273-81c2-488b-9422-d1d4ee85eee7'                             | ACTIVE |
    +| c9016286-df6f-4d09-8fa9-f63921dc812d |      | fa:16:3e:9b:0d:c8 | ip_address='10.20.20.7', subnet_id='97ae9655-263d-4d17-8156-f030bd34367e'                           | ACTIVE |
    +| e3982d0f-57e2-43a2-8133-65e5c92244d2 |      | fa:16:3e:15:8e:34 | ip_address='172.24.4.3', subnet_id='da0570da-acff-4f82-a811-1b2fe4770d46'                           | N/A    |
    +|                                      |      |                   | ip_address='2001:db8::4', subnet_id='b505a0fc-87aa-4317-9a58-a03d501b3fb1'                          |        |
    +| ed7b4f9d-fbfc-45c4-a2bb-b3ec61b265fa |      | fa:16:3e:4c:b8:b0 | ip_address='fdb5:7432:9bc4::1', subnet_id='3932e372-f808-4263-9850-e82be84a32c7'                    | ACTIVE |
    +| f0d36643-4cee-4026-bc48-ea43e5ede266 |      | fa:16:3e:cf:20:b5 | ip_address='172.24.4.4', subnet_id='da0570da-acff-4f82-a811-1b2fe4770d46'                           | ACTIVE |
    +|                                      |      |                   | ip_address='2001:db8::1', subnet_id='b505a0fc-87aa-4317-9a58-a03d501b3fb1'                          |        |
    ++--------------------------------------+------+-------------------+-----------------------------------------------------------------------------------------------------+--------+
    +
    +
  22. +
  23. Mostar informação sobre uma porta virtual determinada: +
    $ openstack port show 7b272383-9238-429e-9a8f-b06a3824538b
    ++-----------------------+----------------------------------------------------------------------------+
    +| Field                 | Value                                                                      |
    ++-----------------------+----------------------------------------------------------------------------+
    +| admin_state_up        | UP                                                                         |
    +| allowed_address_pairs |                                                                            |
    +| binding_host_id       | ubuntu                                                                     |
    +| binding_profile       |                                                                            |
    +| binding_vif_details   | datapath_type='system', ovs_hybrid_plug='True', port_filter='True'         |
    +| binding_vif_type      | ovs                                                                        |
    +| binding_vnic_type     | normal                                                                     |
    +| created_at            | 2020-10-21T12:39:40Z                                                       |
    +| data_plane_status     | None                                                                       |
    +| description           |                                                                            |
    +| device_id             | 5342ee28-9516-43d4-825f-a4547a8c7cdf                                       |
    +| device_owner          | compute:nova                                                               |
    +| dns_assignment        | None                                                                       |
    +| dns_name              | None                                                                       |
    +| extra_dhcp_opts       |                                                                            |
    +| fixed_ips             | ip_address='10.20.20.10', subnet_id='97ae9655-263d-4d17-8156-f030bd34367e' |
    +| id                    | 7b272383-9238-429e-9a8f-b06a3824538b                                       |
    +| ip_address            | None                                                                       |
    +| mac_address           | fa:16:3e:12:b4:dc                                                          |
    +| name                  |                                                                            |
    +| network_id            | f7476929-ffcd-4451-a4b0-3e109d1d782c                                       |
    +| option_name           | None                                                                       |
    +| option_value          | None                                                                       |
    +| port_security_enabled | True                                                                       |
    +| project_id            | faac34f01fb2464295bcea501b18b741                                           |
    +| qos_policy_id         | None                                                                       |
    +| revision_number       | 7                                                                          |
    +| security_group_ids    | b139dbf9-20b2-44cd-b39b-8de218047453, b1dfa17e-2f36-492a-bf28-fbd4b123bdd4 |
    +| status                | ACTIVE                                                                     |
    +| subnet_id             | None                                                                       |
    +| tags                  |                                                                            |
    +| trunk_details         | None                                                                       |
    +| updated_at            | 2020-10-21T13:00:48Z                                                       |
    ++-----------------------+----------------------------------------------------------------------------+
    +
    +
  24. +
  25. Encontrar a interface do OpenvSwitch associada a porta: +
    $ sudo ovs-vsctl show | grep 7b27
    +    Port "qvo7b272383-92"
    +        Interface "qvo7b272383-92"
    +
    +
  26. +
  27. Mostrar a porta no OpenvSwitch: +
    $ sudo ovs-vsctl list interface qvo7b272383-92
    +_uuid               : 59fb7296-d229-43ab-b57e-577eebfa8faf
    +admin_state         : up
    +bfd                 : {}
    +bfd_status          : {}
    +cfm_fault           : []
    +cfm_fault_status    : []
    +cfm_flap_count      : []
    +cfm_health          : []
    +cfm_mpid            : []
    +cfm_remote_mpids    : []
    +cfm_remote_opstate  : []
    +duplex              : full
    +error               : []
    +external_ids        : {attached-mac="fa:16:3e:12:b4:dc", iface-id="7b272383-9238-429e-9a8f-b06a3824538b", iface-status=active, vm-uuid="5342ee28-9516-43d4-825f-a4547a8c7cdf"}
    +ifindex             : 34
    +ingress_policing_burst: 0
    +ingress_policing_rate: 0
    +lacp_current        : []
    +link_resets         : 0
    +link_speed          : 10000000000
    +link_state          : up
    +lldp                : {}
    +mac                 : []
    +mac_in_use          : "da:07:e5:c7:d7:a2"
    +mtu                 : 1450
    +mtu_request         : []
    +name                : "qvo7b272383-92"
    +ofport              : 17
    +ofport_request      : []
    +options             : {}
    +other_config        : {}
    +statistics          : {collisions=0, rx_bytes=17411, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=176, tx_bytes=18682, tx_dropped=0, tx_errors=0, tx_packets=159}
    +status              : {driver_name=veth, driver_version="1.0", firmware_version=""}
    +type                : ""
    +
    +
  28. +
  29. Mostrar os bridges e as interfaces configuradas no OpenvSwitch: +
    $ sudo ovs-vsctl show
    +c4198c58-dfa5-4d11-8cac-49b7565354b0
    +    Manager "ptcp:6640:127.0.0.1"
    +        is_connected: true
    +    Bridge br-ex
    +        Controller "tcp:127.0.0.1:6633"
    +            is_connected: true
    +        fail_mode: secure
    +        Port phy-br-ex
    +            Interface phy-br-ex
    +                type: patch
    +                options: {peer=int-br-ex}
    +        Port br-ex
    +            Interface br-ex
    +                type: internal
    +    Bridge br-tun
    +        Controller "tcp:127.0.0.1:6633"
    +            is_connected: true
    +        fail_mode: secure
    +        Port br-tun
    +            Interface br-tun
    +                type: internal
    +        Port patch-int
    +            Interface patch-int
    +                type: patch
    +                options: {peer=patch-tun}
    +    Bridge br-int
    +        Controller "tcp:127.0.0.1:6633"
    +            is_connected: true
    +        fail_mode: secure
    +        Port patch-tun
    +            Interface patch-tun
    +                type: patch
    +                options: {peer=patch-int}
    +        Port "tap71f41315-e1"
    +            tag: 1
    +            Interface "tap71f41315-e1"
    +                type: internal
    +        Port br-int
    +            Interface br-int
    +                type: internal
    +        Port "qg-215adae6-b3"
    +            tag: 2
    +            Interface "qg-215adae6-b3"
    +                type: internal
    +        Port int-br-ex
    +            Interface int-br-ex
    +                type: patch
    +                options: {peer=phy-br-ex}
    +        Port "qr-aa0f0802-9d"
    +            tag: 1
    +            Interface "qr-aa0f0802-9d"
    +                type: internal
    +        Port "qr-609c323c-1c"
    +            tag: 3
    +            Interface "qr-609c323c-1c"
    +                type: internal
    +        Port "qvo7b272383-92"
    +            tag: 3
    +            Interface "qvo7b272383-92"
    +        Port "qvoc9016286-df"
    +            tag: 3
    +            Interface "qvoc9016286-df"
    +        Port "tap47a2ebc7-b0"
    +            tag: 3
    +            Interface "tap47a2ebc7-b0"
    +                type: internal
    +        Port "qr-ed7b4f9d-fb"
    +            tag: 1
    +            Interface "qr-ed7b4f9d-fb"
    +                type: internal
    +        Port "qg-f0d36643-4c"
    +            tag: 2
    +            Interface "qg-f0d36643-4c"
    +                type: internal
    +    ovs_version: "2.6.1"
    +
    +
  30. +
+ +

Clean-up

+ +
    +
  1. Deletar VMs, rede, subrede e roteador +
    $ openstack server remove floating ip vm-1   172.24.4.13
    +$ openstack router remove subnet router-fiap subrede-privada
    +$ openstack router delete router-fiap
    +$ openstack server delete vm-1 vm-2
    +$ openstack subnet delete subrede-privada
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Refazer o mesmo processo via Horizon Dashboard: +
      +
    • +

      Criação de rede + +

      +
    • +
    • Criação de subrede
    • +
    • +

      Criação de roteador +

      +
    • +
    • +

      Assignar interfaces ao roteador +

      +
    • +
    • +

      Reservar floating IP e associar a instância +

      +
    • +
    • +

      Criação de security group +

      +
    • +
    • Liberar regras no security group
    • +
    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack5-cinder/index.html b/docs/openstack5-cinder/index.html new file mode 100644 index 0000000000..c4ac0ecbf8 --- /dev/null +++ b/docs/openstack5-cinder/index.html @@ -0,0 +1,1246 @@ + + + + + + +OpenStack series V: Cinder - Block Storage Service - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 5 - OpenStack Cinder

+ +

Block Storage Service

+ +

Usaremos o serviço Cinder para aprender alguns conceitos importantes sobre armazenamento de bloco:

+
    +
  • criação de volumes
  • +
  • snapshots
  • +
  • partição, formatação e montagem de volumes
  • +
+ +

Pre-reqs

+ +
    +
  1. Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: +
     $ source devstack/openrc admin
    + WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +    
    + $ env | grep OS_
    + OS_PROJECT_DOMAIN_ID=default
    + OS_REGION_NAME=RegionOne
    + OS_USER_DOMAIN_ID=default
    + OS_PROJECT_NAME=demo
    + OS_IDENTITY_API_VERSION=3
    + OS_PASSWORD=nomoresecret
    + OS_AUTH_TYPE=password
    + OS_AUTH_URL=http://192.168.17.131/identity
    + OS_USERNAME=admin
    + OS_TENANT_NAME=demo
    + OS_VOLUME_API_VERSION=2
    +
    +
  2. +
  3. Conferir que o Cinder foi instalado no OpenStack: +
     $ openstack service list
    + +----------------------------------+-------------+----------------+
    + | ID                               | Name        | Type           |
    + +----------------------------------+-------------+----------------+
    + | 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    + | 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    + | 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    + | 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    + | 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    + | 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    + | 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    + | 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    + | 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    + | cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    + | d8b098869281469bbd90bbc762aad340 | glance      | image          |
    + | fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    + +----------------------------------+-------------+----------------+
    +
    +
  4. +
  5. Mostrar informação sobre o endpoint: +
     $ openstack catalog show cinder
    + +-----------+----------------------------------------------------------------------------+
    + | Field     | Value                                                                      |
    + +-----------+----------------------------------------------------------------------------+
    + | endpoints | RegionOne                                                                  |
    + |           |   public: http://192.168.17.131/volume/v1/faac34f01fb2464295bcea501b18b741 |
    + |           |                                                                            |
    + | id        | 23dbf9f8ad1345e5b4d6d781c4b88e03                                           |
    + | name      | cinder                                                                     |
    + | type      | volume                                                                     |
    + +-----------+----------------------------------------------------------------------------+
    +
    +
  6. +
  7. Mostrar informação sobre os serviços OpenStack que compõem o Cinder: +
     $ openstack volume service list
    + +------------------+--------------------+------+---------+-------+----------------------------+
    + | Binary           | Host               | Zone | Status  | State | Updated At                 |
    + +------------------+--------------------+------+---------+-------+----------------------------+
    + | cinder-scheduler | ubuntu             | nova | enabled | up    | 2020-10-26T23:22:11.000000 |
    + | cinder-volume    | ubuntu@lvmdriver-1 | nova | enabled | up    | 2020-10-26T23:22:07.000000 |
    + +------------------+--------------------+------+---------+-------+----------------------------+
    +
    + +

    Nota: Se o cinder-volume aparece com estado down (provavelmente a VM foi restartada em algum momento), seguem os passos para corrigi-lo:

    +
     $ sudo losetup -f /opt/stack/data/stack-volumes-default-backing-file
    + $ sudo losetup -f /opt/stack/data/stack-volumes-lvmdriver-1-backing-file
    + $ sudo systemctl restart devstack@c-vol
    +
    + +

    Tentar o comando openstack volume service list novamente.

    +
  8. +
  9. Listar os serviços Linux que compõem o Cinder: +
     $ systemctl | grep devstack@c
    + devstack@c-api.service                                             loaded active running   Devstack devstack@c-api.service
    + devstack@c-sch.service                                             loaded active running   Devstack devstack@c-sch.service
    + devstack@c-vol.service                                             loaded active running   Devstack devstack@c-vol.service    
    +
    +
  10. +
  11. Conferir a saúde dos serviços: +
     $ systemctl status devstack@c*
    + ● devstack@c-api.service - Devstack devstack@c-api.service
    +    Loaded: loaded (/etc/systemd/system/devstack@c-api.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 26min ago
    +  Main PID: 805 (uwsgi)
    +    Status: "uWSGI is ready"
    +    CGroup: /system.slice/system-devstack.slice/devstack@c-api.service
    +            ├─805 cinder-apiuWSGI maste
    +            ├─888 cinder-apiuWSGI worker
    +            └─891 cinder-apiuWSGI worker
    +
    + ● devstack@c-sch.service - Devstack devstack@c-sch.service
    +    Loaded: loaded (/etc/systemd/system/devstack@c-sch.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 26min ago
    +  Main PID: 784 (cinder-schedule)
    +    CGroup: /system.slice/system-devstack.slice/devstack@c-sch.service
    +            └─784 /usr/bin/python /usr/local/bin/cinder-scheduler --config-file /etc/cinder/cinder.conf
    +
    + ● devstack@c-vol.service - Devstack devstack@c-vol.service
    +    Loaded: loaded (/etc/systemd/system/devstack@c-vol.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 16:01:43 PDT; 21min ago
    +  Main PID: 3901 (cinder-volume)
    +    CGroup: /system.slice/system-devstack.slice/devstack@c-vol.service
    +            ├─3901 /usr/bin/python /usr/local/bin/cinder-volume --config-file /etc/cinder/cinder.conf
    +            └─3912 /usr/bin/python /usr/local/bin/cinder-volume --config-file /etc/cinder/cinder.conf
    +
    +
  12. +
  13. Mostrar os logs do serviço: +
     $ journalctl -u devstack@c-vol
    +
    +
  14. +
  15. Mostrar os arquivos de configuração: +
     $ less /etc/cinder/cinder.conf
    + $ less /etc/cinder/policy.json
    +
    +
  16. +
+ +

Volumes

+ +
    +
  1. Criar um volume vazio de 1 GB: +
     $ openstack volume create teste-fiap --size 1
    + +---------------------+--------------------------------------+
    + | Field               | Value                                |
    + +---------------------+--------------------------------------+
    + | attachments         | []                                   |
    + | availability_zone   | nova                                 |
    + | bootable            | false                                |
    + | consistencygroup_id | None                                 |
    + | created_at          | 2020-10-26T23:00:56.770211           |
    + | description         | None                                 |
    + | encrypted           | False                                |
    + | id                  | cab7679c-d7dd-4826-93ec-f4b78b434467 |
    + | migration_status    | None                                 |
    + | multiattach         | False                                |
    + | name                | teste-fiap                           |
    + | properties          |                                      |
    + | replication_status  | None                                 |
    + | size                | 1                                    |
    + | snapshot_id         | None                                 |
    + | source_volid        | None                                 |
    + | status              | creating                             |
    + | type                | lvmdriver-1                          |
    + | updated_at          | None                                 |
    + | user_id             | fe2d2a5507ed4ad2919258d7252cebc6     |
    + +---------------------+--------------------------------------+
    +
    +
  2. +
  3. Listar os volumes e mostrar o volume recém criado: +
    $ openstack volume list
    ++--------------------------------------+------------+-----------+------+-------------+
    +| ID                                   | Name       | Status    | Size | Attached to |
    ++--------------------------------------+------------+-----------+------+-------------+
    +| abccb06a-5e9e-422b-a2c0-9f6768071785 | teste-fiap | available |    1 |             |
    +| cab7679c-d7dd-4826-93ec-f4b78b434467 | teste-fiap | error     |    1 |             |
    ++--------------------------------------+------------+-----------+------+-------------+
    +
    +
  4. +
  5. Criar uma VM: +
    $ openstack server create --network private --flavor m.fiap --image cirros-0.3.5-x86_64-disk vm
    ++-------------------------------------+-----------------------------------------------------------------+
    +| Field                               | Value                                                           |
    ++-------------------------------------+-----------------------------------------------------------------+
    +| OS-DCF:diskConfig                   | MANUAL                                                          |
    +| OS-EXT-AZ:availability_zone         |                                                                 |
    +| OS-EXT-SRV-ATTR:host                | None                                                            |
    +| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                            |
    +| OS-EXT-SRV-ATTR:instance_name       |                                                                 |
    +| OS-EXT-STS:power_state              | NOSTATE                                                         |
    +| OS-EXT-STS:task_state               | scheduling                                                      |
    +| OS-EXT-STS:vm_state                 | building                                                        |
    +| OS-SRV-USG:launched_at              | None                                                            |
    +| OS-SRV-USG:terminated_at            | None                                                            |
    +| accessIPv4                          |                                                                 |
    +| accessIPv6                          |                                                                 |
    +| addresses                           |                                                                 |
    +| adminPass                           | NZX7c7qpXoif                                                    |
    +| config_drive                        |                                                                 |
    +| created                             | 2020-10-26T23:28:07Z                                            |
    +| flavor                              | m.fiap (a0683bcb-b937-4c75-be19-7641eceeff78)                   |
    +| hostId                              |                                                                 |
    +| id                                  | 8d2d0c89-1ae6-4ad2-9299-171c14a29567                            |
    +| image                               | cirros-0.3.5-x86_64-disk (cd992dd3-2197-49fe-9f0e-43d783d18a5c) |
    +| key_name                            | None                                                            |
    +| name                                | vm                                                              |
    +| progress                            | 0                                                               |
    +| project_id                          | faac34f01fb2464295bcea501b18b741                                |
    +| properties                          |                                                                 |
    +| security_groups                     | name='default'                                                  |
    +| status                              | BUILD                                                           |
    +| updated                             | 2020-10-26T23:28:06Z                                            |
    +| user_id                             | fe2d2a5507ed4ad2919258d7252cebc6                                |
    +| volumes_attached                    |                                                                 |
    ++-------------------------------------+-----------------------------------------------------------------+
    +
    +
  6. +
  7. Anexar o volume a uma instancia previamente criada (neste caso vm): +
    $ openstack server add volume vm teste-fiap
    +
    +
  8. +
  9. Conferir que o volume foi anexado: +
    $ openstack server show vm
    ++-------------------------------------+-----------------------------------------------------------------+
    +| Field                               | Value                                                           |
    ++-------------------------------------+-----------------------------------------------------------------+
    +| OS-DCF:diskConfig                   | MANUAL                                                          |
    +| OS-EXT-AZ:availability_zone         | nova                                                            |
    +| OS-EXT-SRV-ATTR:host                | ubuntu                                                          |
    +| OS-EXT-SRV-ATTR:hypervisor_hostname | ubuntu                                                          |
    +| OS-EXT-SRV-ATTR:instance_name       | instance-0000000a                                               |
    +| OS-EXT-STS:power_state              | Running                                                         |
    +| OS-EXT-STS:task_state               | None                                                            |
    +| OS-EXT-STS:vm_state                 | active                                                          |
    +| OS-SRV-USG:launched_at              | 2020-10-26T23:28:12.000000                                      |
    +| OS-SRV-USG:terminated_at            | None                                                            |
    +| accessIPv4                          |                                                                 |
    +| accessIPv6                          |                                                                 |
    +| addresses                           | private=fdb5:7432:9bc4:0:f816:3eff:fe7c:12a1, 10.0.0.8          |
    +| config_drive                        |                                                                 |
    +| created                             | 2020-10-26T23:28:06Z                                            |
    +| flavor                              | m.fiap (a0683bcb-b937-4c75-be19-7641eceeff78)                   |
    +| hostId                              | 4621bfea4420d850fc73fcc3691454ce013120c75edf0c1bd98473eb        |
    +| id                                  | 8d2d0c89-1ae6-4ad2-9299-171c14a29567                            |
    +| image                               | cirros-0.3.5-x86_64-disk (cd992dd3-2197-49fe-9f0e-43d783d18a5c) |
    +| key_name                            | None                                                            |
    +| name                                | vm                                                              |
    +| progress                            | 0                                                               |
    +| project_id                          | faac34f01fb2464295bcea501b18b741                                |
    +| properties                          |                                                                 |
    +| security_groups                     | name='default'                                                  |
    +| status                              | ACTIVE                                                          |
    +| updated                             | 2020-10-26T23:29:07Z                                            |
    +| user_id                             | fe2d2a5507ed4ad2919258d7252cebc6                                |
    +| volumes_attached                    | id='abccb06a-5e9e-422b-a2c0-9f6768071785'                       |
    ++-------------------------------------+-----------------------------------------------------------------+
    +    
    +$ openstack server show vm | grep volumes
    +| volumes_attached                    | id='abccb06a-5e9e-422b-a2c0-9f6768071785'                       |
    +
    +
  10. +
  11. Acessar à vm: +
    $ virsh list
    + Id    Name                           State
    +----------------------------------------------------
    + 2     instance-0000000a              running
    +
    +$ virsh console 2
    +Connected to domain instance-0000000a
    +Escape character is ^]
    +
    +login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
    +vm login: cirros
    +Password:
    +$
    +
    +
  12. +
+ +

Dentro da VM

+ +
    +
  1. Conferir que o novo volume foi entregue a VM: +
    $ ls /dev/vd*
    +/dev/vda   /dev/vda1  /dev/vdb
    +
    +
  2. +
  3. Criar uma partição no novo disco: +
    $ sudo fdisk /dev/vdb
    +Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    +Building a new DOS disklabel with disk identifier 0xaba72f7d.
    +Changes will remain in memory only, until you decide to write them.
    +After that, of course, the previous content won't be recoverable.
    +
    +Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    +
    +Command (m for help): m
    +Command action
    +   a   toggle a bootable flag
    +   b   edit bsd disklabel
    +   c   toggle the dos compatibility flag
    +   d   delete a partition
    +   l   list known partition types
    +   m   print this menu
    +   n   add a new partition
    +   o   create a new empty DOS partition table
    +   p   print the partition table
    +   q   quit without saving changes
    +   s   create a new empty Sun disklabel
    +   t   change a partition's system id
    +   u   change display/entry units
    +   v   verify the partition table
    +   w   write table to disk and exit
    +   x   extra functionality (experts only)
    +
    +Command (m for help): n
    +Partition type:
    +   p   primary (0 primary, 0 extended, 4 free)
    +   e   extended
    +Select (default p): p
    +Partition number (1-4, default 1): 1
    +First sector (2048-2097151, default 2048):
    +Using default value 2048
    +Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):
    +Using default value 2097151
    +
    +Command (m for help): w
    +The partition table has been altered!
    +
    +Calling ioctl() to re-read partition table.
    +Syncing disks.
    +
    +
  4. +
  5. Conferir que a partição foi criada: +
    $ ls /dev/vd*
    +/dev/vda   /dev/vda1  /dev/vdb   /dev/vdb1
    +
    +
  6. +
  7. Formatar a partição: +
    $ sudo mkfs.ext4 /dev/vdb1
    +mke2fs 1.42.2 (27-Mar-2012)
    +Filesystem label=
    +OS type: Linux
    +Block size=4096 (log=2)
    +Fragment size=4096 (log=2)
    +Stride=0 blocks, Stripe width=0 blocks
    +65536 inodes, 261888 blocks
    +13094 blocks (5.00%) reserved for the super user
    +First data block=0
    +Maximum filesystem blocks=268435456
    +8 block groups
    +32768 blocks per group, 32768 fragments per group
    +8192 inodes per group
    +Superblock backups stored on blocks:
    +        32768, 98304, 163840, 229376
    +
    +Allocating group tables: done
    +Writing inode tables: done
    +Creating journal (4096 blocks): done
    +Writing superblocks and filesystem accounting information: done
    +
    +
  8. +
  9. Criar uma nova pasta para montar o volume: +
    $ sudo mkdir /mnt/nuevo-vol
    +
    +
  10. +
  11. Montar o novo volume (pode ignorar o erro): +
    $ sudo mount /dev/vdb1 /mnt/nuevo-vol
    +[  201.700545] EXT3-fs (vdb1): error: couldn't mount because of unsupported optional features (240)
    +
    +
  12. +
  13. Confirmar que o volume foi montado: +
    $ mount
    +rootfs on / type rootfs (rw)
    +/dev on /dev type devtmpfs (rw,relatime,size=21792k,nr_inodes=5448,mode=755)
    +/dev/vda1 on / type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
    +/proc on /proc type proc (rw,relatime)
    +sysfs on /sys type sysfs (rw,relatime)
    +devpts on /dev/pts type devpts (rw,relatime,gid=5,mode=620,ptmxmode=000)
    +tmpfs on /dev/shm type tmpfs (rw,relatime,mode=777)
    +tmpfs on /run type tmpfs (rw,nosuid,relatime,size=200k,mode=755)
    +/dev/vdb1 on /mnt/nuevo-vol type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
    +
    +$ mount | grep nuevo-vol
    +/dev/vdb1 on /mnt/nuevo-vol type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered)
    +
    +
  14. +
  15. Criar um arquivo no novo volume: +
    $ sudo touch /mnt/nuevo-vol/arquivo.txt
    +    
    +$ ls  /mnt/nuevo-vol/
    +/mnt/nuevo-vol/arquivo.txt
    +
    +
  16. +
+ +

De volta no DevStack

+ +
    +
  1. Criar um snapshot do volume: +
    $ openstack volume snapshot create --volume teste-fiap teste-fiap-snap
    +Invalid volume: Volume abccb06a-5e9e-422b-a2c0-9f6768071785 status must be available, but current status is: in-use. (HTTP 400) (Request-ID: req-7c30ee3f-20d4-422e-a6d3-2ed44a631de2)
    +
    + +

    OpenStack não recomenda fazer snapshots de volumes em uso. Para forzar:

    +
    $ openstack volume snapshot create --volume teste-fiap teste-fiap-snap --force
    ++-------------+--------------------------------------+
    +| Field       | Value                                |
    ++-------------+--------------------------------------+
    +| created_at  | 2020-10-26T23:33:56.630662           |
    +| description | None                                 |
    +| id          | b55e6a7c-3072-4879-8f35-bf68901d0e1a |
    +| name        | teste-fiap-snap                      |
    +| properties  |                                      |
    +| size        | 1                                    |
    +| status      | creating                             |
    +| updated_at  | None                                 |
    +| volume_id   | abccb06a-5e9e-422b-a2c0-9f6768071785 |
    ++-------------+--------------------------------------+
    +
    +
  2. +
  3. Listar e mostrar o snapshot: +
    $ openstack volume snapshot list
    ++--------------------------------------+-----------------+-------------+-----------+------+
    +| ID                                   | Name            | Description | Status    | Size |
    ++--------------------------------------+-----------------+-------------+-----------+------+
    +| b55e6a7c-3072-4879-8f35-bf68901d0e1a | teste-fiap-snap | None        | available |    1 |
    ++--------------------------------------+-----------------+-------------+-----------+------+
    +    
    +$ openstack volume snapshot show teste-fiap-snap
    ++--------------------------------------------+--------------------------------------+
    +| Field                                      | Value                                |
    ++--------------------------------------------+--------------------------------------+
    +| created_at                                 | 2020-10-26T23:33:57.000000           |
    +| description                                | None                                 |
    +| id                                         | b55e6a7c-3072-4879-8f35-bf68901d0e1a |
    +| name                                       | teste-fiap-snap                      |
    +| os-extended-snapshot-attributes:progress   | 100%                                 |
    +| os-extended-snapshot-attributes:project_id | faac34f01fb2464295bcea501b18b741     |
    +| properties                                 |                                      |
    +| size                                       | 1                                    |
    +| status                                     | available                            |
    +| updated_at                                 | 2020-10-26T23:33:57.000000           |
    +| volume_id                                  | abccb06a-5e9e-422b-a2c0-9f6768071785 |
    ++--------------------------------------------+--------------------------------------+
    +
    +
  4. +
  5. Mostrar o volume no LVM: +
    $ sudo lvs
    +  LV                                             VG                        Attr       LSize Pool Origin                                      Data%  Meta%  Move Log Cpy%Sync Convert
    +  _snapshot-b55e6a7c-3072-4879-8f35-bf68901d0e1a stack-volumes-lvmdriver-1 swi-a-s--- 1.00g      volume-abccb06a-5e9e-422b-a2c0-9f6768071785 0.00
    +  volume-abccb06a-5e9e-422b-a2c0-9f6768071785    stack-volumes-lvmdriver-1 owi-aos--- 1.00g                               
    +  volume-dba8b01e-f259-468e-b370-c94732ea00be    stack-volumes-lvmdriver-1 -wi-a----- 1.00g
    +   
    +$ sudo vgs
    +  VG                        #PV #LV #SN Attr   VSize  VFree
    +  stack-volumes-default       1   0   0 wz--n- 10.01g 10.01g
    +  stack-volumes-lvmdriver-1   1   3   1 wz--n- 10.01g  7.01g
    +      
    +$ sudo pvs
    +  PV         VG                        Fmt  Attr PSize  PFree
    +  /dev/loop1 stack-volumes-default     lvm2 a--  10.01g 10.01g
    +  /dev/loop2 stack-volumes-lvmdriver-1 lvm2 a--  10.01g  7.01g
    +
    +
  6. +
  7. Desatachar o volume da VM e confirmar que volta para o estado available: +
    $ openstack server remove volume vm teste-fiap
    +    
    +$ openstack volume list
    ++--------------------------------------+------------+-----------+------+-------------+
    +| ID                                   | Name       | Status    | Size | Attached to |
    ++--------------------------------------+------------+-----------+------+-------------+
    +| abccb06a-5e9e-422b-a2c0-9f6768071785 | teste-fiap | available |    1 |             |
    ++--------------------------------------+------------+-----------+------+-------------+
    +
    +
  8. +
  9. Anexar o volume a outra VM, monta-lo e conferir que o arquivo criado continua presente
  10. +
+ +

Clean-up

+ +
    +
  1. Desanexar e deletar volumes e snapshots: +
    $ openstack volume snapshot delete teste-fiap-snap
    +    
    +$ openstack volume delete teste-fiap
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Refazer o mesmo processo via Horizon Dashboard: +
      +
    • Criação de volume vazio
    • +
    • Criação de volume a partir de imagem
    • +
    • Snapshot de volume
    • +
    • Atachar/desatachar volumes a VMs
    • +
    + +

    + +

    + +

    + +

    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack6-swift/index.html b/docs/openstack6-swift/index.html new file mode 100644 index 0000000000..df67fb7ed7 --- /dev/null +++ b/docs/openstack6-swift/index.html @@ -0,0 +1,1058 @@ + + + + + + +OpenStack series VI: Swift - Object Storage Service - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 6 - OpenStack Swift

+ +

Object Storage Service

+

Usaremos o serviço Swift para aprender alguns conceitos importantes sobre armazenamento de objeto:

+
    +
  • criação de containers
  • +
  • objetos
  • +
  • acesso via URL
  • +
+ +

Pre-reqs

+ +
    +
  1. Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: +
     $ source devstack/openrc admin
    + WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +
    + $ env | grep OS_
    + OS_PROJECT_DOMAIN_ID=default
    + OS_REGION_NAME=RegionOne
    + OS_USER_DOMAIN_ID=default
    + OS_PROJECT_NAME=demo
    + OS_IDENTITY_API_VERSION=3
    + OS_PASSWORD=nomoresecret
    + OS_AUTH_TYPE=password
    + OS_AUTH_URL=http://192.168.17.131/identity
    + OS_USERNAME=admin
    + OS_TENANT_NAME=demo
    + OS_VOLUME_API_VERSION=2
    +
    +
  2. +
  3. Conferir que o Swift foi instalado no OpenStack: +
     $ openstack service list
    + +----------------------------------+-------------+----------------+
    + | ID                               | Name        | Type           |
    + +----------------------------------+-------------+----------------+
    + | 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    + | 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    + | 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    + | 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    + | 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    + | 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    + | 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    + | 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    + | 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    + | cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    + | d8b098869281469bbd90bbc762aad340 | glance      | image          |
    + | fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    + +----------------------------------+-------------+----------------+
    +
    +
  4. +
  5. Mostrar informação sobre o endpoint: +
     $ openstack catalog show swift
    + +-----------+-------------------------------------------------------------------------------+
    + | Field     | Value                                                                         |
    + +-----------+-------------------------------------------------------------------------------+
    + | endpoints | RegionOne                                                                     |
    + |           |   public: http://192.168.17.131:8080/v1/AUTH_faac34f01fb2464295bcea501b18b741 |
    + |           | RegionOne                                                                     |
    + |           |   admin: http://192.168.17.131:8080                                           |
    + |           |                                                                               |
    + | id        | 82020edd889243c2ac97416014376f12                                              |
    + | name      | swift                                                                         |
    + | type      | object-store                                                                  |
    + +-----------+-------------------------------------------------------------------------------+
    +
    +
  6. +
  7. Conferir que a porta 8080 está aberta e associada ao Swift: +
     $ sudo netstat -punlt | grep 8080
    + tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      842/python
    +    
    + $ ps aux  | grep 842
    + os          842  0.9  0.4 160576 58440 ?        Ss   15:56   0:24 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.conf -v
    + os         6895  0.0  0.0  14224   940 pts/3    S+   16:38   0:00 grep --color=auto 842
    +    
    +
    +
  8. +
  9. Listar os serviços Linux que compõem o Swift: +
     $ systemctl | grep devstack@s
    + devstack@s-account.service                                                           loaded active running   Devstack devstack@s-account.service
    + devstack@s-container.service                                                         loaded active running   Devstack devstack@s-container.service
    + devstack@s-object.service                                                            loaded active running   Devstack devstack@s-object.service
    + devstack@s-proxy.service                                                             loaded active running   Devstack devstack@s-proxy.service
    +
    +
  10. +
  11. Conferir a saúde dos serviços: +
     $ systemctl status devstack@s*
    + ● devstack@s-account.service - Devstack devstack@s-account.service
    +    Loaded: loaded (/etc/systemd/system/devstack@s-account.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 42min ago
    +  Main PID: 773 (swift-account-s)
    +    CGroup: /system.slice/system-devstack.slice/devstack@s-account.service
    +            ├─ 773 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server/1.conf -v
    +            ├─1794 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server/1.conf -v
    +            └─1844 /usr/bin/python /usr/local/bin/swift-account-server /etc/swift/account-server/1.conf -v
    +
    + ● devstack@s-container.service - Devstack devstack@s-container.service
    +    Loaded: loaded (/etc/systemd/system/devstack@s-container.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 42min ago
    +  Main PID: 829 (swift-container)
    +    CGroup: /system.slice/system-devstack.slice/devstack@s-container.service
    +            ├─ 829 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server/1.conf -v
    +            ├─1845 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server/1.conf -v
    +            └─1848 /usr/bin/python /usr/local/bin/swift-container-server /etc/swift/container-server/1.conf -v
    +
    + ● devstack@s-object.service - Devstack devstack@s-object.service
    +    Loaded: loaded (/etc/systemd/system/devstack@s-object.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 42min ago
    +  Main PID: 762 (swift-object-se)
    +    CGroup: /system.slice/system-devstack.slice/devstack@s-object.service
    +            ├─ 762 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server/1.conf -v
    +            ├─1799 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server/1.conf -v
    +            └─1832 /usr/bin/python /usr/local/bin/swift-object-server /etc/swift/object-server/1.conf -v
    +
    + ● devstack@s-proxy.service - Devstack devstack@s-proxy.service
    +    Loaded: loaded (/etc/systemd/system/devstack@s-proxy.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 42min ago
    +  Main PID: 842 (swift-proxy-ser)
    +    CGroup: /system.slice/system-devstack.slice/devstack@s-proxy.service
    +            ├─ 842 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.conf -v
    +            └─2203 /usr/bin/python /usr/local/bin/swift-proxy-server /etc/swift/proxy-server.conf -v
    +
    +
  12. +
  13. Mostrar os logs do serviço: +
     $ journalctl -u devstack@s-proxy
    +
    +
  14. +
  15. Mostrar os arquivos de configuração: +
     $ less /etc/swift/swift.conf
    +
    +
  16. +
  17. Mostrar os arquivos de configuração de uma forma mais clara (sem comentários nem linhas vazias): +
     $ egrep -v "^#|^$" /etc/swift/swift.conf
    +
    +
  18. +
  19. Conferir o endpoint do Keystone: +
    $ openstack catalog show keystone
    ++-----------+------------------------------------------+
    +| Field     | Value                                    |
    ++-----------+------------------------------------------+
    +| endpoints | RegionOne                                |
    +|           |   admin: http://192.168.17.131/identity  |
    +|           | RegionOne                                |
    +|           |   public: http://192.168.17.131/identity |
    +|           |                                          |
    +| id        | 5d8f64102deb4f62a559776a899cb63e         |
    +| name      | keystone                                 |
    +| type      | identity                                 |
    ++-----------+------------------------------------------+
    +
    +
  20. +
+ +

Containers e objetos

+ +
    +
  1. Mostrar estatísticas de uso gerais (passando o endpoint do Keystone + /v3): +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 stat
    +               Account: AUTH_faac34f01fb2464295bcea501b18b741
    +            Containers: 0
    +               Objects: 0
    +                 Bytes: 0
    +       X-Put-Timestamp: 1603753102.67486
    +           X-Timestamp: 1603753102.67486
    +            X-Trans-Id: txc3d40d2b1fa541f4831b0-005f97548e
    +          Content-Type: text/plain; charset=utf-8
    +X-Openstack-Request-Id: txc3d40d2b1fa541f4831b0-005f97548e
    +
    +
  2. +
  3. Listar os containers (não deveria ter nenhum ainda): +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 list
    +
    +
  4. +
  5. Criar um arquivo de teste: +
    $ echo "sic mundus creatus est" > teste.txt
    +    
    +$ cat teste.txt
    +sic mundus creatus est
    +
    +
  6. +
  7. Subir o arquivo de teste a um container chamado fiap: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 upload fiap teste.txt
    +teste.txt
    +
    +
  8. +
  9. Listar os containers: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 list
    +fiap
    +
    +
  10. +
  11. Listar o container fiap: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 list fiap
    +teste
    +
    +
  12. +
  13. Mostrar estatísticas de uso gerais: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 stat
    +                        Account: AUTH_faac34f01fb2464295bcea501b18b741
    +                     Containers: 1
    +                        Objects: 0
    +                          Bytes: 0
    +Containers in policy "policy-0": 1
    +   Objects in policy "policy-0": 0
    +     Bytes in policy "policy-0": 0
    +    X-Account-Project-Domain-Id: default
    +         X-Openstack-Request-Id: tx5006ab414c09461c9a17f-005f975e6c
    +                    X-Timestamp: 1603753191.77860
    +                     X-Trans-Id: tx5006ab414c09461c9a17f-005f975e6c
    +                   Content-Type: text/plain; charset=utf-8
    +                  Accept-Ranges: bytes
    +
    +
  14. +
  15. Mostrar estatísticas de uso do container fiap: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 stat fiap
    +               Account: AUTH_faac34f01fb2464295bcea501b18b741
    +             Container: fiap
    +               Objects: 1
    +                 Bytes: 7
    +              Read ACL:
    +             Write ACL:
    +               Sync To:
    +              Sync Key:
    +         Accept-Ranges: bytes
    +      X-Storage-Policy: Policy-0
    +         Last-Modified: Mon, 26 Oct 2020 22:59:52 GMT
    +           X-Timestamp: 1603753191.79482
    +            X-Trans-Id: tx08d25d4bce94419282003-005f975ead
    +          Content-Type: text/plain; charset=utf-8
    +X-Openstack-Request-Id: tx08d25d4bce94419282003-005f975ead
    +
    +
  16. +
  17. Mostrar estatísticas de uso do arquivo de teste: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 stat fiap teste.txt
    +               Account: AUTH_faac34f01fb2464295bcea501b18b741
    +             Container: fiap
    +                Object: teste.txt
    +          Content Type: application/octet-stream
    +        Content Length: 7
    +         Last Modified: Mon, 26 Oct 2020 23:00:23 GMT
    +                  ETag: 2136806bbc5aa640da28ebb726a403f6
    +            Meta Mtime: 1603753129.613298
    +         Accept-Ranges: bytes
    +           X-Timestamp: 1603753222.98572
    +            X-Trans-Id: tx993dcb092f184eafa24a4-005f975eca
    +X-Openstack-Request-Id: tx993dcb092f184eafa24a4-005f975eca
    +
    +
  18. +
  19. Criar uma nova pasta e fazer o download do arquivo: +
    $ mkdir novapasta
    +    
    +$ cd novapasta/
    +    
    +$ swift -V 3 -A http://192.168.17.131/identity/v3 download fiap
    +teste.txt [auth 0.034s, headers 0.066s, total 0.067s, 0.000 MB/s]
    +
    +
  20. +
  21. Conferir o conteúdo do arquivo baixado: +
    $ ls -lh
    +total 8.0K  -rw-rw-r-- 1 os os 7 Oct 26 15:58 teste.txt
    +    
    +$ cat teste.txt
    +sic mundus creatus est
    +
    +
  22. +
  23. Configurar permissões de leitura para o usuário demo no projeto demo: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 post fiap -r "demo:demo"
    +
    +
  24. +
  25. Configurar permissões de escrita para o usuário demo no projeto demo: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 post fiap -w "demo:demo"
    +
    +
  26. +
+ +

Clean-up

+ +
    +
  1. Deletar objeto e container: +
    $ swift -V 3 -A http://192.168.17.131/identity/v3 delete fiap
    +fiap
    +    
    +$ swift -V 3 -A http://192.168.17.131/identity/v3 stat
    +                        Account: AUTH_faac34f01fb2464295bcea501b18b741
    +                     Containers: 0
    +                        Objects: 0
    +                          Bytes: 0
    +Containers in policy "policy-0": 0
    +   Objects in policy "policy-0": 0
    +     Bytes in policy "policy-0": 0
    +    X-Account-Project-Domain-Id: default
    +         X-Openstack-Request-Id: txfa0553a66cb941f89a3d7-005f975fa5
    +                    X-Timestamp: 1603753191.77860
    +                     X-Trans-Id: txfa0553a66cb941f89a3d7-005f975fa5
    +                   Content-Type: text/plain; charset=utf-8
    +                  Accept-Ranges: bytes
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Refazer o mesmo processo via Horizon Dashboard: +
      +
    • Criação de container
    • +
    • Upload de arquivo
    • +
    • Download de arquivo
    • +
    • Configuração de permissões
    • +
    • Abrir objeto via URL
    • +
    + +

    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack7-heat/index.html b/docs/openstack7-heat/index.html new file mode 100644 index 0000000000..d9f8d10762 --- /dev/null +++ b/docs/openstack7-heat/index.html @@ -0,0 +1,1068 @@ + + + + + + +OpenStack series VII: Heat - Orchestration Service - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 11 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 7 - OpenStack Heat

+ +

Orchestration Service

+

Usaremos o serviço Heat para aprender alguns conceitos importantes sobre orquestração e Infrastructure as Code (IaC):

+
    +
  • criação de pilhas (stacks)
  • +
  • listagem de recursos
  • +
+ +

Pre-reqs

+ +
    +
  1. Carregar as credenciais de administrador e conferir que foram aplicadas no ambiente: +
     $ source devstack/openrc admin
    + WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +
    +
  2. +
  3. Conferir que o Heat foi instalado no OpenStack: +
     $ openstack service list
    + +----------------------------------+-------------+----------------+
    + | ID                               | Name        | Type           |
    + +----------------------------------+-------------+----------------+
    + | 14776d964367470ea97ae0f0395be6de | neutron     | network        |
    + | 23dbf9f8ad1345e5b4d6d781c4b88e03 | cinder      | volume         |
    + | 40301ed3d9744979a9e481d025cd3c9c | nova_legacy | compute_legacy |
    + | 46a7ce69fbfd4e7691839b9442eafbbd | placement   | placement      |
    + | 5d8f64102deb4f62a559776a899cb63e | keystone    | identity       |
    + | 5f271b049588412d8e0a11b2fea5469c | nova        | compute        |
    + | 7cd558d4608647569509bf34b794c59f | cinderv2    | volumev2       |
    + | 7e447465286a4560a661a31297e9d45d | cinderv3    | volumev3       |
    + | 82020edd889243c2ac97416014376f12 | swift       | object-store   |
    + | cba857956e2349a5b4f6e1161862f340 | heat-cfn    | cloudformation |
    + | d8b098869281469bbd90bbc762aad340 | glance      | image          |
    + | fc980824a1954be882a9af7591f78e99 | heat        | orchestration  |
    + +----------------------------------+-------------+----------------+
    +
    +
  4. +
  5. Mostrar informação sobre o endpoint: +
     $ openstack catalog show heat
    + +-----------+--------------------------------------------------------------------------------+
    + | Field     | Value                                                                          |
    + +-----------+--------------------------------------------------------------------------------+
    + | endpoints | RegionOne                                                                      |
    + |           |   internal: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741 |
    + |           | RegionOne                                                                      |
    + |           |   admin: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741    |
    + |           | RegionOne                                                                      |
    + |           |   public: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741   |
    + |           |                                                                                |
    + | id        | fc980824a1954be882a9af7591f78e99                                               |
    + | name      | heat                                                                           |
    + | type      | orchestration                                                                  |
    + +-----------+--------------------------------------------------------------------------------+
    +
    +
  6. +
  7. Listar os serviços Linux que compõem o Heat: +
     $ systemctl | grep devstack@h
    + devstack@h-api-cfn.service                                            loaded active running   Devstack devstack@h-api-cfn.service
    + devstack@h-api.service                                                loaded active running   Devstack devstack@h-api.service
    + devstack@h-eng.service                                                loaded active running   Devstack devstack@h-eng.service
    +
    +
  8. +
  9. Conferir a saúde dos serviços: +
     $ systemctl status devstack@h*
    + ● devstack@h-api.service - Devstack devstack@h-api.service
    +    Loaded: loaded (/etc/systemd/system/devstack@h-api.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 1 day 20h ago
    +  Main PID: 778 (uwsgi)
    +    Status: "uWSGI is ready"
    +    CGroup: /system.slice/system-devstack.slice/devstack@h-api.service
    +            ├─778 /usr/local/bin/uwsgi --ini /etc/heat/heat-api-uwsgi.ini
    +            ├─868 /usr/local/bin/uwsgi --ini /etc/heat/heat-api-uwsgi.ini
    +            └─869 /usr/local/bin/uwsgi --ini /etc/heat/heat-api-uwsgi.ini
    +
    + ● devstack@h-eng.service - Devstack devstack@h-eng.service
    +    Loaded: loaded (/etc/systemd/system/devstack@h-eng.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:06 PDT; 1 day 20h ago
    +  Main PID: 800 (heat-engine)
    +    CGroup: /system.slice/system-devstack.slice/devstack@h-eng.service
    +            ├─ 800 /usr/bin/python /usr/local/bin/heat-engine --config-file=/etc/heat/heat.conf
    +            ├─2381 /usr/bin/python /usr/local/bin/heat-engine --config-file=/etc/heat/heat.conf
    +            ├─2382 /usr/bin/python /usr/local/bin/heat-engine --config-file=/etc/heat/heat.conf
    +            ├─2384 /usr/bin/python /usr/local/bin/heat-engine --config-file=/etc/heat/heat.conf
    +            └─2389 /usr/bin/python /usr/local/bin/heat-engine --config-file=/etc/heat/heat.conf
    +
    + ● devstack@h-api-cfn.service - Devstack devstack@h-api-cfn.service
    +    Loaded: loaded (/etc/systemd/system/devstack@h-api-cfn.service; enabled; vendor preset: enabled)
    +    Active: active (running) since Mon 2020-10-26 15:56:07 PDT; 1 day 20h ago
    +  Main PID: 874 (uwsgi)
    +    Status: "uWSGI is ready"
    +    CGroup: /system.slice/system-devstack.slice/devstack@h-api-cfn.service
    +            ├─874 /usr/local/bin/uwsgi --ini /etc/heat/heat-api-cfn-uwsgi.ini
    +            ├─912 /usr/local/bin/uwsgi --ini /etc/heat/heat-api-cfn-uwsgi.ini
    +            └─913 /usr/local/bin/uwsgi --ini /etc/heat/heat-api-cfn-uwsgi.ini
    +
    +
  10. +
  11. Mostrar os logs do serviço: +
     $ journalctl -u devstack@h-eng
    +
    +
  12. +
  13. Mostrar os arquivos de configuração: +
     $ less /etc/heat/heat.conf
    +
    +
  14. +
+ +

Stacks

+ +
    +
  1. Baixar o template: +
     $ git clone https://github.com/josecastillolema/fiap
    + Cloning into 'fiap'...
    + remote: Enumerating objects: 10, done.
    + remote: Counting objects: 100% (10/10), done.
    + remote: Compressing objects: 100% (10/10), done.
    + remote: Total 3716 (delta 4), reused 0 (delta 0), pack-reused 3706
    + Receiving objects: 100% (3716/3716), 44.63 MiB | 3.88 MiB/s, done.
    + Resolving deltas: 100% (1862/1862), done.
    + Checking connectivity... done.
    +
    +
  2. +
  3. Conferir o stack que vai ser criado: +
     $ cd fiap/cld/openstack/lab07-heat/
    +    
    + $ cat heat.yaml
    + heat_template_version: 2016-04-08
    +
    + description: Servidor para FIAP CLD!
    +
    + parameters:
    +   flavor:
    +     type: string
    +     description: Flavor para o servidor web
    +     constraints:
    +     - custom_constraint: nova.flavor
    +   image:
    +     type: string
    +     description: Imagem para o servidor web
    +     constraints:
    +     - custom_constraint: glance.image
    +   private_network:
    +     type: string
    +     description: Rede interna
    +     constraints:
    +     - custom_constraint: neutron.network
    +   private_ip:
    +     type: string
    +     description: IP interna do servidor
    +     default: 10.0.1.200
    +   public_network:
    +     type: string
    +     description: Rede publica
    +     constraints:
    +     - custom_constraint: neutron.network
    +
    + resources:
    +   sec_group:
    +     type: OS::Neutron::SecurityGroup
    +     properties:
    +       rules:
    +       - remote_ip_prefix: 0.0.0.0/0
    +         protocol: icmp
    +       - remote_ip_prefix: 0.0.0.0/0
    +         protocol: tcp
    +         port_range_min: 80
    +         port_range_max: 80
    +       - remote_ip_prefix: 0.0.0.0/0
    +         protocol: tcp
    +         port_range_min: 22
    +         port_range_max: 22
    +
    +   server_port:
    +     type: OS::Neutron::Port
    +     properties:
    +       network_id: { get_param: private_network }
    +       security_groups: [{ get_resource: sec_group }]
    +
    +   server:
    +     type: OS::Nova::Server
    +     properties:
    +       image: { get_param: image }
    +       flavor: { get_param: flavor }
    +       networks:
    +         - port: { get_resource: server_port }
    +
    +   floating_ip:
    +     type: OS::Neutron::FloatingIP
    +     properties:
    +       floating_network: { get_param: public_network }
    +       port_id: { get_resource: server_port }
    +
    + outputs:
    +   lburl:
    +     description: URL do servidor
    +     value:
    +       str_replace:
    +         template: http://IP_ADDRESS
    +         params:
    +           IP_ADDRESS: { get_attr: [ floating_ip, floating_ip_address ] }
    +     description: >
    +       Esta URL e a URL "externa" que pode ser usada para acessar o servidor WEB.
    +
    +
  4. +
  5. Criar um stack: +
    $ openstack stack create -t heat.yaml fiap-stack --parameter image=cirros-0.3.5-x86_64-disk --parameter private_network=private --parameter flavor=m.fiap --parameter public_network=public
    ++---------------------+--------------------------------------+
    +| Field               | Value                                |
    ++---------------------+--------------------------------------+
    +| id                  | 9fe42824-9f12-4925-9e37-e5f586a5d4a2 |
    +| stack_name          | fiap-stack                           |
    +| description         | Servidor para FIAP CLD!              |
    +| creation_time       | 2020-10-28T19:23:53Z                 |
    +| updated_time        | None                                 |
    +| stack_status        | CREATE_IN_PROGRESS                   |
    +| stack_status_reason | Stack CREATE started                 |
    ++---------------------+--------------------------------------+
    +
    +
  6. +
  7. Listar ate que fique em estado de CREATE_COMPLATE (pode demorar uns minutos): +
    $ watch openstack stack list
    ++--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+
    +| ID                                   | Stack Name | Project                          | Stack Status    | Creation Time        | Updated Time |
    ++--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+
    +| 9fe42824-9f12-4925-9e37-e5f586a5d4a2 | fiap-stack | faac34f01fb2464295bcea501b18b741 | CREATE_COMPLETE | 2020-10-28T19:23:53Z | None         |
    ++--------------------------------------+------------+----------------------------------+-----------------+----------------------+--------------+
    +
    +
  8. +
  9. Mostrar o stack, e conferir o output: +
    $ openstack stack show fiap-stack
    ++-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+
    +| Field                 | Value                                                                                                                             |
    ++-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+
    +| id                    | 9fe42824-9f12-4925-9e37-e5f586a5d4a2                                                                                              |
    +| stack_name            | fiap-stack                                                                                                                        |
    +| description           | Servidor para FIAP CLD!                                                                                                           |
    +| creation_time         | 2020-10-28T19:23:53Z                                                                                                              |
    +| updated_time          | None                                                                                                                              |
    +| stack_status          | CREATE_COMPLETE                                                                                                                   |
    +| stack_status_reason   | Stack CREATE completed successfully                                                                                               |
    +| parameters            | OS::project_id: faac34f01fb2464295bcea501b18b741                                                                                  |
    +|                       | OS::stack_id: 9fe42824-9f12-4925-9e37-e5f586a5d4a2                                                                                |
    +|                       | OS::stack_name: fiap-stack                                                                                                        |
    +|                       | flavor: m.fiap                                                                                                                    |
    +|                       | image: cirros-0.3.5-x86_64-disk                                                                                                   |
    +|                       | private_ip: 10.0.1.200                                                                                                            |
    +|                       | private_network: private                                                                                                          |
    +|                       | public_network: public                                                                                                            |
    +|                       |                                                                                                                                   |
    +| outputs               | - description: Esta URL e a URL "externa" que pode ser usada para acessar o servidor                                              |
    +|                       |     WEB.                                                                                                                          |
    +|                       |   output_key: lburl                                                                                                               |
    +|                       |   output_value: http://172.24.4.12                                                                                                |
    +|                       |                                                                                                                                   |
    +| links                 | - href: http://192.168.17.131/heat-api/v1/faac34f01fb2464295bcea501b18b741/stacks/fiap-stack/9fe42824-9f12-4925-9e37-e5f586a5d4a2 |
    +|                       |   rel: self                                                                                                                       |
    +|                       |                                                                                                                                   |
    +| parent                | None                                                                                                                              |
    +| disable_rollback      | True                                                                                                                              |
    +| deletion_time         | None                                                                                                                              |
    +| stack_user_project_id | ea246251b2af4463b0a1deffb3103121                                                                                                  |
    +| capabilities          | []                                                                                                                                |
    +| notification_topics   | []                                                                                                                                |
    +| stack_owner           | None                                                                                                                              |
    +| timeout_mins          | None                                                                                                                              |
    +| tags                  | None                                                                                                                              |
    ++-----------------------+-----------------------------------------------------------------------------------------------------------------------------------+
    +
    +
  10. +
  11. Listar os recursos que foram criados: +
    $ openstack stack resource list fiap-stack
    ++---------------+--------------------------------------+----------------------------+-----------------+----------------------+
    +| resource_name | physical_resource_id                 | resource_type              | resource_status | updated_time         |
    ++---------------+--------------------------------------+----------------------------+-----------------+----------------------+
    +| sec_group     | 7e49b68f-6b9a-4b58-87df-134bd0e63fa8 | OS::Neutron::SecurityGroup | CREATE_COMPLETE | 2020-10-28T19:23:53Z |
    +| floating_ip   | 31504dac-e833-4873-b40b-342435ef9524 | OS::Neutron::FloatingIP    | CREATE_COMPLETE | 2020-10-28T19:23:53Z |
    +| server_port   | 89b5e872-67ee-48bc-b81a-60145a771a3f | OS::Neutron::Port          | CREATE_COMPLETE | 2020-10-28T19:23:53Z |
    +| server        | f62370b4-7cb4-480e-9c13-8a23f7617fa4 | OS::Nova::Server           | CREATE_COMPLETE | 2020-10-28T19:23:53Z |
    ++---------------+--------------------------------------+----------------------------+-----------------+----------------------+
    +
    +
  12. +
  13. Mostrar a VM, conferir que tem um floating IP assignado: +
    $ openstack server list
    ++--------------------------------------+--------------------------------+--------+---------------------------------------------------------------------+--------------------------+--------+
    +| ID                                   | Name                           | Status | Networks                                                            | Image                    | Flavor |
    ++--------------------------------------+--------------------------------+--------+---------------------------------------------------------------------+--------------------------+--------+
    +| f62370b4-7cb4-480e-9c13-8a23f7617fa4 | fiap-stack-server-mr66iinpjgzg | ACTIVE | private=fdb5:7432:9bc4:0:f816:3eff:fe12:74d7, 10.0.0.4, 172.24.4.12 | cirros-0.3.5-x86_64-disk | m.fiap |
    ++--------------------------------------+--------------------------------+--------+---------------------------------------------------------------------+--------------------------+--------+
    +
    +
  14. +
+ +

Clean-up

+ +
    +
  1. Deletar o stack e conferir que a VM foi deletada: +
    $ openstack stack delete fiap-stack
    +Are you sure you want to delete this stack(s) [y/N]? y
    +    
    +$ openstack server list
    +
    +
  2. +
+ +

Horizon

+ +
    +
  1. Refazer o mesmo processo via Horizon Dashboard: +
      +
    • Criação de stack
    • +
    • Update de stack
    • +
    • Remoção de stack
    • +
    + +

    + +

    + +

    + +

    + +

    +
  2. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstack8-terraform/index.html b/docs/openstack8-terraform/index.html new file mode 100644 index 0000000000..320ed0a86b --- /dev/null +++ b/docs/openstack8-terraform/index.html @@ -0,0 +1,1207 @@ + + + + + + +OpenStack series VIII: Terraform - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +
+ + +
+ + + +

Serie de artigos sobre OpenStack.

+ + + + + +

Lab 8 - Terraform

+ +

OpenStack Provider

+ +

O Terraform é uma ferramenta para construir, alterar e controlar a infraestrutura de forma segura e eficiente. O Terraform pode gerenciar provedores de serviços existentes e populares como OpenStack, Azure, AWS, Digital Ocean, entre outras, bem como soluções internas personalizadas.

+ +

Os arquivos de configuração do Terraform descrevem os componentes necessários para executar um único aplicativo ou todo o datacenter, gerando um plano de execução que descreve o que será feito para alcançar o estado desejado e, em seguida, executá-lo para construir a infraestrutura descrita. À medida que a configuração muda, o Terraform é capaz de determinar o que mudou e criar planos de execução incrementais que podem ser aplicados.

+ +

A infraestrutura que o Terraform pode gerenciar inclui componentes de baixo nível, como instâncias de computação, armazenamento e redes, bem como componentes de alto nível, como entradas DNS, recursos SaaS, etc.

+ +

Com relação a ferramenta podemos comparar o Terraform com o CloudFormation da AWS.

+ +

Instalação

+ +
    +
  1. +

    Fazer o download da ferramenta:

    + +
     $ wget https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_linux_amd64.zip
    + --2020-10-28 12:37:26--  https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_linux_amd64.zip
    + Resolving releases.hashicorp.com (releases.hashicorp.com)... 151.101.1.183, 151.101.65.183, 151.101.129.183, ...
    + Connecting to releases.hashicorp.com (releases.hashicorp.com)|151.101.1.183|:443... connected.
    + HTTP request sent, awaiting response... 200 OK
    + Length: 34880173 (33M) [application/zip]
    + Saving to: ‘terraform_0.13.5_linux_amd64.zip’
    +
    + terraform_0.13.5_linux_amd64.zip            100%[========================================================================================>]  33.26M  32.0MB/s    in 1.0s
    +
    + 2020-10-28 12:37:27 (32.0 MB/s) - ‘terraform_0.13.5_linux_amd64.zip’ saved [34880173/34880173]
    +
    +
  2. +
  3. Descomprimir o arquivo baixado: +
     $ unzip terraform_0.13.5_linux_amd64.zip
    + Archive:  terraform_0.13.5_linux_amd64.zip
    +   inflating: terraform
    +
    +
  4. +
  5. Movimentar o executável: +
     $ sudo mv terraform /usr/local/bin/
    +
    +
  6. +
+ +

Uso

+ +
    +
  1. Baixar os templates: +
     $ git clone https://github.com/josecastillolema/fiap
    + Cloning into 'fiap'...
    + remote: Enumerating objects: 10, done.
    + remote: Counting objects: 100% (10/10), done.
    + remote: Compressing objects: 100% (10/10), done.
    + remote: Total 3716 (delta 4), reused 0 (delta 0), pack-reused 3706
    + Receiving objects: 100% (3716/3716), 44.63 MiB | 3.88 MiB/s, done.
    + Resolving deltas: 100% (1862/1862), done.
    + Checking connectivity... done.
    +    
    + $ cd fiap/cld/openstack/lab08-terraform/
    +
    +
  2. +
  3. Inicializar o Terraform e o correspondente provider (plugin) de OpenStack: +
     $ terraform init
    +
    + Initializing the backend...
    +
    + Initializing provider plugins...
    + - Finding latest version of terraform-provider-openstack/openstack...
    + - Installing terraform-provider-openstack/openstack v1.32.0...
    + - Installed terraform-provider-openstack/openstack v1.32.0 (self-signed, key ID 4F80527A391BEFD2)
    +
    + Partner and community providers are signed by their developers.
    + If you'd like to know more about provider signing, you can read about it here:
    + https://www.terraform.io/docs/plugins/signing.html
    +
    + The following providers do not have any version constraints in configuration,
    + so the latest version was installed.
    +
    + To prevent automatic upgrades to new major versions that may contain breaking
    + changes, we recommend adding version constraints in a required_providers block
    + in your configuration, with the constraint strings suggested below.
    +
    + * terraform-provider-openstack/openstack: version = "~> 1.32.0"
    +
    + Terraform has been successfully initialized!
    +
    + You may now begin working with Terraform. Try running "terraform plan" to see
    + any changes that are required for your infrastructure. All Terraform commands
    + should now work.
    +
    + If you ever set or change modules or backend configuration for Terraform,
    + rerun this command to reinitialize your working directory. If you forget, other
    + commands will detect it and remind you to do so if necessary.
    + os@ubuntu:~/fiap/cld/openstack$ terraform plan
    + Refreshing Terraform state in-memory prior to plan...
    + The refreshed state will be used to calculate this plan, but will not be
    + persisted to local or remote state storage.
    +
    +
    + ------------------------------------------------------------------------
    +
    +
  4. +
  5. Criar o plano: +
     $ terraform plan
    + Refreshing Terraform state in-memory prior to plan...
    + The refreshed state will be used to calculate this plan, but will not be
    + persisted to local or remote state storage.
    +
    +
    + ------------------------------------------------------------------------
    +
    + An execution plan has been generated and is shown below.
    + Resource actions are indicated with the following symbols:
    +   + create
    +
    + Terraform will perform the following actions:
    +
    +   # openstack_compute_floatingip_associate_v2.asoc-ip-publica will be created
    +   + resource "openstack_compute_floatingip_associate_v2" "asoc-ip-publica" {
    +       + floating_ip = (known after apply)
    +       + id          = (known after apply)
    +       + instance_id = (known after apply)
    +       + region      = (known after apply)
    +     }
    +
    +   # openstack_compute_instance_v2.web will be created
    +   + resource "openstack_compute_instance_v2" "web" {
    +       + access_ip_v4        = (known after apply)
    +       + access_ip_v6        = (known after apply)
    +       + all_metadata        = (known after apply)
    +       + all_tags            = (known after apply)
    +       + availability_zone   = "nova"
    +       + flavor_id           = (known after apply)
    +       + flavor_name         = "m.fiap"
    +       + force_delete        = false
    +       + id                  = (known after apply)
    +       + image_id            = (known after apply)
    +       + image_name          = "cirros-0.3.5-x86_64-disk"
    +       + name                = "web"
    +       + power_state         = "active"
    +       + region              = (known after apply)
    +       + security_groups     = [
    +           + "default",
    +         ]
    +       + stop_before_destroy = false
    +
    +       + network {
    +           + access_network = false
    +           + fixed_ip_v4    = (known after apply)
    +           + fixed_ip_v6    = (known after apply)
    +           + floating_ip    = (known after apply)
    +           + mac            = (known after apply)
    +           + name           = "private"
    +           + port           = (known after apply)
    +           + uuid           = (known after apply)
    +         }
    +     }
    +
    +   # openstack_networking_floatingip_v2.ip-publica will be created
    +   + resource "openstack_networking_floatingip_v2" "ip-publica" {
    +       + address    = (known after apply)
    +       + all_tags   = (known after apply)
    +       + dns_domain = (known after apply)
    +       + dns_name   = (known after apply)
    +       + fixed_ip   = (known after apply)
    +       + id         = (known after apply)
    +       + pool       = "public"
    +       + port_id    = (known after apply)
    +       + region     = (known after apply)
    +       + tenant_id  = (known after apply)
    +     }
    +
    + Plan: 3 to add, 0 to change, 0 to destroy.
    +
    + ------------------------------------------------------------------------
    +
    + Note: You didn't specify an "-out" parameter to save this plan, so Terraform
    + can't guarantee that exactly these actions will be performed if
    + "terraform apply" is subsequently run.
    +
    +
  6. +
  7. Criar a infraestrutura virtual: +
     $ terraform apply
    +
    + An execution plan has been generated and is shown below.
    + Resource actions are indicated with the following symbols:
    +   + create
    +
    + Terraform will perform the following actions:
    +
    +   # openstack_compute_floatingip_associate_v2.asoc-ip-publica will be created
    +   + resource "openstack_compute_floatingip_associate_v2" "asoc-ip-publica" {
    +       + floating_ip = (known after apply)
    +       + id          = (known after apply)
    +       + instance_id = (known after apply)
    +       + region      = (known after apply)
    +     }
    +
    +   # openstack_compute_instance_v2.web will be created
    +   + resource "openstack_compute_instance_v2" "web" {
    +       + access_ip_v4        = (known after apply)
    +       + access_ip_v6        = (known after apply)
    +       + all_metadata        = (known after apply)
    +       + all_tags            = (known after apply)
    +       + availability_zone   = "nova"
    +       + flavor_id           = (known after apply)
    +       + flavor_name         = "m.fiap"
    +       + force_delete        = false
    +       + id                  = (known after apply)
    +       + image_id            = (known after apply)
    +       + image_name          = "cirros-0.3.5-x86_64-disk"
    +       + name                = "web"
    +       + power_state         = "active"
    +       + region              = (known after apply)
    +       + security_groups     = [
    +           + "default",
    +         ]
    +       + stop_before_destroy = false
    +
    +       + network {
    +           + access_network = false
    +           + fixed_ip_v4    = (known after apply)
    +           + fixed_ip_v6    = (known after apply)
    +           + floating_ip    = (known after apply)
    +           + mac            = (known after apply)
    +           + name           = "private"
    +           + port           = (known after apply)
    +           + uuid           = (known after apply)
    +         }
    +     }
    +
    +   # openstack_networking_floatingip_v2.ip-publica will be created
    +   + resource "openstack_networking_floatingip_v2" "ip-publica" {
    +       + address    = (known after apply)
    +       + all_tags   = (known after apply)
    +       + dns_domain = (known after apply)
    +       + dns_name   = (known after apply)
    +       + fixed_ip   = (known after apply)
    +       + id         = (known after apply)
    +       + pool       = "public"
    +       + port_id    = (known after apply)
    +       + region     = (known after apply)
    +       + tenant_id  = (known after apply)
    +     }
    +
    + Plan: 3 to add, 0 to change, 0 to destroy.
    +
    + Do you want to perform these actions?
    +   Terraform will perform the actions described above.
    +   Only 'yes' will be accepted to approve.
    +
    +   Enter a value: yes
    +
    + openstack_networking_floatingip_v2.ip-publica: Creating...
    + openstack_compute_instance_v2.web: Creating...
    + openstack_networking_floatingip_v2.ip-publica: Creation complete after 6s [id=9ee8f0ab-1c12-4ca3-a357-2cec7843bde6]
    + openstack_compute_instance_v2.web: Still creating... [10s elapsed]
    + openstack_compute_instance_v2.web: Creation complete after 13s [id=1bb24176-55be-4156-913a-af062a0237df]
    + openstack_compute_floatingip_associate_v2.asoc-ip-publica: Creating...
    + openstack_compute_floatingip_associate_v2.asoc-ip-publica: Creation complete after 2s [id=172.24.4.5/1bb24176-55be-4156-913a-af062a0237df/]
    +
    + Apply complete! Resources: 3 added, 0 changed, 0 destroyed.
    +
    + Outputs:
    +
    + ip = 172.24.4.5
    +
    +
  8. +
  9. Mostrar os recursos criados: +
     $ terraform show
    + # openstack_compute_floatingip_associate_v2.asoc-ip-publica:
    + resource "openstack_compute_floatingip_associate_v2" "asoc-ip-publica" {
    +     floating_ip = "172.24.4.5"
    +     id          = "172.24.4.5/1bb24176-55be-4156-913a-af062a0237df/"
    +     instance_id = "1bb24176-55be-4156-913a-af062a0237df"
    +     region      = "RegionOne"
    + }
    +
    + # openstack_compute_instance_v2.web:
    + resource "openstack_compute_instance_v2" "web" {
    +     access_ip_v4        = "10.0.0.6"
    +     access_ip_v6        = "[fdb5:7432:9bc4:0:f816:3eff:feaa:4949]"
    +     all_metadata        = {}
    +     all_tags            = []
    +     availability_zone   = "nova"
    +     flavor_id           = "a0683bcb-b937-4c75-be19-7641eceeff78"
    +     flavor_name         = "m.fiap"
    +     force_delete        = false
    +     id                  = "1bb24176-55be-4156-913a-af062a0237df"
    +     image_id            = "cd992dd3-2197-49fe-9f0e-43d783d18a5c"
    +     image_name          = "cirros-0.3.5-x86_64-disk"
    +     name                = "web"
    +     power_state         = "active"
    +     region              = "RegionOne"
    +     security_groups     = [
    +         "default",
    +     ]
    +     stop_before_destroy = false
    +
    +     network {
    +         access_network = false
    +         fixed_ip_v4    = "10.0.0.6"
    +         fixed_ip_v6    = "[fdb5:7432:9bc4:0:f816:3eff:feaa:4949]"
    +         mac            = "fa:16:3e:aa:49:49"
    +         name           = "private"
    +         uuid           = "4e05e1bd-50f4-494b-aacf-07d43a37d1a1"
    +     }
    + }
    +
    + # openstack_networking_floatingip_v2.ip-publica:
    + resource "openstack_networking_floatingip_v2" "ip-publica" {
    +     address   = "172.24.4.5"
    +     all_tags  = []
    +     id        = "9ee8f0ab-1c12-4ca3-a357-2cec7843bde6"
    +     pool      = "public"
    +     region    = "RegionOne"
    +     tenant_id = "faac34f01fb2464295bcea501b18b741"
    + }
    +
    +
    + Outputs:
    +
    + ip = "172.24.4.5"
    +
    +
  10. +
  11. Mostrar o grafo dos recursos criados: +
     $ terraform graph
    + digraph {
    +         compound = "true"
    +         newrank = "true"
    +         subgraph "root" {
    +                 "[root] openstack_compute_floatingip_associate_v2.asoc-ip-publica (expand)" [label = "openstack_compute_floatingip_associate_v2.asoc-ip-publica", shape = "box"]
    +                 "[root] openstack_compute_instance_v2.web (expand)" [label = "openstack_compute_instance_v2.web", shape = "box"]
    +                 "[root] openstack_networking_floatingip_v2.ip-publica (expand)" [label = "openstack_networking_floatingip_v2.ip-publica", shape = "box"]
    +                 "[root] provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]" [label = "provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]", shape = "diamond"]
    +                 "[root] var.defaults" [label = "var.defaults", shape = "note"]
    +                 "[root] meta.count-boundary (EachMode fixup)" -> "[root] openstack_compute_floatingip_associate_v2.asoc-ip-publica (expand)"
    +                 "[root] meta.count-boundary (EachMode fixup)" -> "[root] output.ip (expand)"
    +                 "[root] openstack_compute_floatingip_associate_v2.asoc-ip-publica (expand)" -> "[root] openstack_compute_instance_v2.web (expand)"
    +                 "[root] openstack_compute_floatingip_associate_v2.asoc-ip-publica (expand)" -> "[root] openstack_networking_floatingip_v2.ip-publica (expand)"
    +                 "[root] openstack_compute_instance_v2.web (expand)" -> "[root] provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]"
    +                 "[root] openstack_compute_instance_v2.web (expand)" -> "[root] var.defaults"
    +                 "[root] openstack_networking_floatingip_v2.ip-publica (expand)" -> "[root] provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"]"
    +                 "[root] output.ip (expand)" -> "[root] openstack_networking_floatingip_v2.ip-publica (expand)"
    +                 "[root] provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"] (close)" -> "[root] openstack_compute_floatingip_associate_v2.asoc-ip-publica (expand)"
    +                 "[root] root" -> "[root] meta.count-boundary (EachMode fixup)"
    +                 "[root] root" -> "[root] provider[\"registry.terraform.io/terraform-provider-openstack/openstack\"] (close)"
    +         }
    + }
    +
    +
  12. +
  13. Validar a criação da instância: +
    $ source devstack/openrc admin
    +WARNING: setting legacy OS_TENANT_NAME to support cli tools.
    +    
    +$ openstack server list
    ++--------------------------------------+------+--------+--------------------------------------------------------------------+--------------------------+--------+
    +| ID                                   | Name | Status | Networks                                                           | Image                    | Flavor |
    ++--------------------------------------+------+--------+--------------------------------------------------------------------+--------------------------+--------+
    +| 1bb24176-55be-4156-913a-af062a0237df | web  | ACTIVE | private=fdb5:7432:9bc4:0:f816:3eff:feaa:4949, 10.0.0.6, 172.24.4.5 | cirros-0.3.5-x86_64-disk | m.fiap |
    ++--------------------------------------+------+--------+--------------------------------------------------------------------+--------------------------+--------+
    +
    +
  14. +
+ +

Clean-up

+ +
    +
  1. Deletar o plano: +
    $ terraform destroy
    +openstack_networking_floatingip_v2.ip-publica: Refreshing state... [id=9ee8f0ab-1c12-4ca3-a357-2cec7843bde6]
    +openstack_compute_instance_v2.web: Refreshing state... [id=1bb24176-55be-4156-913a-af062a0237df]
    +openstack_compute_floatingip_associate_v2.asoc-ip-publica: Refreshing state... [id=172.24.4.5/1bb24176-55be-4156-913a-af062a0237df/]
    +
    +An execution plan has been generated and is shown below.
    +Resource actions are indicated with the following symbols:
    +  - destroy
    +
    +Terraform will perform the following actions:
    +
    +  # openstack_compute_floatingip_associate_v2.asoc-ip-publica will be destroyed
    +  - resource "openstack_compute_floatingip_associate_v2" "asoc-ip-publica" {
    +      - floating_ip = "172.24.4.5" -> null
    +      - id          = "172.24.4.5/1bb24176-55be-4156-913a-af062a0237df/" -> null
    +      - instance_id = "1bb24176-55be-4156-913a-af062a0237df" -> null
    +      - region      = "RegionOne" -> null
    +    }
    +
    +  # openstack_compute_instance_v2.web will be destroyed
    +  - resource "openstack_compute_instance_v2" "web" {
    +      - access_ip_v4        = "10.0.0.6" -> null
    +      - access_ip_v6        = "[fdb5:7432:9bc4:0:f816:3eff:feaa:4949]" -> null
    +      - all_metadata        = {} -> null
    +      - all_tags            = [] -> null
    +      - availability_zone   = "nova" -> null
    +      - flavor_id           = "a0683bcb-b937-4c75-be19-7641eceeff78" -> null
    +      - flavor_name         = "m.fiap" -> null
    +      - force_delete        = false -> null
    +      - id                  = "1bb24176-55be-4156-913a-af062a0237df" -> null
    +      - image_id            = "cd992dd3-2197-49fe-9f0e-43d783d18a5c" -> null
    +      - image_name          = "cirros-0.3.5-x86_64-disk" -> null
    +      - name                = "web" -> null
    +      - power_state         = "active" -> null
    +      - region              = "RegionOne" -> null
    +      - security_groups     = [
    +          - "default",
    +        ] -> null
    +      - stop_before_destroy = false -> null
    +      - tags                = [] -> null
    +
    +      - network {
    +          - access_network = false -> null
    +          - fixed_ip_v4    = "10.0.0.6" -> null
    +          - fixed_ip_v6    = "[fdb5:7432:9bc4:0:f816:3eff:feaa:4949]" -> null
    +          - mac            = "fa:16:3e:aa:49:49" -> null
    +          - name           = "private" -> null
    +          - uuid           = "4e05e1bd-50f4-494b-aacf-07d43a37d1a1" -> null
    +        }
    +    }
    +
    +  # openstack_networking_floatingip_v2.ip-publica will be destroyed
    +  - resource "openstack_networking_floatingip_v2" "ip-publica" {
    +      - address   = "172.24.4.5" -> null
    +      - all_tags  = [] -> null
    +      - fixed_ip  = "10.0.0.6" -> null
    +      - id        = "9ee8f0ab-1c12-4ca3-a357-2cec7843bde6" -> null
    +      - pool      = "public" -> null
    +      - port_id   = "d8349f6e-8663-4bd0-b92e-04beed2b58b1" -> null
    +      - region    = "RegionOne" -> null
    +      - tags      = [] -> null
    +      - tenant_id = "faac34f01fb2464295bcea501b18b741" -> null
    +    }
    +
    +Plan: 0 to add, 0 to change, 3 to destroy.
    +
    +Changes to Outputs:
    +  - ip = "172.24.4.5" -> null
    +
    +Do you really want to destroy all resources?
    +  Terraform will destroy all your managed infrastructure, as shown above.
    +  There is no undo. Only 'yes' will be accepted to confirm.
    +
    +  Enter a value: yes
    +
    +openstack_compute_floatingip_associate_v2.asoc-ip-publica: Destroying... [id=172.24.4.5/1bb24176-55be-4156-913a-af062a0237df/]
    +openstack_compute_floatingip_associate_v2.asoc-ip-publica: Destruction complete after 2s
    +openstack_networking_floatingip_v2.ip-publica: Destroying... [id=9ee8f0ab-1c12-4ca3-a357-2cec7843bde6]
    +openstack_compute_instance_v2.web: Destroying... [id=1bb24176-55be-4156-913a-af062a0237df]
    +openstack_networking_floatingip_v2.ip-publica: Destruction complete after 6s
    +openstack_compute_instance_v2.web: Still destroying... [id=1bb24176-55be-4156-913a-af062a0237df, 10s elapsed]
    +openstack_compute_instance_v2.web: Destruction complete after 10s
    +
    +Destroy complete! Resources: 3 destroyed.
    +
    +
  2. +
  3. Conferir que a VM foi deletada: +
    $ openstack server list
    +
    +$
    +
    +
  4. +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/openstackday/index.html b/docs/openstackday/index.html new file mode 100644 index 0000000000..63a98acf47 --- /dev/null +++ b/docs/openstackday/index.html @@ -0,0 +1,730 @@ + + + + + + +OpenStack Day SP 2018 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ovn21/index.html b/docs/ovn21/index.html new file mode 100644 index 0000000000..1b6e850137 --- /dev/null +++ b/docs/ovn21/index.html @@ -0,0 +1,743 @@ + + + + + + +Open vSwitch and OVN 2021 Fall Conference - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

The Open vSwitch and OVN 2021 Fall Conference will be held online Dec. 7 and 8. Talks will be pre-recorded and played back during the conference. It will be used an online system that allows for text-based discussion and Q&A while the talk is being played. It will also be allowed a few minutes after each talk for further discussion via both text and over video and audio with the presenters. Each talk will be given once.

+ +

This year the following companies have offered their support for the conference:

+ + +

Registration is requested to attend. A registration form is available via Event Brite. The session recordings are available here.

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ovnk8s-kind/index.html b/docs/ovnk8s-kind/index.html new file mode 100644 index 0000000000..3ff2acaab7 --- /dev/null +++ b/docs/ovnk8s-kind/index.html @@ -0,0 +1,856 @@ + + + + + + +Running OVN-Kubernetes on a preexisting kind cluster - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +
+ + +
+ +

OVN-Kubernetes is a CNI for Kubernetes based on the Open Virtual Network (OVN) project.

+ +

kind (Kubernetes in Docker) deployment of OVN kubernetes is a fast and easy means to quickly install and test kubernetes with OVN kubernetes CNI. The value proposition is really for developers who want to reproduce an issue or test a fix in an environment that can be brought up locally and within a few minutes.

+ +

The kind.sh script creates a new kind cluster and then deploys OVN-Kubernetes on top of it.

+ +

Thanks to the new --deploy option introduced by this PR into the kind.sh script, now it is possible to leverage the script to deploy OVN-Kubernetes on preexisting kind clusters.

+ +

First, let’s define the kind cluster configuration and store it in a kind-ovn.yaml file:

+
kind: Cluster
+apiVersion: kind.x-k8s.io/v1alpha4
+networking:
+  # kube proxy will be disabled
+  kubeProxyMode: "none"
+  # the default CNI will not be installed
+  disableDefaultCNI: true
+  podSubnet: "10.244.0.0/16"
+  serviceSubnet: "10.96.0.0/16"
+kubeadmConfigPatches:
+- |
+  kind: ClusterConfiguration
+  metadata:
+    name: config
+  apiServer:
+    extraArgs:
+      "v": "4"
+  controllerManager:
+    extraArgs:
+      "v": "4"
+  scheduler:
+    extraArgs:
+      "v": "4"
+  networking: 
+    dnsDomain: cluster.local
+  ---
+  kind: InitConfiguration
+  nodeRegistration:
+    kubeletExtraArgs:
+      "v": "4"
+  ---
+  kind: JoinConfiguration
+  nodeRegistration:
+    kubeletExtraArgs:
+      "v": "4"
+nodes:
+ - role: control-plane
+   kubeadmConfigPatches:
+   - |
+     kind: InitConfiguration
+     nodeRegistration:
+       kubeletExtraArgs:
+         node-labels: "ingress-ready=true"
+         authorization-mode: "AlwaysAllow"
+ - role: worker
+ - role: worker
+
+ +

Create the cluster:

+
$ kind create cluster --name ovn --image kindest/node:v1.24.0 --config=kind-ovn.yaml
+
+ +

Export the kubeconfig file:

+
$ kind get kubeconfig --name ovn > kubeconfig
+$ export KUBECONFIG=$(pwd)/kubeconfig
+
+ +

As you can see the nodes are in NotReady state (because there is no CNI deployed) and the CNI dependant pods are in Pending state:

+
$ kubectl get node -o wide
+NAME                STATUS     ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE       KERNEL-VERSION           CONTAINER-RUNTIME
+ovn-control-plane   NotReady   control-plane   59s   v1.24.0   172.18.0.3    <none>        Ubuntu 21.10   5.17.5-300.fc36.x86_64   containerd://1.6.4
+ovn-worker          NotReady   <none>          35s   v1.24.0   172.18.0.2    <none>        Ubuntu 21.10   5.17.5-300.fc36.x86_64   containerd://1.6.4
+ovn-worker2         NotReady   <none>          22s   v1.24.0   172.18.0.4    <none>        Ubuntu 21.10   5.17.5-300.fc36.x86_64   containerd://1.6.4
+
+$ kubectl get po -A
+NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
+kube-system          coredns-6d4b75cb6d-4nbkk                     0/1     Pending   0          107s
+kube-system          coredns-6d4b75cb6d-wkmzk                     0/1     Pending   0          107s
+kube-system          etcd-kind-control-plane                      1/1     Running   0          2m3s
+kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          2m
+kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          2m
+kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          2m3s
+local-path-storage   local-path-provisioner-9cd9bd544-4dt8d       0/1     Pending   0          107s
+
+ +

Enable IPv6 on the kind containers:

+
$ KIND_NODES=$(kind get nodes --name ovn)
+$ for n in $KIND_NODES; do
+    docker exec "$n" sysctl --ignore net.ipv6.conf.all.disable_ipv6=0
+    docker exec "$n" sysctl --ignore net.ipv6.conf.all.forwarding=1
+  done
+
+ +

Clone the ovn-kubernetes repo:

+
$ git clone https://github.com/ovn-org/ovn-kubernetes.git
+
+ +

Run the kind.sh script with the --deploy option to avoid the creation of a new kind cluster:

+
$ cd ovn-kubernetes/contrib/
+$ ./kind.sh -kc $KUBECONFIG --deploy
+
+ +

Check if the nodes and the CNI dependant pods have transitioned to Ready state and the OVN pods are present:

+
$ kubectl get node
+NAME                STATUS   ROLES           AGE   VERSION
+ovn-control-plane   Ready    control-plane   11m   v1.24.0
+ovn-worker          Ready    <none>          10m   v1.24.0
+ovn-worker2         Ready    <none>          10m   v1.24.0
+
+$ kubectl get po -A
+NAMESPACE            NAME                                        READY   STATUS    RESTARTS   AGE
+kube-system          coredns-6d4b75cb6d-9r8lh                    1/1     Running   0          10m
+kube-system          coredns-6d4b75cb6d-kvhf6                    1/1     Running   0          10m
+kube-system          etcd-ovn-control-plane                      1/1     Running   0          11m
+kube-system          kube-apiserver-ovn-control-plane            1/1     Running   0          11m
+kube-system          kube-controller-manager-ovn-control-plane   1/1     Running   0          11m
+kube-system          kube-scheduler-ovn-control-plane            1/1     Running   0          11m
+local-path-storage   local-path-provisioner-9cd9bd544-fm7vm      1/1     Running   0          10m
+ovn-kubernetes       ovnkube-db-5fdf4c4986-t2hp7                 2/2     Running   0          3m12s
+ovn-kubernetes       ovnkube-master-5b5ddf8879-7vqcd             2/2     Running   0          3m10s
+ovn-kubernetes       ovnkube-node-8mmjm                          3/3     Running   0          3m3s
+ovn-kubernetes       ovnkube-node-ggcsd                          3/3     Running   0          3m3s
+ovn-kubernetes       ovnkube-node-xtdxn                          3/3     Running   0          3m3s
+ovn-kubernetes       ovs-node-4qvfz                              1/1     Running   0          3m11s
+ovn-kubernetes       ovs-node-99vl7                              1/1     Running   0          3m11s
+ovn-kubernetes       ovs-node-dx2rk                              1/1     Running   0          3m11s
+
+ +

To tear down the KIND cluster when finished simply run:

+
$ ./kind.sh --delete
+
+ +

Alternativally, you can use this script to automate the deployment.

+ +

Tested on Fedora release 36 and Ubuntu 22.04 with kind version 0.17.0.

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page10/index.html b/docs/page10/index.html new file mode 100644 index 0000000000..1882b12a3c --- /dev/null +++ b/docs/page10/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page11/index.html b/docs/page11/index.html new file mode 100644 index 0000000000..7ecbc0223b --- /dev/null +++ b/docs/page11/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page12/index.html b/docs/page12/index.html new file mode 100644 index 0000000000..1cb9af52bb --- /dev/null +++ b/docs/page12/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page13/index.html b/docs/page13/index.html new file mode 100644 index 0000000000..6cf0fa720e --- /dev/null +++ b/docs/page13/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 13 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page14/index.html b/docs/page14/index.html new file mode 100644 index 0000000000..63c5bbab4c --- /dev/null +++ b/docs/page14/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page15/index.html b/docs/page15/index.html new file mode 100644 index 0000000000..237e5416e3 --- /dev/null +++ b/docs/page15/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page16/index.html b/docs/page16/index.html new file mode 100644 index 0000000000..a4683b85ec --- /dev/null +++ b/docs/page16/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page17/index.html b/docs/page17/index.html new file mode 100644 index 0000000000..72f0da6cd2 --- /dev/null +++ b/docs/page17/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page18/index.html b/docs/page18/index.html new file mode 100644 index 0000000000..40eeb9c290 --- /dev/null +++ b/docs/page18/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 18 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page19/index.html b/docs/page19/index.html new file mode 100644 index 0000000000..44dee9bbb7 --- /dev/null +++ b/docs/page19/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page2/index.html b/docs/page2/index.html new file mode 100644 index 0000000000..6ee5078306 --- /dev/null +++ b/docs/page2/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page20/index.html b/docs/page20/index.html new file mode 100644 index 0000000000..be0145e623 --- /dev/null +++ b/docs/page20/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 20 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page21/index.html b/docs/page21/index.html new file mode 100644 index 0000000000..b328a3edb9 --- /dev/null +++ b/docs/page21/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 21 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page22/index.html b/docs/page22/index.html new file mode 100644 index 0000000000..99bac7eeed --- /dev/null +++ b/docs/page22/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 22 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page23/index.html b/docs/page23/index.html new file mode 100644 index 0000000000..db310b49a7 --- /dev/null +++ b/docs/page23/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 23 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page24/index.html b/docs/page24/index.html new file mode 100644 index 0000000000..06bde110f5 --- /dev/null +++ b/docs/page24/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 24 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page25/index.html b/docs/page25/index.html new file mode 100644 index 0000000000..e6d5cf6e12 --- /dev/null +++ b/docs/page25/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page26/index.html b/docs/page26/index.html new file mode 100644 index 0000000000..d33eecd580 --- /dev/null +++ b/docs/page26/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 26 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page27/index.html b/docs/page27/index.html new file mode 100644 index 0000000000..145269467c --- /dev/null +++ b/docs/page27/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 27 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page28/index.html b/docs/page28/index.html new file mode 100644 index 0000000000..c0ce6ea838 --- /dev/null +++ b/docs/page28/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 28 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page29/index.html b/docs/page29/index.html new file mode 100644 index 0000000000..4e2f672961 --- /dev/null +++ b/docs/page29/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 29 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page3/index.html b/docs/page3/index.html new file mode 100644 index 0000000000..7f19187667 --- /dev/null +++ b/docs/page3/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page30/index.html b/docs/page30/index.html new file mode 100644 index 0000000000..3695ac33c1 --- /dev/null +++ b/docs/page30/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 30 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page31/index.html b/docs/page31/index.html new file mode 100644 index 0000000000..ceacb5c3dc --- /dev/null +++ b/docs/page31/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 31 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page32/index.html b/docs/page32/index.html new file mode 100644 index 0000000000..a4dec4fad3 --- /dev/null +++ b/docs/page32/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page33/index.html b/docs/page33/index.html new file mode 100644 index 0000000000..9f0eb35a39 --- /dev/null +++ b/docs/page33/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 33 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page34/index.html b/docs/page34/index.html new file mode 100644 index 0000000000..03973843ee --- /dev/null +++ b/docs/page34/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 34 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page35/index.html b/docs/page35/index.html new file mode 100644 index 0000000000..7a42464eba --- /dev/null +++ b/docs/page35/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 35 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page36/index.html b/docs/page36/index.html new file mode 100644 index 0000000000..c00a61b7ce --- /dev/null +++ b/docs/page36/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page37/index.html b/docs/page37/index.html new file mode 100644 index 0000000000..92578f9c99 --- /dev/null +++ b/docs/page37/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 37 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page38/index.html b/docs/page38/index.html new file mode 100644 index 0000000000..fbb639a5de --- /dev/null +++ b/docs/page38/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 38 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page39/index.html b/docs/page39/index.html new file mode 100644 index 0000000000..4d3b0d3fae --- /dev/null +++ b/docs/page39/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page4/index.html b/docs/page4/index.html new file mode 100644 index 0000000000..7023a00320 --- /dev/null +++ b/docs/page4/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page40/index.html b/docs/page40/index.html new file mode 100644 index 0000000000..88563d6aef --- /dev/null +++ b/docs/page40/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page41/index.html b/docs/page41/index.html new file mode 100644 index 0000000000..3339a2c417 --- /dev/null +++ b/docs/page41/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 41 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page42/index.html b/docs/page42/index.html new file mode 100644 index 0000000000..48a2c2abf1 --- /dev/null +++ b/docs/page42/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 42 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page43/index.html b/docs/page43/index.html new file mode 100644 index 0000000000..d847f12e5d --- /dev/null +++ b/docs/page43/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 43 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page44/index.html b/docs/page44/index.html new file mode 100644 index 0000000000..a8dfbf173b --- /dev/null +++ b/docs/page44/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 44 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page45/index.html b/docs/page45/index.html new file mode 100644 index 0000000000..2ae14b2cd3 --- /dev/null +++ b/docs/page45/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 45 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page46/index.html b/docs/page46/index.html new file mode 100644 index 0000000000..5f71a848b4 --- /dev/null +++ b/docs/page46/index.html @@ -0,0 +1,10017 @@ + + + + + + +GitOps - Page 46 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page5/index.html b/docs/page5/index.html new file mode 100644 index 0000000000..e023a319ac --- /dev/null +++ b/docs/page5/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page6/index.html b/docs/page6/index.html new file mode 100644 index 0000000000..aa7e6aee54 --- /dev/null +++ b/docs/page6/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page7/index.html b/docs/page7/index.html new file mode 100644 index 0000000000..06561f6f3b --- /dev/null +++ b/docs/page7/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page8/index.html b/docs/page8/index.html new file mode 100644 index 0000000000..f5c3f3fd0d --- /dev/null +++ b/docs/page8/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/page9/index.html b/docs/page9/index.html new file mode 100644 index 0000000000..8d236e377f --- /dev/null +++ b/docs/page9/index.html @@ -0,0 +1,10019 @@ + + + + + + +GitOps - Page 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

+ + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/perfcon21/index.html b/docs/perfcon21/index.html new file mode 100644 index 0000000000..a95ef6927a --- /dev/null +++ b/docs/perfcon21/index.html @@ -0,0 +1,759 @@ + + + + + + +PerfConf Fall 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Proceedings

+ +

ICNI2 OVN Telco 5G perf/scale

+ +

There has been an effort in the past months to test OVN Intelligent Container Network Interface 2 (ICNI2) implementations at scale. As part of the testing, FRRouting was used to simulate comercial load balancers and to establish BFD sessions with OVN. The ideia is to show how this was achieved and some control/data plane results of the experiments.

+ +

Monday September 20, 2021 2:15pm - 3:00pm GMT-03

+ +

Track 1: Telco, Networking, System Performance and Tuning

+ +

Google Meet ID: https://meet.google.com/vgv-dnoo-yne

+ +

Moderators

+ + +

Speakers

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/perfcon22/index.html b/docs/perfcon22/index.html new file mode 100644 index 0000000000..2d17572e38 --- /dev/null +++ b/docs/perfcon22/index.html @@ -0,0 +1,752 @@ + + + + + + +PerfConf Spring 2022 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ + + +

Proceedings

+ +

MetalLB Perf&Scale Testing

+ +

MetalLB is a load-balancer implementation for bare metal Kubernetes clusters, using standard routing protocols (like BGP). For OCP 4.10, MetalLB speaker’s implementation was reimplemented into FRR and support for BGP was added as a GA feature. In this talk, we will present the results of the MetalLB Perf&Scale testing report along with some tooling improvements to cope with this scenario.

+ +

Wednesday, June 8 • 2:45pm - 3:15pm CEST

+ +

Google Meet ID: https://meet.google.com/uvo-pbwv-dbt

+ +

Speakers

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/perfcon23/index.html b/docs/perfcon23/index.html new file mode 100644 index 0000000000..0f7570b074 --- /dev/null +++ b/docs/perfcon23/index.html @@ -0,0 +1,750 @@ + + + + + + +PerfConf Spring 2023 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

Proceedings

+ +

(Control-plane) testing at scale with Cluster API and Kubemark

+ +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes (that run as pods in an external management cluster). What this means is that the nodes do not actually run containers or attach storage, but they do behave like they did, with updates to etcd and all the trimmings. At the same time, hollow nodes are extremelly light (<30 MiB).

+ +

The primary use case of Kubemark is scalability testing, as simulated clusters can be much bigger than the real ones. The objective is to expose problems with the master components (API server, controller manager or scheduler) that appear only on bigger clusters (e.g. small memory leaks).

+ +

Tuesday, March 28 • 3:40pm - 4:00pm CEST

+ +

Google Meet ID: https://meet.google.com/bzf-quiv-kaz

+ +

Speakers

+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/physics-ga4/index.html b/docs/physics-ga4/index.html new file mode 100644 index 0000000000..791cb991c1 --- /dev/null +++ b/docs/physics-ga4/index.html @@ -0,0 +1,735 @@ + + + + + + +PHYSICS 4th General Assembly - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ +

+ +

The 4th PHYSICS project General Assembly meeting was held July 4-6, 2022, hosted by RYAX in Athens, Greece. During the meeting, partners analyzed the project’s growth and had the opportunity to participate in person or virtually in discussions about the next goals of the project. All the work packages of the project were discussed in-depth to monitor the project’s progress and agree on plans for the future.

+ +

PHYSICS (oPtimized HYbrid Space-time servIce Continuum in faaS) is a research project funded by the European Union’s Horizon 2020 research and innovation program under grant agreement No. 101017047. The project began in January 2021 with 14 international partners and is scheduled to end in December 2023. Partners include Red Hat, Atos, RYAX, the Polytechnic University of Madrid (Spain), and Harokopio University (Greece).

+ +

The project’s goal is to enable application developers to design, implement, and deploy advanced function-as-a-service (FaaS) applications in the scope of advanced cloud application design environments by leveraging proven design patterns and existing libraries of cloud/FaaS components.

+ +

Red Hat engineers lead the work package Extended Infrastructure Services with Adaptable Algorithms, where they leverage several community projects to support PHYSICS’s multi-cluster orchestration and connectivity requirements. Some of the projects modified for PHYSICS’ purposes are Submariner and MicroShift. Other projects used include Node-RED and Apache OpenWhisk.

+ +

To learn more about the PHYSICS project, visit the PHYSICS project page. Read more about it in the Red Hat Research blog.

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/physics/index.html b/docs/physics/index.html new file mode 100644 index 0000000000..2bb110ffbf --- /dev/null +++ b/docs/physics/index.html @@ -0,0 +1,769 @@ + + + + + + +PHYSICS EU project - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

The project

+ +

PHYSICS (oPtimized HYbrid Space-time servIce Continuum in faaS) is a research project funded by the European Union’s Horizon 2020 research and innovation program under grant agreement No. 101017047. The project began in January 2021 with 14 international partners and is scheduled to end in December 2023. Partners include Red Hat, Atos, RYAX, the Polytechnic University of Madrid (Spain), and Harokopio University (Greece).

+ +

The project’s goal is to enable application developers to design, implement, and deploy advanced function-as-a-service (FaaS) applications in the scope of advanced cloud application design environments by leveraging proven design patterns and existing libraries of cloud/FaaS components.

+ +

Red Hat engineers lead the work package Extended Infrastructure Services with Adaptable Algorithms, where they leverage several community projects to support PHYSICS’s multi-cluster orchestration and connectivity requirements. Some of the projects modified for PHYSICS’ purposes are Submariner and MicroShift. Other projects used include Node-RED and Apache OpenWhisk.

+ +

Features

+ +
    +
  • Global Deployment and Orchestration Optimization
  • +
  • Visual environments and Cloud design patterns
  • +
  • Function as a Service Frameworks as a whole
  • +
  • Semantic Descriptions
  • +
  • Scaling, Controlling and Performance Logic
  • +
  • Application adaptation to FaaS
  • +
+ +

Consortium

+ +
    +
  • GFT
  • +
  • Atos
  • +
  • Fujitsu
  • +
  • Hewlett Packward Enterprise (HPE)
  • +
  • Red Hat
  • +
  • Ryax
  • +
  • Innov-Acts (Innov)
  • +
  • InQBit
  • +
  • Byte
  • +
  • Innovation Sprint (ISPRINT)
  • +
  • CybeleTech
  • +
  • Universidad Politécnica de Madrid
  • +
  • Harokopio University
  • +
  • German Research Center for Artificial Intelligence (DKFI)
  • +
+ +

To learn more about the PHYSICS project, visit the PHYSICS project page. Read more about it in the Red Hat Research blog.

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/posts/index.html b/docs/posts/index.html new file mode 100644 index 0000000000..3a51f56ef5 --- /dev/null +++ b/docs/posts/index.html @@ -0,0 +1,10016 @@ + + + + + + +Posts by Year - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

Posts by Year

+ + + + + + + + + +
+

2023

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2022

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2021

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2020

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2019

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2018

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2017

+
+ + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2016

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ +
+

2015

+
+ + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2014

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2013

+
+ + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + +
+ Back to Top ↑ +
+ +
+

2012

+
+ + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/power-fundamentals/index.html b/docs/power-fundamentals/index.html new file mode 100644 index 0000000000..52f4af35d7 --- /dev/null +++ b/docs/power-fundamentals/index.html @@ -0,0 +1,770 @@ + + + + + + +Microsoft Power Platform Virtual Training Day - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

By participating in the following Microsoft Virtual Training Days:

+
    +
  • Microsoft Power Platform Virtual Training Day: Fundamentals
  • +
+ +

You’ll be eligible to take the following certification exam at no cost:

+ + +

Power Platform Fundamentals

+ +

Microsoft Power Platform Virtual Training Day: Fundamentals will cover everything you need to know about building and managing innovative business solutions so your organisation is ready for whatever comes next. You’ll discover how to connect your data to analyse real-time business performance, act on data and insights with custom-built apps, and automate workflows to improve how people work, both remotely and in the office. This training will teach you how to create innovative, future-proof solutions for an evolving business environment.

+ +

Course Objectives

+
    +
  • Prepare for the Microsoft Power Platform Fundamentals certification exam
  • +
  • Build and manage innovative business solutions with Power Platform
  • +
  • Easily connect all your data to analyse business performance with custom-built apps
  • +
  • Automate workflows to improve daily processes, regardless of your technical expertise
  • +
+ +

Content

+
    +
  • Introduction
  • +
  • Introduction to Microsoft Power Platform
  • +
  • Introduction to Microsoft Power Apps and Common Data Services
  • +
  • Build simple Power Apps
  • +
  • Leverage Microsoft Power Automate
  • +
  • Leverage Microsoft Power BI
  • +
  • Closing Q&A
  • +
+ +

Free certification

+ +

After completing this free training you’ll be eligible to take the certifications exam at no cost.

+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/puc/index.html b/docs/puc/index.html new file mode 100644 index 0000000000..27363b3597 --- /dev/null +++ b/docs/puc/index.html @@ -0,0 +1,721 @@ + + + + + + +PUC-SP Cursos de extensão - Internet das Coisas - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/redhat-academy/index.html b/docs/redhat-academy/index.html new file mode 100644 index 0000000000..3ebe6ff5d6 --- /dev/null +++ b/docs/redhat-academy/index.html @@ -0,0 +1,775 @@ + + + + + + +Red Hat Academy - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Benefícios

+
    +
  • Aproveite os descontos (voucher 50% off) nos exames de certificação.
  • +
  • Escolha o estilo de aprendizado ideal para você dentre os nossos vários formatos de material didático.
  • +
  • Adquiria uma experiência valiosa com os ambientes de laboratório hands-on.
  • +
  • Conecte-se com outros estudantes e os instrutores da Red Hat que fazem parte da Red Hat Learning Community.
  • +
+ +

Cursos

+

Administração de sistemas básica

+
    +
  • Red Hat System Administration I (RH124)
  • +
  • Red Hat System Administration II (RH134)
  • +
  • Red Hat System Administration III (RH254)
  • +
+ +

Desenvolvimento de middleware

+
    +
  • Red Hat Application Development I: Programming in Java EE (AD183)
  • +
  • Red Hat Application Development II: Implementing Microservice Architecture (DO283)
  • +
+ +

Cloud Computing

+
    +
  • Red Hat OpenStack Administration I (CL110)
  • +
  • Introduction to Containers, Kubernetes and Red Hat OpenShift (DO180)
  • +
+ +

Exames de certificação

+
    +
  • Red Hat Certified System Administrator (EX200)
  • +
  • Red Hat Certified Engineer (EX300)
  • +
  • Red Hat Certified Enterprise Application Developer (EX183)
  • +
  • Red Hat Certified Enterprise Microservices Developer (EX283)
  • +
  • Preliminary Exam in Containers, Kubernetes, and OpenShift (PE180)
  • +
  • Preliminary Exam in System Administration (PE124)
  • +
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rh-creddly/index.html b/docs/rh-creddly/index.html new file mode 100644 index 0000000000..c749b1b788 --- /dev/null +++ b/docs/rh-creddly/index.html @@ -0,0 +1,764 @@ + + + + + + +Digital credentials for Red Hat Certified Professionals - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat technologies and to support customer success. A digital credential is earned upon meeting defined criteria, and Red Hat digital credentials can represent many types of achievements. A Red Hat digital badge is a sharable, verified, portable, data-rich form of that record.

+ +

After successfully passing a Red Hat Certification exam and updating your Red Hat account profile page to request a Red Hat Certification digital credential, you will receive an email notification directly from Credly with instructions on how to accept and begin sharing your Red Hat digital badge. The acceptance of the Red Hat Certification digital badge is completely optional.

+ +

If your Red Hat Certification is current, Red Hat will retroactively issue a digital badge via Credly, which will be available and valid until the certification expires. If your Red Hat Certification expires, the digital badge will be updated to reflect this information.

+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rh-giveback/index.html b/docs/rh-giveback/index.html new file mode 100644 index 0000000000..796fbaabea --- /dev/null +++ b/docs/rh-giveback/index.html @@ -0,0 +1,729 @@ + + + + + + +Red Hat Giveback Program - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contributions which impact Red Hat.

+ +
+ + +
+ + +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rh-research/index.html b/docs/rh-research/index.html new file mode 100644 index 0000000000..427f826203 --- /dev/null +++ b/docs/rh-research/index.html @@ -0,0 +1,757 @@ + + + + + + +Red Hat Research - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ + + +

+ +

About

+ +

Red Hat Research connects Red Hat engineers with professors, researchers, and students to bring great research ideas into open source communities. Our activities around the world have produced grants from government and industry, papers at top conferences, and results that have landed in open source projects of all kinds. Red Hat Research welcomes participation from research-minded individuals around the world.

+ +

Research Areas

+ +

The Red Hat Research Program emphasizes research projects (PhD dissertations, Master’s Theses, multi-partner government-funded collaborations) in key areas described below. However, we are always evaluating what the next interest area is based on what we’re hearing from our academic and industry partners and seeing in our own explorations:

+ + +

Profile

+ +

+ +

Projects

+ +
    +
  • PHYSICS: oPtimized HYbrid Space-time servIce Continuum in faaS
  • +
  • ICOS: IoT2Cloud Operating System
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rh-summit21/index.html b/docs/rh-summit21/index.html new file mode 100644 index 0000000000..4fbb66dd5d --- /dev/null +++ b/docs/rh-summit21/index.html @@ -0,0 +1,727 @@ + + + + + + +Red Hat Summit 2021 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Chegou o Red Hat Summit 2021, agora em série. Registre-se agora sem custo e aproveite as oportunidades de inovação, colaboração e aprendizagem que só o principal evento de código aberto do mundo pode oferecer. Inscreva-se já: https://red.ht/3vyU5Wv #RHSummit

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rh-summit22/index.html b/docs/rh-summit22/index.html new file mode 100644 index 0000000000..0e8803d1fd --- /dev/null +++ b/docs/rh-summit22/index.html @@ -0,0 +1,729 @@ + + + + + + +Red Hat Summit 2022 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

When you join IT leaders and peers at our no-cost virtual event, you can chart your hybrid cloud strategy and our open source future. Check out the available sessions to explore ways you can participate in the Red Hat® Summit experience taking place May 10-11. Virtual registration is live.

+ +

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rhr-talks-physics/index.html b/docs/rhr-talks-physics/index.html new file mode 100644 index 0000000000..5d2695976d --- /dev/null +++ b/docs/rhr-talks-physics/index.html @@ -0,0 +1,752 @@ + + + + + + +RHR talks: PHYSICS EU project - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +
+ + +
+ +

+ +

Join Red Hat Research for the next Research Days event, PHYSICS EU Project: Advancing FaaS applications in the cloud continuum on November 16, 2022, from 3PM to 4:30PM CEST.

+ +

The Function-as-a-Service (Faas) paradigm offers cloud service providers and application designers speed, simplicity, and efficiency, so long as they have accessible tools and techniques to implement it. For this month’s research presentation, Georgios Kousiouris, Harokopio University of Athens, will give an overview of PHYSICS, a large-scale EU Horizon-funded research collaboration that aims to unlock the potential of FaaS in the cloud continuum. Luis Tomás Bolívar, Red Hat, and Yiannis Georgiou, Ryax Technologies, will lead the conversation. Attendees will have the opportunity to participate in the live discussion.

+ +

Abstract

+

PHYSICS is a high technology EU Horizon research project with a total funding of about five million euros composed of 14 international partners. The project started in January 2021 and will end in December 2023. PHYSICS aims to unlock the potential of the Function-as-a-Service (FaaS) paradigm for cloud service providers and application developers. When realized, it will enable application developers to design, implement, and deploy advanced FaaS applications through abstract and visual design environments, leveraging proven design patterns and integrated DevOps pipelines.

+ +

PHYSICS also offers a novel Global Continuum Layer aimed at exploiting the cloud (including edge and multi-cloud locations) for optimizing the deployment and execution of functions based on aspects such as latency, performance, cost, locality, and other constraints. It does so by extending the needed infrastructure components (the Kubernetes scheduler, for example), offering novel ways of container management that target optimized operation of the infrastructure cluster in the form of container scheduling and co-allocation mechanisms.

+ +

In this talk, we will discuss the goals and current status of the PHYSICS EU Horizon project before exploring some of the main research areas of focus and open source development. Specifically, we will describe how visual flow programming and ready-made patterns can enhance abstract function development, and we will investigate different function orchestration means and trade-offs in terms of capabilities and performance. We will also explore the function execution in different clusters while highlighting differences in cluster setup from macroscopically examined load generation and how these map to the observed measurements. Finally, we will look at the task placement and scheduling optimizations that are being developed and how they can be beneficial, in particular, for FaaS-based applications.

+ +

Speaker

+
    +
  • Georgios Kousiouris, Harokopio University of Athens
  • +
+ +

Conversation Leaders

+
    +
  • Luis Tomás Bolívar, Red Hat
  • +
  • Yiannis Georgiou, Ryax Technologies
  • +
+ +

Visit the PHYSICS project website for more information.

+ + + +

YouTube Video Views +YouTube Video Likes

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/rhr-talks/index.html b/docs/rhr-talks/index.html new file mode 100644 index 0000000000..7a72e4102c --- /dev/null +++ b/docs/rhr-talks/index.html @@ -0,0 +1,747 @@ + + + + + + +RHR talks: Fluid Network Control and Data Plane Research - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ +

+ +

Join Red Hat Research for the next Research Days event, Fluid Network Control and Data Plane Research on April 19, 2023 from 17PM to 18:30PM CEST.

+ +

New 5G and 6G technologies are raising the top speed for a wireless device up to 1 Tbps, and experts predict 6G will be available to consumers by 2030. What will our core networks look like then, and how will we engineer them to support diverse dynamic services that range from slow text to fast autonomous vehicles? Join us for a peek into the challenges of driving on the edge as envisioned by researchers from Latin America.

+ +

Christian Rothenberg, Professor, University of Campinas, and head of INTRIG Lab, will be our speaker and Simone Ferlin-Reiter, Red Hat, will lead the conversation.

+ +

Abstract

+

Prof. Christian Rothenberg will introduce the SMARTNESS 2030 research center initiative and present selected ongoing research tracks around network softwarization leveraging state-of-the-art open source and open hardware technologies:

+ +
    +
  • Hybrid-p4-5G: Hybrid P4 Programmable Pipelines for 5G gNodeB and User Plane Functions
  • +
  • P7 – P4 Programmable Patch Panel: an instant 100G emulated network testbed in a Tofino pizza box
  • +
  • EFFECTOR: Encrypted DASH QoE Performance Evaluation Framework with 5G Datasets
  • +
  • QoEyes: Virtual Reality Streaming QoE Estimation through ML techniques and Programmable Data Planes
  • +
  • PoD acceleration: Offloading K8 container networking functions and service mesh crypto functions (eg. kTLS) to programmable SmartNICs/IPUs
  • +
+ +

The recording and materials will be available following the talk. Learn more about Red Hat Research Days Events and watch the recordings from previous events at research.redhat.com/research-talks.

+ + + +

YouTube Video Views +YouTube Video Likes

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/riab/index.html b/docs/riab/index.html new file mode 100644 index 0000000000..dc475f0446 --- /dev/null +++ b/docs/riab/index.html @@ -0,0 +1,1052 @@ + + + + + + +SDRAN-in-a-Box - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +
+ + +
+ + + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/test environment for developers/users in ONF SD-RAN community.

+ +

RiaB deploys the complete SD-RAN infrastructure over Kubernetes:

+
    +
  • the EPC (OMEC)
  • +
  • an emulated RAN (CU/DU/UE)
  • +
  • the ONOS RAN Intelligent Controller (ONOS RIC)
  • +
+ +

+ +

Features

+
    +
  • Installs Kubernetes and Helm
  • +
  • Provides one of three choices to emulate/simulate Radio Access Networks (RANs) +
      +
    • RAN-Simulator
    • +
    • OMEC / CU-CP / OAI nFAPI emulator for DU/UE
    • +
    • OMEC / CU-CP / OAI DU and UE with USRP hardware and/or LTE smartphones
    • +
    +
  • +
  • Support End-to-End (E2E) connectivity test +
      +
    • User plane E2E tests
    • +
    • SD-RAN control plane E2E tests
    • +
    +
  • +
+ +

Prerequisites

+ +

In order to run RiaB, we should prepare at least a single machine (any baremetal server or on premises/cloud VM) with the following minimum requirements:

+
    +
  • CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores
  • +
  • OS: Ubuntu 18.04
  • +
  • RAM: At least 16GB
  • +
  • Storage: At least 50GB (recommendation: 100GB)
  • +
+ +

For this testing it was used a Ubuntu 18.04 t2.xlarge (4 vCPUs / 16 GB) instance on AWS.

+ +

Installation

+ +

Clone the RiaB repository:

+
$ git clone https://github.com/onosproject/sdran-in-a-box
+
+ +

Install the required dependencies:

+
$ sudo apt install -y make
+
+ +

Start the deployment procedure:

+
$ cd /path/to/sdran-in-a-box
+$ make riab OPT=oai VER=stable
+
+ +

After a few minutes and if we don’t see any error or failure messages, check that everything is up and running:

+
$ kubectl get pods -A
+NAMESPACE     NAME                                              READY   STATUS    RESTARTS   AGE
+default       router                                            1/1     Running   0          30m
+kube-system   atomix-controller-99f978c7d-7dngl                 1/1     Running   0          30m
+kube-system   atomix-raft-storage-controller-75979cfff8-n2g7b   1/1     Running   0          29m
+kube-system   calico-kube-controllers-7f9675c8b8-xgx4b          1/1     Running   0          31m
+kube-system   calico-node-qfl9t                                 1/1     Running   0          31m
+kube-system   coredns-dff8fc7d-x7927                            1/1     Running   0          31m
+kube-system   dns-autoscaler-5d74bb9b8f-lwbxb                   1/1     Running   0          31m
+kube-system   kube-apiserver-node1                              1/1     Running   0          32m
+kube-system   kube-controller-manager-node1                     1/1     Running   0          32m
+kube-system   kube-multus-ds-amd64-fj22t                        1/1     Running   0          31m
+kube-system   kube-proxy-jr2c8                                  1/1     Running   0          32m
+kube-system   kube-scheduler-node1                              1/1     Running   1          32m
+kube-system   kubernetes-dashboard-667c4c65f8-v8tgk             1/1     Running   0          31m
+kube-system   kubernetes-metrics-scraper-54fbb4d595-s7v8z       1/1     Running   0          31m
+kube-system   nodelocaldns-2np2q                                1/1     Running   0          31m
+kube-system   onos-operator-app-676674b79c-nl9gl                1/1     Running   0          29m
+kube-system   onos-operator-topo-7698956594-2krs5               1/1     Running   0          29m
+riab          cassandra-0                                       1/1     Running   0          29m
+riab          hss-0                                             1/1     Running   0          29m
+riab          mme-0                                             4/4     Running   0          29m
+riab          oai-enb-cu-0                                      1/1     Running   0          26m
+riab          oai-enb-du-0                                      1/1     Running   0          24m
+riab          oai-ue-0                                          1/1     Running   0          23m
+riab          onos-a1t-84db77df99-4zpsd                         2/2     Running   0          27m
+riab          onos-cli-6b746874c8-njgn8                         1/1     Running   0          27m
+riab          onos-config-7bd4b6f7f6-nb6c8                      4/4     Running   0          27m
+riab          onos-consensus-store-0                            1/1     Running   0          27m
+riab          onos-e2t-58b4cd867-f4xbb                          3/3     Running   0          27m
+riab          onos-kpimon-966bdf77f-4ss4q                       2/2     Running   0          27m
+riab          onos-rsm-86df4894bd-h49d9                         2/2     Running   0          27m
+riab          onos-topo-7cc9d754d7-nbh9w                        3/3     Running   0          27m
+riab          onos-uenib-779cb5dbd6-wsqzl                       3/3     Running   0          27m
+riab          pcrf-0                                            1/1     Running   0          29m
+riab          spgwc-0                                           2/2     Running   0          29m
+riab          upf-0                                             4/4     Running   0          27m
+
+ +

Resource usage

+ +

For this particular t2.xlarge instance:

+
    +
  • Load +
     $ uptime
    + 17:16:22 up 56 min,  2 users,  load average: 4.27, 5.60, 5.49
    +
    +
  • +
  • Memory +
     $ free -h
    +               total        used        free      shared  buff/cache   available
    + Mem:            15G        3.0G        228M        836M         12G         11G
    + Swap:            0B          0B          0B
    +
    +
  • +
  • Disk +
     $ df -h
    + Filesystem      Size  Used Avail Use% Mounted on
    + udev            7.9G     0  7.9G   0% /dev
    + tmpfs           1.6G  4.7M  1.6G   1% /run
    + /dev/xvda1       97G   15G   82G  16% /
    + tmpfs           7.9G     0  7.9G   0% /dev/shm
    + tmpfs           5.0M     0  5.0M   0% /run/lock
    + tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
    + /dev/loop0       43M   43M     0 100% /snap/snapd/14066
    + /dev/loop1       56M   56M     0 100% /snap/core18/2253
    + /dev/loop2       25M   25M     0 100% /snap/amazon-ssm-agent/4046
    + tmpfs           1.6G     0  1.6G   0% /run/user/1000
    +
    +
  • +
+ +

End-to-End (E2E) tests for verification

+ +

In order to check whether everything is running, we should conduct some E2E tests and check their results. It is possible to do E2E tests on the user plane and SD-RAN control plane.

+ +

User plane

+ +

Type make test-user-plane on the prompt for the user plane verification. If the ping is working without any loss, the user plane is working well.

+ +
$ make test-user-plane
+Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
+HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
+HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
+*** T1: Internal network test: ping 192.168.250.1 (Internal router IP) ***
+PING 192.168.250.1 (192.168.250.1) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data.
+64 bytes from 192.168.250.1: icmp_seq=1 ttl=64 time=38.9 ms
+64 bytes from 192.168.250.1: icmp_seq=2 ttl=64 time=46.9 ms
+64 bytes from 192.168.250.1: icmp_seq=3 ttl=64 time=33.1 ms
+
+--- 192.168.250.1 ping statistics ---
+3 packets transmitted, 3 received, 0% packet loss, time 2001ms
+rtt min/avg/max/mdev = 33.168/39.706/46.976/5.660 ms
+*** T2: Internet connectivity test: ping to 8.8.8.8 ***
+PING 8.8.8.8 (8.8.8.8) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data.
+64 bytes from 8.8.8.8: icmp_seq=1 ttl=50 time=41.4 ms
+64 bytes from 8.8.8.8: icmp_seq=2 ttl=50 time=41.0 ms
+64 bytes from 8.8.8.8: icmp_seq=3 ttl=50 time=49.0 ms
+
+--- 8.8.8.8 ping statistics ---
+3 packets transmitted, 3 received, 0% packet loss, time 2002ms
+rtt min/avg/max/mdev = 41.047/43.850/49.062/3.688 ms
+*** T3: DNS test: ping to google.com ***
+PING google.com (172.253.115.139) from 172.250.255.254 oaitun_ue1: 56(84) bytes of data.
+64 bytes from bg-in-f139.1e100.net (172.253.115.139): icmp_seq=1 ttl=99 time=34.4 ms
+64 bytes from bg-in-f139.1e100.net (172.253.115.139): icmp_seq=2 ttl=99 time=43.0 ms
+64 bytes from bg-in-f139.1e100.net (172.253.115.139): icmp_seq=3 ttl=99 time=42.4 ms
+
+--- google.com ping statistics ---
+3 packets transmitted, 3 received, 0% packet loss, time 2001ms
+rtt min/avg/max/mdev = 34.461/39.955/43.000/3.892 ms
+
+ +

SD-RAN control plane

+ +

In order to verify the SD-RAN control plane:

+ +
    +
  • make test-kpimon: to see the number of active UEs +
     $ make test-kpimon
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + *** Get KPIMON result through CLI ***
    + Node ID          Cell Object ID       Cell Global ID            Time    RRC.ConnEstabAtt.sum    RRC.ConnEstabSucc.sum    RRC.ConnMax    RRC.ConnMean    RRC.ConnReEstabAtt.sum
    + e2:4/e00/2/64                    1                e0000      17:03:42.0                       1                        1              1               1                         0
    +
    +
  • +
  • make test-e2-subscription: to see e2 connection and subscription +
     $ make test-e2-subscription
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + *** Get E2 subscriptions through CLI ***
    + Subscription ID                                  Revision   Service Model ID   E2 NodeID       Encoding   Phase               State
    + 9a8f85fa67a6ef913ef4c0fa8f8fdee4:e2:4/e00/2/64   67         oran-e2sm-kpm:v2   e2:4/e00/2/64   ASN1_PER   SUBSCRIPTION_OPEN   SUBSCRIPTION_COMPLETE
    + 43aa0af7ce9a05142e5235c7a8efbd9b:e2:4/e00/2/64   73         oran-e2sm-rsm:v1   e2:4/e00/2/64   ASN1_PER   SUBSCRIPTION_OPEN   SUBSCRIPTION_COMPLETE
    +
    +
  • +
  • +

    make test-rnib and make test-uenib: to check information in R-NIB and UE-NIB

    + +
     $ make test-rnib
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + *** Get R-NIB result through CLI ***
    + ID: e2:4/e00/3/c8
    + Kind ID: e2node
    + Labels: <None>
    + Source Id's:
    + Target Id's: uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07
    + Aspects:
    + - onos.topo.MastershipState={"term":"1","nodeId":"uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07"}
    + - onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}],"ranFunctionIDs":[1]}}}
    +
    + ID: e2:4/e00/2/64/e0000
    + Kind ID: e2cell
    + Labels: <None>
    + Source Id's:
    + Target Id's: uuid:74c614b5-8666-67e9-d1a5-97d95ae83dcd
    + Aspects:
    + - onos.topo.E2Cell={"cellObjectId":"1","cellGlobalId":{"value":"e0000","type":"ECGI"},"kpiReports":{"RRC.ConnEstabAtt.sum":1,"RRC.ConnEstabSucc.sum":1,"RRC.ConnMax":1,"RRC.ConnMean":1,"RRC.ConnReEstabAtt.sum":0}}
    +
    + ID: gnmi:onos-config-7bd4b6f7f6-nb6c8
    + Kind ID: onos-config
    + Labels: <None>
    + Source Id's:
    + Target Id's:
    + Aspects:
    + - onos.topo.Lease={"expiration":"2022-03-24T17:04:21.115061844Z"}
    +
    + ID: e2:4/e00/2/64
    + Kind ID: e2node
    + Labels: <None>
    + Source Id's: uuid:74c614b5-8666-67e9-d1a5-97d95ae83dcd
    + Target Id's: uuid:077dca9f-a558-4728-8b6e-6160301a12be
    + Aspects:
    + - onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{"slicingConfigType":"E2_SM_RSM_COMMAND_EVENT_TRIGGERS"}]}]}],"ranFunctionIDs":[2]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"O-CU-UP Measurement Container for the EPC connected deployment","type":6,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.sum"},{"id":"value:4","name":"RRC.ConnMean"},{"id":"value:5","name":"RRC.ConnMax"}]}]}],"ranFunctionIDs":[1]}}}
    + - onos.topo.MastershipState={"term":"1","nodeId":"uuid:077dca9f-a558-4728-8b6e-6160301a12be"}
    +
    + ID: a1:onos-a1t-84db77df99-4zpsd
    + Kind ID: a1t
    + Labels: <None>
    + Source Id's:
    + Target Id's:
    + Aspects:
    + - onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.22","port":9639}]}
    +
    + ID: e2:onos-e2t-58b4cd867-f4xbb
    + Kind ID: e2t
    + Labels: <None>
    + Source Id's: uuid:077dca9f-a558-4728-8b6e-6160301a12be, uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07
    + Target Id's:
    + Aspects:
    + - onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.23","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.23","port":5150}]}
    + - onos.topo.Lease={"expiration":"2022-03-24T17:04:21.582768229Z"}
    +
    + $ make test-uenib
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + *** Get UE-NIB result through CLI ***
    + ID: ac303794-2745-4159-b86e-cc203aa3f6b1
    + Aspects:
    + - onos.uenib.RsmUeInfo={"globalUeId":"ac303794-2745-4159-b86e-cc203aa3f6b1","ueIdList":{"duUeF1apId":{"value":"9594"},"cuUeF1apId":{"value":"9594"},"ranUeNgapId":{},"enbUeS1apId":{"value":14951620},"amfUeNgapId":{}},"bearerIdList":[{"drbID":{"fourGDrbID":{"value":5,"qci":{"value":9}}}}],"cellGlobalId":"e_utra_cgi:{p_lmnidentity:{value:\"\\x02\\xf8\\x10\"}  e_utracell_identity:{value:{value:\"\\x00\\xe0\\x00\\x00\"  len:28}}}","cuE2NodeId":"e2:4/e00/2/64","duE2NodeId":"e2:4/e00/3/c8","sliceList":[]}
    +
    +
  • +
  • Run make test-kpimon before and after detaching the UE to check if the number of active UEs changes. RRC.ConnMean shows the number of active UEs changing from 1 to 0, since an emulated UE is detached. +
     $ make test-kpimon
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + *** Get KPIMON result through CLI ***
    + Node ID          Cell Object ID       Cell Global ID            Time    RRC.ConnEstabAtt.sum    RRC.ConnEstabSucc.sum    RRC.ConnMax    RRC.ConnMean    RRC.ConnReEstabAtt.sum
    + e2:4/e00/2/64                    1                e0000      17:04:24.0                       1                        1              1               1                         0
    +
    + $ make detach-ue
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + echo -en "AT+CPIN=0000\r" | nc -u -w 1 localhost 10000
    +
    + OK
    + echo -en "AT+CGATT=0\r" | nc -u -w 1 localhost 10000
    +
    + OK
    +
    + $ make test-kpimon
    + Helm values.yaml file: /home/ubuntu/sdran-in-a-box//sdran-in-a-box-values-master-stable.yaml
    + HEAD is now at 9f79ab8 Fix the default SRIOV resource name for UPF user plane interfaces
    + HEAD is now at acb2f51 Bump up UE chart version - CI test again (#1105)
    + *** Get KPIMON result through CLI ***
    + Node ID          Cell Object ID       Cell Global ID            Time    RRC.ConnEstabAtt.sum    RRC.ConnEstabSucc.sum    RRC.ConnMax    RRC.ConnMean    RRC.ConnReEstabAtt.sum
    + e2:4/e00/2/64                    1                e0000      17:04:35.0                       1                        1              1               0                         0
    +
    +
  • +
+ +

Radio Spectrum Management (RSM) tests

+ +

Create a slice:

+ +
$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 30 --sliceType DL
+
+ +

Check onos-topo result:

+
$ kubectl exec -it deployment/onos-cli -n riab -- onos topo get entity e2:4/e00/3/c8 -v
+
+ID: e2:4/e00/3/c8
+Kind ID: e2node
+Labels: <None>
+Source Id's:
+Target Id's: uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07
+Aspects:
+- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.1.2.102":{"oid":"1.3.6.1.4.1.53148.1.1.2.102","name":"ORAN-E2SM-RSM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RSMRanFunction","ricSlicingNodeCapabilityList":[{"maxNumberOfSlicesDl":4,"maxNumberOfSlicesUl":4,"maxNumberOfUesPerSlice":4,"supportedConfig":[{},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_UPDATE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_SLICE_DELETE"},{"slicingConfigType":"E2_SM_RSM_COMMAND_UE_ASSOCIATE"}]}]}],"ranFunctionIDs":[1]}}}
+- onos.topo.MastershipState={"term":"1","nodeId":"uuid:bbe3703e-fc46-409c-92d3-6cf11aa65b07"}
+- onos.topo.RSMSliceItemList={"rsmSliceList":[{"id":"1","sliceDesc":"Slice created by onos-RSM xAPP","sliceParameters":{"weight":30},"ueIdList":[]}]}
+
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000000..104aa4bd43 --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1 @@ +Sitemap: https://josecastillolema.github.io/sitemap.xml diff --git a/docs/saint-gobain-ultrachallenge/index.html b/docs/saint-gobain-ultrachallenge/index.html new file mode 100644 index 0000000000..5967d3335a --- /dev/null +++ b/docs/saint-gobain-ultrachallenge/index.html @@ -0,0 +1,727 @@ + + + + + + +Ultra Challenge Saint-Gobain - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/sbrc14/index.html b/docs/sbrc14/index.html new file mode 100644 index 0000000000..98bebb0239 --- /dev/null +++ b/docs/sbrc14/index.html @@ -0,0 +1,774 @@ + + + + + + +SBRC/WPEIF 2014 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro

+ +

Proceedings

+ +

Quality-oriented Mobility Control Architecture for ETArch Handover Optimization

+ +
    +
  • Felipe Sampaio Dantas da Silva (Federal Institute of Education, Science and Technology of Rio Grande do Norte, Brazil)
  • +
  • José Castillo Lema (Universidade Federal do Rio Grande do Norte, Spain)
  • +
  • Augusto Jose Venancio Neto, Ph. D. (Universidade Federal do Rio Grande do Norte, Brazil)
  • +
  • Flavio de Oliveira Silva (Universidade Federal de Uberlândia, Brazil)
  • +
  • Pedro Frosi Rosa (Federal University of Uberlândia, Brazil)
  • +
  • Daniel Corujo (Universidade de Aveiro, Portugal)
  • +
  • Carlos Guimaraes (Universidade de Aveiro, Portugal)
  • +
  • Rui Aguiar (Universidade de Aveiro, Brazil)
  • +
+ +

Cite this

+ +

APA

+ +

Silva, F.S., Neto, A., Silva, F.´., Frosi, P., Corujo, D., Guimar, C.A., & Aguiar, R.L. (2014). Quality-oriented Mobility Control Architecture for ETArch Handover Optimization.

+ +

BibTeX

+ +
@INPROCEEDINGS {32004,
+  author={F. Dantas Dantas and A. Neto and J. Castillo-Lema and P.  Rosa and F. Silva and D. Corujo and C. Guimarães and R.  Aguiar},
+  booktitle={SBC  WORKSHOP DE PESQUISA EXPERIMENTAL DA INTERNET DO FUTURO WPEIF},
+  title={Quality-oriented Mobility Control Architecture for ETArch Handover Optimization},
+  year={2014},
+  month={May}}
+
+ +

Chicago

+ +

Silva, Felipe Sampaio Dantas da, Augusto Neto, Flávio Silva, Pedro Frosi, Daniel Corujo, Carlos A. S. Guimar and Rui L. Aguiar. “Quality-oriented Mobility Control Architecture for ETArch Handover Optimization.” (2014).

+ +

MLA

+ +

Silva, Felipe Sampaio Dantas da et al. “Quality-oriented Mobility Control Architecture for ETArch Handover Optimization.” (2014).

+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/sbrc19/index.html b/docs/sbrc19/index.html new file mode 100644 index 0000000000..d710858131 --- /dev/null +++ b/docs/sbrc19/index.html @@ -0,0 +1,785 @@ + + + + + + +SBRC/WPEIF 2019 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro

+ +

Proceedings

+ +

Network Function Virtualization in Content-Centric Networks

+ +

DOI:10.5753/wpeif.2019.7696

+ +
    +
  • José Castillo Lema, Universidade de São Paulo, Brazil
  • +
  • Augusto J. Venancio Neto, Federal University of Rio Grande do Norte, Brazil
  • +
  • Flavio de Oliveira Silva, Federal University of Uberlândia, Brazil
  • +
  • Sergio Kofuji, Universidade de São Paulo, Brazil
  • +
+ +

Cite this

+ +

ABNT

+

CASTILLO-LEMA, José ; NETO, Augusto José Venâncio; SILVA, Flavio de Oliveira; KOFUJI, Sergio Takeo. Network Function Virtualization in Content-Centric Networks. In: WORKSHOP DE PESQUISA EXPERIMENTAL DA INTERNET DO FUTURO (WPEIF), 10. , 2019, Gramado. Anais do X Workshop de Pesquisa Experimental da Internet do Futuro. Porto Alegre: Sociedade Brasileira de Computação, sep. 2019 . p. 31-37. ISSN 2595-2692.

+ +

APA

+

Castillo-Lema, J., Neto, A., Silva, F., & Kofuji, S. (2019). Network Function Virtualization in Content-Centric Networks. In Anais do X Workshop de Pesquisa Experimental da Internet do Futuro, (pp. 31-37). Porto Alegre: SBC.

+ +

BibTeX

+
@inproceedings {wpeif,
+ author = {José  Castillo-Lema and Augusto  Neto and Flavio  Silva and Sergio  Kofuji},
+ title = {Network Function Virtualization in Content-Centric Networks},
+ booktitle = {Anais do X Workshop de Pesquisa Experimental da Internet do Futuro},
+ location = {Gramado},
+ year = {2019},
+ keywords = {},
+ issn = {2595-2692},
+ pages = {31--37},
+ publisher = {SBC},
+ address = {Porto Alegre, RS, Brasil},
+ url = {https://sol.sbc.org.br/index.php/wpeif/article/view/7696}}
+
+ +

MLA

+

Castillo-Lema, José, Augusto José Venâncio Neto, Flavio de Oliveira Silva, and Sergio Takeo Kofuji. “Network Function Virtualization in Content-Centric Networks”. Anais do X Workshop de Pesquisa Experimental da Internet do Futuro, Gramado, 2019. SBC, 2019, pp.31-37.

+ +

RefWorks

+
@article { {wpeif} {},
+	author = { Castillo-Lema, J.,  Neto, A.,  Silva, F.,  Kofuji, S.},
+	title = {Network Function Virtualization in Content-Centric Networks},
+	journal = {Anais do Workshop de Pesquisa Experimental da Internet do Futuro (WPEIF)},
+	year = {2019},
+	url = {https://sol.sbc.org.br/index.php/wpeif/article/view/7696}}
+
+ + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/security-fundamentals/index.html b/docs/security-fundamentals/index.html new file mode 100644 index 0000000000..2fbc35bc3c --- /dev/null +++ b/docs/security-fundamentals/index.html @@ -0,0 +1,766 @@ + + + + + + +Microsoft Security Virtual Training Day - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

By participating in the following Microsoft Virtual Training Days:

+
    +
  • Microsoft Security Virtual Training Day: Security, Compliance, and Identity Fundamentals
  • +
+ +

You’ll be eligible to take the following certification exam at no cost:

+ + +

Security Fundamentals

+ +

Learn the basic concepts of security, compliance and identity at Microsoft Security Training Day: Security, Compliance, and Identity Fundamentals. Learn the compliance management capabilities in Microsoft, the capabilities of Microsoft Identity and access management solutions and Microsoft Security solutions.

+ +

Course Objectives

+
    +
  • Understand the fundamentals of security, compliance and identity (SCI) across cloud-based and related Microsoft Services.
  • +
  • Learn to apply your knowledge across cloud-based and related Microsoft Services
  • +
  • After completing this free training, you’ll be eligible to take the Microsoft Security, Compliance and Identity Fundamentals certification exam at no cost
  • +
+ +

Content

+
    +
  • Zero Trust methodology, guiding principles and 6 foundation elements used in the Zero Trust Model
  • +
  • Common security threats and ways to protect through the defence in-depth security model
  • +
  • Insider risk, eDiscovery and audit capabilities in Microsoft 365
  • +
  • Compliance management capabilities in Microsoft, including the Service Trust portal, Microsoft 365 compliance centre, Microsoft privacy principles
  • +
+ +

Free certification

+ +

After completing this free training you’ll be eligible to take the certifications exam at no cost.

+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/seminf21/index.html b/docs/seminf21/index.html new file mode 100644 index 0000000000..3de2f85581 --- /dev/null +++ b/docs/seminf21/index.html @@ -0,0 +1,778 @@ + + + + + + +SEMINF 2021: 5G e os impactos na atuação do profisional de TI - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

II SEMANA ACADÊMICA DE INFORMÁTICA - SEMINF 2021

+ +

5G E OS IMPACTOS NA ATUAÇÃO DO PROFISSIONAL DE TI

+ +

+ +

A II Semana Acadêmica de Informática - SEMINF 2021 acontecerá nos dias 18 de outubro a 22 de outubro de 2021, na modalidade virtual, tendo como tema: 5G e os Impactos na Atuação do Profissional de TI.

+ +

Organizada pela Coordenações dos cursos de informática do IFTO Campus Palmas, com participação de professores e acadêmicos, o evento possui na sua programação, palestras, minicursos, mesas-redondas, desafio de programação e gincana de jogos eletrônicos.

+ +

A semana acadêmica é um evento que possibilita a integração entre pessoas. A troca de informações promovidas pelo evento através da participação de profissionais técnicos, docentes e discentes da área de informática, favorecem de forma significativa a formação do futuro profissional de informática. Acredita-se que por meio de várias perspectivas adquiridas pela experiências dos participantes, é possível que haja um enriquecimento complementar na formação escolar do discente da área de informática.

+ +

Objetivo Geral

+ +

O principal objetivo da semana acadêmica é proporcionar um ambiente de aprendizado complementar contribuindo na formação dos discentes.

+ +

Objetivos Específicos

+ +
    +
  • Promover a integração entre os discentes;
  • +
  • Possibilitar a reciclagem e adição de novos conhecimentos;
  • +
  • Disseminar os cursos de informática oferecidos pelo IFTO campus Palmas.
  • +
+ +

PROGRAMAÇÃO

+ +

Teremos uma semana totalmente dedicada ao evento, com programação nos três turnos.

+ +
    +
  • Oferta de palestras com temas atuais e relevantes;
  • +
  • Uso de mesa-redonda para promoção de debates;
  • +
  • Oferta de minicursos visando o complemento/atualização de currículo;
  • +
  • Desafios de programação e momentos de jogos promovendo a integração escolar.
  • +
+ +

+ +

INSCRIÇÕES

+ +

Período de inscrições: 13/10/2021 a 17/10/2021.

+ +

Faça sua inscrição AQUI.

+ +

CERTIFICADO

+ +

Os certificados estarão disponíveis a partir do dia 26/10/2021 AQUI.

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/series/index.html b/docs/series/index.html new file mode 100644 index 0000000000..54795f162c --- /dev/null +++ b/docs/series/index.html @@ -0,0 +1,569 @@ + + + + + + +Series - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + + +
+ + +
+ + + +

AWS

+ +

Infrastructure as a Service (IaaS)

+ + +

Platform as a Service (PaaS)

+ + +

Database as a Service (DBaaS)

+ + +

Big Data as a Service (BDaaS)

+ + +

Function as a Service (FaaS)

+ + +

Azure

+ +

Infrastructure as a Service (IaaS)

+ + +

Platform as a Service (PaaS)

+ + +

Containers

+ + +

Orquestração

+ + +

OpenStack

+ + +

Infrastructure as code (IaC)

+ + + +
+ + + + + + +
+ + +
+ + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-dev-2/index.html b/docs/shift-aws-dev-2/index.html new file mode 100644 index 0000000000..d33a7c1510 --- /dev/null +++ b/docs/shift-aws-dev-2/index.html @@ -0,0 +1,861 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Developing - 2nd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos.

+ +

Para quem?

+

Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS.

+ +

Pré-requisito

+

Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso.

+ +

SHIFT remoto

+ +

Você vai ter acesso à plataforma AWS Academy. Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Benefício FIAP

+

Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner).

+ +

Conteúdo

+ +
    +
  • Módulo 1: INTRODUCTION TO DEVELOPING ON AWS +
      +
    • Recognize the systems development life cycle, and describe how to start to developing on AWS.
    • +
    • Indicate how to work with AWS SDKs.
    • +
    • Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools.
    • +
    • Develop and run a simple program in AWS Cloud9.
    • +
    +
  • +
  • Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) +
      +
    • Recognize the shared responsibility model.
    • +
    • Explain how IAM helps secure access to AWS resources.
    • +
    • Describe IAM user authentication.
    • +
    • Identify how to authorize an IAM user, group, or role.
    • +
    +
  • +
  • Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 +
      +
    • Describe how Amazon S3 can be used as a storage solution.
    • +
    • Identify Amazon S3 features and components.
    • +
    • Describe two ways to protect data with Amazon S3.
    • +
    • Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE).
    • +
    • Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs.
    • +
    +
  • +
  • Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB +
      +
    • Identify Amazon DynamoDB features.
    • +
    • Describe Amazon DynamoDB components.
    • +
    • Explain how Amazon DynamoDB uses partitions.
    • +
    • Indicate how indexes are used with Amazon DynamoDB.
    • +
    • Describe how Amazon DynamoDB keeps data consistent.
    • +
    • Recognize when streaming and global tables are used.
    • +
    • Explain the backup and restoration process.
    • +
    • Develop flexible NoSQL solutions with Amazon DynamoDB.
    • +
    +
  • +
  • Módulo 5: CACHING INFORMATION FOR SALABILITY +
      +
    • Explain when caching is used.
    • +
    • Describe caching with Amazon CloudFront.
    • +
    • Describe caching with Amazon ElastiCache Apply caching strategies.
    • +
    +
  • +
  • Módulo 6: INTRODUCTION TO CONTAINERS +
      +
    • Describe the history, technology, and terminology behind containers.
    • +
    • Differentiate containers from bare-metal servers and virtual machines.
    • +
    • Identify the characteristics of a microservices architecture.
    • +
    • Recognize the drivers for using container-based workloads.
    • +
    • Host a basic website by using Docker containers.
    • +
    +
  • +
  • Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS +
      +
    • Recall how message queues works.
    • +
    • Describe Amazon SQS.
    • +
    • Send messages to an SQS queue.
    • +
    • Describe Amazon SNS.
    • +
    • Explain Amazon SNS concepts.
    • +
    • Describe Amazon MQ.
    • +
    +
  • +
  • Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA +
      +
    • Explain serverless computing.
    • +
    • Describe how AWS Lambda works.
    • +
    • Recognize AWS Lambda execution models.
    • +
    • Identify how to use AWS IAM to grant Lambda permissions.
    • +
    • Indicate the steps to author and configure a Lambda functions.
    • +
    • Explain how to deploy serverless applications.
    • +
    • Develop event-driven solutions with AWS Lambda.
    • +
    +
  • +
  • Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY +
      +
    • Recognize application programming interfaces.
    • +
    • Describe Amazon API Gateway.
    • +
    • Indicate the steps for developing RESTful APIs with Amazon API Gateway.
    • +
    +
  • +
  • Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS +
      +
    • Recognize the dynamics of workflow coordination in distributed applications.
    • +
    • Describe AWS Step Functions.
    • +
    • Identify state types.
    • +
    • Indicate common use cases for AWS Step Functions.
    • +
    • Recall AWS Step Functions APIs.
    • +
    +
  • +
  • Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS +
      +
    • Identity how to secure applications.
    • +
    • Describe how to manage your application’s secrets.
    • +
    • Recall how to authenticate with AWS Security Token Service.
    • +
    • Describe how Amazon Cognito is used to build secure applications.
    • +
    +
  • +
  • Módulo 12: DEPLOYING APPLICATIONS ON AWS +
      +
    • Describe DevOps
    • +
    • Recognize AWS code services for CI/CD
    • +
    • Summarize deployment strategies
    • +
    • Describe how AWS Elastic Beanstalk is used to deploy applications
    • +
    • Describe how AWS CloudFormation is used to deploy applications
    • +
    • Describe how AWS SAM is used to deploy serverless applications.
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-dev-3/index.html b/docs/shift-aws-dev-3/index.html new file mode 100644 index 0000000000..75b08a267c --- /dev/null +++ b/docs/shift-aws-dev-3/index.html @@ -0,0 +1,863 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Developing - 3rd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos.

+ +

Para quem?

+

Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS.

+ +

Pré-requisito

+

Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso.

+ +

SHIFT remoto

+ +

Você vai ter acesso à plataforma AWS Academy. Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Benefício FIAP

+

Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner).

+ +

Conteúdo

+ +
    +
  • Módulo 1: INTRODUCTION TO DEVELOPING ON AWS +
      +
    • Recognize the systems development life cycle, and describe how to start to developing on AWS.
    • +
    • Indicate how to work with AWS SDKs.
    • +
    • Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools.
    • +
    • Develop and run a simple program in AWS Cloud9.
    • +
    +
  • +
  • Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) +
      +
    • Recognize the shared responsibility model.
    • +
    • Explain how IAM helps secure access to AWS resources.
    • +
    • Describe IAM user authentication.
    • +
    • Identify how to authorize an IAM user, group, or role.
    • +
    +
  • +
  • Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 +
      +
    • Describe how Amazon S3 can be used as a storage solution.
    • +
    • Identify Amazon S3 features and components.
    • +
    • Describe two ways to protect data with Amazon S3.
    • +
    • Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE).
    • +
    • Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs.
    • +
    +
  • +
  • Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB +
      +
    • Identify Amazon DynamoDB features.
    • +
    • Describe Amazon DynamoDB components.
    • +
    • Explain how Amazon DynamoDB uses partitions.
    • +
    • Indicate how indexes are used with Amazon DynamoDB.
    • +
    • Describe how Amazon DynamoDB keeps data consistent.
    • +
    • Recognize when streaming and global tables are used.
    • +
    • Explain the backup and restoration process.
    • +
    • Develop flexible NoSQL solutions with Amazon DynamoDB.
    • +
    +
  • +
  • Módulo 5: CACHING INFORMATION FOR SALABILITY +
      +
    • Explain when caching is used.
    • +
    • Describe caching with Amazon CloudFront.
    • +
    • Describe caching with Amazon ElastiCache Apply caching strategies.
    • +
    +
  • +
  • Módulo 6: INTRODUCTION TO CONTAINERS +
      +
    • Describe the history, technology, and terminology behind containers.
    • +
    • Differentiate containers from bare-metal servers and virtual machines.
    • +
    • Identify the characteristics of a microservices architecture.
    • +
    • Recognize the drivers for using container-based workloads.
    • +
    • Host a basic website by using Docker containers.
    • +
    +
  • +
  • Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS +
      +
    • Recall how message queues works.
    • +
    • Describe Amazon SQS.
    • +
    • Send messages to an SQS queue.
    • +
    • Describe Amazon SNS.
    • +
    • Explain Amazon SNS concepts.
    • +
    • Describe Amazon MQ.
    • +
    +
  • +
  • Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA +
      +
    • Explain serverless computing.
    • +
    • Describe how AWS Lambda works.
    • +
    • Recognize AWS Lambda execution models.
    • +
    • Identify how to use AWS IAM to grant Lambda permissions.
    • +
    • Indicate the steps to author and configure a Lambda functions.
    • +
    • Explain how to deploy serverless applications.
    • +
    • Develop event-driven solutions with AWS Lambda.
    • +
    +
  • +
  • Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY +
      +
    • Recognize application programming interfaces.
    • +
    • Describe Amazon API Gateway.
    • +
    • Indicate the steps for developing RESTful APIs with Amazon API Gateway.
    • +
    +
  • +
  • Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS +
      +
    • Recognize the dynamics of workflow coordination in distributed applications.
    • +
    • Describe AWS Step Functions.
    • +
    • Identify state types.
    • +
    • Indicate common use cases for AWS Step Functions.
    • +
    • Recall AWS Step Functions APIs.
    • +
    +
  • +
  • Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS +
      +
    • Identity how to secure applications.
    • +
    • Describe how to manage your application’s secrets.
    • +
    • Recall how to authenticate with AWS Security Token Service.
    • +
    • Describe how Amazon Cognito is used to build secure applications.
    • +
    +
  • +
  • Módulo 12: DEPLOYING APPLICATIONS ON AWS +
      +
    • Describe DevOps
    • +
    • Recognize AWS code services for CI/CD
    • +
    • Summarize deployment strategies
    • +
    • Describe how AWS Elastic Beanstalk is used to deploy applications
    • +
    • Describe how AWS CloudFormation is used to deploy applications
    • +
    • Describe how AWS SAM is used to deploy serverless applications.
    • +
    + +

    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-dev-4/index.html b/docs/shift-aws-dev-4/index.html new file mode 100644 index 0000000000..09c4444649 --- /dev/null +++ b/docs/shift-aws-dev-4/index.html @@ -0,0 +1,863 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Developing - 4th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos.

+ +

Para quem?

+

Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS.

+ +

Pré-requisito

+

Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso.

+ +

SHIFT remoto

+ +

Você vai ter acesso à plataforma AWS Academy. Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Benefício FIAP

+

Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner).

+ +

Conteúdo

+ +
    +
  • Módulo 1: INTRODUCTION TO DEVELOPING ON AWS +
      +
    • Recognize the systems development life cycle, and describe how to start to developing on AWS.
    • +
    • Indicate how to work with AWS SDKs.
    • +
    • Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools.
    • +
    • Develop and run a simple program in AWS Cloud9.
    • +
    +
  • +
  • Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) +
      +
    • Recognize the shared responsibility model.
    • +
    • Explain how IAM helps secure access to AWS resources.
    • +
    • Describe IAM user authentication.
    • +
    • Identify how to authorize an IAM user, group, or role.
    • +
    +
  • +
  • Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 +
      +
    • Describe how Amazon S3 can be used as a storage solution.
    • +
    • Identify Amazon S3 features and components.
    • +
    • Describe two ways to protect data with Amazon S3.
    • +
    • Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE).
    • +
    • Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs.
    • +
    +
  • +
  • Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB +
      +
    • Identify Amazon DynamoDB features.
    • +
    • Describe Amazon DynamoDB components.
    • +
    • Explain how Amazon DynamoDB uses partitions.
    • +
    • Indicate how indexes are used with Amazon DynamoDB.
    • +
    • Describe how Amazon DynamoDB keeps data consistent.
    • +
    • Recognize when streaming and global tables are used.
    • +
    • Explain the backup and restoration process.
    • +
    • Develop flexible NoSQL solutions with Amazon DynamoDB.
    • +
    +
  • +
  • Módulo 5: CACHING INFORMATION FOR SALABILITY +
      +
    • Explain when caching is used.
    • +
    • Describe caching with Amazon CloudFront.
    • +
    • Describe caching with Amazon ElastiCache Apply caching strategies.
    • +
    +
  • +
  • Módulo 6: INTRODUCTION TO CONTAINERS +
      +
    • Describe the history, technology, and terminology behind containers.
    • +
    • Differentiate containers from bare-metal servers and virtual machines.
    • +
    • Identify the characteristics of a microservices architecture.
    • +
    • Recognize the drivers for using container-based workloads.
    • +
    • Host a basic website by using Docker containers.
    • +
    +
  • +
  • Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS +
      +
    • Recall how message queues works.
    • +
    • Describe Amazon SQS.
    • +
    • Send messages to an SQS queue.
    • +
    • Describe Amazon SNS.
    • +
    • Explain Amazon SNS concepts.
    • +
    • Describe Amazon MQ.
    • +
    +
  • +
  • Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA +
      +
    • Explain serverless computing.
    • +
    • Describe how AWS Lambda works.
    • +
    • Recognize AWS Lambda execution models.
    • +
    • Identify how to use AWS IAM to grant Lambda permissions.
    • +
    • Indicate the steps to author and configure a Lambda functions.
    • +
    • Explain how to deploy serverless applications.
    • +
    • Develop event-driven solutions with AWS Lambda.
    • +
    +
  • +
  • Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY +
      +
    • Recognize application programming interfaces.
    • +
    • Describe Amazon API Gateway.
    • +
    • Indicate the steps for developing RESTful APIs with Amazon API Gateway.
    • +
    +
  • +
  • Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS +
      +
    • Recognize the dynamics of workflow coordination in distributed applications.
    • +
    • Describe AWS Step Functions.
    • +
    • Identify state types.
    • +
    • Indicate common use cases for AWS Step Functions.
    • +
    • Recall AWS Step Functions APIs.
    • +
    +
  • +
  • Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS +
      +
    • Identity how to secure applications.
    • +
    • Describe how to manage your application’s secrets.
    • +
    • Recall how to authenticate with AWS Security Token Service.
    • +
    • Describe how Amazon Cognito is used to build secure applications.
    • +
    +
  • +
  • Módulo 12: DEPLOYING APPLICATIONS ON AWS +
      +
    • Describe DevOps
    • +
    • Recognize AWS code services for CI/CD
    • +
    • Summarize deployment strategies
    • +
    • Describe how AWS Elastic Beanstalk is used to deploy applications
    • +
    • Describe how AWS CloudFormation is used to deploy applications
    • +
    • Describe how AWS SAM is used to deploy serverless applications.
    • +
    + +

    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-dev-5/index.html b/docs/shift-aws-dev-5/index.html new file mode 100644 index 0000000000..d3faf93bca --- /dev/null +++ b/docs/shift-aws-dev-5/index.html @@ -0,0 +1,861 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Developing - 5th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos.

+ +

Para quem?

+

Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS.

+ +

Pré-requisito

+

Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso.

+ +

SHIFT remoto

+ +

Você vai ter acesso à plataforma AWS Academy. Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Benefício FIAP

+

Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner).

+ +

Conteúdo

+ +
    +
  • Módulo 1: INTRODUCTION TO DEVELOPING ON AWS +
      +
    • Recognize the systems development life cycle, and describe how to start to developing on AWS.
    • +
    • Indicate how to work with AWS SDKs.
    • +
    • Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools.
    • +
    • Develop and run a simple program in AWS Cloud9.
    • +
    +
  • +
  • Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) +
      +
    • Recognize the shared responsibility model.
    • +
    • Explain how IAM helps secure access to AWS resources.
    • +
    • Describe IAM user authentication.
    • +
    • Identify how to authorize an IAM user, group, or role.
    • +
    +
  • +
  • Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 +
      +
    • Describe how Amazon S3 can be used as a storage solution.
    • +
    • Identify Amazon S3 features and components.
    • +
    • Describe two ways to protect data with Amazon S3.
    • +
    • Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE).
    • +
    • Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs.
    • +
    +
  • +
  • Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB +
      +
    • Identify Amazon DynamoDB features.
    • +
    • Describe Amazon DynamoDB components.
    • +
    • Explain how Amazon DynamoDB uses partitions.
    • +
    • Indicate how indexes are used with Amazon DynamoDB.
    • +
    • Describe how Amazon DynamoDB keeps data consistent.
    • +
    • Recognize when streaming and global tables are used.
    • +
    • Explain the backup and restoration process.
    • +
    • Develop flexible NoSQL solutions with Amazon DynamoDB.
    • +
    +
  • +
  • Módulo 5: CACHING INFORMATION FOR SALABILITY +
      +
    • Explain when caching is used.
    • +
    • Describe caching with Amazon CloudFront.
    • +
    • Describe caching with Amazon ElastiCache Apply caching strategies.
    • +
    +
  • +
  • Módulo 6: INTRODUCTION TO CONTAINERS +
      +
    • Describe the history, technology, and terminology behind containers.
    • +
    • Differentiate containers from bare-metal servers and virtual machines.
    • +
    • Identify the characteristics of a microservices architecture.
    • +
    • Recognize the drivers for using container-based workloads.
    • +
    • Host a basic website by using Docker containers.
    • +
    +
  • +
  • Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS +
      +
    • Recall how message queues works.
    • +
    • Describe Amazon SQS.
    • +
    • Send messages to an SQS queue.
    • +
    • Describe Amazon SNS.
    • +
    • Explain Amazon SNS concepts.
    • +
    • Describe Amazon MQ.
    • +
    +
  • +
  • Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA +
      +
    • Explain serverless computing.
    • +
    • Describe how AWS Lambda works.
    • +
    • Recognize AWS Lambda execution models.
    • +
    • Identify how to use AWS IAM to grant Lambda permissions.
    • +
    • Indicate the steps to author and configure a Lambda functions.
    • +
    • Explain how to deploy serverless applications.
    • +
    • Develop event-driven solutions with AWS Lambda.
    • +
    +
  • +
  • Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY +
      +
    • Recognize application programming interfaces.
    • +
    • Describe Amazon API Gateway.
    • +
    • Indicate the steps for developing RESTful APIs with Amazon API Gateway.
    • +
    +
  • +
  • Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS +
      +
    • Recognize the dynamics of workflow coordination in distributed applications.
    • +
    • Describe AWS Step Functions.
    • +
    • Identify state types.
    • +
    • Indicate common use cases for AWS Step Functions.
    • +
    • Recall AWS Step Functions APIs.
    • +
    +
  • +
  • Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS +
      +
    • Identity how to secure applications.
    • +
    • Describe how to manage your application’s secrets.
    • +
    • Recall how to authenticate with AWS Security Token Service.
    • +
    • Describe how Amazon Cognito is used to build secure applications.
    • +
    +
  • +
  • Módulo 12: DEPLOYING APPLICATIONS ON AWS +
      +
    • Describe DevOps
    • +
    • Recognize AWS code services for CI/CD
    • +
    • Summarize deployment strategies
    • +
    • Describe how AWS Elastic Beanstalk is used to deploy applications
    • +
    • Describe how AWS CloudFormation is used to deploy applications
    • +
    • Describe how AWS SAM is used to deploy serverless applications.
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-dev-6/index.html b/docs/shift-aws-dev-6/index.html new file mode 100644 index 0000000000..504ca440bf --- /dev/null +++ b/docs/shift-aws-dev-6/index.html @@ -0,0 +1,861 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Developing - 6th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos.

+ +

Para quem?

+

Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS.

+ +

Pré-requisito

+

Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso.

+ +

SHIFT remoto

+ +

Você vai ter acesso à plataforma AWS Academy. Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Benefício FIAP

+

Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner).

+ +

Conteúdo

+ +
    +
  • Módulo 1: INTRODUCTION TO DEVELOPING ON AWS +
      +
    • Recognize the systems development life cycle, and describe how to start to developing on AWS.
    • +
    • Indicate how to work with AWS SDKs.
    • +
    • Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools.
    • +
    • Develop and run a simple program in AWS Cloud9.
    • +
    +
  • +
  • Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) +
      +
    • Recognize the shared responsibility model.
    • +
    • Explain how IAM helps secure access to AWS resources.
    • +
    • Describe IAM user authentication.
    • +
    • Identify how to authorize an IAM user, group, or role.
    • +
    +
  • +
  • Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 +
      +
    • Describe how Amazon S3 can be used as a storage solution.
    • +
    • Identify Amazon S3 features and components.
    • +
    • Describe two ways to protect data with Amazon S3.
    • +
    • Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE).
    • +
    • Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs.
    • +
    +
  • +
  • Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB +
      +
    • Identify Amazon DynamoDB features.
    • +
    • Describe Amazon DynamoDB components.
    • +
    • Explain how Amazon DynamoDB uses partitions.
    • +
    • Indicate how indexes are used with Amazon DynamoDB.
    • +
    • Describe how Amazon DynamoDB keeps data consistent.
    • +
    • Recognize when streaming and global tables are used.
    • +
    • Explain the backup and restoration process.
    • +
    • Develop flexible NoSQL solutions with Amazon DynamoDB.
    • +
    +
  • +
  • Módulo 5: CACHING INFORMATION FOR SALABILITY +
      +
    • Explain when caching is used.
    • +
    • Describe caching with Amazon CloudFront.
    • +
    • Describe caching with Amazon ElastiCache Apply caching strategies.
    • +
    +
  • +
  • Módulo 6: INTRODUCTION TO CONTAINERS +
      +
    • Describe the history, technology, and terminology behind containers.
    • +
    • Differentiate containers from bare-metal servers and virtual machines.
    • +
    • Identify the characteristics of a microservices architecture.
    • +
    • Recognize the drivers for using container-based workloads.
    • +
    • Host a basic website by using Docker containers.
    • +
    +
  • +
  • Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS +
      +
    • Recall how message queues works.
    • +
    • Describe Amazon SQS.
    • +
    • Send messages to an SQS queue.
    • +
    • Describe Amazon SNS.
    • +
    • Explain Amazon SNS concepts.
    • +
    • Describe Amazon MQ.
    • +
    +
  • +
  • Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA +
      +
    • Explain serverless computing.
    • +
    • Describe how AWS Lambda works.
    • +
    • Recognize AWS Lambda execution models.
    • +
    • Identify how to use AWS IAM to grant Lambda permissions.
    • +
    • Indicate the steps to author and configure a Lambda functions.
    • +
    • Explain how to deploy serverless applications.
    • +
    • Develop event-driven solutions with AWS Lambda.
    • +
    +
  • +
  • Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY +
      +
    • Recognize application programming interfaces.
    • +
    • Describe Amazon API Gateway.
    • +
    • Indicate the steps for developing RESTful APIs with Amazon API Gateway.
    • +
    +
  • +
  • Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS +
      +
    • Recognize the dynamics of workflow coordination in distributed applications.
    • +
    • Describe AWS Step Functions.
    • +
    • Identify state types.
    • +
    • Indicate common use cases for AWS Step Functions.
    • +
    • Recall AWS Step Functions APIs.
    • +
    +
  • +
  • Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS +
      +
    • Identity how to secure applications.
    • +
    • Describe how to manage your application’s secrets.
    • +
    • Recall how to authenticate with AWS Security Token Service.
    • +
    • Describe how Amazon Cognito is used to build secure applications.
    • +
    +
  • +
  • Módulo 12: DEPLOYING APPLICATIONS ON AWS +
      +
    • Describe DevOps
    • +
    • Recognize AWS code services for CI/CD
    • +
    • Summarize deployment strategies
    • +
    • Describe how AWS Elastic Beanstalk is used to deploy applications
    • +
    • Describe how AWS CloudFormation is used to deploy applications
    • +
    • Describe how AWS SAM is used to deploy serverless applications.
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-dev/index.html b/docs/shift-aws-dev/index.html new file mode 100644 index 0000000000..e9bb045294 --- /dev/null +++ b/docs/shift-aws-dev/index.html @@ -0,0 +1,861 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Developing - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Nosso foco é formar profissionais que dominem o desenvolvimento em Cloud. Você vai aprender a utilizar AWS SDK e a identificar as melhores práticas para criar aplicativos na nuvem AWS. Também vai se preparar para o exame de certificação AWS Certified Developer - Associate (DVA-C01). Uma jornada com 40 horas de conteúdo, talks e laboratórios práticos.

+ +

Para quem?

+

Desenvolvedores, profissionais DevOps e Arquitetos(as) de plataformas e soluções que querem ter Certificação e experiência hands-on em AWS.

+ +

Pré-requisito

+

Sugerimos que você se aprofunde no conteúdo do curso AWS Academy Cloud Foundations, disponível como um dos nossos benefícios ao adquirir esse curso.

+ +

SHIFT remoto

+ +

Você vai ter acesso à plataforma AWS Academy. Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Benefício FIAP

+

Você terá acesso a um voucher de 50% de desconto para o exame de Certificação AWS Certified Developer - Associate. O curso AWS Academy Cloud Foundations é pré-requisito para esse curso. Adquirindo o AWS Academy Cloud Developing, você terá acesso integral prévio e sem custo ao Cloud Foundations (incluso voucher de 50% de prova de Certificação AWS Cloud Practitioner).

+ +

Conteúdo

+ +
    +
  • Módulo 1: INTRODUCTION TO DEVELOPING ON AWS +
      +
    • Recognize the systems development life cycle, and describe how to start to developing on AWS.
    • +
    • Indicate how to work with AWS SDKs.
    • +
    • Identify why AWS X-Ray is a critical developer tool, and identify AWS management tools.
    • +
    • Develop and run a simple program in AWS Cloud9.
    • +
    +
  • +
  • Módulo 2: INTRODUCTION TO AWS IDENTITY AND ACCESS MANAGEMENT (IAM) +
      +
    • Recognize the shared responsibility model.
    • +
    • Explain how IAM helps secure access to AWS resources.
    • +
    • Describe IAM user authentication.
    • +
    • Identify how to authorize an IAM user, group, or role.
    • +
    +
  • +
  • Módulo 3: DEVELOPING STORAGE SOLUTIONS WITH AMAZON S3 +
      +
    • Describe how Amazon S3 can be used as a storage solution.
    • +
    • Identify Amazon S3 features and components.
    • +
    • Describe two ways to protect data with Amazon S3.
    • +
    • Describe the function of the S3 object operations (PUT, GET, SELECT, DELETE).
    • +
    • Explain how to manage access to Amazon S3 resources developed with Amazon S3 using the AWS SDKs.
    • +
    +
  • +
  • Módulo 4: DEVELOPING NOSQL SOLUTIONS WITH AMAZON DYNAMODB +
      +
    • Identify Amazon DynamoDB features.
    • +
    • Describe Amazon DynamoDB components.
    • +
    • Explain how Amazon DynamoDB uses partitions.
    • +
    • Indicate how indexes are used with Amazon DynamoDB.
    • +
    • Describe how Amazon DynamoDB keeps data consistent.
    • +
    • Recognize when streaming and global tables are used.
    • +
    • Explain the backup and restoration process.
    • +
    • Develop flexible NoSQL solutions with Amazon DynamoDB.
    • +
    +
  • +
  • Módulo 5: CACHING INFORMATION FOR SALABILITY +
      +
    • Explain when caching is used.
    • +
    • Describe caching with Amazon CloudFront.
    • +
    • Describe caching with Amazon ElastiCache Apply caching strategies.
    • +
    +
  • +
  • Módulo 6: INTRODUCTION TO CONTAINERS +
      +
    • Describe the history, technology, and terminology behind containers.
    • +
    • Differentiate containers from bare-metal servers and virtual machines.
    • +
    • Identify the characteristics of a microservices architecture.
    • +
    • Recognize the drivers for using container-based workloads.
    • +
    • Host a basic website by using Docker containers.
    • +
    +
  • +
  • Módulo 7: DEVELOPING SOLUTIONS WITH AMAZON SQS AND AMAZON SNS +
      +
    • Recall how message queues works.
    • +
    • Describe Amazon SQS.
    • +
    • Send messages to an SQS queue.
    • +
    • Describe Amazon SNS.
    • +
    • Explain Amazon SNS concepts.
    • +
    • Describe Amazon MQ.
    • +
    +
  • +
  • Módulo 8: DEVELOPING EVENT-DRIVEN SOLUTIONS WITH AWS LAMBDA +
      +
    • Explain serverless computing.
    • +
    • Describe how AWS Lambda works.
    • +
    • Recognize AWS Lambda execution models.
    • +
    • Identify how to use AWS IAM to grant Lambda permissions.
    • +
    • Indicate the steps to author and configure a Lambda functions.
    • +
    • Explain how to deploy serverless applications.
    • +
    • Develop event-driven solutions with AWS Lambda.
    • +
    +
  • +
  • Módulo 9: DEVELOPING SOLUTIONS WITH AMAZON API GATEWAY +
      +
    • Recognize application programming interfaces.
    • +
    • Describe Amazon API Gateway.
    • +
    • Indicate the steps for developing RESTful APIs with Amazon API Gateway.
    • +
    +
  • +
  • Módulo 10: DEVELOPING SOLUTIONS WITH AWS STEP FUNCTIONS +
      +
    • Recognize the dynamics of workflow coordination in distributed applications.
    • +
    • Describe AWS Step Functions.
    • +
    • Identify state types.
    • +
    • Indicate common use cases for AWS Step Functions.
    • +
    • Recall AWS Step Functions APIs.
    • +
    +
  • +
  • Módulo 11: DEVELOPING SECURE APPLICATIONS ON AWS +
      +
    • Identity how to secure applications.
    • +
    • Describe how to manage your application’s secrets.
    • +
    • Recall how to authenticate with AWS Security Token Service.
    • +
    • Describe how Amazon Cognito is used to build secure applications.
    • +
    +
  • +
  • Módulo 12: DEPLOYING APPLICATIONS ON AWS +
      +
    • Describe DevOps
    • +
    • Recognize AWS code services for CI/CD
    • +
    • Summarize deployment strategies
    • +
    • Describe how AWS Elastic Beanstalk is used to deploy applications
    • +
    • Describe how AWS CloudFormation is used to deploy applications
    • +
    • Describe how AWS SAM is used to deploy serverless applications.
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-2/index.html b/docs/shift-aws-foundations-2/index.html new file mode 100644 index 0000000000..3b62da804e --- /dev/null +++ b/docs/shift-aws-foundations-2/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 2nd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 11/01 e 15/02, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-3/index.html b/docs/shift-aws-foundations-3/index.html new file mode 100644 index 0000000000..c4d64376bf --- /dev/null +++ b/docs/shift-aws-foundations-3/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 3rd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 04/05 e 08/06, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-4/index.html b/docs/shift-aws-foundations-4/index.html new file mode 100644 index 0000000000..580408f6eb --- /dev/null +++ b/docs/shift-aws-foundations-4/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 4rd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 13/07 e 17/07, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-5/index.html b/docs/shift-aws-foundations-5/index.html new file mode 100644 index 0000000000..84a7536344 --- /dev/null +++ b/docs/shift-aws-foundations-5/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 5th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 21/09 e 26/10, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-6/index.html b/docs/shift-aws-foundations-6/index.html new file mode 100644 index 0000000000..8a2d4c36d4 --- /dev/null +++ b/docs/shift-aws-foundations-6/index.html @@ -0,0 +1,767 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 6th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 18/01 e 22/02, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-7/index.html b/docs/shift-aws-foundations-7/index.html new file mode 100644 index 0000000000..e5eaccf0b0 --- /dev/null +++ b/docs/shift-aws-foundations-7/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 7th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 05/04 e 10/05, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-8/index.html b/docs/shift-aws-foundations-8/index.html new file mode 100644 index 0000000000..5ce120416c --- /dev/null +++ b/docs/shift-aws-foundations-8/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 8th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 19/07 e 24/08, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations-9/index.html b/docs/shift-aws-foundations-9/index.html new file mode 100644 index 0000000000..7570861d26 --- /dev/null +++ b/docs/shift-aws-foundations-9/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - 9th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 19/10 e 22/11, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-aws-foundations/index.html b/docs/shift-aws-foundations/index.html new file mode 100644 index 0000000000..15924430fc --- /dev/null +++ b/docs/shift-aws-foundations/index.html @@ -0,0 +1,765 @@ + + + + + + +FIAP SHIFT: AWS Academy Cloud Foundations - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + +

+ +

O AWS Academy Cloud Foundations (Fundamentos de nuvem da AWS Academy) é destinado a profissionais interessados em aperfeiçoar seus conhecimentos sobre computação em nuvem e AWS, e àqueles que gostariam de obter a certificação da Amazon – AWS Certified Cloud Practitioner (CLF-01).

+ +

O curso oferece uma visão geral detalhada dos conceitos de nuvem, dos serviços essenciais, da segurança, da arquitetura, da definição de preço e do suporte da AWS. A certificação AWS Certified Cloud Practitioner é uma etapa recomendada para a obtenção da certificação Specialty ou em nível Associate.

+ +

Para quem?

+

Profissionais DevOps e Arquitetos de Plataformas/Soluções que querem ter certificação e experiência hands-on na AWS.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Como funciona?

+ +

Você vai ter acesso à plataforma AWS Academy, com videoaulas em inglês (tradução e legendas em português), laboratórios para cada módulo, leituras complementares e testes após cada etapa para acompanhar a evolução com vista ao exame de certificação. Mais 30 dias de acesso às aulas, com dois momentos de interação ao vivo com José Castillo, Accredited Educator da AWS Academy e professor da FIAP.

+ +

Digital + Live

+

Serão 20 horas de curso, com duração de quatro semanas, seis laboratórios práticos e mais duas lives com o professor, visando à preparação para a prova, nos dias 15/10 e 19/11, das 19h às 20h. No fim, você receberá um certificado oficial de conclusão de curso da AWS Academy e poderá aproveitar 50% OFF para fazer a prova de Certificação AWS Cloud Practitioner.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem
  • +
  • Módulo 2: Economia e faturamento da nuvem
  • +
  • Módulo 3: Visão geral da infraestrutura global da AWS
  • +
  • Módulo 4: Segurança na nuvem AWS
  • +
  • Módulo 5: Redes e entrega de conteúdo
  • +
  • Módulo 6: Computação
  • +
  • Módulo 7: Armazenamento
  • +
  • Módulo 8: Bancos de dados
  • +
  • Módulo 9: Arquitetura de nuvem
  • +
  • Módulo 10: Auto scaling e monitoramento
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-multicloud-2/index.html b/docs/shift-multicloud-2/index.html new file mode 100644 index 0000000000..bce6f76ed6 --- /dev/null +++ b/docs/shift-multicloud-2/index.html @@ -0,0 +1,783 @@ + + + + + + +FIAP SHIFT: Multicloud Architecture - 2nd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços.

+ +

Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS).

+ +

Para quem?

+

Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Benefício Amazon

+ +

Cada aluno vai receber US$ 50 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso.

+ +

Shift remoto

+

Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem +
      +
    • Virtualização
    • +
    • Modelos de serviço
    • +
    • Segurança em nuvem / Modelo de responsabilidade compartilhada
    • +
    • Modelos de implementação
    • +
    • Multicloud
    • +
    • Economia e faturamento da nuvem
    • +
    • Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem
    • +
    +
  • +
  • Módulo 2: Infraestrutura como serviço (IaaS) +
      +
    • Instanciação de máquinas virtuais
    • +
    • Autoscaling
    • +
    • Infraestrutura de armazenamento: block/object/file storage
    • +
    • Containers
    • +
    • Orquestração de containers
    • +
    • Arquitetura de microserviços
    • +
    +
  • +
  • Módulo 3: Plataforma como serviço (PaaS) +
      +
    • Automação e entrega contínua (CI/CD)
    • +
    • Pipeline DevOps
    • +
    • DBaaS SQL/NoSQL
    • +
    • Function as a Service
    • +
    • Arquiteturas serverless
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-multicloud-3/index.html b/docs/shift-multicloud-3/index.html new file mode 100644 index 0000000000..f9d48c0893 --- /dev/null +++ b/docs/shift-multicloud-3/index.html @@ -0,0 +1,783 @@ + + + + + + +FIAP SHIFT: Multicloud Architecture - 3rd edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços.

+ +

Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS).

+ +

Para quem?

+

Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Benefício Amazon

+ +

Cada aluno vai receber US$ 50 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso.

+ +

Shift remoto

+

Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem +
      +
    • Virtualização
    • +
    • Modelos de serviço
    • +
    • Segurança em nuvem / Modelo de responsabilidade compartilhada
    • +
    • Modelos de implementação
    • +
    • Multicloud
    • +
    • Economia e faturamento da nuvem
    • +
    • Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem
    • +
    +
  • +
  • Módulo 2: Infraestrutura como serviço (IaaS) +
      +
    • Instanciação de máquinas virtuais
    • +
    • Autoscaling
    • +
    • Infraestrutura de armazenamento: block/object/file storage
    • +
    • Containers
    • +
    • Orquestração de containers
    • +
    • Arquitetura de microserviços
    • +
    +
  • +
  • Módulo 3: Plataforma como serviço (PaaS) +
      +
    • Automação e entrega contínua (CI/CD)
    • +
    • Pipeline DevOps
    • +
    • DBaaS SQL/NoSQL
    • +
    • Function as a Service
    • +
    • Arquiteturas serverless
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-multicloud-4/index.html b/docs/shift-multicloud-4/index.html new file mode 100644 index 0000000000..84340130fc --- /dev/null +++ b/docs/shift-multicloud-4/index.html @@ -0,0 +1,783 @@ + + + + + + +FIAP SHIFT: Multicloud Architecture - 4th edition - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços.

+ +

Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS).

+ +

Para quem?

+

Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Benefício Amazon

+ +

Cada aluno vai receber US$ 100 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso.

+ +

Shift remoto

+

Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem +
      +
    • Virtualização
    • +
    • Modelos de serviço
    • +
    • Segurança em nuvem / Modelo de responsabilidade compartilhada
    • +
    • Modelos de implementação
    • +
    • Multicloud
    • +
    • Economia e faturamento da nuvem
    • +
    • Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem
    • +
    +
  • +
  • Módulo 2: Infraestrutura como serviço (IaaS) +
      +
    • Instanciação de máquinas virtuais
    • +
    • Autoscaling
    • +
    • Infraestrutura de armazenamento: block/object/file storage
    • +
    • Containers
    • +
    • Orquestração de containers
    • +
    • Arquitetura de microserviços
    • +
    +
  • +
  • Módulo 3: Plataforma como serviço (PaaS) +
      +
    • Automação e entrega contínua (CI/CD)
    • +
    • Pipeline DevOps
    • +
    • DBaaS SQL/NoSQL
    • +
    • Function as a Service
    • +
    • Arquiteturas serverless
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/shift-multicloud/index.html b/docs/shift-multicloud/index.html new file mode 100644 index 0000000000..e790a8d933 --- /dev/null +++ b/docs/shift-multicloud/index.html @@ -0,0 +1,783 @@ + + + + + + +FIAP SHIFT: Multicloud Architecture - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

A Computação em Nuvem está transformando a forma como as organizações investem no mundo digital. Nesse cenário, adotar Cloud Computing no ambiente corporativo é seguir o fluxo tecnológico natural. E se manter sempre à frente quanto à e-science e opções de serviços.

+ +

Além de ser uma solução inovadora, a Cloud também é um modelo de negócio relativamente novo, aplicável a qualquer tipo de empresa. Nosso foco é formar o profissional para dominar modelos de serviços de Computação em Nuvem (SaaS, PaaS, IaaS), modelos de implantação em Nuvem (privado, público, híbrido e multicloud) e economia em Nuvem. Tudo isso por meio de atividades hands-on na Amazon Web Services (AWS).

+ +

Para quem?

+

Profissionais de TI (analistas, especialistas e gestores) que atuam nas áreas de Cloud, Virtualização e/ou DevOps.

+ +

Pré-requisito

+

Recomendamos ter conhecimentos técnicos gerais de TI e de negócios.

+ +

Benefício Amazon

+ +

Cada aluno vai receber US$ 50 em créditos para usar em laboratórios no ambiente Amazon, durante e após o curso.

+ +

Shift remoto

+

Aulas ao vivo com conteúdo e metodologia especialmente pensados para o aprendizado remoto. Os vídeos dos encontros também ficam disponíveis por 7 dias após a última aula. O conteúdo complementar pode ser acessado durante 1 ano. E você ainda tem acesso ao ecossistema FIAP e aos nossos coworkings.

+ +

Conteúdo

+ +
    +
  • Módulo 1: Visão geral dos conceitos de nuvem +
      +
    • Virtualização
    • +
    • Modelos de serviço
    • +
    • Segurança em nuvem / Modelo de responsabilidade compartilhada
    • +
    • Modelos de implementação
    • +
    • Multicloud
    • +
    • Economia e faturamento da nuvem
    • +
    • Arquitetura de nuvem / Desenvolvimento de aplicações para a nuvem
    • +
    +
  • +
  • Módulo 2: Infraestrutura como serviço (IaaS) +
      +
    • Instanciação de máquinas virtuais
    • +
    • Autoscaling
    • +
    • Infraestrutura de armazenamento: block/object/file storage
    • +
    • Containers
    • +
    • Orquestração de containers
    • +
    • Arquitetura de microserviços
    • +
    +
  • +
  • Módulo 3: Plataforma como serviço (PaaS) +
      +
    • Automação e entrega contínua (CI/CD)
    • +
    • Pipeline DevOps
    • +
    • DBaaS SQL/NoSQL
    • +
    • Function as a Service
    • +
    • Arquiteturas serverless
    • +
    +
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100644 index 0000000000..3082fb95ad --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1,1081 @@ + + + +https://josecastillolema.github.io/icccn12/ +2012-07-30T15:00:58-05:00 + + +https://josecastillolema.github.io/latincom12/ +2012-10-07T15:00:58-05:00 + + +https://josecastillolema.github.io/networks12/ +2012-10-15T15:00:58-05:00 + + +https://josecastillolema.github.io/icnc13/ +2013-12-09T14:00:58-06:00 + + +https://josecastillolema.github.io/iscc13/ +2013-12-09T14:00:58-06:00 + + +https://josecastillolema.github.io/globecom13/ +2013-12-09T14:00:58-06:00 + + +https://josecastillolema.github.io/sbrc14/ +2014-05-05T15:00:58-05:00 + + +https://josecastillolema.github.io/iscc14/ +2014-06-23T15:00:58-05:00 + + +https://josecastillolema.github.io/aict14/ +2014-07-20T15:00:58-05:00 + + +https://josecastillolema.github.io/mdthesis/ +2014-08-05T15:00:58-05:00 + + +https://josecastillolema.github.io/smart/ +2014-09-05T15:00:58-05:00 + + +https://josecastillolema.github.io/healthcom14/ +2014-06-23T15:00:58-05:00 + + +https://josecastillolema.github.io/smartcampus/ +2014-10-26T15:00:58-05:00 + + +https://josecastillolema.github.io/globecom14/ +2014-12-08T14:00:58-06:00 + + +https://josecastillolema.github.io/icwn15/ +2015-07-27T15:00:58-05:00 + + +https://josecastillolema.github.io/lanoms15/ +2015-10-01T15:00:58-05:00 + + +https://josecastillolema.github.io/mswim15/ +2015-11-02T14:00:58-06:00 + + +https://josecastillolema.github.io/fiap-scj/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/computer-networks/ +2016-10-09T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-mob/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/hntd-01/ +2016-12-12T14:00:58-06:00 + + +https://josecastillolema.github.io/fiap-corporate/ +2021-11-26T14:00:58-06:00 + + +https://josecastillolema.github.io/hntd-02/ +2017-02-06T14:00:58-06:00 + + +https://josecastillolema.github.io/puc/ +2017-08-26T15:00:58-05:00 + + +https://josecastillolema.github.io/apicon/ +2017-03-17T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-03/ +2017-03-18T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-04/ +2017-03-27T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-05/ +2017-05-29T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-07/ +2017-08-21T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-08/ +2017-08-26T15:00:58-05:00 + + +https://josecastillolema.github.io/saint-gobain-ultrachallenge/ +2017-09-26T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-09/ +2017-10-17T15:00:58-05:00 + + +https://josecastillolema.github.io/futurecom17/ +2017-10-28T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-10/ +2017-10-28T15:00:58-05:00 + + +https://josecastillolema.github.io/terraformando-openstack/ +2017-11-26T14:00:58-06:00 + + +https://josecastillolema.github.io/heat-introducao/ +2017-10-28T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-11/ +2018-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/fiap-cld/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/hntd-12/ +2018-03-14T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack1-keystone/ +2018-03-18T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack2-glance/ +2018-03-20T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack3-nova/ +2018-03-22T15:00:58-05:00 + + +https://josecastillolema.github.io/hntd-13/ +2018-03-24T15:00:58-05:00 + + +https://josecastillolema.github.io/redhat-academy/ +2020-06-06T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack4-neutron/ +2018-04-25T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack5-cinder/ +2018-04-27T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack6-swift/ +2018-04-29T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack7-heat/ +2018-05-02T15:00:58-05:00 + + +https://josecastillolema.github.io/openstack8-terraform/ +2018-05-04T15:00:58-05:00 + + +https://josecastillolema.github.io/openstackday/ +2018-07-28T15:00:58-05:00 + + +https://josecastillolema.github.io/mandic-webinar/ +2018-03-14T15:00:58-05:00 + + +https://josecastillolema.github.io/ict-competition/ +2018-09-11T15:00:58-05:00 + + +https://josecastillolema.github.io/etsi2tosca/ +2018-12-16T14:00:58-06:00 + + +https://josecastillolema.github.io/fiap-aso/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/containers1-docker/ +2019-01-25T14:00:58-06:00 + + +https://josecastillolema.github.io/containers2-docker2/ +2019-01-27T14:00:58-06:00 + + +https://josecastillolema.github.io/containers3-docker-compose/ +2019-01-29T14:00:58-06:00 + + +https://josecastillolema.github.io/containers4-docker-swarm/ +2019-02-02T14:00:58-06:00 + + +https://josecastillolema.github.io/containers5-k8s-install/ +2019-02-04T14:00:58-06:00 + + +https://josecastillolema.github.io/containers6-kompose/ +2019-02-06T14:00:58-06:00 + + +https://josecastillolema.github.io/containers7-k8s-use/ +2019-02-08T14:00:58-06:00 + + +https://josecastillolema.github.io/locust-ccnclient/ +2019-03-10T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-net/ +2019-03-21T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-bdt/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/zabbix-openstack/ +2019-04-25T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-educate/ +2021-07-25T15:00:58-05:00 + + +https://josecastillolema.github.io/sbrc19/ +2019-05-10T15:00:58-05:00 + + +https://josecastillolema.github.io/sumare/ +2019-05-21T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-blc/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/netsoft19/ +2019-06-28T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-aojo/ +2019-08-03T15:00:58-05:00 + + +https://josecastillolema.github.io/thesis/ +2019-08-05T15:00:58-05:00 + + +https://josecastillolema.github.io/kuryr/ +2019-08-06T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-ia/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/fiapon-live-1aso/ +2019-10-10T15:00:58-05:00 + + +https://josecastillolema.github.io/computehcisriov-role/ +2020-01-06T14:00:58-06:00 + + +https://josecastillolema.github.io/onf/ +2021-04-17T15:00:58-05:00 + + +https://josecastillolema.github.io/aws1-ec2/ +2020-04-25T15:00:58-05:00 + + +https://josecastillolema.github.io/ocp43-on-rhosp13/ +2020-04-26T15:00:58-05:00 + + +https://josecastillolema.github.io/ussuri/ +2020-05-11T15:00:58-05:00 + + +https://josecastillolema.github.io/aodh2sensu/ +2020-04-26T15:00:58-05:00 + + +https://josecastillolema.github.io/aws2-ebs/ +2020-05-25T15:00:58-05:00 + + +https://josecastillolema.github.io/aws3-s3/ +2020-06-25T15:00:58-05:00 + + +https://josecastillolema.github.io/haina-brazil/ +2020-07-07T15:00:58-05:00 + + +https://josecastillolema.github.io/aws4-autoscaling/ +2020-07-08T15:00:58-05:00 + + +https://josecastillolema.github.io/aws5-ecs/ +2020-07-10T15:00:58-05:00 + + +https://josecastillolema.github.io/aws7-eb/ +2020-07-12T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-academy/ +2022-11-07T14:00:58-06:00 + + +https://josecastillolema.github.io/aws8-eb-springboot/ +2020-07-14T15:00:58-05:00 + + +https://josecastillolema.github.io/aws12-dynamodb/ +2020-07-16T15:00:58-05:00 + + +https://josecastillolema.github.io/aws9-cp/ +2020-07-16T15:00:58-05:00 + + +https://josecastillolema.github.io/haina/ +2020-10-25T15:00:58-05:00 + + +https://josecastillolema.github.io/aws14-emr/ +2020-07-18T15:00:58-05:00 + + +https://josecastillolema.github.io/aws10-apigw/ +2020-07-20T15:00:58-05:00 + + +https://josecastillolema.github.io/aws15-lambda/ +2020-07-20T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-foundations/ +2020-08-30T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-multicloud/ +2020-09-05T15:00:58-05:00 + + +https://josecastillolema.github.io/mycodeisopen/ +2020-09-30T15:00:58-05:00 + + +https://josecastillolema.github.io/onf-webinar/ +2020-10-11T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-cert-challenge/ +2020-10-12T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-14/ +2020-11-15T14:00:58-06:00 + + +https://josecastillolema.github.io/totvs-talks/ +2020-10-26T15:00:58-05:00 + + +https://josecastillolema.github.io/caio-youtube/ +2020-10-31T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-asoo/ +2020-11-09T14:00:58-06:00 + + +https://josecastillolema.github.io/haina-talent/ +2020-11-13T14:00:58-06:00 + + +https://josecastillolema.github.io/shift-aws-foundations-2/ +2020-11-17T14:00:58-06:00 + + +https://josecastillolema.github.io/intel-network-builders/ +2020-12-20T14:00:58-06:00 + + +https://josecastillolema.github.io/colab/ +2020-12-22T14:00:58-06:00 + + +https://josecastillolema.github.io/newyear/ +2021-01-01T14:00:58-06:00 + + +https://josecastillolema.github.io/calico/ +2021-01-05T14:00:58-06:00 + + +https://josecastillolema.github.io/shift-multicloud-2/ +2021-01-09T14:00:58-06:00 + + +https://josecastillolema.github.io/aviatrix/ +2021-08-16T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-5g/ +2021-02-09T14:00:58-06:00 + + +https://josecastillolema.github.io/azure1-vm/ +2021-02-18T14:00:58-06:00 + + +https://josecastillolema.github.io/azure2-container/ +2021-02-20T14:00:58-06:00 + + +https://josecastillolema.github.io/azure3-disk/ +2021-02-22T14:00:58-06:00 + + +https://josecastillolema.github.io/fiap-abd/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/aws13-rds/ +2021-02-26T14:00:58-06:00 + + +https://josecastillolema.github.io/azure4-blob/ +2021-03-02T14:00:58-06:00 + + +https://josecastillolema.github.io/azure5-app/ +2021-03-09T14:00:58-06:00 + + +https://josecastillolema.github.io/shift-aws-foundations-3/ +2021-03-10T14:00:58-06:00 + + +https://josecastillolema.github.io/aws6-cloudformation/ +2021-03-20T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-5g-2/ +2021-03-22T15:00:58-05:00 + + +https://josecastillolema.github.io/azure6-pipeline/ +2021-03-23T15:00:58-05:00 + + +https://josecastillolema.github.io/rh-summit21/ +2021-03-25T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-15/ +2021-03-26T15:00:58-05:00 + + +https://josecastillolema.github.io/azure-fundamentals/ +2021-11-26T14:00:58-06:00 + + +https://josecastillolema.github.io/kafka/ +2021-04-13T15:00:58-05:00 + + +https://josecastillolema.github.io/onf-webinar-21/ +2021-04-17T15:00:58-05:00 + + +https://josecastillolema.github.io/gitlab/ +2021-08-01T15:00:58-05:00 + + +https://josecastillolema.github.io/power-fundamentals/ +2022-04-14T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-ia-notes/ +2021-05-10T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-multicloud-3/ +2021-05-11T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-16/ +2021-07-09T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-community-builder/ +2021-05-15T15:00:58-05:00 + + +https://josecastillolema.github.io/gitops-summit-21/ +2021-05-18T15:00:58-05:00 + + +https://josecastillolema.github.io/fiap-meetup/ +2021-07-08T15:00:58-05:00 + + +https://josecastillolema.github.io/edx-magma/ +2021-06-03T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-foundations-4/ +2021-06-21T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-dev/ +2021-06-22T15:00:58-05:00 + + +https://josecastillolema.github.io/cognitive-class/ +2022-05-06T15:00:58-05:00 + + +https://josecastillolema.github.io/frr-k8s/ +2021-07-04T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-educate-login/ +2021-07-25T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-17/ +2021-08-18T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-foundations-5/ +2021-08-30T15:00:58-05:00 + + +https://josecastillolema.github.io/lf-courses/ +2022-05-19T15:00:58-05:00 + + +https://josecastillolema.github.io/perfcon21/ +2021-09-15T15:00:58-05:00 + + +https://josecastillolema.github.io/soloio-istio/ +2021-09-16T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-dev-2/ +2021-10-02T15:00:58-05:00 + + +https://josecastillolema.github.io/tendencias-tic/ +2021-10-12T15:00:58-05:00 + + +https://josecastillolema.github.io/seminf21/ +2021-10-14T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-multicloud-4/ +2021-10-23T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-community-day-21/ +2021-11-03T15:00:58-05:00 + + +https://josecastillolema.github.io/microsoft-ignite/ +2022-03-17T15:00:58-05:00 + + +https://josecastillolema.github.io/huawey-academy-workshop/ +2022-03-18T15:00:58-05:00 + + +https://josecastillolema.github.io/aws11-eks/ +2021-11-15T14:00:58-06:00 + + +https://josecastillolema.github.io/physics/ +2021-11-20T14:00:58-06:00 + + +https://josecastillolema.github.io/hcia-18/ +2021-11-22T14:00:58-06:00 + + +https://josecastillolema.github.io/huawey-job-fair-21/ +2021-11-24T14:00:58-06:00 + + +https://josecastillolema.github.io/gremlin-caos/ +2021-11-28T14:00:58-06:00 + + +https://josecastillolema.github.io/ovn21/ +2021-12-05T14:00:58-06:00 + + +https://josecastillolema.github.io/calico-ebpf/ +2021-12-09T14:00:58-06:00 + + +https://josecastillolema.github.io/gitops-fundamentals/ +2021-12-13T14:00:58-06:00 + + +https://josecastillolema.github.io/istio-fundamentals/ +2022-01-12T14:00:58-06:00 + + +https://josecastillolema.github.io/newyear22/ +2022-01-01T14:00:58-06:00 + + +https://josecastillolema.github.io/skillbuilder/ +2022-02-02T14:00:58-06:00 + + +https://josecastillolema.github.io/kasten/ +2022-01-03T14:00:58-06:00 + + +https://josecastillolema.github.io/examtopics/ +2022-01-04T14:00:58-06:00 + + +https://josecastillolema.github.io/cert-roadmap/ +2022-02-05T14:00:58-06:00 + + +https://josecastillolema.github.io/maua-sdn/ +2022-01-06T14:00:58-06:00 + + +https://josecastillolema.github.io/shift-aws-foundations-6/ +2022-01-07T14:00:58-06:00 + + +https://josecastillolema.github.io/shift-aws-dev-3/ +2022-01-21T14:00:58-06:00 + + +https://josecastillolema.github.io/magma-cert/ +2022-01-26T14:00:58-06:00 + + +https://josecastillolema.github.io/kyverno-fundamentals/ +2022-02-03T14:00:58-06:00 + + +https://josecastillolema.github.io/ipt-cloud/ +2022-03-15T15:00:58-05:00 + + +https://josecastillolema.github.io/loki/ +2022-02-17T14:00:58-06:00 + + +https://josecastillolema.github.io/huawey-rs-vs-datacom/ +2022-03-18T15:00:58-05:00 + + +https://josecastillolema.github.io/mct/ +2022-03-17T15:00:58-05:00 + + +https://josecastillolema.github.io/iac-ansible-aws/ +2022-03-21T15:00:58-05:00 + + +https://josecastillolema.github.io/iac-terraform-aws/ +2022-03-21T15:00:58-05:00 + + +https://josecastillolema.github.io/mie/ +2022-03-21T15:00:58-05:00 + + +https://josecastillolema.github.io/riab/ +2022-03-24T15:00:58-05:00 + + +https://josecastillolema.github.io/aiab/ +2022-03-25T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-foundations-7/ +2022-04-01T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-19/ +2022-04-08T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-certs-desconto/ +2022-04-12T16:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-dev-4/ +2022-04-12T15:00:58-05:00 + + +https://josecastillolema.github.io/aws-learning-badges/ +2022-04-14T15:00:58-05:00 + + +https://josecastillolema.github.io/rh-creddly/ +2022-05-02T15:00:58-05:00 + + +https://josecastillolema.github.io/security-fundamentals/ +2022-04-24T15:00:58-05:00 + + +https://josecastillolema.github.io/rh-summit22/ +2022-04-25T15:00:58-05:00 + + +https://josecastillolema.github.io/wifi6/ +2022-04-26T15:00:58-05:00 + + +https://josecastillolema.github.io/eu-capacito/ +2022-04-27T15:00:58-05:00 + + +https://josecastillolema.github.io/cati22/ +2022-05-19T15:00:58-05:00 + + +https://josecastillolema.github.io/venko/ +2022-05-19T15:00:58-05:00 + + +https://josecastillolema.github.io/perfcon22/ +2022-06-08T15:00:58-05:00 + + +https://josecastillolema.github.io/women-cloud/ +2022-06-13T15:00:58-05:00 + + +https://josecastillolema.github.io/rh-giveback/ +2022-06-15T15:00:58-05:00 + + +https://josecastillolema.github.io/apn/ +2022-06-20T15:00:58-05:00 + + +https://josecastillolema.github.io/educate-relaunch/ +2022-06-22T15:00:58-05:00 + + +https://josecastillolema.github.io/baseline-operator/ +2022-07-01T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-foundations-8/ +2022-07-09T15:00:58-05:00 + + +https://josecastillolema.github.io/rh-research/ +2022-11-21T14:00:58-06:00 + + +https://josecastillolema.github.io/shift-aws-dev-5/ +2022-08-11T15:00:58-05:00 + + +https://josecastillolema.github.io/hcia-20/ +2022-09-01T15:00:58-05:00 + + +https://josecastillolema.github.io/icos/ +2022-09-02T15:00:58-05:00 + + +https://josecastillolema.github.io/physics-ga4/ +2022-09-20T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-foundations-9/ +2022-10-19T15:00:58-05:00 + + +https://josecastillolema.github.io/icos-ga1/ +2022-11-05T15:00:58-05:00 + + +https://josecastillolema.github.io/shift-aws-dev-6/ +2022-11-07T14:00:58-06:00 + + +https://josecastillolema.github.io/aws-certified-global-community/ +2022-11-16T14:00:58-06:00 + + +https://josecastillolema.github.io/rhr-talks-physics/ +2022-11-17T14:00:58-06:00 + + +https://josecastillolema.github.io/tip-academy/ +2023-01-04T14:00:58-06:00 + + +https://josecastillolema.github.io/newyear23/ +2022-01-01T14:00:58-06:00 + + +https://josecastillolema.github.io/ovnk8s-kind/ +2023-01-13T14:00:58-06:00 + + +https://josecastillolema.github.io/icos-blog/ +2023-01-13T14:00:58-06:00 + + +https://josecastillolema.github.io/codeco-kickoff/ +2023-01-18T14:00:58-06:00 + + +https://josecastillolema.github.io/kubemark/ +2023-01-26T14:00:58-06:00 + + +https://josecastillolema.github.io/icni2/ +2023-08-10T15:00:58-05:00 + + +https://josecastillolema.github.io/linux-trivia/ +2022-03-20T15:00:58-05:00 + + +https://josecastillolema.github.io/perfcon23/ +2023-03-28T15:00:58-05:00 + + +https://josecastillolema.github.io/rhr-talks/ +2023-04-19T15:00:58-05:00 + + +https://josecastillolema.github.io/iffe-mbd/ +2023-04-21T15:00:58-05:00 + + +https://josecastillolema.github.io/devconf23/ +2023-07-05T15:00:58-05:00 + + +https://josecastillolema.github.io/netsoft23/ +2023-06-24T15:00:58-05:00 + + +https://josecastillolema.github.io/imdea/ +2023-06-02T15:00:58-05:00 + + +https://josecastillolema.github.io/dotfiles/ +2023-06-07T15:00:58-05:00 + + +https://josecastillolema.github.io/kubemark-ocp/ +2023-09-19T15:00:58-05:00 + + +https://josecastillolema.github.io/dev-inmutable-distros/ +2023-10-21T15:00:58-05:00 + + +https://josecastillolema.github.io/about/ + + +https://josecastillolema.github.io/categories/ + + +https://josecastillolema.github.io/classes/ +2022-03-21T15:00:58-05:00 + + +https://josecastillolema.github.io/ + + +https://josecastillolema.github.io/mininfv/ +2020-07-10T15:00:58-05:00 + + +https://josecastillolema.github.io/series/ +2020-07-10T15:00:58-05:00 + + +https://josecastillolema.github.io/tags/ + + +https://josecastillolema.github.io/posts/ + + +https://josecastillolema.github.io/page2/ + + +https://josecastillolema.github.io/page3/ + + +https://josecastillolema.github.io/page4/ + + +https://josecastillolema.github.io/page5/ + + +https://josecastillolema.github.io/page6/ + + +https://josecastillolema.github.io/page7/ + + +https://josecastillolema.github.io/page8/ + + +https://josecastillolema.github.io/page9/ + + +https://josecastillolema.github.io/page10/ + + +https://josecastillolema.github.io/page11/ + + +https://josecastillolema.github.io/page12/ + + +https://josecastillolema.github.io/page13/ + + +https://josecastillolema.github.io/page14/ + + +https://josecastillolema.github.io/page15/ + + +https://josecastillolema.github.io/page16/ + + +https://josecastillolema.github.io/page17/ + + +https://josecastillolema.github.io/page18/ + + +https://josecastillolema.github.io/page19/ + + +https://josecastillolema.github.io/page20/ + + +https://josecastillolema.github.io/page21/ + + +https://josecastillolema.github.io/page22/ + + +https://josecastillolema.github.io/page23/ + + +https://josecastillolema.github.io/page24/ + + +https://josecastillolema.github.io/page25/ + + +https://josecastillolema.github.io/page26/ + + +https://josecastillolema.github.io/page27/ + + +https://josecastillolema.github.io/page28/ + + +https://josecastillolema.github.io/page29/ + + +https://josecastillolema.github.io/page30/ + + +https://josecastillolema.github.io/page31/ + + +https://josecastillolema.github.io/page32/ + + +https://josecastillolema.github.io/page33/ + + +https://josecastillolema.github.io/page34/ + + +https://josecastillolema.github.io/page35/ + + +https://josecastillolema.github.io/page36/ + + +https://josecastillolema.github.io/page37/ + + +https://josecastillolema.github.io/page38/ + + +https://josecastillolema.github.io/page39/ + + +https://josecastillolema.github.io/page40/ + + +https://josecastillolema.github.io/page41/ + + +https://josecastillolema.github.io/page42/ + + +https://josecastillolema.github.io/page43/ + + +https://josecastillolema.github.io/page44/ + + +https://josecastillolema.github.io/page45/ + + +https://josecastillolema.github.io/page46/ + + diff --git a/docs/skillbuilder/index.html b/docs/skillbuilder/index.html new file mode 100644 index 0000000000..bef0eaaebc --- /dev/null +++ b/docs/skillbuilder/index.html @@ -0,0 +1,742 @@ + + + + + + +AWS Skill Builder - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Since October 19th, former aws.training site has moved to AWS Training and Certification’s new learning center, AWS Skill Builder.

+ +

Besides lots of great material and courses, they offer free AWS Certification Official Practice Question Sets.

+ +

AWS Certification Official Practice Question Sets feature 20 questions developed by AWS to demonstrate the style of our certification exams. You can experience these exam-style questions, which offer detailed feedback and recommended resources to help fill gaps.

+ +

The 20-question sets available in English, Portuguese, Spanish, German, French, Indonesian, Japansese, Korean and Chinese are:

+ +
    +
  • AWS Certified Cloud Practitioner Official Practice Question Set
  • +
  • AWS Certified Developer - Associate Official Practice Question Set
  • +
  • AWS Certified Solutions Architect - Associate Practice Question Set
  • +
  • AWS Certified SysOps Administrator - Associate Official Practice Question Set
  • +
  • AWS Certified Solutions Architect - Professional Official Practice Question Set
  • +
  • AWS Certified DevOps Engineer - Professional Official Practice Question Set
  • +
  • AWS Certified Data Analytics - Specialty Official Practice Question Set
  • +
  • AWS Certified Database - Specialty Practice Question Set
  • +
  • AWS Certified Machine Learning - Specialty Official Practice Question Set
  • +
  • AWS Certified Security - Specialty Official Practice Question Set
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/smart/index.html b/docs/smart/index.html new file mode 100644 index 0000000000..66d237d7f3 --- /dev/null +++ b/docs/smart/index.html @@ -0,0 +1,773 @@ + + + + + + +Support of Mobile Sessions with High Transport Network Resource Demand - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +
+ + +
+ + + + + + + +

GitHub +GitHub language count +GitHub top language

+ +

smart-OF-controller

+ +

This project aims to design and develop a clean-slate Future Internet framework called SMART (Support of Mobile Sessions with High Transport Network Resource Demand). In this framework, Software-Defined Networking mechanisms will be applied and fitted in vital aspects of the RNP (Brazilian National Research and Education Network) infrastructure, to provide a truly reliable and robust innovative provisioning system, by seeking to allow optimizing its operation and control to support mobile multimedia applications with guaranteed quality of service over the time. The SMART framework will act as a complementary communication service provider for the RNP with the following main innovations:

+
    +
  1. clean-slate Future Internet network architecture with new addressing methods, group-based connectivity, QoS-oriented mobility and resilience controls;
  2. +
  3. IEEE 802.21 compliant signaling approach to control device handover;
  4. +
  5. over-provisioning paradigm based automated, systematic and dynamic network resource allocation integrated with OpenFlow;
  6. +
  7. OpenFlow extensions to provide QoS support.
  8. +
+ +

Publications

+ +

The details of the proposal regarding (1), (3) and (4) can be found in the following MSc Thesis and paper:

+ + +

The details of the proposal regarding (2) can be found in the following paper:

+ + +

QoSFlow

+ +

In order to implement (4) QoSFlow was choosen. The QoSFlow project is an open-source proposal for enabling control of multiple packet schedulers in OpenFlow network design. For that, the project uses Netlink library to open a communication channel with Traffic Control subsystem of Linux kernel where packet schedulers are located. Such schedulers, or usually called queueing disciplines, are responsible to handle packets that cross the network and based on each packet scheduler particularity, different treatment to the packets can be achieved. More information can be found in this paper.

+ +

QoSFlow for OpenFlow v1.0 can be found here. +QoSFlow for OpenFlow v1.3 can be found here.

+ +

Funding Institution: Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq) project code 45705120140.

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/smartcampus/index.html b/docs/smartcampus/index.html new file mode 100644 index 0000000000..ae2bf3cf0d --- /dev/null +++ b/docs/smartcampus/index.html @@ -0,0 +1,809 @@ + + + + + + +Smart Campus SP - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +
+ + +
+ + + + + + + +

GitHub +GitHub language count +GitHub top language

+ +

Smart Campus SP

+ +

SmartCampus is a FI-Ware software prototype to measure the contamination levels in the University of São Paulo (USP) Campus with a group of Android, Arduino and Galileo sensors. Below you can find a diagram of all the system components and a brief explanation of their functions. The following sections will detail how the components were connected and all the software and hardware installed.

+ +

FI-Beer overview

+ +

SmartCampus makes use of several FI-Ware building blocks, all of them deployed in the FI-Lab testbed:

+
    +
  • Context Broker: a data concentrator for all the measures, manages subscriptions and data access. Needs some configuring in order to integrate it with Cosmos through the Cygnus plugin.
  • +
  • Wirecloud: Front End based on HTML5+JS widget composing, offers some libraries to integrate with the CB.
  • +
  • Cosmos: Big Data platform to store and analyze measure data.
  • +
+ +

Detailed description

+ +

Polution sensors instrumentation and hardware connection

+ +

In the first iteration of the prototype, the system will only manage one magnitude of the polution metrics: temperature, pressure, noise and air particles.

+ +

NGSI Clients

+ +

All the heterogeneus sensor reading is send to the Context Broker using the NGSI Protocol.

+ +

Developing the NGSI Client

+ +

The Context Broker, where the measures will be aggregated and distributed, listens for requests following the NGSI protocol. In order to communicate with this component, two NGSI clients were developed (python and java). The NGSI protocol defines several resources and operations, but the client only use a very restricted set:

+ +
    +
  • Appending a new measure for a context
  • +
  • Getting measures for a particular context
  • +
+ +

The NGSI protocol is a REST protocol that accepts both XML and JSON payloads. JSON was prefered for this project.

+ +

Python version

+ +

Intented to be used with Arduino and Galileo sensors. All the communications were stablished using the requests HTTP library with JSON payloads (the default json python library).

+ +

Java version

+ +

Intended to be used with Android OS. For the Java version, the Jersey API was used.

+ +

The Context Broker

+ +

The Orion Context Broker was used as the central data node of the system. All the data of the sensors is sent to Orion who, in turn, send it to all its suscribers and can be queried from the frontend systems to get up-to-date information of any of the measures.

+ +

For the prototype, we used a dedicated cloud instance in FI-Lab, that has a preinstalled Context Broker service (the image name is orion-psb-image-R3.2). It should start listening on port 1026. Remember to open this port in the Security Group.

+ +

Wirecloud Management Widget

+

The Front End of the system was designed as a series of widgets deployed in FI-Ware’s Mashup Platform: Wirecloud. The widgets were deployed in the FI-Lab’s marketplace and composed in a new workspace.

+ +

Three widgets were deployed:

+
    +
  • NGSI Updater
  • +
  • Map viewer: that consumes data from the Context Broker, showing a map of the campus with realtime information on the temperature, signaling what parts are too cool or too warm.
  • +
  • Linear graph: Works as a historical data widget, depicting the evolution of the temperature over the last minutes.
  • +
+ +

WireCloud overview

+ +

Wiring overview

+ +

Connection to Cosmos (HDFS and Hive)

+ +

In order to consume the historical data from the widgets, it has to be first stored somewhere. FI-Ware sensor data is stored in the HDFS system of its Big Data GE: Cosmos. The data is stored in Cosmos through the use of a script in the Context Broker machine (Cygnus), that is subscribed to the measure update.

+ +

Android client

+ +

The Android client was developed in Java. The Jersey API was used for REST and JSON-related tasks.

+ +

Android client

+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/soloio-istio/index.html b/docs/soloio-istio/index.html new file mode 100644 index 0000000000..d899432818 --- /dev/null +++ b/docs/soloio-istio/index.html @@ -0,0 +1,754 @@ + + + + + + +Essentials for Istio by Solo.io - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

Get certified

+ +

Istio is the most popular service mesh deployed into production across the cloud-native ecosystem, and for good reason. It’s feature rich, open-source, and most importantly, battle proven. Istio provides the foundational pieces to implement zero-trust networking, get deeper observability into a distributed system, and smart routing control for safer software releases.

+ +

This certification is for those looking to learn more about how Istio works and how to operationalize it for their organization. You will learn the basics of routing, observability, and security, and then expand into leveraging Istio for a devops/gitops CI/CD flow, zero-downtime upgrades of Istio control plane, plugging in with existing PKI, and running Istio on VMs and across multiple clusters.

+ +

The Essentials for Istio certification is based on a hands-on, instructor-led workshop focused on how to deploy Istio into production. You will have access to your own Linux virtual machine with a Kubernetes cluster and Istio to complete the exercises.

+ +

This credential, offered for free by Solo.io with Credly, certifies that you possess the essential skills to deploy, configure, debug, secure, and operationalize Istio for your organization.

+ +

Earning criteria

+ +
    +
  • You must complete the live Deploy Istio for Production workshop. Sign up here
  • +
  • You must complete and score 80% or higher on an assessment upon completion of the workshop.
  • +
+ +

Certification

+ +
+ + + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/sumare/index.html b/docs/sumare/index.html new file mode 100644 index 0000000000..46740ec27e --- /dev/null +++ b/docs/sumare/index.html @@ -0,0 +1,723 @@ + + + + + + +11a Semana de TI da Sumaré - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tags/index.html b/docs/tags/index.html new file mode 100644 index 0000000000..79ec9ec4d1 --- /dev/null +++ b/docs/tags/index.html @@ -0,0 +1,64607 @@ + + + + + + +Posts by Tag - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + +
+ + + + + +
+ +

Posts by Tag

+ + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + pt 133 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + classes 108 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + en 97 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + networks 86 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + cert 79 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + fiap 77 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + aws 66 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + redhat 60 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + events 47 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + series 40 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + openshift 38 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + sdn 35 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + huawei 32 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + research 31 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + iac 25 + +
  • + + + + + + + + + + + + + + + +
  • + + nfv 25 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + azure 24 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + openstack 23 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + papers 20 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + iot 12 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + webinar 11 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + ansible 7 + +
  • + + + + + +
  • + + onf 7 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + es 6 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + terraform 4 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + youtube 3 + +
  • + + + + + + + + + + + + + + + +
  • + + sds 3 + +
  • + + + + + + + +
  • + + ccn 3 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + monitoring 2 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + fiware 1 + +
  • + + + + + + + + + + + + + + + + + + + +
  • + + hackathon 1 + +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • + + podcast 1 + +
  • + + + + + +
  • + + iffe 1 + +
  • + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

pt

+
+ + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

classes

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

en

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

networks

+
+ + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

cert

+
+ + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

fiap

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

aws

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate relaunch + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Learning Badges + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

What is an AWS Learning Badge? + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+
+ +

+ + AWS Skill Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Community Builder + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

AWS Community Builders program + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Academy + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS Educate + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

redhat

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+
+ +

+ + My Linux desktop + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Legends of Linux Trivia + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

How well do you know Linux? + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Giveback Program + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

The Red Hat Giveback Program is an incentive program to recognize an associate who goes above-and-beyond their role-based responsibilities and makes contribu...

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + My code is open + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

events

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

series

+
+ + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series XV: Lambda + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series X: API Gateway + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IX: CodePipeline + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+
+ +

+ + AWS series XII: DynamoDB + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AWS series IV: Auto Scaling + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre Amazon Web Services. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

openshift

+
+ + + + + +
+
+ +

+ + Kubemark on OpenShift + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

Kubemark is a performance testing tool which allows users to run experiments on simulated clusters, by creating “hollow” Kubernetes nodes. What this means is...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + OVN-Kubernetes Multiple External Gateway local setup + + +

+ + +

+ + + + + + + + + + + + 18 minute read + + + +

+ + +

Steps to set up a local environment with OVN Kubernetes Multiple External Gateway capability (also known as Intelligent CNI 2.0 or iCNI2.0) and a FRRRouting ...

+
+
+ + + + + + +
+
+ +

+ + Kubernetes control plane scale testing with Kubemark + + +

+ + +

+ + + + + + + + + + + + 19 minute read + + + +

+ + +

+ Continuation of Michael McCune (@elmiko) notes on Setting Up a Development Environment for the Cluster API Kubemark Provider, Automating My Hollow Kuberne...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + baseline-operator + + +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +

+ + + +

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + Running FRR in K8s/OpenShift + + +

+ + +

+ + + + + + + + + + + + 6 minute read + + + +

+ + +

FRR is a fully featured, high performance, free software IP routing suite included in RHEL 8. + +

+
+
+ + + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

sdn

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Spring 2023 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

huawei

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Notes for HCIA-IA + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

research

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + ICOS EU project + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Research + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

iac

+
+ + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series VII: Kubernetes - Uso + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series VI: Kompose + + +

+ + +

+ + + + + + + + + + + + 4 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series IV: Docker Swarm + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+
+ +

+ + Containers series III: Docker Compose + + +

+ + +

+ + + + + + + + + + + + 29 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Containers series I: Docker + + +

+ + +

+ + + + + + + + + + + + 32 minute read + + + +

+ + +

Serie de artigos sobre containers (Docker, Docker Compose, Docker Swarm e Kubernetes). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + +
+

nfv

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + PerfConf Spring 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + PerfConf Fall 2021 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Proceedings + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

azure

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Certification preparation roadmap + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

I would like to share my favourite way to prepare for some certifications. As you can see, I always do (1) the corresponding course and then jump to (2) prac...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Azure series III: Disks + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+
+ +

+ + Azure series II: Containers + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Serie de artigos sobre Microsoft Azure. + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções - Online (ASOO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: On the Clouds + + Gestão Financeira de TI + Bimodal IT & Sourcing + Arquitetura em MultiCloud (AWS / Google Cloud / Azure / I...

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Engenharia de Software - Online (AOJO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Fase 4: Data Analytics + + Data Engineering (Big Data & Analytics) + Cloud Computing & SRE + Leadership and Corporate Accountabil...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Arquitetura de Soluções (ASO) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + + Arquitetura de Storage / DataCenter / Virtualização e Microcontainers + + + Arquitetura em MultiCloud (AWS / GCP / Azure / IBM Cloud) + + +

+
+
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + FIAP MBA em Mobile Development (MOB) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Foundation + DevOps & Cloud Oriented Architecture + Segurança para Aplicações Móveis para Internet das Coisas e Cloud Computing + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

openstack

+
+ + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenShift 4.3 on RHOSP 13: Installation and Integrations + + +

+ + +

+ + + + + + + + + + + + 9 minute read + + + +

+ + +

I would like to share my experience installing and integrating OpenShift with various OpenStack services, namely Cinder, Swift and Keystone (Neutron and Octa...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Red Hat Academy + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Cloud Computing (CLD) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + BootCamp OpenStack + Implementação de Cloud + Implementação OpenStack + Soluções MultiCloud + +

+
+
+ + + + + + +
+
+ +

+ + [PT] Heat - Introdução + + +

+ + +

+ + + + + + + + + + + + 12 minute read + + + +

+ + +

+ Originally published at Churrops on DevOps on December 20, 2017. + + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

papers

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + IEEE NetSoft/S4SI 2019 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

IEEE Conference on Network Softwarization / 2nd Workshop on Advances in Slicing for Softwarized Infrastructures + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + MSWiM 2015 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The 18th ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems + +

+
+
+ + + + + + +
+
+ +

+ + LANOMS 2015 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

8th Latin American Network Operations and Management Symposium + +

+
+
+ + + + + + +
+
+ +

+ + ICWN 2015 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The 2015 World Congress in Computer Science, Computer Engineering and Applied Computing + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Global Communications Conference 2014 + +

+
+
+ + + + + + +
+
+ +

+ + IEEE HealthCom 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2014 IEEE 16th International Conference on e-Health Networking, Applications and Services (Healthcom) + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + AITC 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

The Tenth Advanced International Conference on Telecommunications + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2014 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

The nineteenth IEEE Symposium on Computers And Communications + +

+
+
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2014 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

XXXII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / V Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + IEEE GLOBECOM 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Globecom 2013 Workshop - Management of Emerging Networks and Services Program + +

+
+
+ + + + + + +
+
+ +

+ + IEEE ISCC 2013 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2013 IEEE Symposium on Computers and Communications (ISCC) + +

+
+
+ + + + + + +
+
+ +

+ + ICNC 2013 + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

2013 International Conference on Computing, Networking and Communications (ICNC) + +

+
+
+ + + + + + +
+
+ +

+ + NETWORKS 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 15th International Telecommunications Network Strategy and Planning Symposium (NETWORKS) + +

+
+
+ + + + + + +
+
+ +

+ + IEEE LATINCOM 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 IEEE Latin-America Conference on Communications + +

+
+
+ + + + + + +
+
+ +

+ + ICCCN 2012 + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

2012 21st International Conference on Computer Communications and Networks (ICCCN) + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

iot

+
+ + + + + +
+
+ +

+ + Cognitive Class @ai + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP MBA em Big Data (Data Science) (BDT) + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + Cloud Computing + Fast Data & Microservices + Internet das Coisas + Microserviços + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + FIAP Corporate + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

webinar

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

ansible

+
+ + + + + +
+
+ +

+ + Red Hat Summit 2022 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+
+ +

+ + IaC series: Ansible na AWS + + +

+ + +

+ + + + + + + + + + + + 10 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+
+ +

+ + Red Hat Summit 2021 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + +
+

onf

+
+ + + + + +
+
+ +

+ + TIP Academy + + +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Aether-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 8 minute read + + + +

+ + +

Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run ...

+
+
+ + + + + + +
+
+ +

+ + SDRAN-in-a-Box + + +

+ + +

+ + + + + + + + + + + + 15 minute read + + + +

+ + +

SDRAN-in-a-Box (RiaB) is an ONF project that consists in a SD-RAN cluster which is able to operate within a single host machine . It provides a development/t...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

es

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+
+ +

+ + LOKI + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+

+
+
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + + + + + +
+ +
+ + + + + + +
+
+ +

+ + Happy new year! + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

terraform

+
+ + + + + +
+
+ +

+ + IaC series: Terraform na AWS + + +

+ + +

+ + + + + + + + + + + + 31 minute read + + + +

+ + +

Serie de artigos sobre Infraestructure as a Code (IaC). + +

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

youtube

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + OpenStack Day SP 2018 + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

IPv6 no OpenStack + +

+
+
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + +
+

sds

+
+ + + + + +
+
+ +

+ + Digital credentials for Red Hat Certified Professionals + + +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +

Red Hat Digital Credentials recognize and reward learning achievements, community contributions and ecosystem engagement to drive the adoption of Red Hat tec...

+
+
+ + + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + +
+

ccn

+
+ + + + + +
+ +
+ + + + + + +
+
+ +

+ + SBRC/WPEIF 2019 + + +

+ + +

+ + + + + + + + + + + + 3 minute read + + + +

+ + +

XXXVII Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos / Workshop de Pesquisa Experimental da Internet do Futuro + +

+
+
+ + + + + + +
+
+ +

+ + Locust CCN client + + +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +

+ + + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

monitoring

+
+ + + + + +
+ +
+ + + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+

fiware

+
+ + + + + +
+
+ +

+ + Smart Campus SP + + +

+ + +

+ + + + + + + + + + + + 5 minute read + + + +

+ + +

+ + + +

+
+
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + +
+

hackathon

+
+ + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

podcast

+
+ + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + + +
+

iffe

+
+ + + + + +
+ +
+ + +
+ Back to Top ↑ +
+ + + + +
+
+
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tendencias-tic/index.html b/docs/tendencias-tic/index.html new file mode 100644 index 0000000000..4ae607e5bb --- /dev/null +++ b/docs/tendencias-tic/index.html @@ -0,0 +1,728 @@ + + + + + + +Tendências de mercado na área de TIC - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + + + + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/terraformando-openstack/index.html b/docs/terraformando-openstack/index.html new file mode 100644 index 0000000000..217e56e53d --- /dev/null +++ b/docs/terraformando-openstack/index.html @@ -0,0 +1,863 @@ + + + + + + +[PT] Terraform – IaC – Terraformando no OpenStack - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 7 minute read + + + +

+ + +
+ + +
+ + + +
+

Originally published at Churrops on DevOps on November 26, 2017.

+
+ +

Olá pessoal, vamos começar uma uma série de artigos sobre OpenStack dando continuidade aos artigos sobre Terraform (parte 1 e parte 2) do Rodrigo Floriano, pois é uma ferramenta que vários assíduos do blog já conhecem e usam a diário!

+ +

Hoje vamos mostrar um exemplo prático de uso da ferramenta sobre OpenStack.

+ +

OpenStack é um software de código aberto para a instalação, configuração e gerenciamento de nuvens, tanto públicas como privadas. Rackspace e Dreamhost são alguns exemplos de nuvens públicas que funcionam sobre OpenStack, e PayPal e eBay são exemplos de empresas que usam OpenStack nas suas nuvens privadas.

+ +

OpenStack apresenta seus serviços através de APIs compatíveis com os serviços EC2, S3 e CloudFormation da Amazon AWS e, portanto, aplicações escritas para estes serviços do AWS podem ser usados com OpenStack também. Além disso, podemos interagir com OpenStack via CLI, usando o comando openstack, ou pelo dashboard da plataforma, o Horizon.

+ +

Sem mais, vamos la!

+ +

Pré requisitos

+ + +

Clonando o repósitorio

+ +
$ git clone https://github.com/josecastillolema/churrops.git
+
+ +

Segue uma breve descrição dos arquivos:

+ +
    +
  • live.tf +Arquivo principal, é um template com as informações do provider (neste caso OpenStack) e a topologia dos recursos que vão ser criados. No primeiro bloco definimos as credencias de acesso a nossa nuvem OpenStack: +
    provider "openstack" {
    +   user_name   = "jose.castillo"
    +   tenant_name = "churrops"
    +   tenant_id   = "ddc494sdfc8bc6ba7caf6d3615b"
    +   password    = "password"
    +   auth_url    = "https://keystone.openstack.com.br:5000/v2.0"
    +}
    +
    +

    Para conseguir o tenant_id do projeto churrops (o id do nosso projeto) basta executar openstack project show churrops ou openstack project list | grep churrops (ou pegar os dados via o dashboard de OpenStack, Horizon).

    + +

    No segundo bloco definimos alguns valores que vamos usar no projeto, como a imagem (neste caso Ubuntu), a chave (caso precisemos acessar por ssh a instância), o flavor, as redes, etc. Este bloco não é obrigatório, mas pode facilitar a nossa vida quando trabalhemos com um número maior de instâncias. Neste exemplo estamos usando o security group padrão do OpenStack (a porta 80 precisa estar aberta), mas de forma muito direta poderíamos criar um recurso de tipo security group personalizado para o nosso servidor web. O site da Terraform mostra todos os recursos que temos disponíveis para OpenStack.

    + +
    variable "defaults" {
    +   description = "Variaveis do projeto"
    +   type = "map"
    +   default {
    +      image_name = "linux-ubuntu-16-64b-base"
    +      az_name = "nova"
    +      region = "SP"
    +      tenant_name = "churrops"
    +      key_pair = "chave"
    +      flavor_name = "g1.micro"
    +      security_group = "default"
    +      network_name = "rede-interna"
    +   }
    +}
    +
    + +

    No terceiro bloco definimos o nosso servidor web. Na variável user_data apontamos para outro arquivo do exemplo, que vai ser executado via cloud-init no primeiro boot para configurar o servidor web.

    +
    resource "openstack_compute_instance_v2" "web" {
    +   name = "web"
    +   image_name = "${var.defaults["image_name"]}"
    +   flavor_name = "${var.defaults["flavor_name"]}"
    +   availability_zone = "${var.defaults["az_name"]}"
    +   key_pair = "${var.defaults["key_pair"]}"
    +   security_groups = ["${var.defaults["security_group"]}"]
    +   network {
    +      name = "${var.defaults["network_name"]}"
    +   }
    +   user_data = "${file("bootstrapweb.sh")}"
    +   lifecycle {
    +      create_before_destroy = true
    +   }
    +}
    +
    + +

    Por último, os restantes blocos associam uma IP pública ao nosso servidor web:

    +
    resource "openstack_networking_floatingip_v2" "ip-publica" {
    +   pool = "rede-publica"
    +}
    +
    +resource "openstack_compute_floatingip_associate_v2" "asoc-ip-publica" {
    +   floating_ip = "${openstack_networking_floatingip_v2.ip-publica.address}"
    +   instance_id = "${openstack_compute_instance_v2.web.id}"
    +}
    +
    +
  • +
  • +

    output.tf +Retorna o IP público da instância do nosso servidor web.

    +
  • +
  • bootstrapweb.sh
  • +
+ +

Arquivo de shell que vai ser executado via cloud-init no primeiro boot para configurar o servidor web. Esta versão é para SOs de tipo Debian, mas pode ser fácilmente modificada para funcionar em CentOS e derivados.

+ +

Fazendo o deploy

+ +
$ terraform init
+
+ +

+ +
$ terraform plan
+
+
$ terraform apply
+
+

+ +

Se tudo der certo, veremos a nova VM com a sua IP pública correspondente:

+ +

+ +

E conseguimos acessar ao nosso site:

+ +

+ +

Outros comandos

+

O resto dos comandos que foram explicados no caso da AWS, terraform graph, terraform show e terraform destroy funcionam de forma idêntica em OpenStack.

+ +

Conclusão

+

Terraform se integra muito bem com vários provedores de nuvem, incluíndo OpenStack! Neste artigo vimos como é simples integrar OpenStack com a ferramenta, e como a mesma funciona de forma coerente entre várias nuvens.

+ +

Nos próximos artigos de OpenStack falaremos sobre heat, o “terraform” nativo da plataforma, e veremos como é simples também gerenciar o ciclo de vida de hardware e software usando o orquestrador nativo da nuvem.

+ +

Obrigado a todos e um abraço!

+ + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/thesis/index.html b/docs/thesis/index.html new file mode 100644 index 0000000000..469891a4e4 --- /dev/null +++ b/docs/thesis/index.html @@ -0,0 +1,763 @@ + + + + + + +A generic NFV MANO for Content-Centric Networks - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

Biblioteca Digital de Teses e Dissertações da USP

+ +

DOI:10.11606/T.3.2019.tde-23102019-120559

+ +

Cite this

+ +

ISO

+ +

CASTILLO LEMA, José. A generic network function virtualization manager and orchestrator for content-centric networks [doi:10.11606/T.3.2019.tde-23102019-120559]. São Paulo : Escola Politécnica, Universidade de São Paulo, 2019. Tese de Doutorado em Sistemas Eletrônicos. [acesso 2020-06-01].

+ +

ABNT

+ +

CASTILLO LEMA, José. A generic network function virtualization manager and orchestrator for content-centric networks. 2019. Tese (Doutorado em Sistemas Eletrônicos) - Escola Politécnica, Universidade de São Paulo, São Paulo, 2019. doi:10.11606/T.3.2019.tde-23102019-120559. Acesso em: 2020-06-01.

+ +

APA

+ +

Castillo Lema, J. (2019). A generic network function virtualization manager and orchestrator for content-centric networks. Tese de Doutorado, Escola Politécnica, Universidade de São Paulo, São Paulo. doi:10.11606/T.3.2019.tde-23102019-120559. Recuperado em 2020-06-01, de www.teses.usp.br

+ +

Vancouver

+ +

Castillo Lema, José. A generic network function virtualization manager and orchestrator for content-centric networks [tese]. São Paulo: Escola Politécnica; 2019 [citado 2020-06-01]. doi:10.11606/T.3.2019.tde-23102019-120559.

+ +

Publications

+ + + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/tip-academy/index.html b/docs/tip-academy/index.html new file mode 100644 index 0000000000..e612c5ba19 --- /dev/null +++ b/docs/tip-academy/index.html @@ -0,0 +1,774 @@ + + + + + + +TIP Academy - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + +

+ +

TIP Academy is an online Academy managed by the Telecom Infra Project (TIP) supporting the development of organizations in the telecommunications and IT industry. It provides an open, community-based learning and knowledge-sharing space for organizations and telco professionals, building an ecosystem around open, disaggregated solutions.

+ +

Courses

+ +

Why Open RAN?

+ +

This learning program will help you to gain awareness of the motivation and imperative of Open RAN and its potential to transform the industry.

+ +

Upon completion of this learning program, you will be able to:

+
    +
  • Define what Open RAN is and explain the drivers, benefits and challenges of Open RAN.
  • +
  • Gain insight into the main ways Open RAN solutions architectures will impact the Business Case.
  • +
  • Identify key industry Open RAN initiatives and discover some Open RAN projects around the word.
  • +
+ +

Open RAN Fundamentals

+ +

This learning program will help you delve into the Open RAN architecture and the underlying forces behind it: disaggregation, open interfaces, virtualization, automation, and orchestration.

+ +

Upon completion of this learning program, you will be able to:

+
    +
  • Describe what is the split of RAN protocol stack, its motivations and the different split options adopted by the industry for Open interfaces.
  • +
  • Describe the architecture and functions of the Radio Unit (RU), Distributed Unit (DU) and Central Unit (CU).
  • +
  • Recognize the significant role the Telco Cloud and Orchestration play in unlocking the benefits of Open RAN solutions.
  • +
+ +

Free certification

+ +

After completing the courses training you’ll be eligible to take the final assessments at no cost.

+ +

+ +

+ +

+ +

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/totvs-talks/index.html b/docs/totvs-talks/index.html new file mode 100644 index 0000000000..146de3278b --- /dev/null +++ b/docs/totvs-talks/index.html @@ -0,0 +1,732 @@ + + + + + + +TOTVS TALKS #09 - A computação em nuvem no Brasil - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ +

+ +

O TOTVS TALKS Podcast é uma parceria entre a BandNews FM e a TOTVS. Aqui, você ouve conversas sobre tecnologia – ferramentas, soluções e caminhos; cada mês, um novo assunto. Os episódios novos saem sempre no dia 20 e você encontra o programa no site da BandNews FM e no Spotify.

+ +

+ +

+ +

Neste nono episódio, o podcast de tecnologia para o mundo dos negócios fala sobre o panorama atual da computação em nuvem no Brasil. A digitalização dos negócios continua parte do debate. Não só porque o mercado vem reconhecendo ano após ano a importância da tecnologia para manter as empresas competitivas, mas também porque o cenário imposto pela pandemia do coronavírus exigiu que as empresas se reinventassem apoiadas na tecnologia. E hoje já é praticamente impossível falar de tecnologia sem falar de Cloud Computing, a computação em nuvem.

+ +

Para entender como as soluções atuais têm englobado a tecnologia da nuvem e como a pandemia impactou este mercado, estão na mesa do TOTVS TALKS o diretor de Cloud da TOTVS, Vinicius Mendes, e o doutor em engenharia elétrica, nas áreas de telecomunicações, redes e internet das coisas, José Castillo Lema, consultor de Cloud para América Latina na Red Hat e professor no MBA da FIAP.

+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/ussuri/index.html b/docs/ussuri/index.html new file mode 100644 index 0000000000..3d392b359d --- /dev/null +++ b/docs/ussuri/index.html @@ -0,0 +1,729 @@ + + + + + + +OpenStack Ussuri Contributor List - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Thanks to the more than 1,000 contributors from more than 50 countries and 188 organizations that contributed to the OpenStack Ussuri release.

+ +

https://www.openstack.org/software/ussuri/

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/venko/index.html b/docs/venko/index.html new file mode 100644 index 0000000000..d18aa969a1 --- /dev/null +++ b/docs/venko/index.html @@ -0,0 +1,746 @@ + + + + + + +Estruturando redes com Múltiplos Fornecedores como uma Rede Neutra - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Este evento vai, ao mesmo tempo, mostrar como estruturar múltiplos serviços, de múltiplos fabricantes e rentabilizar esta estrutura unificada ao alugá-la para terceiros. Tudo com uma gestão simples, centralizada e econômica.

+ +

Programa:

+
    +
  • Venko - Desafios na Construção de Redes Multi-Vendor
  • +
  • TIP/ONF - Padronização e Soluções Abertas
  • +
  • Intraway - Solução de Orquestração e Abstração Multi-Tenant
  • +
  • Netsia - Virtualização de OLT
  • +
  • Zyxel - Soluções PON
  • +
+ +

Horário: 8h30-11h30

+ +

Local: We Work Jardim das Perdizes - Avenida Nicolas Boer, 399 - Jardim das Perdizes, São Paulo - SP

+ +

ONF Community Highlights – April/May 2022

+ +

+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/wifi6/index.html b/docs/wifi6/index.html new file mode 100644 index 0000000000..46c058be50 --- /dev/null +++ b/docs/wifi6/index.html @@ -0,0 +1,734 @@ + + + + + + +Evolução tecnológica do Wi-Fi 6 - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + less than 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Evento on-line promovido pela Huawei e FiberX, onde será apresentado o seguinte tema: Evolução Tecnológica do Wi-fi 6. O evento ocorrerá em 26/04/2022 às 16h.

+ +

Será um evento online de uma hora de duração e quem realizar a inscrição pelo link receberá um certificado de participação no evento.

+ + + +
+ +
+ + + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/women-cloud/index.html b/docs/women-cloud/index.html new file mode 100644 index 0000000000..7d5d0db7c2 --- /dev/null +++ b/docs/women-cloud/index.html @@ -0,0 +1,736 @@ + + + + + + +AWS - Mulheres em Cloud - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 1 minute read + + + +

+ + +
+ + +
+ +

+ +

Sabemos que a tecnologia tem um poder transformador quando aliada à educação e podemos usá-la como ferramenta nos impactos positivos na luta de igualdade social.

+ +

A AWS apoia uma força de trabalho STEM (abordagem interdisciplinar inovadora que engloba temas como ciências, tecnologia, engenharia e matemática) como uma comunidade global, diversificada e inclusiva, e por isso preparou um dia muito especial para inspirar, motivar e conectar suas alunas e educadoras ao próximo nível de sua carreira em tecnologia.

+ +

Este é um convite para ser encaminhado às nossas convidadas especiais do Mulheres em Cloud, no dia 30 de Junho.

+ +

Atenção para as tripulantes:

+ +
    +
  • Trazer um notebook no dia do evento para atividade prática
  • +
  • Registrar-se até o dia 20 de Junho
  • +
+ + +
+ +
+ + + + + + + +

+ Tags: + + + , + + , + + , + + + + +

+ + + + + + +

Updated:

+ +
+ + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/zabbix-openstack/index.html b/docs/zabbix-openstack/index.html new file mode 100644 index 0000000000..ac24302e7a --- /dev/null +++ b/docs/zabbix-openstack/index.html @@ -0,0 +1,793 @@ + + + + + + +Zabbix templates for OpenStack - GitOps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+ + + + + +
+ + + + + + +
+ + + + + +
+ + + + + +
+ +
+

+ +

+ + +

+ + + + + + + + + + + + 2 minute read + + + +

+ + +
+ + +
+ + + + + + + +

GitHub +GitHub language count +GitHub top language +Ansible Lint

+ +

zabbix-for-openstack

+

Ansible playbook for installing Zabbix and its templates for OpenStack (through Zabbix user parameters).

+ +

In the following screenshot you can see the final result: +Zabbix screenshot

+ +

As you can see, hosts are segregated by groups (controllers, compute, ceph, external Horizon, IdM, storage, etc.), and the items we monitore in each group are different.

+ +

Monitor items

+
    +
  • SNMP of the servers IPMI
  • +
  • CPU (specially load above 30), memory (above 85% because of KSM), disk and network interfaces
  • +
  • Status of the network bonds
  • +
  • Number of processes/workers for each OpenStack Linux service (nova-scheduler, nova-api, etc.)
  • +
  • Response times of every OpenStack API
  • +
  • Status of Open vSwitch services
  • +
  • Pacemaker cluster status
  • +
  • Galera SQL cluster status
  • +
  • Health of RabbitMQ e Redis
  • +
  • Status of OpenStack agents +
      +
    • Nova: openstack compute service list
    • +
    • Neutron: openstack agent list
    • +
    • Cinder: openstack volume service list
    • +
    +
  • +
  • The presence of virtual machines, volumes or volume snapshots in error state
  • +
  • Storage
  • +
  • Presence of failed multipath routes
  • +
  • Problems with LVM mappings
  • +
  • Incongruences with the Device Mapper (DM)
  • +
  • etc.
  • +
+ +

Some Zabbix user parameters needed modifications in standard SELinux policies in order to properly work.

+ +

Capacity monitoring

+
    +
  • Number of virtual routers
  • +
  • Number of namespaces in the controller nodes
  • +
  • Number of virtual machines
  • +
  • Number of assigned floating IPs
  • +
  • Memory used by virtual machines
  • +
  • vCPUs used
  • +
  • Storage IOPs / throughput
  • +
  • North-South traffic
  • +
  • etc.
  • +
+ +

The templates will surely need some customization work to adapt to each customer environment. They include an Ansible playbook to automate the Zabbix agent installation along with firewall liberations, sudoers file customizations, Zabbix user agents and corresponding scripts, SELinux policies, etc.

+ + + + +
+ + + + + + + + + +
+ + +
+ + +

Comments

+
+ +
+ + +
+ + + + + + +
+ +
+ + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.html b/index.html index c5944a59c6..d015dfeb5e 100644 --- a/index.html +++ b/index.html @@ -2,6 +2,6 @@ # You don't need to edit this file, it's empty on purpose. # Edit theme's home layout instead if you wanna make some changes # See: https://jekyllrb.com/docs/themes/#overriding-theme-defaults -layout: home +layout: posts author_profile: true ---